摘 要: 針對傳統(tǒng)的信息交流模式只能實現(xiàn)靜態(tài)工作流" title="工作流">工作流方式的弊端,提出一種動態(tài)即時協(xié)同工作" title="協(xié)同工作">協(xié)同工作的信息交流平臺。并以辦公系統(tǒng)為背景,將Java技術(shù)、XML技術(shù)、工作流技術(shù)及消息傳遞中間件技術(shù)有機結(jié)合,實現(xiàn)了用戶間在協(xié)同辦公平臺" title="辦公平臺">辦公平臺內(nèi)的在線信息交流。
關(guān)鍵詞: 動態(tài)協(xié)同 工作流驅(qū)動 中間件技術(shù)
信息社會對信息交流方式的要求越來越高,傳統(tǒng)的靜態(tài)工作模式已不適應即時獲取信息滿足協(xié)同工作的需要。本文以辦公系統(tǒng)為背景,將Java技術(shù)、XML技術(shù)、工作流技術(shù)及消息傳遞中間件技術(shù)有機結(jié)合,構(gòu)建了一個動態(tài)即時協(xié)同工作的信息平臺。該平臺基于XML協(xié)同動態(tài)工作流驅(qū)動和可視化的工作流建模工具(X-Wrokflow),滿足了用戶可視化流程自定義要求;基于XML的協(xié)同消息服務驅(qū)動,實現(xiàn)了用戶間在協(xié)同辦公平臺內(nèi)的在線信息交流,實時性好,滿足了人們對信息即時協(xié)同的工作需要。以下就有關(guān)功能實現(xiàn)問題進行討論。
1 協(xié)同動態(tài)工作流驅(qū)動及X-Workflow的實現(xiàn)
1.1 引擎的結(jié)構(gòu)
工作流引擎主要包含下列功能:解釋流程定義;生成過程實例;控制流程實例的創(chuàng)建、激活、掛起和終止等,實現(xiàn)流程活動導航;引導流程活動的進行,包括順序和并行操作期限調(diào)度工作流相關(guān)數(shù)據(jù)解釋等;確定需要用戶處理的工作項,提供用戶交互接口;維護工作流控制數(shù)據(jù)和工作流相關(guān)數(shù)據(jù),與用戶或應用程序" title="應用程序">應用程序傳遞工作流相關(guān)數(shù)據(jù);調(diào)用外部應用程序和連接工作流相關(guān)數(shù)據(jù)的接口;跟蹤具體流程實例的歷史等。一個工作流引擎[1]的過程流轉(zhuǎn)系統(tǒng)可以表示為一個三元組
1.2 基于XML的公文流轉(zhuǎn)系統(tǒng)工作流過程模型DT-XPDL
工作流模型描述表現(xiàn)形式有兩種:描述性語言和圖形設計工具。前者用語句描述工作流動規(guī)則,后者采用結(jié)點表示人、設備、應用程序等實體對象,用鏈表示文檔傳遞、請求、指令等。為了方便交互和在不同的模型之間實現(xiàn)轉(zhuǎn)換,人們提出了稱之為“工作流過程規(guī)范語言”的規(guī)范描述語言?,F(xiàn)有的工作流過程建模語言主要有以下幾類:(1)基于IPO(Input-Process-Output)的語言,如在IBM MQSeries Workflow使用的活動網(wǎng)絡,過程中的每一個基本活動都由輸入(I)、處理(P)、輸出(O)三個部分組成。這類語言按照活動執(zhí)行順序描述工作流過程。(2)基于對話行為(Speech-Act-based)的方法,有時也叫做語言行為方法。(3)基于約束的建模方法,如由GLANCE 提出的廣義過程結(jié)構(gòu)語法(Generalized Process Structure Grammar)。(4)基于角色建模的過程描述方法,如角色活動圖RAD(Role Activity Diagrams)。(5)基于形式化表示的建模方法,如基于Petri網(wǎng)的建模方法。
(1)工作流過程定義語言WPDL
1994年WfMC推出的工作流過程定義語言WPDL(Workflow Process Definition Language)是為創(chuàng)建工作流過程模型的輸入、輸出而建立的一種元語言。WPDL的關(guān)鍵詞是基于WfMC詞匯表中所定義的術(shù)語,術(shù)語清晰地描述了元模型中的過程實體。WPDL的實體類型不能再被擴展,但用戶定義的屬性可添加到單個實體類型中,工作流過程定義包括一個或多個工作流過程活動。
(2)XML過程定義語言XPDL
WfMC支持異構(gòu)工作流管理系統(tǒng)與產(chǎn)品之間的互操作性。由于Internet與Web的普及和標準化以及XML的良好特點,可利用Internet、Web及XML來解決互操作問題。2001年WfMC發(fā)布了一個基于XML描述的工作流過程定義接口規(guī)范——XML過程定義語言XPDL(XML Process Definition Language)[2]。XPDL與WPDL都是基于同一個工作流過程的元模型,只是在XML描述格式基礎(chǔ)上對WPDL進行映射并做了適當?shù)奶砑雍托薷?。由于XML具有不可比擬的優(yōu)點,基于XML描述的過程定義語言大大擴展了WfMC在基于B/S結(jié)構(gòu)的應用范圍,因此,XPDL已成為工作流過程模型的主要描述形式。
(3)面向公文流轉(zhuǎn)系統(tǒng)的基于XML的過程定義語言DT-XPDL
參考WfMC推出的WPDL/XPDL,結(jié)合我國辦公系統(tǒng)中公文流轉(zhuǎn)業(yè)務流程特點,建議采用面向公文流轉(zhuǎn)系統(tǒng)的基于XML的過程定義語言DT-XPDL (Document Transfer XML-based Process Definition Language),以實現(xiàn)工作流過程引擎。
1.3 動態(tài)工作流引擎的實現(xiàn)
(1) 過程實例的狀態(tài)
過程模型實例[3]有四個轉(zhuǎn)換狀態(tài):初始、運轉(zhuǎn)、暫時、結(jié)束。四個狀態(tài)在工作流控制系統(tǒng)控制下可相互轉(zhuǎn)移,如圖2所示由圖可見,對完成的過程實例,將移出工作流運轉(zhuǎn)系統(tǒng),以保證完成的實例不再占用系統(tǒng)資源,從而避免了對活動實例處理效率的影響。
(2) 實例管理
引擎通過輪詢控制狀態(tài)的轉(zhuǎn)換。對于過程實例,引擎用XML的元素對其進行描述。在DOM數(shù)的構(gòu)造中,這些實例處于樹的最底層,相當于葉子結(jié)點,引擎通過元素名對它們逐次訪問。當用戶登錄進入系統(tǒng)時,引擎會將待處理元素的信息返回給用戶,如果沒有該用戶要處理的信息,引擎不采取任何行動。當用戶進入系統(tǒng)時,如有用戶要處理的實例,則該實例將進入新的待處理隊列,由用戶發(fā)送處理請求,直到實例處理或用戶推出系統(tǒng),實例將掛在待處理隊列中等待處理。
(3) 主動式
為實現(xiàn)主動交互和協(xié)調(diào),實例運轉(zhuǎn)時,可通知客戶處理事件,由客戶行為驅(qū)動下一步運轉(zhuǎn)方向和狀態(tài),在運轉(zhuǎn)中改變工作流程,以實現(xiàn)“動態(tài)工作流”。因此必須有某種機制引擎,在需要時主動通知客戶進行下一步處理。由于協(xié)作是基于Web的,并使用了XML技術(shù),為了在瀏覽器中解析XML,可利用Applet、Servlet和JSP相結(jié)合的方法。服務器的Servlet和瀏覽器端的Applet通過XML在Web上交換信息。當服務器有消息要通知客戶時,Servlet向Applet發(fā)送XML格式的信息,Applet通過瀏覽器執(zhí)行Javascript解析XML,獲得所需信息,以窗口消息方式通知客戶。主動式交互的機制如圖3所示??蛻襞c服務器的通信信息都是XML格式的信息,這種格式是自定義的,利用XML作為通信格式,不僅易于擴充,在當前基于Web的實現(xiàn)中,還具有易于跨越網(wǎng)絡代理和防火墻的優(yōu)點。
(4) 動態(tài)工作流引擎的實現(xiàn)
動態(tài)工作流引擎負責讀取由可視化流程設計器生成的XML流程定義文件,并對其進行解析和運行。當用戶需要創(chuàng)建流程實例時,流程引擎先創(chuàng)建該流程對應的XML描述文件的副本,作為整個流程運行中的參考,流程引擎的XML解析器負責把設計期的流程和對象轉(zhuǎn)化為運行期的流程實例和對象,即把基于XML存儲的信息,轉(zhuǎn)化為基于數(shù)據(jù)庫存儲的信息。在這個過程中,借助數(shù)據(jù)持久化技術(shù)實現(xiàn)數(shù)據(jù)庫層的隔離。流程實例創(chuàng)建后將在流程引擎的控制框架下被動運行。流程引擎負責流程的調(diào)度、接收用戶端的輸入,根據(jù)用戶的輸入和流程規(guī)則進行流程分支的選擇,按照條件進行流程的跳轉(zhuǎn)、暫停、恢復和中斷。
流程引擎分為四個包:①engine包。負責讀取流程配置信息,創(chuàng)建和銷毀流程實例,定義流程對象基類、流程監(jiān)聽接口等。②designtime包。復制解析設計期的XML文件,并分解相應的對象,以方便傳輸?shù)綌?shù)據(jù)庫。③runtime包。負責對運行期對象進行管理,如動態(tài)解析流程參與者、動態(tài)路由選擇、流程事件監(jiān)聽、用戶腳本支持等。④organization包。定義了流程運行所需參與者類型,如:員工、角色、部門、小組等,該包以接口的形式存在,以適應工作流系統(tǒng)跨應用系統(tǒng)運行。以下是對其中關(guān)鍵的對象原型設計[4]的討論。
1.4 可視化流程設計器的實現(xiàn)
為了更好地使用協(xié)同辦公平臺,對工作流系統(tǒng)實現(xiàn)完全圖形化和可視化操作界面是非常有必要的。由于協(xié)同辦公平臺是基于Web實現(xiàn)的,為與平臺保持兼容和易于使用,可視化流程設計器的設計應注意以下幾點:(1)必須采用純Web技術(shù)實現(xiàn)。(2)支持所見即所得的設計,采用拖拉方式對流程進行設計和修改,隱藏技術(shù)細節(jié),讓用戶能更專注于自己關(guān)心的流程。(3)能生成標準化的XML流程定義文件。在系統(tǒng)的可視化流程設計中,采用純Web技術(shù)進行開發(fā),而不采用任何類似于ActiveX插件、Java Applet等本地化技術(shù),使設計器能更好地兼容各種瀏覽器和操作系統(tǒng)平臺。(4)在支持所見即所得方面,設計器可采用Html+JavaScript+XML的技術(shù)進行開發(fā),以完全實現(xiàn)流程元素的動態(tài)創(chuàng)建、拖曳、粘接、自動驗證等功能。可視化流程設計的結(jié)果是一個標準的XML文檔,它是對所設計流程的一個XPDL描述。該XML文檔將作為流程引擎創(chuàng)建并運行于流程的入口,參與流程運行的全過程;可視化流程設計的另一個結(jié)果是一個XML文件,該文件由動態(tài)工作流引擎進行解釋并執(zhí)行。按上述分析和設計,即可實現(xiàn)基于XML的動態(tài)工作流的可視化設計器[5](X-WorkFlow,XWF),用戶只需按要求生成流程,無需編程。
1.5 流程跟蹤監(jiān)控的實現(xiàn)
流程跟蹤監(jiān)控是流程引擎的外圍模塊,用于給用戶提供操作接口。流程參與者通過這個接口,可以實時、可視化地對流程的流轉(zhuǎn)情況進行跟蹤,對處理情況進行查詢。而流程管理者還可以在流程圖上對流程進行管理,包括對參與者的管理、對流程流向的控制以及改變流程狀態(tài)等。其功能主要有:經(jīng)辦流程跟蹤查詢;經(jīng)辦流程統(tǒng)計;流程超期提醒;所有流程統(tǒng)計;流程監(jiān)控等。
1.6 可視化流程頁面編輯器的實現(xiàn)
可視化流程頁面編輯器[5-7]是可視化流程設計器的一個輔助設計工具,其作用是讓用戶的可視化設計在流程中能提供需要使用的相關(guān)表單界面。其結(jié)果將作為流程設計器的相關(guān)屬性,在運行時由控制框架調(diào)用,并展現(xiàn)給用戶??梢暬鞒添撁婢庉嬈鲗嵸|(zhì)上是一個基于瀏覽器的可視化HTML編輯器,其輸出結(jié)果就是一段HTML代碼,其功能有:文件上傳功能;上傳文件類型限定功能;圖文混排功能;所見即所得功能;表格功能;表單及常用控件支持;Word文件轉(zhuǎn)換功能等。
2 協(xié)同消息服務中間件SCMS的實現(xiàn)
2.1 消息傳遞機制
SCMS系統(tǒng)負責將信息按照通信協(xié)議所定義的消息格式進行打包,然后將打包后的消息放入消息發(fā)送隊列,并釋放一個信號。該信號觸發(fā)發(fā)送線程,使其從消息發(fā)送隊列中讀出消息,通過消息通道代理利用傳輸協(xié)議和物理連接將消息發(fā)送到遠程系統(tǒng)。任一成員系統(tǒng)信息發(fā)送,只需直接調(diào)用JMS規(guī)范提供的應用接口函數(shù)[8]。SCMS是根據(jù)消息的目的地址綁定接收對象的,又通過通道代理調(diào)用接收對象的接口函數(shù),將消息放入接收對象的消息接收隊列。因此,在發(fā)送方完成消息發(fā)送的同時,接收方也完成了消息接收。接收方只需直接從自身消息接收隊列中讀出消息、解包,并根據(jù)消息的類型進行相應的處理。SCMS的工作模式參照了JMS中所描述的點對點模式和發(fā)布/訂閱模式,消息傳送有三種形式:一對一、一對多、多對多。在JMS規(guī)范中,一對一采用點對點模式,一對多和多對多采用發(fā)布/訂閱模式。
點對點傳輸消息建立在消息隊列基礎(chǔ)上,每個客戶端" title="客戶端">客戶端對應一個消息隊列,客戶端發(fā)送消息到對方的消息隊列中,從自己的消息隊列讀取消息。隊列將發(fā)送給它們的消息一直保留,直到消息被消費或消息到期。發(fā)布訂閱模式(Pub/Sub)是客戶將消息提交給某個主題,發(fā)布者和訂閱者通常是匿名的,并能動態(tài)發(fā)布或訂閱消息,Pub/Sub系統(tǒng)必須保證某個主題的所有發(fā)布者(Publisher)發(fā)布的信息準確無誤地發(fā)送到這個主題的所有消息訂閱者(Subscriber)。主題把消息分發(fā)給當前的調(diào)用者之后就不再保留這些消息。
2.2 點對點模式的具體實現(xiàn)
SCMS利用共享內(nèi)存提供模擬發(fā)送隊列和接收隊列,提供核心和應用之間的一個消息傳輸通道,起到對發(fā)送消息和接收消息的控制和緩沖作用,如圖4所示。客戶端A對應隊列QA,客戶端B對應隊列QB??蛻舳薃要發(fā)消息給客戶端B,則客戶端A把消息發(fā)到客戶端B的隊列QB中,客戶端B再從隊列QB中讀取消息。同樣,客戶端B要發(fā)消息給客戶端A,則客戶端B把消息發(fā)到客戶端A再的隊列QA中,客戶端A從隊列QA中讀取消息。
3 SCMS基于Web的客戶端實現(xiàn)
由于整個協(xié)同辦公平臺是基于瀏覽器應用的,但瀏覽器又不直接支持JMS的相關(guān)服務,因此在瀏覽器端采用Java Applet技術(shù)實現(xiàn)符合JMS規(guī)范的無界面消息收發(fā)的應用程序,并使用JavaScript腳本對其進行封裝。這樣Web程序就可以用操作普通對象的方式來操作消息對象,使用基于互聯(lián)網(wǎng)的消息服務。如圖5所示,瀏覽器端主要由三個對象組成:Message、MessageServer和MessageClient。Message對象是對XML消息對象的一個封裝,以方便JavaScript對消息進行操作,同時它也是MessageClient和MessageServer之間傳遞的標準對象;MessageServer對象主要實現(xiàn)消息轉(zhuǎn)發(fā)的功能,即接收服務器端的消息,并轉(zhuǎn)發(fā)給已注冊的本地窗口,同時接收本地待發(fā)送的消息,并發(fā)送到服務器端;MessageClient對象負責接收本地服務器轉(zhuǎn)發(fā)的消息,并給應用程序提供相關(guān)的接口以進行消息的收發(fā),該對象是瀏覽器端程序直接使用的對象。
本文介紹了基于動態(tài)即時協(xié)同工作的辦公系統(tǒng)總體框架,著重分析了在SCOA系統(tǒng)中如何實現(xiàn)動態(tài)工作流定義、流轉(zhuǎn)控制及在線交流,用Java開發(fā)基于XML的動態(tài)工作流引擎和可視化流程設計器,實現(xiàn)了基于Java的消息服務中間件(SCMS)的在線交流平臺。
參考文獻
[1] 竇萬春,李東波,張世琪.基于對象和實例互操作行為模型的工作流研究[J].計算機學報,2001,(2):197-201.
[2] ?周航濱,夏安邦,張長昊.基于Web服務的跨企業(yè)信息集成框架計算機集成制造系統(tǒng)——CIMS[J]. 計算機學報,2003,(1):1-5.
[3] ?柴曉路,良宇奇.Web Services技術(shù)、架構(gòu)和應用[M].北京:電子工業(yè)出版社,2003.
[4] ?LEYMANN F, ALTENHUBER W. Managing business processes as an information resource. IBM Systems Journal,1994,(33):326-348.
[5] ?沈軍營,黃進,嚴雋琪.虛擬企業(yè)中的工作流技術(shù)研究[J]. 計算機科學,2000,(2):7-10.
[6] ?鄒冰,張旭,伊曉強,等.一類基于IPO的工作流過程建模語言規(guī)范分析[J].計算機工程與應用, 2002,(21):54-58.
[7] ?GLANCE N S,PAGANI D S, PARESCHI R. Generalized process structure grammars(GPSG) for flexible representations of work. CSCW’96: Proceedings of the Conference on Computer Supported Cooperative Work. Boston, MA, 1996:180-189.
[8] ?張旭,鄒冰,伊曉強,等.總線型多工作流引擎接口系統(tǒng)的研究與應用[J].計算機工程與應用,2002,(23):75-77.