李若鷺,張靜,劉士彬,段建波
(中國科學院遙感與數字地球研究所,北京 100094)
經過近40多年的發展,遙感技術已經滲透到國民經濟的各個領域,對于推動經濟建設、社會進步、環境改善和國防建設起到重大作用。與此同時,得益于航空和航天技術的飛速發展,遙感數據的獲取技術正向三多(多傳感器、多平臺、多角度)和三高(高空間分辨率、高光譜分辨率、高時相分辨率)方向發展,遙感數據量正以每天TB級的速度在增長[1]。海量的遙感數據能夠在社會不同領域發揮不可替代的作用,然而,由于不同領域的需求多樣化,用戶需要應用的算法模型的多樣性,如何能從海量的遙感數據中快速的生產出滿足用戶需求的產品便成為一個關鍵問題。傳統的方法必須從海量的數據源中選擇所需要的數據,然后為了生產出滿意的產品則必須將多種的、復雜的遙感算法模型應用到這些數據中。這種方式雖然可行,卻復雜繁瑣。而工作流技術作為現代企業實現過程管理與過程控制的一項關鍵技術,能夠為遙感產品的生產定義一套統一的模型表達和實現,能夠快速地生產出所需的遙感產品[2]。Fearns Peter就曾提出過一個基于工作流技術的遙感數據處理系統,該系統使得非技術型的用戶可以方便地對海量的遙感數據進行訪問、處理和分析[3]。
目前雖然存在著有許多開源的工作流產品,如fireflow、Willow、workflow、JBPM等,而且也有許多基于BPM的可視化和處理流程的研究和實現[4],但如何設計和實現一個功能齊全的工作流系統依然存在著很大的挑戰。因為依照傳統的軟件的架構方法,系統往往會在構建過程中變得緊密耦合而且難于擴展和維護,遙感產品在線定制系統由于自身的復雜性也存在著同樣的問題,所以本文引入SOA來解決軟件架構不夠靈活的問題。
企業服務總線(Service Oriented Architecture,SOA)最早于1996年被Gartner公司提出,旨在以服務的方式來架構整個系統,它將系統看成由服務的調用和服務的實現所組成[5],為本文提出了一個架構系統的新思路。本文將針對這些問題進行探討和研究,結合SOA的思想,提出一個基于SOA架構體系的遙感產品在線定制系統。
工作流的概念起源于生產組織和辦公自動化領域,是針對日常工作中具有固定程序活動而提出的一個概念,它是一種計算機化的過程表示模型,定義了完成整個過程所需要的各種參數,這些參數包括對過程中每一個單獨步驟的定義、步驟間執行順序、條件以及數據流的建立、每一步驟由誰負責以及每個活動所需要的應用程序[2]。工作流是計算機支持的協同工作的一部分,它包含有兩個部分:工作流模型和工作流的實現[6]。工作模型即對工作流的抽象表示,由于工作流需要同時面對計算機環境和用戶,因此一個可以清晰表達工作流的模型是必不可少的,在現實的生產中,這些模型多為流程圖的形式。工作流的實現則是將抽象的、圖形化的工作流模型映射為實際的實現過程,即需要處理工作流各個步驟之間的通信以及確定系統各個組成部分之間的協作,最終完成工作流所定義的程序活動。
面向服務的架構(Service Oriented Architecture,SOA)最早由Gartner公司與1996年提出,Gartner將SOA定義為一個從接口定義開始的軟件架構,整個系統的結構由這些結構的拓撲結構和接口的實現以及接口的調用所實現[7-8]。它是一套結構系統的方法學,旨在降低系統內的偶合程度。在此定義之下,接口、接口的實現、接口的調用分別理解為服務的描述、服務的實現以及服務的調用,它將整個系統看成是由服務所組成的[9]。在SOA架構中,分布在網絡中的軟件資源都看成是服務,這些服務是從需求開始的,而非從技術開始。因此,SOA擺脫了面向技術的解決方案,朝著面向服務發展。同傳統架構相比,SOA更有彈性,能夠更快地響應業務需求,使得系統更加靈活。通過制定統一的服務接口,由服務的定義和服務的實現來構建整個系統將使得整個系統擁有更大的靈活程度及敏捷性,極大地增加系統的可擴展性和可維護性。
從用戶的角度出發,希望通過一個統一的網絡界面訪問遙感產品在線定制系統,同時,用戶可以通過簡單的繪制生產流程圖來描述所需要的產品,系統會對這個生產流程進行驗證、管理、執行,并及時向用戶反饋執行結果。因此,本文定義了一些基本的流程圖要素,這些要素可以組成復雜的產品生產流程,如表1所示。

表1 流程圖基本組成元素表
一個復雜的產品生產流程必須擁有一個開始節點以及一個或多個結束節點,而算法節點則表示是一個遙感算法模型。從精確定義上說,遙感算法模型是指運用數理統計等多種方法,以及計算機領域的知識,實現對遙感數據源進行處理、分析、解譯等目標的算法或者模型;而從廣義上說,遙感算法模型包含輸入、輸出和處理的遙感數據過程,它是一個黑箱,用戶向其輸入算法參數,而得到處理結果,用戶并不關心算法的實現細節。從某種意義上說,一個用戶自定義的完整流程也可以被看作是一個算法節點,它同樣是由輸入參數得到輸出結果的過程,因此,在本系統中流程是可以嵌套的。也就是說,一個定義良好的流程可以作為子流程在其他更加復雜的流程中充當算法節點。這個特點也使定制復雜的流程變得簡潔而且高效。
而流程執行路由、分支、結合則是連接其他各個元素的元素,它們標識了生產流程的執行過程以及各個元素之間的關系。流程執行路由連接各個其他元素,標識著流程執行的方向;分支節點則表示流程執行在通過該節點之后將會分為多個執行方向并行處理;結合節點則會將結合多個并行執行的流程方向,將其結合為一個方向。
用戶可以利用這些基本的流程圖要素來繪制各種復雜的流程圖,這個流程圖能夠描述用戶的生產需求,而且能被系統識別并且最終執行。
為了設計出一個滿足以上需求的遙感產品定制系統,本文將遙感產品生產系統中的數據模型分成流程模型、流程實例模型、算法模型和參數模型。一個數據模型定義了一類數據的組織存儲方式以及相關的操作方法。流程模型即用戶自定義流程的相關信息和操作;流程實例模型是一個具體流程被提交生產之后的信息表達;流程是由多個不同的處理算法組成的,因此算法模型則是存儲算法信息的數據模型;而參數模型則描述了某一個具體的算法輸入、輸出的參數信息。
而為了使系統本身不會隨著擴展變得臃腫,本文將采用一種基于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的形式提供。
本系統大部分由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 基本軟硬件配置環境一覽

圖2 系統界面預覽
系統的Web界面(圖2),是用戶和系統之間的接口,它為用戶提供了遙感產品流程的在線定制、遙感算法的在線注冊與管理、產品流程的管理與查詢等功能,并能在線提交遙感產品流程,以驅動后臺核心工作流引擎進行實時生產。
圖3是用戶繪制的一個簡單的遙感產品生產流程,開始節點標示著流程執行的開始,結束節點標示著流程執行的結束,中間兩個節點是組成該流程的兩個算法:NDVI算法和可視化NDVI算法。
用戶在繪制完成流程圖之后,系統將會驗證流程圖的正確性,通過驗證的流程圖即可進入生產階段,在進行生產之前,用戶應該表明流程的輸入參數(在本例中即選擇預處理的遙感數據)。而且用戶可以上傳需要處理的影像作為輸入參數。

圖3 流程繪制一覽圖
用戶提交生產的流程將會被系統后臺調度執行,在流程的執行過程中,系統為用戶提供了一個監控界面,可以實時的監控流程的執行情況,如圖4所示,流程正執行到NDVI的處理。在流程執行結束后,生產結果將會向用戶反饋,目前本系統會像用戶發送一個URL地址,其中存儲了流程執行的最終結果。

圖4 流程執行過程監控
本文闡述了基于工作流技術和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.