基于BPEL的服务自重组在C2中的应用研究

2015-11-02 03:36朱咸军周献中杨佩王志鹏徐锋
指挥与控制学报 2015年3期
关键词:业务流程引擎部署

朱咸军 周献中 杨佩 王志鹏 徐锋

1.南京大学控制与系统工程系江苏 南京210093 2.南京大学智能装备新技术研究中心江苏 南京 21009 3.北方自动控制技术研究所山西太原030006

随着计算机技术、信息技术、控制技术的迅速发展,指挥与控制(Command and Control,C2)系统朝着一体化、智能化、网络化和敏捷化的方向发展[1].信息收集分系统、信息传递分系统、信息处理分系统、信息显示分系统、决策监控分系统和执行分系统共同组成了C2系统,如图1所示.

目前,分布式部署的异构系统是C2系统的主要特征.其中,分布式部署是为了满足处于不同层次、不同军兵种的指挥与控制需求,如战略级、战役级和战术级的海、陆、空三军和二炮等军兵种的指挥与控制需求,且他们的指挥与控制系统部署必须是相互独立又相互连通;异构系统的产生原因主要有3个方面:首先是不同指挥层级、不同军兵种的系统研发采用的开发语言不一致;其次,不同硬件平台的软件开发环境限制了系统可选择、可使用的开发语言;再次,历史遗留因素造成分系统的开发语言的不一致.

C2系统的研究人员也越来越多,他们从框架、方法、技术等方面进行了研究.郭昆提出了一种多用户多模块的指挥信息系统软件高效部署的总体设计方案[1].陆晓明等探讨Web Service技术与SOA(Service Oriented Architecture)架构在指挥与控制系统中适用性[2].王华等分析了指挥与控制系统的发展趋势及关键技术[3].吴奎等设计了一款基于面向服务架构的决策模型与分析一体化平台,并在此平台上进行了模型设计、算法设计、方案集成、问题求解等[4].黄孝鹏等建立了基于人件服务的新型决策系统的总体架构,探讨人件服务的技术实现与接口设计、决策任务动态分解、自学习等关键技术[5].新型云网络体系[6]能够对系统正常运行下的各项功能和指标进行实时探测评估,一旦发现异常,便可启动自我防御与修复机制,使云网络体系始终能够保持安全、稳定、高效、可靠的运行.李蒙蒙等分析了美军指挥与控制系统及技术的发展现状和趋势[7].王宝祥结合面向服务架构,人件服务概念及背景,提出了3种人件服务接口交互实现方式,以及决策支持系统的服务接口架构[8].

然而,C2系统面临的是实战环境,它具有特殊的复杂性:复杂的战场环境、复杂的任务、复杂的系统结构和复杂的分系统关系.因此,对C2系统中服务的稳定性、可持续性和快速修复能力的研究就显得极为重要.本文从C2系统的服务修复能力出发,研究了基于BPEL引擎的C2系统服务自重组技术,给出了服务自重组的框架和时序图,并结合示例详述了服务自重组的执行过程,实现了C2系统服务自重组.

图1 指挥与控制系统组成要素及关系图

1 相关理论

1.1 BPEL介绍

业务流程执行语言(Business Process Execution Language,BPEL)是由Microsoft公司的基于XML的Web服务描述语言扩展(XML-based extension of Web Service Description Language,XLANG)和IBM公司的Web服务流语言(Web Service Flow Language,WSFL)综合发展而来,并在业界得到了广泛的认可.BPEL使用基于Web的语言,该语言支持Web服务技术系列,包括SOAP协议、WSDL、UDDI、Web服务可靠性消息、Web服务寻址、Web服务协调以及Web服务事务.BPEL支持流程的基本活动,如接受(Receive)、调用(Invoke)等,同时支持流程控制逻辑,如顺序(Sequence)、并行(Flow)、选择 (Pick)、分支(If-Else)、循环(While,For)等.通过流程的活动和控制逻辑,可以实现对一个业务流程的规范化描述,如一个业务流程的规范化描述、数据格式的定义和传递、业务流程的生命周期的管理,最终实现了Web服务之间的交互[9−10].

BPEL由3个核心组成,即可扩展的标记语言(Extensible Markup Language,XML)、XML 文档的数据规格定义(XML Schema Definition,XSD)和XML路径语言(XML Path,XPath).

1)可扩展的标记语言(Extensible Markup Language,XML),它是Web Service技术体系中的最重要的基础技术,它包括元素(element)、属性(attribute)、数据(data)和子元素.XML的优点:a)可表达的数据内容广泛,且具有完整数据格式定义;b)平台无关性和编程语言无关性;c)数据表达式简单且易解析;

2)XML文档的数据规格定义(XML Schema Definition,XSD),通过将XML文档的每一个元素、属性、数据进行统一的定义,实现XML文档的正确结构和语法约束.XSD支持3类数据类型,a)基本数据类型,包括string,integer,double,float,date和time;b)简单类型(simple type),即Schema所特有的Entity,NMToken和ID类型;c)复杂类型(complex type),是简单类型和基本类型组合生成的自定义类型;

3)XML路径语言(XML Path,XPath),一种用来确定XML文档中某部分位置的语言.其特点:a)XPath将XML文件按照树的结构进行处理;b)树上的分支和节点是由XML文件内的元素、属性、文本、注释、处理函数、命名空间等信息组成;c)树上的父子节点表示了XML文件中数据的从属关系;d)XPath提供了丰富的函数和表达格式,能够准确表达目标节点和相对当前节点的位置关系.

1.2 业务流程与服务关系

为了满足不同层次、不同军种的指挥和控制需求,C2系统包含了若干个指挥与控制的业务流程,每个业务流程则由若干个服务组成[11−13].因此,C2的业务流程与服务之间的关系是M-N(多对多),即每个业务流程由一个或多个服务组成并提供服务;同时,每个服务可以参与一个或多个业务流程.C2系统中,若干服务之间的关系主要有相互独立和相互依赖两种.前者是指存在于业务流程中的若干服务之间彼此独立,各自的执行顺序与其他服务执行的状态无关,如指挥与控制系统中业务数据归档服务与业务流程中其他服务的状态、执行顺序无关;后者指业务流程中,若干服务之间相互依赖,如路径选择服务依赖于气象服务和流量预测服务等服务.C2系统服务间的相互依赖关系也可以分为两类,即数据/信息依赖(Data and Information Dependence,DID)和控制/流程依赖(Control and Workflow Dependence,CWD).数据/信息依赖(Data and Information Dependence,DID)是指C2系统中不同的服务之间存在着数据和信息的传递、交换、计算、统计等相互依赖关系;控制/流程依赖(Control and Workflow Dependence,CWD)是指C2系统中的每个服务都是围绕同一个目标进行的,都是在一个工作流程执行各自的任务,同时对流程中获取的反馈信息自主、自适应地调整.

2 服务自重组关键技术

2.1 服务自重组定义

C2系统业务流程是由若干个流程环节组成,每个流程执行环节的实质是通过调用Web Service服务提供的功能来完成,而每个功能来源于分布式部署的异构系统,如C2系统中的信息收集分系统部署在不同的执行单元上,主要有海、陆、空以及太空侦察设备.异构系统提供的各类功能部署在不同的服务器上,C2系统可以通过Web Service提供的访问协议[14−15]、访问接口进行数据、信息、指令等的交互,而交互的每个流程环节在执行的过程中都可能因为环境变化、战场态势的变化、任务的变化,进而引起了C2系统业务的流程环节执行失败,最终导致C2系统全面崩溃.

定义1.服务自重组(Self-Recombination of Services,SRoS),是指C2系统中的BPEL引擎在服务异常情况下,能够自主监测与诊断服务状态、能够自主地下载异构系统提供的服务与配置、能够自主部署与激活Web Service服务,实现C2系统中服务的重组,保障C2系统的高效运行.

2.2 服务自重组特征

服务自重组具有如下特征:

1)业务流程自主检查与诊断.在网络化条件下,业务流程执行过程中的服务异常情况,C2系统能够自主诊断、及时发现,并实时向C2系统控制中心发送服务异常情况.异常情况包括通讯故障、网络故障、服务器故障等;

2)服务下载.服务下载是指C2系统控制中心发现服务异常后,系统自主寻找备用的服务器,并将相应的服务和配置下发到新的服务器.服务与配置文件的自主下载协议有FTP协议、HTTP协议、SMTP协议等,文件下载的地址和目录由数据文件预先指定;

3)部署与激活.服务部署主要是完成环境变量设置、运行目录构建、服务与配置文件的解压、编译、数据库连接设置等.服务激活是根据相关服务激活的配置信息,依照服务运行的前置条件顺序执行,并启动相关服务进程;

4)自主完成重组.服务器中的所有服务完成激活后,需要向C2系统控制中心发送相应的状态信息,告知新建服务器的相关信息,如服务器IP地址、端口、提供服务标识、完好状态等信息.C2系统控制中心即时感知服务状态的回复,并将相关的业务流程节点信息迅速切换到新的服务器.

在C2系统构建筹划阶段,需要考虑一定量的冗余服务器以便C2系统运行过程中服务的快速搭建,实现C2系统服务的快速重构.

2.3 服务自重组框架图

基于BPEL的C2系统服务自重组框架如图2所示.它是一个建立在BPEL引擎基础上,由分布式部署的异构系统提供服务的综合指挥与控制系统.该系统的核心技术包括BPEL引擎技术、C2系统服务处理总线技术、服务状态监听技术和服务自重组技术(包括下载、部署、激活).

2.4 关键技术

2.4.1 BPEL引擎

BPEL引擎[16]是执行Web Service服务的核心,它将具体业务流程与流程定义文件(.bpel、xml)实例化,并按照流程过程定义执行.

通过可视化操作平台,将C2系统服务自重组过程转化成一个BPEL服务引擎可理解和可执行的业务过程和流程定义文件,通过BPEL引擎的执行实现C2系统所有业务功能即时、高效的运作.

2.4.2 C2系统服务处理总线技术

定义2.C2系统服务处理总线技术(C2 Service Bus Technology,C2SBT),是C2系统中分布式部署的异构系统之间的信息/数据交互平台.异构系统提供各种各样的服务,而服务与服务之间需要数据和信息的交流和通讯,如服务注册、发现、调用、监控、日志等.C2SBT为服务提供了一个安全、可靠、高效的平台和途径.

C2SBT包括服务状态的监控服务、服务管理(包括服务注册、发布、编辑等)、服务日志、服务文件服务、服务容灾等.

2.4.3 服务状态监测

定义3.服务状态监测(Service State Monitor,SSC),是网络化环境下,分布式部署的异构系统提供的服务状态适时监测功能.服务状态监测为C2系统控制中心能适时掌握各个服务状态提供服务,主要在3个阶段发挥作用:首先,业务流程发起调用前选择合适的服务;其次,业务流程执行过程中能即时、准确地获得流程环节执行状态;最后,业务流程执行结束后,能迅速返回执行结果并准备下次被调用.

图2 C2系统服务自重组框架图

由于异构系统提供的服务开发语言各异,无法直接融入到C2系统中来.因此,需要借助相应的Web Service技术将它们发布为可供C2系统调用的Web Service服务,并且部署到相应的前置服务器上为C2系统提供相应的服务.C2系统中的具体业务流程不直接和服务进行交互,而是采用Web Service方式进行间接交互.因此,C2系统需要对服务进行实时监测,从而保证业务流程执行的高效性、即时性和流畅性.

服务状态监测包括前置服务器状态监测、网络通信状态监测和服务完备状态监测.其中前置服务器状态监测和网络通信状态监测都属于系统硬件监测,主要采用信号应答方式监测.服务完备状态监测是对软件服务的检测,需要对服务发送模拟请求信息并且获得服务的正确反馈结果.

2.4.4 服务自重组技术

定义4.服务自重组技术(Self-Recombination of Services Technology,SRoST),它是C2系统中实现服务自重组相关技术的集合.它包括服务下载、部署、激活和发布等技术,每个技术都可作为BPEL流程中的一个流程节点.

服务下载技术是从文件服务器上将需要重新部署的服务文件、配置文件下载到新的服务器上.服务下载技术可作为BPEL引擎执行的一个环节实例被执行,该技术建立在文件传输协议基础之上,如HTTP协议、FTP协议、SMTP协议、SOAP协议等.服务下载技术实现了服务内容的下载,包括服务的可执行文件、服务的配置文件、服务容器(如Tomcat、jdk)文件、数据库链接配置文件等.

服务部署技术是在服务器上实现服务的部署,包括系统环境变量的修改与设定、执行文件存储目录的构建、相关文件的拷贝(如可执行文件、配置文件)、服务容器的设置.

服务激活技术是在服务器上执行相关的执行文件,使服务达到可用状态,如Java 6.0以上提供的JNative执行可执行文件、DLL等来启动相关服务.

服务发布技术是通过C2服务处理总线向服务管理器发送服务就绪状态,以替换前期中断了的服务功能,并将相关的Web Service服务指向URL切换到新的URL上来,以便C2系统进行调用.

2.5 服务自重组时序图与业务流程

C2系统中服务自重组时序如图3所示.

3 示例分析

信息传递分系统是C2系统中一个关键分系统,它担负了指挥与控制的数据/信息转发任务,是C2系统中不可或缺的部分,本文以C++开发的信息传递分系统提供的服务出现异常为例,介绍了基于BPEL的服务自重组的过程,流程如图4所示.其具体步骤如下:

图3 C2系统服务自重组时序图

图4 C++服务自重组流程图

3.1 C++服务自重组步骤

步骤1.使用Web Service服务发布技术的JNI接口,将由C++开发的信息传递分系统发布成一个Web Service服务,并部署在一台Web Service服务上,并接受C2系统服务总线上的服务监控;

步骤2.引擎接收到服务异常信息后,根据服务的自重组流程文件,实例化BPEL业务流程;

步骤3.BPEL引擎通过服务总线上的通讯接口查找可用的冗余服务器,并建立链接;

步骤4.BPEL引擎从文件服务器上下载服务所需的文件,包括服务容器软件、服务配置文件、服务可执行文件等;

步骤5.BPEL引擎通过java.lang.Process类和java.lang.Rumtime类的exec()方法执行服务的部署,实现代码如图5所示,包括服务目录的构建、服务容器的解压、系统配置文件的设置和数据库连接的建立;

图5 BPEL引擎执行服务部署

步骤6.BPEL引擎通过org.xvolks.jnative.JNative API执行服务的激活,实现代码如图6所示,包括服务容器的启动(如Tomcat 6.0)、服务界面的预展开;

图6 BPEL引擎执行服务激活

步骤7.BPEL引擎向C2系统服务总线发送服务自重组结果信息,并切换至新的服务器,如服务的URL、端口等信息.

借助BPEL引擎,能够迅速建立起新的信息传递分系统,并提供数据/信息的传递.

4 结论

本文提出了一个C2系统服务自重组框架,使得C2系统中的各个服务在异常情况下,将BPEL引擎与系统总线相互配合,实现了服务的迅速、高效重组和切换,有力的保障了C2系统的执行效率,为C2系统的进一步发展提供了一套切实可行的技术方案.

下一步将以加强C2系统的稳定性为出发点,对服务自重组框架中的服务处理总线技术和服务监控技术做进一步研究.

猜你喜欢
业务流程引擎部署
航天企业基于信息化的业务流程体系构建方法研究
一种基于Kubernetes的Web应用部署与配置系统
ERP系统在企业财务管理和业务流程管理中的应用
晋城:安排部署 统防统治
新海珠,新引擎,新活力!
部署
车坛往事4:引擎进化之屡次失败的蒸汽机车
互联网+背景下物流公司的业务流程再造
基于质量管理体系为基础的核心业务流程优化
蓝谷: “涉蓝”新引擎