基于工作流技术的遥感卫星数据接收调度系统的设计与实现
2018-02-13张国强
冯 阳,张国强
(1.中国电子科技集团公司第五十四研究所,河北 石家庄 050081; 2.陆军航空兵军代局,北京 100010)
0 引言
随着航天及对地观测技术的发展,人们对航天对地观测卫星应用的需求越来越高。对地观测卫星利用其携带的有效载荷在对目标实施观测、获取目标信息数据后,需要及时、有效地将数据下传至地面站,以供用户使用。根据卫星数据下传计划合理有序地安排调度多地点、多台套地面接收设备完成卫星数据接收任务,是卫星数据接收调度系统的基本职能。文献[1-2]论述了卫星数据接收调度系统,经过分析发现传统的卫星数据接收任务调度系统通常在进行设计时,应用模块之间直接调用,中间没有其他逻辑控制。这种设计不能满足卫星数据接收任务调度系统卫星持续增加、业务多变的系统要求。
随着卫星后续发射和在轨运行数量的不断增加、地面接收站等基础设施建设的不断扩充,设计一个能够适应未来卫星、接收站、数据接收与转发的持续扩展的卫星数据接收调度系统成为一个亟待解决的工程问题。本文设计了一种基于工作流技术的遥感卫星数据接收调度系统,通过工作流引擎驱动系统的各业务模块的衔接,所有的业务分支逻辑判断均通过工作流,从而达到系统的可扩展性。
1 系统分析
卫星地面接收系统主要完成卫星的捕获跟踪和数传数据的接收、解调、解密、解压、解扰、记录和转发等任务[3]。卫星地面接收系统主要包括卫星数据接收调度系统、数据接收站网系统和数据传输系统[4]。
卫星数据接收调度系统主要负责接收卫星数据下传计划,规划地面接收系统资源,根据数据下传计划制定数据接收与记录任务、数据传输任务,管理调度地面数据接收系统的接收资源,完成卫星数据获取、传输任务,保障卫星地面接收系统的统一协调、稳定和高效运行[5]。数据接收站网系统根据数据下传与记录任务,负责卫星下传数据的接收、记录、快视处理和显示等;数据传输系统根据数传任务,调配传输和网络资源,管理数传队列作业,完成卫星原始数据从数据接收站网系统到卫星地面处理系统的传输。
1.1 流程分析
卫星数据接收调度系统根据获取的卫星数据下传计划进行任务规划、决策,调度数据接收站网系统的各接收站和数据传输系统,完成卫星数据接收、传输的作业调度过程[6]。卫星数据接收与传输作业调度流程主要包括:
① 获取卫星业主方管理控制系统的卫星数据下传计划,进行存储和解析处理,生成并反馈卫星数据下传计划回执[7];
② 依据业务规则如卫星轨道[8]及载荷能力、数据接收站设备资源等约束,面向设定时段的多星、多站、多任务综合目标优化需求,采用调度策略和算法对卫星数据下传计划进行规划安排[9],生成满足计划任务要求的接收传输任务规划方案,制定各项作业任务;
③ 制定数据接收与记录任务、数据传输任务,分别发送给数据接收站网系统的各接收站、数据传输系统[10];
④ 数据接收站网系统各接收站执行接收卫星下传数据,并实时将卫星原始数据和快视数据转发数据传输系统[11];
⑤ 数据传输系统根据数传任务将卫星原始数据传输到卫星地面处理系统[12];
⑥ 数据接收系统和传输系统在执行过程中,及时报告任务执行情况给卫星数据接收调度系统。
1.2 现有系统存在的问题
传统的卫星数据接收任务调度系统通常是一台个人计算机作客户机使用,另外一台服务器用于存放后台的数据库系统。应用程序与数据库系统直接相连,中间没有其他逻辑[13]。这种方式有一个很大的缺点,就是一旦系统的业务逻辑有所改变,例如新的卫星发射需要卫星数据接收业务保证,所有程序模块都需要重新修改、编译和链接,工作量相当大。这种设计不仅不能符合卫星数据接收任务调度系统卫星持续增加、业务多变的系统要求,而且开发效率较为低下,系统维护性差,严重制约了卫星地面数据接收任务调度系统的可靠性、稳定性和可扩展性[14]。
2 相关技术
2.1 工作流技术
工作流的概念最早起源于生产组织和办公自动化领域,其中涉及的主要问题就是过程的自动化。经过一系列的约定,在参与者之间进行信息、文档或者任务的传递,从而达成既定目标。工作流管理联盟对工作流与工作流管理系统的定义是:工作流是一类能够完全或者部分自动执行的业务过程,根据一系列程序规则、文档、信息或任务能够在不同的执行者之间进行传递与执行。
工作流管理联盟定义了工作流最基本的术语,包括工作流(Workflow)、业务过程(Business Process)、工作流管理系统、活动、自动活动(Automated Activites)、人工活动(Manual Activities)、过程定义(Process Definition)、 实 例(Instances/Cases)、过程实例(Process Instances)、活动实例(Activity Instances)以及工作流参与者(Workflow Participant)等[15]。基本概念之间的关系如图1所示。
图1 工作流基本概念之间的关系
2.2 插件技术
插件通过宿主程序、业务插件和插件接口实现正常运作。其中宿主程序负责启动整个系统,实现系统所需插件加载、卸载和调用等管理[16]。
业务插件能够动态地插入到系统中,多个业务插件集成在一起实现复杂业务的处理。业务插件需要向宿主程序提供调用接口,当宿主程序需要调用业务插件时能够找到这个接口,实现与宿主程序的信息交互,使得宿主程序能够得到业务插件的相关信息[17]。
插件技术的优点:易修改,可维护性强;结构清晰,相互独立;结构容易调整;可移植性强;耦合度低[18]。基于这些优点,系统采用插件技术进行设计开发,可提高系统软件复用性、模块化、封装性和可扩展性,同时降低软件开发成本。
3 系统设计与实现
由于系统需要完成对多类多颗卫星数据接收传输任务调度,并需具备对未来卫星的扩展接口,因此不再是“一星一系统”建设,需要具有良好的可扩展性,满足接收传输资源统一分配、任务统一控制、接口和流程统一设计的要求,兼顾未来卫星接收资源管控的任务需求特点。
系统总体架构基于平台插件技术、采用工作流技术进行业务流程建模、依托工作流引擎驱动业务流程调度。对主要业务逻辑进行拆解封装,当流程逻辑发生变化时,通过重新定义和配置而无需编程以适应变化的业务过程,大大提高流程自动化和流程再造的能力。
3.1 工作流程建模
构建面向服务的工作流体系架构,将业务功能以“粗粒度”服务的形式实现,使得流程设计同时具备灵活性和可管理性。通过统一定制的工作流引擎,按照预先定义好的规则和过程,结合具体的软件实现和运行环境,以服务绑定的方式按照一定逻辑关系推动系统业务功能执行,并对业务流程进行跟踪和监视。
① 对系统工作流程进行分解,基于业务处理逻辑相关性,将流程“粗粒度”划分为卫星接收计划管理、接收任务管理、传输任务管理、归档任务管理、质量监测任务管理和卫星轨道根数管理等主要流程。
② 对上述分解的流程进行设计,划分到若干节点,这些节点所表示的业务功能,最终以“粗粒度”服务的形式实现。
③ 在完成业务工作流流程设计后,进行工作流建模。
工作流模型是对工作流业务活动的抽象描述,它描述了工作流服务软件执行过程所需的所有信息。通过工作流中间件提供的过程定义工具完成工作流建模工作,适应未来卫星的扩展,只需增加新增卫星的扩展处理模块,在工作流中进行相应配置即可,同时减少软件逻辑判读处理复杂度,由工作流引擎依据工作流模型配置驱动软件完成工作流程。
3.2 服务封装
在完成工作流程分解与设计后,形成了若干节点,这些节点需要以“粗粒度”服务的形式实现,才能被工作流引擎管理调度。在进行相关软件功能模块开发后,以服务的形式对功能模块进行封装。
由于工作流技术的核心功能是维护业务流程的建模和运行,它本身不提供通信手段,应用层只能提供API调用方式与之进行通信。由于卫星数据接收任务调度系统中各模块部署在不同台位,无法与工作流引擎进行API通信,所以在工作流引擎外部布署一个Webservice服务将涉及业务需要的工作流功能进行封装,对应用层提供统一的远程访问接口。在工作流引擎运行过程中会涉及应用层的部分插件,为了能够及时通知插件,需要插件也将接收消息的接口统一封装为Webservice服务[19]。当流程运转到某个节点时工作流能立即通知相关插件的接口。在业务层一方由于各插件既有主动与工作流通信的需求也有被动接收消息的需要,通过统一开发独立的代理插件可简化各插件的工作流通信工作,也封装了与工作流通信的细节信息,降低耦合度。
3.3 流程部署
在工作流管理系统通过对工作流模型实例化和统一的面向服务的接口定义完成对整个流程服务的部署。
业务流程中各个业务节点与工作流引擎保持实时状态通信,上报流程执行状态,工作流引擎根据流程建模时定义数据流转规则和调用关系驱动业务流程的执行。流程状态以消息方式在各服务与工作流引擎之间传递,以可靠的服务间消息通信方式,确保数据传输的正确性和及时性。
根据卫星个性特点开发独立处理插件,在工作流模型中配置各个插件的运行流程。工作流负责通知和收集各插件的任务和结果。各类插件提供统一的Webservice接口保持一致性,当出现业务变化时只需删除旧插件、替换新插件即可,以保证整个系统在运行过程中功能模块无缝替换。
3.4 应用实例
以卫星数据下传计划处理流程为例,由于涉及到国内外10多个卫星机构的30多颗卫星,而且卫星的扩充很频繁,每个卫星机构、每颗卫星的数据下传计划的格式、频度、处理逻辑和后续计划反馈流程等均不同,所以卫星下传计划格式解析需要可扩展,按照卫星分解成多个处理节点进行解析。
在进行工作流设计时,接收到相应卫星数据下传计划后,通过后置条件驱动,完成各卫星接收计划的解析插件,首先在工作流模型中建立已有各卫星工作流程如图2所示,其中的一个节点对应一个插件。数据传输模块接收卫星地面管控系统发送的数据下传计划后启动工作流,根据软件提交的数据自动选择对应的卫星流程分支,通知相应的解析插件,调用其公布的Webservice接口。解析插件处理完成后再将解析结果通过工作流代理插件提交工作流,工作流再根据提交的数据选择分支,如果成功则调用卫星计划处理分析插件公布的Webservice接口。
新增卫星接收计划处理能力有需求时,如图2中虚线框所示,只需按照标准规范新研具体卫星接收计划解析插件、卫星接收计划处理分析插件等,关联到工作流模型中,即可以完成新增卫星接收计划自动处理流程。这样的开发方式,对于系统的升级改造,只需要增加相应的功能模块,添加到工作流模型中,业务逻辑的判断、分支处理都由工作流模型来调度,不修改原有软件模块、插件,剥离系统耦合度,极大地提高了系统的可扩展性,减少了系统升级改造的工作量。由于不修改原有软件模块,不会影响原有系统功能运行,可以提高系统的可靠性[20]。
图2 任务调度工作流模型设计示例
4 结束语
本文采用工作流技术,基于插件开发方法进行卫星数据接收调度系统的设计,提供了一种基于OSGI和工作流的卫星数据接收任务调度系统的设计实现方法,使系统具备了模块化与插件化支持、热插拔与动态支持、面向服务架构支持和模块扩展性支持等能力,使系统具有灵活性、敏捷反应能力和良好的可扩展能力等特点。一方面可以充分利用现有任务调度系统能力,保障原有业务功能不受影响;另一方面快速搭建新的系统能力,为新增卫星和地面接收站提供数据接收调度能力。
本文主要针对当前主流地面系统进行设计,但随着卫星地面系统的发展,还存在一定局限性,在对未来海外站任务调度的支持、未来测控任务调度的支持等方面还需要进行深入研究和改进。