基于SOA架构的遥感产品在线定制系统设计和实现

2014-08-01 01:48李若鹭张静刘士彬段建波
遥感信息 2014年3期
关键词:流程图架构流程

李若鹭,张静,刘士彬,段建波

(中国科学院遥感与数字地球研究所,北京 100094)

1 引 言

经过近40多年的发展,遥感技术已经渗透到国民经济的各个领域,对于推动经济建设、社会进步、环境改善和国防建设起到重大作用。与此同时,得益于航空和航天技术的飞速发展,遥感数据的获取技术正向三多(多传感器、多平台、多角度)和三高(高空间分辨率、高光谱分辨率、高时相分辨率)方向发展,遥感数据量正以每天TB级的速度在增长[1]。海量的遥感数据能够在社会不同领域发挥不可替代的作用,然而,由于不同领域的需求多样化,用户需要应用的算法模型的多样性,如何能从海量的遥感数据中快速的生产出满足用户需求的产品便成为一个关键问题。传统的方法必须从海量的数据源中选择所需要的数据,然后为了生产出满意的产品则必须将多种的、复杂的遥感算法模型应用到这些数据中。这种方式虽然可行,却复杂繁琐。而工作流技术作为现代企业实现过程管理与过程控制的一项关键技术,能够为遥感产品的生产定义一套统一的模型表达和实现,能够快速地生产出所需的遥感产品[2]。Fearns Peter就曾提出过一个基于工作流技术的遥感数据处理系统,该系统使得非技术型的用户可以方便地对海量的遥感数据进行访问、处理和分析[3]。

目前虽然存在着有许多开源的工作流产品,如fireflow、Willow、workflow、JBPM等,而且也有许多基于BPM的可视化和处理流程的研究和实现[4],但如何设计和实现一个功能齐全的工作流系统依然存在着很大的挑战。因为依照传统的软件的架构方法,系统往往会在构建过程中变得紧密耦合而且难于扩展和维护,遥感产品在线定制系统由于自身的复杂性也存在着同样的问题,所以本文引入SOA来解决软件架构不够灵活的问题。

企业服务总线(Service Oriented Architecture,SOA)最早于1996年被Gartner公司提出,旨在以服务的方式来架构整个系统,它将系统看成由服务的调用和服务的实现所组成[5],为本文提出了一个架构系统的新思路。本文将针对这些问题进行探讨和研究,结合SOA的思想,提出一个基于SOA架构体系的遥感产品在线定制系统。

2 技术介绍

2.1 工作流技术

工作流的概念起源于生产组织和办公自动化领域,是针对日常工作中具有固定程序活动而提出的一个概念,它是一种计算机化的过程表示模型,定义了完成整个过程所需要的各种参数,这些参数包括对过程中每一个单独步骤的定义、步骤间执行顺序、条件以及数据流的建立、每一步骤由谁负责以及每个活动所需要的应用程序[2]。工作流是计算机支持的协同工作的一部分,它包含有两个部分:工作流模型和工作流的实现[6]。工作模型即对工作流的抽象表示,由于工作流需要同时面对计算机环境和用户,因此一个可以清晰表达工作流的模型是必不可少的,在现实的生产中,这些模型多为流程图的形式。工作流的实现则是将抽象的、图形化的工作流模型映射为实际的实现过程,即需要处理工作流各个步骤之间的通信以及确定系统各个组成部分之间的协作,最终完成工作流所定义的程序活动。

2.2 面向服务的架构

面向服务的架构(Service Oriented Architecture,SOA)最早由Gartner公司与1996年提出,Gartner将SOA定义为一个从接口定义开始的软件架构,整个系统的结构由这些结构的拓扑结构和接口的实现以及接口的调用所实现[7-8]。它是一套结构系统的方法学,旨在降低系统内的偶合程度。在此定义之下,接口、接口的实现、接口的调用分别理解为服务的描述、服务的实现以及服务的调用,它将整个系统看成是由服务所组成的[9]。在SOA架构中,分布在网络中的软件资源都看成是服务,这些服务是从需求开始的,而非从技术开始。因此,SOA摆脱了面向技术的解决方案,朝着面向服务发展。同传统架构相比,SOA更有弹性,能够更快地响应业务需求,使得系统更加灵活。通过制定统一的服务接口,由服务的定义和服务的实现来构建整个系统将使得整个系统拥有更大的灵活程度及敏捷性,极大地增加系统的可扩展性和可维护性。

3 基于SOA架构的遥感产品在线定制系统设计

3.1 功能的设计

从用户的角度出发,希望通过一个统一的网络界面访问遥感产品在线定制系统,同时,用户可以通过简单的绘制生产流程图来描述所需要的产品,系统会对这个生产流程进行验证、管理、执行,并及时向用户反馈执行结果。因此,本文定义了一些基本的流程图要素,这些要素可以组成复杂的产品生产流程,如表1所示。

表1 流程图基本组成元素表

一个复杂的产品生产流程必须拥有一个开始节点以及一个或多个结束节点,而算法节点则表示是一个遥感算法模型。从精确定义上说,遥感算法模型是指运用数理统计等多种方法,以及计算机领域的知识,实现对遥感数据源进行处理、分析、解译等目标的算法或者模型;而从广义上说,遥感算法模型包含输入、输出和处理的遥感数据过程,它是一个黑箱,用户向其输入算法参数,而得到处理结果,用户并不关心算法的实现细节。从某种意义上说,一个用户自定义的完整流程也可以被看作是一个算法节点,它同样是由输入参数得到输出结果的过程,因此,在本系统中流程是可以嵌套的。也就是说,一个定义良好的流程可以作为子流程在其他更加复杂的流程中充当算法节点。这个特点也使定制复杂的流程变得简洁而且高效。

而流程执行路由、分支、结合则是连接其他各个元素的元素,它们标识了生产流程的执行过程以及各个元素之间的关系。流程执行路由连接各个其他元素,标识着流程执行的方向;分支节点则表示流程执行在通过该节点之后将会分为多个执行方向并行处理;结合节点则会将结合多个并行执行的流程方向,将其结合为一个方向。

用户可以利用这些基本的流程图要素来绘制各种复杂的流程图,这个流程图能够描述用户的生产需求,而且能被系统识别并且最终执行。

3.2 系统设计

为了设计出一个满足以上需求的遥感产品定制系统,本文将遥感产品生产系统中的数据模型分成流程模型、流程实例模型、算法模型和参数模型。一个数据模型定义了一类数据的组织存储方式以及相关的操作方法。流程模型即用户自定义流程的相关信息和操作;流程实例模型是一个具体流程被提交生产之后的信息表达;流程是由多个不同的处理算法组成的,因此算法模型则是存储算法信息的数据模型;而参数模型则描述了某一个具体的算法输入、输出的参数信息。

而为了使系统本身不会随着扩展变得臃肿,本文将采用一种基于SOA的架构,将这些数据模型相关的功能封装起来,形成一个基础服务层,对外仅表现为服务的调用接口,对内则管理并且实现这些具体服务。通过建立此基础服务层,把系统中重用性很高的功能都封装为服务,而系统的其他部分则只需调用这些服务而不必考虑实现过程。因此,在此基础服务层之上可以不断扩展系统功能的同时保持系统的灵活性。

如图1所示,系统共分为3层:Web表现层、流程生产驱动层和基础服务层。

图1 系统整体架构图

3.2.1 Web表现层

Web表现层即整个遥感产品定制系统的UI界面,是用户与系统进行交互的接口、整个系统的表现层模型。主要涉及到两个主要的功能:业务逻辑模块和在线流程制定模块。

业务逻辑模块负责为用户提供统一的Web界面,使用户可与遥感产品生产系统进行交互,该模块提供了一些基本功能来满足用户对自身信息的管理和维护,如查看用户自定义的流程信息、添加算法等。

流程定制模块向用户提供绘制流程图的功能,采用Flex实现,用户可以通过简单的拖拽来自定义一个生产流程。该模块同时会将图形化的流程图映射为流程数据模型并验证流程图的合法性。

3.2.2 流程生产驱动层

流程生产驱动层,其核心功能是执行用户在客户端定制的数据处理工作流程,该层由任务调度、解析流程信息、生产流程和反馈运行状态4个部分组成。它需要通过基础服务层获得需要处理的流程信息,然后通过任务调度模块来对这些待处理流程进行调度;在生产过程中,流程生产驱动层需要解析从基础服务层获取到的生产流程描述信息,将静态的流程描述信息映射为一个可运行的流程实现;之后,按照这个流程的实现来生产流程,即调用合适的遥感数据算法,将这些算法应用到相应的遥感数据之上来进行生产,得到产品数据;在整个生产的过程中,还需通过调用基础服务层的相关服务来实时反馈流程的执行状态。该层主要解决如何运用工作流技术实现描述性的工作流流程信息到具体的工作流运行实现的映射。

3.2.3 基础服务层

Web应用层主要是用JAX-WS(Java API for XML Web Services)开发的一系列Web Service,用于满足其他之上的层所需的一些功能,是整个系统的基础层,它实现了系统中重用度比较高的业务逻辑功能。Web服务层是整个系统架构中的服务提供者,它将系统中的资源封装成为服务。同时,向下它通过持久访问层与数据库打交道,从而将系统的其他层与数据库细节隔离开来。由于其他层中的数据库访问功能以及相关的流程信息的具体存储实现功能封装在此层中,因此其他层可以更加专注于本身业务逻辑的处理,而不必关注繁琐的细节。作为一个SOA架构体系中的服务层,基础服务层为其上层提供了基础的功能,并且负责管理基础服务,是整个系统的基础结构层。为系统提供全面的服务以及管理的便利性,根据遥感产品定制系统的数据模型,将整个基础服务层分为4个模块:算法服务,算法参数服务,流程服务和流程实例服务。这4个模块分别提供了与相应数据模型模型相关的功能:算法服务提供了注册算法、查询算法以及修改算法的功能;算法参数服务提供了对算法的输入、输出参数的类型进行定制的功能,即某些算法可能需要参数为特定格式的图像,可以通过算法参数服务来注册新的参数类型;流程服务则管理所有的用户流程,包括流程的存储,流程的查询检索以及流程的修改等功能;流程实例服务为管理正在运行的流程提供相应的功能,主要提供用来查询和控制正在运行的流程实例的功能。

在这样一个设计之中,基础服务层将整个系统中涉及到底层数据存储逻辑的功能作为服务提供给其他层次,是SOA架构体系中的服务提供者。而上层的Web表现层和流程生产驱动层则是服务使用者,它们不用关心如何实现某一特定功能,只需要调用基础服务层的相关服务来完成这一功能即可。此设计可以使得服务的使用者不用关心其职责之外的事,而达到职责的单一化来实现整个系统的松耦合[10]。如Web表现层是用于显示流程信息,并给用户提供操作接口,它并不关心底层是如何存储用户流程信息的,这些底层的存储功能都是由基础服务层实现并且以Web Service的形式提供。

4 基于SOA架构的遥感产品在线定制系统实现

4.1 系统运行环境

本系统大部分由Java以及Java相关技术实现,可以在任何操作系统下实现,考虑到运行的可靠性,本文采用的操作系统是Ubuntu Linux。其中,Web表现层主要用Flex4以及SSH架构(Structs+Sping+Hibernate)实现;生产驱动子系统主要采用JBPM5.3实现;基础服务层采用JAX-WS(Java API for XML Web Services)实现;后台数据库采用MYSQL;搭载整个系统运行的Web应用服务器是Tomcat。从用户的角度看这是一个B/S架构的系统,只要拥有主流的浏览器即可访问系统。如表2所示。

表2 基本软硬件配置环境一览

4.2 系统的功能展示

图2 系统界面预览

系统的Web界面(图2),是用户和系统之间的接口,它为用户提供了遥感产品流程的在线定制、遥感算法的在线注册与管理、产品流程的管理与查询等功能,并能在线提交遥感产品流程,以驱动后台核心工作流引擎进行实时生产。

图3是用户绘制的一个简单的遥感产品生产流程,开始节点标示着流程执行的开始,结束节点标示着流程执行的结束,中间两个节点是组成该流程的两个算法:NDVI算法和可视化NDVI算法。

用户在绘制完成流程图之后,系统将会验证流程图的正确性,通过验证的流程图即可进入生产阶段,在进行生产之前,用户应该表明流程的输入参数(在本例中即选择预处理的遥感数据)。而且用户可以上传需要处理的影像作为输入参数。

图3 流程绘制一览图

用户提交生产的流程将会被系统后台调度执行,在流程的执行过程中,系统为用户提供了一个监控界面,可以实时的监控流程的执行情况,如图4所示,流程正执行到NDVI的处理。在流程执行结束后,生产结果将会向用户反馈,目前本系统会像用户发送一个URL地址,其中存储了流程执行的最终结果。

图4 流程执行过程监控

5 结束语

本文阐述了基于工作流技术和SOA技术解决批量生产遥感产品的一种方式,通过构建一个基于SOA的遥感产品在线定制系统,可以满足不同行业需求快速的生产出所需的遥感产品。本文设计的基于SOA的遥感产品定制系统拥有极大的灵活和扩展性,整个系统处于一种松耦合和易于扩展的状态;它为用户提供了一个易于理解的流程描述模型,同时借助于JBPM工作流引擎能够快速实现用户定制的流程、生产出遥感产品。对有着不同需求的不同行业内的遥感数据批量化、自动化生产有一定借鉴意义。

参考文献:

[1] 梅安新.遥感导论[M].高等教育出版社,2001.

[2] 罗海滨,范玉顺,吴澄.工作流技术综述[J].软件学报.2000,11(7):899-907.

[3] PETERA F,MATTHEWB B,MARKA B,et al.Web-based processing of remote sensing data in a workflows environment[J].ISRSE2011:The GEOSS Era:Towards Operational Environmental Monitoring.Sydney Convention & Exhibition Centre,N.S.W,2011.

[4] 殷实.基于JBPM引擎的工作流技术研究与应用[D].华中科技大学,2011.

[5] 吴步丹,金芝,赵彬.面向服务的建模:一种全过程复用的方法[J].计算机学报,2008,31(8):1293-1308.

[6] 曾月,范玉顺.工作流管理系统Web客户端的设计与实现[J].计算机工程与应用,2002,38(2):130-133.

[7] 吴家菊,刘刚,席传裕.基于Web服务的面向服务(SOA)架构研究[J].现代电子技术,2005,28(14):1-4,7.

[8] 赵红毅,孟德恩.基于SOA的工作流系统集成研究与设计[J].现代电子技术,2012,35(22):29-32.

[9] SPROTT D,WILKES L.Understanding Service-Oriented Architecture[J/OL].http://msdn.microsoft.com/en-us/library/aa480021.aspx.

[10] 魏东,陈晓江,房鼎益.基于SOA体系结构的软件开发方法研究[J].微电子学与计算机,2005,22(6):73-76.

猜你喜欢
流程图架构流程
基于FPGA的RNN硬件加速架构
吃水果有套“清洗流程”
功能架构在电子电气架构开发中的应用和实践
基于云服务的图书馆IT架构
违反流程 致命误判
WebGIS架构下的地理信息系统构建研究
本刊审稿流程
析OGSA-DAI工作流程
宁海县村级权力清单36条
《天津医药》稿件处理流程图