中国科技核心期刊      中国指挥与控制学会会刊     军事装备类重点期刊

Design and Implementation of Battlefield Situation Service Prototype System Based on SOA Architecture

  • MA Chao-yi ,
  • QU Lian-zheng
Expand
  • Academy of National Defense Information, Wuhan 430014, China

Received date: 2017-05-26

  Revised date: 2017-06-22

  Online published: 2022-04-29

Abstract

The battlefield situation service system provides battlefield commander services of situation by subscribing, pushing or searching and provides scene supporting for them to grasp the battlefield quickly and to analysis battlefield situation scientifically. In this paper, the problems of the existing system are analyzed and the prototype of system is designed and implemented which based on the concept of service and oriented architecture. The function designing, system architecture, system deployment and system implementation of the system are described in detail, which can be used as reference for the construction and application of the situation service system.

Cite this article

MA Chao-yi , QU Lian-zheng . Design and Implementation of Battlefield Situation Service Prototype System Based on SOA Architecture[J]. Command Control and Simulation, 2017 , 39(5) : 104 -108 . DOI: 10.3969/j.issn.1673-3819.2017.05.022

战场态势服务系统能够将繁杂的战场态势通过计算机可视化的形式向指挥员表现出来,并且通过一系列的人机交互手段完成指挥员对战场态势的各种操作需求,使指挥员能够清晰直观地了解战场动态、获取战场信息,从而把精力投入到战场决策中。各指挥层级、各军兵种虽然都有自己专业的战场态势服务系统,但是由于历史原因,系统之间互联互通互操作大都基于桥接模式或基于公用操作环境的平台建立,虽具有一定的态势共享分发能力,但较多独立开发,接口封闭,难以进行高效信息交互,且对硬件要求高,体积庞大,安装部署及系统维护比较困难,影响了系统的易使用、易拓展和易维护等特性。
为解决上述问题,进一步提升软件开发和使用的灵活性、扩展性和可操作性,减少软件的体积和生产代价,提高软件的稳定性、可靠性。本文基于面向服务的理念,提出了基于SOA构架的战场态势服务原型系统设计理念和思路,并对原型系统的实现进行了阐述。该系统具有松耦合、可重用、多通信以及高度的灵活性和开放性的特点,能够为联合作战战场态势相关系统的建设和运用提供借鉴和参考。

1 面向服务架构SOA

SOA(Services Oriented Architecture)是一组通过统一定义的Web Services的集合[1]。它的核心思想是将各种应用封装成标准的服务,这些服务能够自我描述和互相通信。所谓的服务其实就是系统提供一组统一接口,让用户通过接口使用系统提供的功能。这些服务定义精确、封装完善,独立于其他服务[2]。各个服务之间通过标准接口进行通信,即可以实现异构环境下的共享与相互调用。开发人员可以使用任何平台和语言进行编程,只要遵从服务标准,就能够实现对服务的查询和访问。
在基于SOA架构的系统中,将不同的服务之间定义功能良好的接口和规范按松耦合方式整合到一起,即将多个现有应用软件通过网络整合成一个新的系统。[3]因此,基于SOA提供的这种整合的概念,系统设计师能够根据自身的业务需求将各种服务自由组合,这种系统构架有着其他系统构架不可比拟的灵活性,能够让系统对业务更新需求更加迅速地进行响应,从而提高系统的稳定性和重用性,加快系统的开发周期。

2 战场态势服务系统设计

战场态势服务系统应能为指挥员按需提供文字、声音、视频、图形及多种形式的战场信息,即在恰当的时间、恰当的地点,采用恰当的手段,为恰当的指挥员提供恰当的态势服务,以确保其对战场形势做出最正确的决策判断,形成决策优势。

2.1 系统功能设计

战场态势服务的功能模块设计如下:
1)态势产品制作功能设计。系统能够对引接的陆、海、空、天、网、电等信源进行分类、筛选、融合、处理,制作成为态势产品。
2)态势显示功能设计。以可视化形式为用户直观呈现战场态势。允许用户在客户端对地图进行放大、缩小、漫游等操作,以恰当的粒度为用户显示态势信息。
3)态势订阅分发功能设计。允许用户从服务端加载态势产品,并能按需、按权限订阅态势产品。允许服务端对用户的订阅申请进行审批。
4)态势查询功能设计。允许用户以终端或调用的方式按需查找指定的态势信息集合,包括作战单位、武器平台、地形信息、社会状况、气象水文等。为用户提供相关军事文献与技术文献查询。
5)态势回放功能设计。允许用户对当前时间节点一段时间之内的态势信息进行回放与查询。从而更好地对当前战场态势进行分析与决策。
6)辅助分析功能设计。包括地图测绘、模型的相关计算功能。
7)态势管理功能设计。包括态势用户管理、态势数据管理、系统运行管理、系统安全管理。

2.2 系统部署设计

在态势服务系统中,每一种资源都被看成是服务,它能够提供与实现技术和语言无关的接口供上层应用调用,上层应用可以根据具体的业务需求来组织服务访问与交互关系,这种方式很好地解决了各个系统之间的交互与协同问题,各个系统之间由传统的静态集成向动态集成转变。系统部署分为三个部分:态势服务提供者(服务端)、态势服务请求者(客户端)和态势服务注册中心(注册中心),如图1所示。
图1 系统部署设计
服务端主要包括参数编码与解码工具、服务部署工具、服务调用接口、服务调用引擎和服务端服务调用代理。服务调用接口是服务端开发的主体,主要包括地图访问接口、情报源访问接口、态势访问接口、态势产品服务接口等。服务调用接口按照接口标准统一开发,然后通过服务部署工具集成至服务容器中供客户端调用。服务调用服务端代理最先收到客户端的调用请求,通过调用请求中服务名称、接口函数等找到相应的服务调用引擎,服务调用引擎会获取到服务调用的接口对服务进行调用,并最终返回调用结果。
客户端主要包括参数编码与解码工具和客户端服务调用代理。客户端可以以用户的形式访问服务端数据服务,也可以采用调用的形式调用服务端提供的接口。客户端服务调用代理在收到态势服务请求者的服务调用请求后,在服务注册中心和本地的服务描述文件中按照服务名称查找服务提供者的传输协议和地址标识,并将服务请求发送给服务端。这样,服务调用者就无须知道服务提供者的传输协议与地址标识,保证了服务调用的协议与地址无关性。
注册中心主要包括服务注册业务与服务查找发现业务两大功能。服务提供者在服务注册中心若要创建新的服务类型,要先向其管理员进行申请创建。而后服务注册中心会在目录服务中创建新服务类型的描述属性,为服务查找和发现业务增加新的服务类型,这样态势服务请求者就能够通过服务名称、服务参数等查找到服务提供者的相关信息了。

2.3 业务流程设计

业务流程设计展现的是态势服务端、用户端和注册中心之间的业务逻辑关系,是系统信息交互设计和功能模块实现的前提和基础。以用户端陆情态势服务请求者(简称态势客户)访问服务端战场陆情态势数据服务者(简称态势服务者)为例说明三者之间的业务关系,如图2所示,主要包括三个步骤:1)陆情用户为获取与己方作战地域有关的空情信息,到态势注册中心注册,并通过服务目录查找到陆情态势数据服务接口,获取接口描述和授权要求等信息,并将接口以引用的方式添加至自己的程序,并展开和调试;2)态势服务者对陆情客户的调用请求进行级别、类型、时效和权限等验证,验证通过后为其提供业务处理服务,按需返回查询或处理后的态势数据信息;3)陆情客户将获取的态势数据与自己的态势数据进行叠加显示,生成具有特定编号的情报产品,随时响应指挥及参谋人员的访问需求。
图2 态势服务调用业务流程

3 系统开发与实现

3.1 系统开发环境

本系统基于面向服务的思想,采用目前流行的ApacheCXF框架进行开发, ApacheCXF是一个开源的服务框架,能够帮助开发者利用Frontend编程API来进行构建和开发服务[3]。开发平台选择Windows7操作平台,开发环境采用集成开发环境J2EE进行开发,编程语言为JAVA语言,数据库采用SQL Service2008。
基于SOA的系统的本质就是把功能模块封装为服务。利用CXF实现服务的步骤分为以下几步:首先服务提供者定义服务接口,并为该接口实现相应的函数功能,同时,该函数功能应该对消费者隐藏实现;其次,用Spring配置声明发布服务;最后在用户端加载Spring配置并调用远程服务,就能够实现服务提供者所提供的功能。

3.2 系统开发流程

CXF的注册和发布都是使用其自带的容器Servlet,要能够更好使用现有的Web服务器无疑必须与Spring进行整合而采用通用的IOC容器[4]。这样可以大大减少系统的代码编写量,加快系统的开发与更新速度,有利于系统的维护与扩展。
系统开发部署流程如下图3所示。
图3 系统开发部署流程

3.3 服务端开发

3.3.1 接口设计

服务接口是客户端与服务端进行信息交互的基础,SOA通过一系列标准规范,为不同应用提供语法互操作的支持。在服务端定义接口的标准和规范后,用户只需要遵从相应服务接口,就能对态势服务进行调用,从而实现态势功能。
主要服务接口设计如表1所示。
表1 主要服务接口设计
态势地图访问接口 public MapImage LoadMapImage(MapInfo mapinfo,ImageInfo imageinfo) 加载指定地图影像
public LayerInfo GetLayerInfo(string mapname) 获取指定地图的图层字段信息
public FieldInfo GetFieldInfo(string mapname,string layername) 获取指定图层属性字段信息
态势产品服务接口 public mProduct GetLanProduct(int nID,string proname) 获取陆情态势产品
public void AddLanProduct(int nID,string proname,ModInfo info) 将态势实体加入编号为nID的陆情态势产品
public mProduct SendLandProduct(int nID,string proname,USER uID,IP ipAd) 将态势产品推送至指定用户
态势访问接口 public string[] GetModAttr(string name,ModInfo info) 根据实体名称或编号获取指定实体的属性
public string[] GetName(ModType type,string Attr=NULL) 输入实体属性和类型获取实体名称
public mList GetModel() 获得模型实体列表

3.3.2 开发步骤

服务端开发的主要工作是对各服务接口进行定义以及对服务进行实现。利用JAX-WS规范定义服务接口,完成对服务的注册和发布。以实体查询服务的实现为例,该接口是实现对模型实体的查询功能,首先用JAX-WS规范声明此接口,具体操作步骤如下:
@Web Service //服务声明
public interface ModelSearchService{
public string GetModAttr(@WebParam(name=”modelsearch”)ModelSearch modelsearch);
//服务操作变量传递
public class Service2()...
public class Service3()... //其他方法定义
}
在对服务进行声明,也就是接口的定义后,服务端的另一个工作就是对服务的实现。因为在服务端和客户端之间利用SOAP消息传递,而SOAP消息包装了一段XML代码,所以无论是哪一端,都需要对XML进行转化。发送时将Java Object转换为XML,接收时将XML转换为Java Object。因此需要用JAX-WS来告诉系统如何在XML和Java Object之间进行处理。
@XMLRootElement(name=” modelsearch”)
@XMLAccessorType(XMLAccessType.FIELD)//将此类对象自动绑定为XML
@XMLType(name=””) //XML类型
Public class ModelSearch{...} //类中基本方法的定义
接下来,利用JAX-WS提供的服务工厂完成服务的注册、发布。
public class Server{
public static void main(String[] args){//创建WebService服务工厂
JaxWsServerFactroyBean factory=new JaxWsServerFactroyBean();
factory.setServiceClass(ModelSearchImpl.class);//注册服务接口
factory. setAddress("http://localhost:8080/ModelSearch"); //发布服务
factory. create();}//服务创建完成
值得注意的是,ModelSearchImpl是为实体查询服务ModelSearch创建的实现其服务接口的一个类,它能够根据用户的请求完成处理与响应。http://localhost:8080/ModelSearch?wsdl就是访问这个服务的地址,它通过WSDL来完成。

3.4 客户端调用

客户端的调用让用户能够通过服务接口进行服务的访问。在CXF中,用户需要使用某个服务时,通过服务注册中心得到服务提供者暴露的WSDL地址来进行转化。用JaxWsProxFactoryBean客户端代理工厂调用服务。
public class Client{
JaxWsProxyFactroyBean factory=new JaxWsProxyFactroyBean(); //获得代理工厂
Factory. setserviceClass(ModelSearch.class);
//注册服务接口
Factory.setAddress("http://localhost:8080/ModelSearch");
//设置服务地址
ModelSearch ms=(ModelSearch)factory.create();
//获得服务
ms.function1();
ms.function2();
} //用ms对象调用服务方法

3.5 系统功能界面

对指挥决策人员(客户端)来说,其所需要的只是对态势的相关操作即可。如地图和态势查看、态势查询、态势推送等。能够直观和及时地了解态势信息才是客户的需求。用户功能界面设计如图4所示。
图4 客户端功能界面设计
而态势服务端的功能界面重点关注用户信息和态势产品管理。其功能界面设计如图5所示。
图5 态势服务端功能界面设计

4 结束语

本文根据态势服务系统集成现状和战场态势服务系统功能需求,确定了基于SOA的态势服务原型系统的设计思路,并对系统的系统架构、系统部署、接口设计、业务流程等进行了分析与设计。利用SOA架构可以使得用户更好地使用各种态势服务,也能够使开发人员更加灵活、方便地部署和开发整个应用软件,也使得态势服务能够根据指挥员需求的变化进行灵活调整和重组,为部队缩短战斗响应时间、提高指挥决策的有效性提供了支持。
[1]
Bieberstein, Norbert. "Executing SOA:a practical guide for the service-oriented architect. " IBM Press, 2011.

[2]
曲婉嘉, 刘颖, 徐忠林. 基于 SOA 的军事目标“选打一体化”信息系统研究[J]. 电子设计工程, 2016, 24(23):10-14,18.

[3]
林闯, 封富君, 李俊山. 新型网络环境下的访问控制技术[J]. 软件学报, 2007, 18(4): 955-966.

[4]
侯斌, 涂红兵, 王云福. 基于CXF框架的可配置化企业内容管理平台Web服务[J]. 电信科学, 2016, 32(5): 191-196.

[5]
王紫瑶, 南俊杰, 段紫辉, 等. SOA核心技术及应用[M]. 北京: 电子工业出版社, 2008.

[6]
杨跃辉. 基于SOA的项目信息管理系统的设计与实现[D]. 成都: 西南交通大学, 2010.

[7]
PATHAK N. ProWCF4.0. Practical Microsoft SOA Implementation[M]. Apress, 2011.

[8]
杨云东. 一种基于SOA的战术网络管理系统的框架设计[J]. 舰船电子工程, 2013, 33(4):18-19.

[9]
田全才, 徐斌. 基于SOA的主动信息推送系统[J]. 兵工自动化, 2014, 33(8):56-59.

Outlines

/