當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 黑龍江OA系統(tǒng) > 哈爾濱OA系統(tǒng) > 哈爾濱OA快博
分布式任務(wù)域工作流系統(tǒng)的設(shè)計和實(shí)現(xiàn)
在工作流技術(shù)的研究中,分布式工作流系統(tǒng)成為研究的熱點(diǎn)。一些分布式工作流系統(tǒng)如通過基于持久消息隊(duì)列的Exotica,基于可移動代理的DartFlow等,已經(jīng)在一定程度上解決集中式工作流系統(tǒng)的性能瓶頸,單節(jié)點(diǎn)失敗和擴(kuò)展性等問題,為工作流系統(tǒng)在企業(yè)的實(shí)施提供了基礎(chǔ)。
但是從企業(yè)的需求來看,這些系統(tǒng)在實(shí)用性上仍然存在一些問題:完全分布的結(jié)構(gòu)增加了系統(tǒng)應(yīng)用和維護(hù)的復(fù)雜性;將流程分散定義造成工作流模型動態(tài)修改時一致性維護(hù)的困難;細(xì)粒度的流程調(diào)度造成應(yīng)用過程中流程管理不方便的問題等。從企業(yè)的實(shí)際情況看,企業(yè)往往希望工作流系統(tǒng)能夠提供集中的流程管理,動態(tài)分散的任務(wù)執(zhí)行,以及支持部門或企業(yè)級別的多工作流協(xié)作執(zhí)行。
基于這些問題的考慮,本文從工作流應(yīng)用的實(shí)際要求出發(fā),提出了多任務(wù)域結(jié)構(gòu)的工作流系統(tǒng)實(shí)現(xiàn)方案。該系統(tǒng)通過把企業(yè)劃分成不同的功能領(lǐng)域,將任務(wù)動態(tài)分配到相應(yīng)的領(lǐng)域執(zhí)行。這樣以任務(wù)的方式對工作流進(jìn)行調(diào)度,和企業(yè)業(yè)務(wù)的人工調(diào)度過程非常一致,方便的實(shí)現(xiàn)企業(yè)環(huán)境中的流程任務(wù)的分布執(zhí)行。
企業(yè)功能領(lǐng)域
在工作流的應(yīng)用過程中,需要首先根據(jù)企業(yè)的特點(diǎn),利用通用功能視圖模型的基本構(gòu)件生成對企業(yè)需求分析階段的功能模型。而工作流在企業(yè)中的應(yīng)用可以看作一個三維模型,它們分別是流程邏輯,組織結(jié)構(gòu)模型和應(yīng)用資源模型。其中,組織模型和資源模型分別代表了企業(yè)的人力資源和物資資源,兩者結(jié)合形成若干相互正交的企業(yè)領(lǐng)域。每個領(lǐng)域都有其目標(biāo)、功能和領(lǐng)域過程,并擁有實(shí)現(xiàn)領(lǐng)域目標(biāo)的相應(yīng)的資源。領(lǐng)域的劃分和確定受到企業(yè)經(jīng)營目標(biāo)和限制條件集合(如企業(yè)資源分配狀況)決定,通常表現(xiàn)在企業(yè)當(dāng)中就是企業(yè)中不同職責(zé)的部門機(jī)構(gòu)。不同的領(lǐng)域之間通過流程進(jìn)行協(xié)作,這也正是工作流在企業(yè)應(yīng)用的基本思想:流程邏輯表示企業(yè)的核心商業(yè)規(guī)則,是企業(yè)面向客戶的總體任務(wù)目標(biāo)。它跨越職能與組織邊界,對企業(yè)的各個部門領(lǐng)域進(jìn)行的協(xié)作,集成分散在企業(yè)部門的各種資源,實(shí)現(xiàn)企業(yè)最終的目標(biāo)。
根據(jù)流程和企業(yè)領(lǐng)域的交互特性,我們將工作流管理系統(tǒng)中的核心組件與企業(yè)的建模過程有機(jī)結(jié)合,使運(yùn)行系統(tǒng)能夠與企業(yè)模型緊密集成。從流程的角度看,我們將這些企業(yè)不同的工作域稱為任務(wù)域。在建立工作流過程模型的時候,針對最基本的活動單元,將它們與適當(dāng)?shù)娜蝿?wù)域相關(guān)聯(lián)。而流程運(yùn)行時,它的調(diào)度被分為兩個層次,面向企業(yè)業(yè)務(wù)的流程層和面向組織功能的任務(wù)層。流程實(shí)現(xiàn)對企業(yè)的資源集成,而任務(wù)則是綁定在不同領(lǐng)域的過程活動的實(shí)例,任務(wù)在運(yùn)行時根據(jù)屬性和需要被分配到不同的任務(wù)域上,由任務(wù)域上的處理單元完成任務(wù)的處理工作。這樣,將企業(yè)的任務(wù)執(zhí)行分配到相應(yīng)的領(lǐng)域,體現(xiàn)了企業(yè)部門的職責(zé)和劃分邊界,實(shí)現(xiàn)了了工作流的分布執(zhí)行能力。
多任務(wù)域結(jié)構(gòu)的工作流系統(tǒng)
按照WFMC提出的工作流參考模型,一個工作流系統(tǒng)包括過程定義工具、工作流引擎、工作流管理工具、客戶應(yīng)用和工作流應(yīng)用等功能模塊。在該參考模型的基礎(chǔ)上,我們提出了面向企業(yè)的多任務(wù)域結(jié)構(gòu)的分布式工作流系統(tǒng),系統(tǒng)主要由開發(fā)管理平臺,一個中央流程服務(wù)器和多個任務(wù)服務(wù)器組成。
從流程服務(wù)器和任務(wù)服務(wù)器的關(guān)系來看,流程服務(wù)器和多個任務(wù)服務(wù)器構(gòu)成了星型拓?fù)浣Y(jié)構(gòu)模型(如圖2所示),流程服務(wù)器位于中心,他們?yōu)榱鞒虒用娴恼{(diào)度提供了支持,任務(wù)服務(wù)器則分散在企業(yè)的各個部門,它們作為任務(wù)調(diào)度的處理單元,為任務(wù)層次的處理和調(diào)度提供了的支持。流程服務(wù)器采用消息隊(duì)列和任務(wù)服務(wù)器進(jìn)行通信,它監(jiān)控每個任務(wù)服務(wù)器,并對它們進(jìn)行管理;任務(wù)服務(wù)器則向流程服務(wù)器報告自己的狀態(tài),協(xié)助完成流程的執(zhí)行。從功能上看,流程服務(wù)器和任務(wù)服務(wù)器實(shí)現(xiàn)了工作流運(yùn)行時服務(wù)。其中流程服務(wù)器負(fù)責(zé)創(chuàng)建和激活流程實(shí)例、對流程進(jìn)行動態(tài)調(diào)整,維護(hù)任務(wù)服務(wù)器的狀態(tài)信息,以及根據(jù)活動規(guī)則分配任務(wù)到不同的任務(wù)服務(wù)器上執(zhí)行等等。而任務(wù)服務(wù)器則實(shí)現(xiàn)了任務(wù)分布處理,它負(fù)責(zé)任務(wù)實(shí)例(Task)的生成,應(yīng)用資源的調(diào)用和工作項(xiàng)(WorkItem)的管理。
開發(fā)管理平臺使用可視化的開發(fā)工具創(chuàng)建工作流的流程模型、組織模型和資源模型。模型的信息保存在中央數(shù)據(jù)庫中,為工作流的分布運(yùn)行提供共享的庫環(huán)境。并且,在工作流流程投入運(yùn)行后,由開發(fā)管理平臺的流程監(jiān)控工具來跟蹤流程運(yùn)行和對流程進(jìn)行實(shí)時監(jiān)測。
在建模的過程中,首先利用開發(fā)管理平臺建立企業(yè)的功能模型,包括企業(yè)的組織模型和應(yīng)用資源模型。與其它的工作流系統(tǒng)不同的是,我們在建立企業(yè)的功能模型時,要為企業(yè)資源建立任務(wù)域信息。通常,任務(wù)域按照地理位置或組織結(jié)構(gòu)來劃分,如圖2中,按照企業(yè)的部門將它劃分成不同的任務(wù)域,每個任務(wù)域擁有任務(wù)執(zhí)行過程中需要的相關(guān)資源,并且配置一個任務(wù)服務(wù)器來支持任務(wù)項(xiàng)的執(zhí)行和資源的處理工作。不同的任務(wù)服務(wù)器使用ID進(jìn)行標(biāo)識,這些ID在企業(yè)內(nèi)是全局唯一的。對于任務(wù)域內(nèi)的應(yīng)用資源,將它們和某個任務(wù)服務(wù)器ID進(jìn)行關(guān)聯(lián),表明資源屬于該任務(wù)服務(wù)器所對應(yīng)的任務(wù)域。任務(wù)服務(wù)器擁有對任務(wù)域內(nèi)的資源的訪問控制權(quán)限。
該資源可以存放任務(wù)服務(wù)器上,也可能是該任務(wù)域內(nèi)的任務(wù)服務(wù)器可以訪問的其他的設(shè)備上,在流程運(yùn)行時,任務(wù)服務(wù)器可以使用這些資源完成任務(wù)操作。同樣,對于企業(yè)部門的不同角色,他們也通過使用ID與任務(wù)服務(wù)器相關(guān)聯(lián),劃分企業(yè)的任務(wù)域角色集合,幫助實(shí)現(xiàn)人工活動的分派工作,以及部門的角色相關(guān)權(quán)限控制。
在建立好企業(yè)的功能模型后,需要將流程活動映射到任務(wù)域上。對于每個活動,它都有任務(wù)實(shí)例化規(guī)則,規(guī)則描述了流程活動綁定的應(yīng)用資源和角色信息。值得注意的是,流程活動并不直接綁定到任務(wù)域上,它只和邏輯資源名和角色名關(guān)聯(lián),至于資源和角色的任務(wù)域信息,在流程運(yùn)行時,由流程服務(wù)器對關(guān)聯(lián)規(guī)則解析得到,由此確定相關(guān)的任務(wù)域,動態(tài)分配任務(wù)到不同的任務(wù)服務(wù)器上執(zhí)行。
有了上面的這些準(zhǔn)備,流程就可以開始投入運(yùn)行了。假設(shè),使用流程開發(fā)工具建立流程P,它包括三個串行活動X,Y,Z。企業(yè)中有三個任務(wù)服務(wù)器,用來支持流程的運(yùn)行。在流程運(yùn)行前,管理員將流程P部署到任務(wù)服務(wù)器A上,分配啟動權(quán)限給用戶。這樣,擁有該權(quán)限的用戶可以啟動該流程的執(zhí)行了。圖3給出了流程運(yùn)行的主要步驟和操作:
1) 首先,任務(wù)服務(wù)器A,B,C在流程服務(wù)器S啟動后,發(fā)送注冊消息給流程服務(wù)器,建立系統(tǒng)的結(jié)構(gòu)信息;
2) 由于流程P部署在任務(wù)服務(wù)器A上,用戶通過任務(wù)服務(wù)器A的Web客戶端啟動流程,任務(wù)服務(wù)器則通過消息隊(duì)列向流程服務(wù)器S發(fā)送流程啟動消息;
3) 流程服務(wù)器獲得開始活動,并得到活動的實(shí)例化規(guī)則。由于該活動是自動型的活動,根據(jù)活動實(shí)例化規(guī)則得到活動綁定的資源在任務(wù)域的分配信息,確定任務(wù)服務(wù)器A為活動執(zhí)行者,流程服務(wù)器將活動的啟動消息和上下文數(shù)據(jù)傳遞給任務(wù)服務(wù)器A;
4) 任務(wù)服務(wù)器A根據(jù)接收的數(shù)據(jù),獲取資源內(nèi)容,進(jìn)行服務(wù)激活調(diào)用,并在完成服務(wù)激活后向流程服務(wù)器發(fā)送任務(wù)完成信息;
5) 流程服務(wù)器取到后繼活動Y,由于Y是人工型活動,根據(jù)Y綁定的角色所在的域信息,S向任務(wù)服務(wù)器B發(fā)送活動Y的上下文信息;
6) 由于工作項(xiàng)分配采取用戶主動PULL方式,B生成WORKITEM項(xiàng),并插入相應(yīng)的角色的WORKLIST隊(duì)列,等待該角色的用戶進(jìn)行處理;
7) 用戶通過任務(wù)服務(wù)器的Web客戶端訪問自己的工作項(xiàng),提交工作項(xiàng)數(shù)據(jù),并通知流程服務(wù)器完成任務(wù)項(xiàng)的執(zhí)行;
8) 類似的,流程服務(wù)器得到第三個活動的信息,由于該活動的資源是全局共享資源, S將根據(jù)任務(wù)服務(wù)器管理信息選擇負(fù)荷最小的任務(wù)服務(wù)器C,由C完成服務(wù)激活;
9) 流程完成后,流程服務(wù)器進(jìn)行統(tǒng)計分析工作,收集流程執(zhí)行數(shù)據(jù),供管理分析工具使用。
與[2,3]不同的是,它們實(shí)現(xiàn)了流程的全分布運(yùn)行。但是,它們是通過將流程進(jìn)行切片,分布到不同的執(zhí)行機(jī)上,在運(yùn)行時,執(zhí)行機(jī)從本地直接得到活動副本并執(zhí)行,實(shí)現(xiàn)了一種全分布的體系結(jié)構(gòu)。然而,這種結(jié)構(gòu)的系統(tǒng)在流程重組和動態(tài)修改時容易引起流程的不一致,造成修改上的不便。并且,流程的切片和分布發(fā)生在流程運(yùn)行前,使得流程與系統(tǒng)結(jié)構(gòu)關(guān)系過于緊密。而在我們的系統(tǒng)中,通過對流程進(jìn)行集中的控制,方便了流程相關(guān)的管理;流程活動通過規(guī)則的資源屬性關(guān)聯(lián)到不同的任務(wù)域上,在運(yùn)行時通過對規(guī)則解析動態(tài)分配任務(wù)執(zhí)行,實(shí)現(xiàn)流程執(zhí)行的動態(tài)性;而且根據(jù)企業(yè)的人員和資源分配情況,就近獲取資源,利用角色部門劃分方便對任務(wù)的控制,提高了流程的執(zhí)行效率。
基于J2EE工作流系統(tǒng)的實(shí)現(xiàn)
在實(shí)際應(yīng)用中,工作流系統(tǒng)往往在不同的硬件平臺、操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議和數(shù)據(jù)庫的異構(gòu)環(huán)境下運(yùn)行,這對系統(tǒng)的不同模塊的通訊和協(xié)作提出了很高的要求。而J2EE平臺為分布式應(yīng)用提供一整套的企業(yè)服務(wù),包括事務(wù)處理、數(shù)據(jù)庫訪問、消息收發(fā)等。使它成為企業(yè)級別分布式軟件開發(fā)領(lǐng)域的重要技術(shù),為系統(tǒng)的實(shí)現(xiàn)提供了強(qiáng)大的軟件平臺。
消息隊(duì)列為用戶提供基于消息傳遞方式的工作流系統(tǒng)通信平臺。在[2]中實(shí)現(xiàn)了基于持久消息隊(duì)列的全分布式工作流系統(tǒng)。通過使用消息隊(duì)列可以將消息分布到不同的節(jié)點(diǎn)處理,并且隊(duì)列的事務(wù)特性保證消息處理的可靠性,同時消息隊(duì)列的異步調(diào)用方式實(shí)現(xiàn)了系統(tǒng)單元之間的松散耦合。
在系統(tǒng)中,流程服務(wù)器和任務(wù)服務(wù)器的通訊采用消息隊(duì)列方式。并采用JMS(Java Message Service)服務(wù)實(shí)現(xiàn)消息傳遞功能。JMS定義了在Java環(huán)境中訪問消息中間件的接口,并且J2EE平臺提供了消息驅(qū)動bean(MDB)進(jìn)一步方便了對異步消息的處理。流程服務(wù)器和任務(wù)服務(wù)器的通信采取JMS的Peer to Peer的方式,每個任務(wù)服務(wù)器都有一個消息接收隊(duì)列和一個消息發(fā)送隊(duì)列,流程將消息發(fā)送到目標(biāo)隊(duì)列后可以繼續(xù)執(zhí)行其它的工作,任務(wù)服務(wù)器通過MDB完成消息的獲取和解析工作,這樣降低兩者的耦合程度,有利于提高系統(tǒng)的擴(kuò)展性。并且消息隊(duì)列實(shí)現(xiàn)流程之間的并行處理和流程內(nèi)部的并發(fā)活動處理,成為平緩工作流系統(tǒng)負(fù)載的一個有效途徑。
工作流數(shù)據(jù)在系統(tǒng)中是集中、持久存儲的,這種存儲方式使得數(shù)據(jù)的一致性得以保證,并且為數(shù)據(jù)的管理和維護(hù)帶來了極大的方便。同時,現(xiàn)在的數(shù)據(jù)庫技術(shù)非常成熟,使得當(dāng)數(shù)據(jù)庫服務(wù)器發(fā)生異常時,能夠通過日志進(jìn)行錯誤的恢復(fù),使系統(tǒng)具有很好的可靠性。
同時,為了避免數(shù)據(jù)的集中存儲帶來的負(fù)面影響,如數(shù)據(jù)服務(wù)器的處理效率和網(wǎng)絡(luò)帶寬可能成為系統(tǒng)瓶頸,我們?yōu)閿?shù)據(jù)訪問提供了統(tǒng)一訪問接口(DateBase Access Interface),通過將數(shù)據(jù)庫訪問服務(wù)構(gòu)建在J2EE平臺上,由應(yīng)用服務(wù)器提供數(shù)據(jù)并發(fā)訪問控制和事務(wù)的支持。應(yīng)用服務(wù)器通過配置方式來建立數(shù)據(jù)庫訪問環(huán)境,并通過容器來管理數(shù)據(jù)庫的連接,支持系統(tǒng)對數(shù)據(jù)庫頻繁的訪問。同時,我們在數(shù)據(jù)訪問層提供數(shù)據(jù)的存儲過程訪問和數(shù)據(jù)的緩存方法,減少網(wǎng)絡(luò)流量,提高數(shù)據(jù)處理效率,降低了數(shù)據(jù)庫服務(wù)器成為系統(tǒng)瓶頸的可能。
集成性是增強(qiáng)工作流系統(tǒng)的可擴(kuò)展性的一個重要的方面。而Webservice的出現(xiàn)為應(yīng)用的集成提供了一個統(tǒng)一的解決方案。J2EE作為主流的Webservice開發(fā)平臺之一,實(shí)現(xiàn)了開放的Webservice服務(wù)的開發(fā)。在企業(yè)中的應(yīng)用資源往往形式多種多樣。我們都通過任務(wù)服務(wù)器的服務(wù)調(diào)用適配器對應(yīng)用進(jìn)行統(tǒng)一的調(diào)用。應(yīng)用都使用Webservice方式包裝發(fā)布,例如在J2EE平臺上應(yīng)用一般使用EJB (Enterprise JavaBeanTM) 實(shí)現(xiàn)。應(yīng)用以EJB的方式實(shí)現(xiàn)之后,僅需為其編寫描述文件,部署到應(yīng)用服務(wù)器上,并將描述文件發(fā)布到UDDI注冊中心,其他的應(yīng)用就可以找到這個應(yīng)用的描述文件,并按照描述文件描述的訪問方式(如SOAP協(xié)議)和接口調(diào)用這個服務(wù)。對于企業(yè)現(xiàn)存系統(tǒng)、遺留系統(tǒng)和erp系統(tǒng)等,可以使用Web服務(wù)適配器將它們集成到Web服務(wù)模型中。Web服務(wù)適配器一般是一個包裝成Web服務(wù)的Java應(yīng)用程序,它用J2EE連接器使得遺留應(yīng)用能被小服務(wù)程序(Servlet)和JSP訪問,或者被遠(yuǎn)程系統(tǒng)通過SOAP訪問。
通過Web servcie方式,不僅可以將企業(yè)中各種類型的應(yīng)用進(jìn)行包裝,作為工作流可調(diào)用的應(yīng)用(Workflow Based Application);還可以將整個流程包裝成Web service方式,將流程作為服務(wù)的實(shí)現(xiàn)者,作為領(lǐng)域的資源提供給外界使用。這樣,實(shí)現(xiàn)了企業(yè)中分散的資源的集成功能。
基于Web的工作流系統(tǒng)已經(jīng)成為一種趨勢,許多供應(yīng)商紛紛開發(fā)新產(chǎn)品或者在原有的產(chǎn)品的基礎(chǔ)上增加對Web的支持[4]。使用Web方式實(shí)現(xiàn)工作流的客戶端應(yīng)用,用戶可以方便的獲取自己的任務(wù)列表和工作項(xiàng),能夠完成任務(wù)項(xiàng)的管理功能和任務(wù)的執(zhí)行功能,大大提高工作流系統(tǒng)的實(shí)用性。在我們系統(tǒng)中,通過任務(wù)服務(wù)器提供了對Web方式的任務(wù)控制的支持。任務(wù)服務(wù)器在后臺使用EJB實(shí)現(xiàn)任務(wù)處理邏輯,通過Servlet實(shí)現(xiàn)用戶的交互控制。一方面,通過Web客戶端JSP程序與客戶進(jìn)行交互,完成對流程的部署,啟動和任務(wù)隊(duì)列的管理等功能;另外一方面,使用預(yù)定義的HTML頁面,JSP程序等,實(shí)現(xiàn)和客戶的交互過程,完成流程運(yùn)行時的數(shù)據(jù)獲取等功能,協(xié)助流程的人工活動執(zhí)行。
來源:CCW
- 1中小企業(yè)與大企業(yè)競爭行動的比較研究
- 2研發(fā)項(xiàng)目管理系列(1)——戰(zhàn)略規(guī)劃
- 3看看魯花集團(tuán)的信息化建設(shè)
- 4哈爾濱OA軟件的產(chǎn)品化+局部定制
- 5下一代流程管理的夢想
- 6中小網(wǎng)絡(luò)差異別忽略
- 7并行工程集成框架
- 8如何做需求開發(fā)?
- 9無線新趨勢
- 10安利公司的"變異"電子商務(wù)
- 11推動PDM本身的發(fā)展和完善
- 12供應(yīng)鏈管理的最優(yōu)模式?
- 13軟件企業(yè)要走高端就要用“情”專一
- 14軟件測試工程師如何與開發(fā)工程師交流
- 15如何進(jìn)行有效的軟件測試外包項(xiàng)目的管理?
- 16中小企業(yè)UPS方案按需選
- 17日企的本地化的信息系統(tǒng)建設(shè)
- 18管理信息系統(tǒng)應(yīng)對企業(yè)進(jìn)行戰(zhàn)略管理
- 19聯(lián)邦快遞用IT兌現(xiàn)顧客的服務(wù)承諾
- 20IT揭開管理傷疤:波司登集團(tuán)ERP實(shí)施經(jīng)驗(yàn)
- 21企業(yè)績效管理走出理念到應(yīng)用
- 22IT部門盲目追求用戶滿意不明智
- 23高性能計算 遭遇四大瓶頸
- 24萬邦藥業(yè)IT舊債是否真的難還
- 25城域以太網(wǎng)跨越障礙
- 26IT經(jīng)理如何控制系統(tǒng)項(xiàng)目中的風(fēng)險
- 27流程是ERP的“靈魂”?
- 28IT成本計算方式未變
- 29麥肯錫7S模型與HRM
- 30數(shù)據(jù)分析的5大技術(shù)走向
成都公司:成都市成華區(qū)建設(shè)南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓