李文宏



【摘要】分析合并高校和“大學城”校區、校際間信息共享的需求和特點,針對現有解決方案和建設模式存在的問題,結合面向服務的思想和工作流集成技術,提出基于Web服務的跨校選課應用系統集成方案,給出一種松耦合且可擴展的架構。文章闡述基于Web服務的跨校選課系統運行的環境和機制,借助BEA Web Logic Platform8.1集成平臺實現系統的主要功能,論證其可行性及優越性。
【關鍵詞】跨校選課系統;Web服務;工作流;協同
【中圖分類號】G40-057 【文獻標識碼】A【論文編號】1009—8097(2009)12—0054—04
一 研究背景
伴隨高校合并和“大學城”的出現,高校間資源整合、優勢互補的發展趨勢,促使學生選課范圍向分布式、異構環境延伸,傳統教務信息管理平臺已無法滿足跨校選課過程動態、并發和協同的需要。因此,我們有必要設計有效的跨校信息共享系統。
對于數字化校園信息共享模式的研究,目前有相同實體對象公共存儲的方法;基于對象規范化的共享方式;基于系統互操作框架的信息共享機制[1]。這些方法主要關注于解決底層數據標準化的問題,或者是局部信息共享的問題,這種自底向上的方法難以適應跨校業務從全局出發的思路;盡管像COM/DCOM、COBRA和Java RMI等分布式對象中間件較好地解決了校區局域網內的互操作問題,但這種緊耦合模式并不能滿足跨校區異構系統之間動態協同的需求;隨著Web Services和工作流技術的發展,人們考慮利用Web服務解決跨域系統的互操作問題,但服務與工作流技術相結合的研究,主要集中于語義Web服務的研究,有的是在傳統工作流系統的基礎上提供對Web服務建模和執行的支持,并沒有解決面向服務工作流的分布式服務如何進行事務性協作的問題[2]。
我們基于SOA架構思想,利用Web Services技術,將異構的應用程序以Web服務的方式組織起來,通過靈活可變的流程建模和設計,將這些服務串接起來,從而實現一個完整的業務處理流程,滿足工作流的柔性需求;我們可以將這些已經定義好的流程,繼續組織包裝成一個Web服務,通過服務注冊和服務發現,動態地作為子流程元素,進一步作為上一層系統流程的服務單元,通過建立有效得協同機制和協同接口,實現業務流程的事務性協同;利用邏輯實體業務流程管理器(Business Process Management,BPM)負責高層服務的組合、發布和提供,滿足跨域業務間的動態協同。
二 基于Web服務的跨校選課系統框架結構
在SOA架構下,我們設計了跨校選課系統,如圖1所示。跨校選課業務流程的建立是分布進行的,每個參與者(分校區或學校)可以建立自己的流程,完成特定的業務目標。在更高的層次上,通過業務流程管理器BPM將這些流程組合在一起,實現更復雜的業務流程。為了組合這些流程,考慮到環境的異構和分布特性,將分校區流程發布為Web服務,就可以在XML、HTTP、SOAP和WSDL等標準協議的基礎上實現流程的集成。流程可以封裝為Web服務,Web服務又可以被調用來實現復雜業務流程中的一個步驟。流程的執行與流程的監控和管理都建立在這個基本思想之上。
圖1 跨校選課系統框架結構
業務流程管理器(BPM)是一個邏輯實體,負責高層服務的組合、發布和提供。在物理實現時它可以是一個獨立的系統,也可以作為其他校區應用管理系統中的一個功能模塊而存在[3]。當有跨校區業務需求時,業務流程管理器進行組合服務的設計,通過注冊中心查找到所需的服務,然后對現有校區服務進行流程組合,形成新的流程服務并將其發布到注冊中心,在此過程中,業務流程管理器作為服務請求者查找服務,但是并沒有與真正的服務綁定。從而形成一種松耦合和可擴展的架構。
此體系結構業務流程協同具有動態的特性,一方面是協同活動間依賴關系的動態性,即相互協同的活動間往往具有輸入輸出依賴、因果依賴或時序依賴等,預定的依賴關系在協同過程中可能會因為一些意外因素而做出修改,但由于在頂層業務流程設計過程中并沒有綁定真正的服務,因此流程的更改不會影響校區應用實體,也不涉及與其他校區實體的接口關系;而在流程執行過程中,時序關系發生的變更只是由業務流程管理器的流程執行管理器來執行,服務請求者和被調用校區應用系統都不會感知到任何變化,即協作活動間的依賴關系可以在被調用方未知的情況下動態更改。協同動態性的另一方面是協同參與者可能動態加入或退出,比如跨校選課系統,在規定學分的選課規則下,學生可以按照任意順序任選、退選A校或B校的課程,協同的活動劃分也可隨著協同的進展而動態調整。同樣的,也只需在業務流程管理器的頂層流程設計中進行修改,動態增加或刪除的校區應用實體對服務請求者和其他被調用實體都不受影響,從而實現參與者的動態增加、刪除和調整。
三 基于Web服務跨校選課系統的實現
在面向SOA架構下,我們將應用邏輯與業務流程邏輯分離,具體協同過程如圖2所示。在不修改校區內業務流程具體功能實現的前提下,只修改集成業務的流程模型來改變系統功能,從而快速應對跨校區業務動態協同的需求。
圖2 跨校區選課業務流程協同
假設A校某學生實例化了一個跨校選課流程,需要B校和C校的業務協同。按照用戶(A校)實例化的流程,該流程執行到第2個活動需要B校的業務協同,用戶調用了Internet上B校教務管理系統的Web選課服務A接口。B校教務管理系統接收到選課服務A的執行請求后,向消息管理器中寫入學生跨校區選課實例化請求,如果用戶合法,消息協調器獲取該消息后驅動工作流機執行該流程實例,并將執行結果寫入注冊中心中,此時B校教務管理系統的該流程實例處于等待狀態,需要用戶再次通知才可以完成業務提交。選課服務A獲取結果并返回給用戶,當用戶確認選課服務B執行成功時才繼續實例化需要C校的第3個活動,該活動的執行過程與第2個活動類似。這些協同活動的執行成功與否直接決定了用戶跨校選課的流程是否可以繼續流轉,只有在所有活動全部執行成功時,用戶才向B校和C校的所有相關協作服務發出業務提交請求,B校和C校相應完成提交操作。如果此時B校和C校的提交過程出現任何錯誤,用戶均將不能完成業務提交,并將通知B校和C校進行相應的補償操作。此外超時機制[5]確保了在出現各種故障時,用戶、B校和C校可以脫離等待狀態并釋放相關資源。
1 分校區選課流程的發布及重用
基于Web服務技術,校區原有業務流程無需改變原有的應用系統,只有在原有系統的前提下,加上一個SOAP接口就可以將現有、用不同技術開發的系統互連起來,提供相應的數據交互和訪問操作,從而實現遠程、大范圍的業務流程集成。圖3提供了業務流程發布的模型。
圖3 業務流程發布過程
對于原有的系統,使用適配器將它們表示為Web服務形式,提供SOAP等標準接口,注冊到UDDI,對外提供業務流程服務。流程定義和流程管理工具均通過SOAP接口同原有的業務流程進行交互,流程定義工具將負責UDDI和注冊服務資源之間的交互。我們以基于服務的WSDL定義構建Web的靜態服務客戶端,使用EJB和Java Bean接口以及類構建Web服務,Web Logic Workshop通過“Overview”自動提供WSDL定義,任何給出WSDL文件的Web服務都可以被Web Logic Workshop方便地調用[4]。
2跨校選課流程的執行過程
(1) 流程定義
● 跨校選課事務處理
分校區選課流程是被跨校選課流程調用的子流程,它以服務的形式發布到服務注冊中心,當用戶建模需要選取這個服務時,業務流程管理器就把該子流程作為控件添加進主流程。通過初始化與用戶交互的任務控件,集成跨校選課Web應用與業務流程管理器中的業務流程。
業務流程管理器接收帶有選課信息的標準Java對象作為參數,然后把Java對象中的數據轉換為導入的XSD Schema所代表的通用選課對象。作為處理跨校選課請求的主流程,因為涉及人工交互,因此它的響應時間是不確定的,該流程被認為是一個長時間運行的流程。長時間運行的流程可能會因為響應問題發生無法預計的阻塞,因此針對重大失敗需要有故障恢復的能力。
有狀態流程支持那些包括復雜、長時間運行邏輯的場景,為了滿足跨校選課一定的可靠性和可恢復需求,通過添加有狀態節點、或者強制事務邊界的邏輯,可以把一個流程變成有狀態的。例如,一個流程首先接受消息,轉換消息,發送消息給協同校區,然后等待一個有狀態異步響應。為了使Web服務在于客戶端的異步通信過程中能夠有效地跟蹤數據,我們采用Web Logic Workshop中的隱式會話惟一標識某個客戶端和web服務之間的通信,并維護操作之間的狀態。業務流程管理器與Web服務之間的異步會話代碼如下:
/**
* @common: operation
* @common: message-buffer enable="true"
* @jws: conversation phase="start"
*/
Public void createOrderAsync (int custID, OrderEntryServiceFolder.OrderInfo order)
{
orderEntryService.createOrderAsync (custID, order);
}
● 定制審核邏輯
經過業務流程管理器與Web服務之間的交互,建立了一個業務流程邏輯。在映射到執行操作之前,只有滿足了學分制選課規則的要求,比如專業課和選修課的配比,總學分的要求等,才能執行具體選課業務。我們在業務流程邏輯和應用邏輯之間加入審核邏輯。審批邏輯需要在具體綁定服務之前執行,我們使用建模環境的“前置”處理功能添加定制邏輯,并使用XMLBeans接口來設置數值。添加定制邏輯之后的Java源代碼如下:
// Set the judge priority in the order document
MyJudgepriority = MyJudgepriority.toUpperCase ();
MyJudge.getJudge ().setJudgePriority (MyJudgepriority);
(2) 流程執行
滿足了選課學分的規則之后,進入應用邏輯物理實現階段,業務流程執行管理器運行,向分校區的所有相關協作服務發出業務提交請求,具體校區相應完成提交操作。因為子流程的執行是并發的,我們在主流程中要實現并發子流程的環節放置Task Node,設置create-tasks="false"、signal="last-wait" 。在Task Node的Node-Enter action中,我們手動為每一個Task創建一個任務實例,同時我們取得Task的名字也就是要并發的子流程的名字,創建流程實例。為每個新創建的流程實例設置流程變量:TaskInstanceID表示創建當前子流程的那個主流程任務實例ID,并使子流程開始流轉。子流程結束,取得流程變量TaskInstanceID,該流程變量TaskInstanceID是創建他的那個主流程的任務實例,得到該Task Instance,并TaskInstance.end().這個時候因為我們設置了Task Node的Signal為"last-wait",所以當所有的子流程均結束的時候,主流程才會繼續,這樣我們也就實現了子流程的并發效果。首先讓我們看一下主流程的流程定義:
Xml version="1.0" encoding="UTF-8"?>
我們要利用這個Task Node實現并發子流程,create-tasks="true"是為了可以手動控制任務實例的創建,同時創建子流程,signal="last-wait"是為了實現當所有子流程均已完成,主流程才能繼續運行的效果
System.out.println("主流程啟動,并設置主流程ID");
System.out.println("主流程結束");
3 跨校區選課流程的監控和管理
流程實例監控可以提供完整的信息,并允許管理員終止、修改或掛起有問題的流程,可以前瞻性地監控業務事件并獲得自動異常通知,從而提高業務效率。關于業務流程的監控和管理,研究的焦點在于如何將數據或活動狀態傳給監控者,以及監控信息的圖形化顯示。而已有的監控方法,只關注個體的可靠執行,對個體間協調引發的不一致狀態的監控處理未能提出有效的解決方案。
我們采用層次型協同監控模型[6],根據執行跨校選課流程的不同實例之間的組織層次關系,派遣不同的監控者實施監控。一個業務流程的多個層次關系如圖4所示。通過監控者之間的協調機制實現對異常狀態在不同層次的診斷與處理,以保持全局狀態的一致。
圖4 跨校選課業務流程分解實例
圖4為一個跨校選課流程實例,它分解為5個子業務流程:BP0,BP1,BP2,BP3,BP4。當遷移業務流實例化時,在跨校區層,系統相繼派遣5個不同的子流程實例分別負責相應業務流程的執行。當某個任務(如T3)的激活條件滿足時,相應的子流程實例執行。為執行一個任務,可同時或依次激活一個或多個子流程實例。如果某個遷移實例的任務全部執行完畢,它將結果返回給其父遷移實例后可先行退出。每個子遷移流程都有相應的監控者,監控者記錄所有交互的狀態信息,如果某個遷移實例退出,則其監控者將其從持有的協同監控任務中刪除,同時更新其上層監控者的協同監控任務視圖。下圖是流程的實例和實例狀態監控截圖。
四 總結
該系統考慮到校園網各應用系統運行情況良好,為了不影響學校各關鍵業務應用的正常運行,充分地利用和發現現有資源,采用面向服務的SOA架構,應用間是松耦合的,全校各業務處理和業務信息存儲不會集中在單一的服務器和數據庫上,而是采用分布式層次型的處理和信息結構,各應用系統擁有其獨立的業務數據(資源)庫和業務處理,通過信息采集交換平臺和信息共享、互操作平臺,實現跨校區、跨部門、跨應用的共享互聯互通,既能保證信息的全校共享,又符合各業務系統處理分布、信息分布的特性。
跨校選課系統的安全管理,目前我們實現了基于角色的安全。另外,考慮Web服務的安全性,如何在Web服務之間傳遞的SOAP消息之上設計安全機制,保證消息在傳輸過程中以及到達接收方計算機的安全性,是我們下一步的主要工作。另外,系統中存在對靜態WSDL文件僅僅提供靜態綁定,以及使用資源局限性的問題,如何實現實時業務流程及時發現資
源,使服務提供者提供的Web服務在異構環境中能夠動態加入業務流程。
——————————
參考文獻
[1] 許鑫,金瑩.高校遺留系統信息整合研究[J].中國教育信息化,2009,1:14-17.
[2] 李建華,馬華,劉星沙.面向服務工作流的分布式業務管理研究[J].計算機工程,2007,33(4):58-63.
[3] 李文璟,邱雪松.基于SOA的IP網管系統間動態協作體系結構[J].通信學報,2008,29(12):81-85.
[4][EB/OL].
[5] 李慧芳,范玉順.工作流系統時間管理[J].軟件學報,2002,13(8):1552-1557.
[6] 盧朝霞,曾廣周.面向遷移工作流可靠執行地協同監控模型[J].計算機研究與發展,2009,46(3):398-406.