面向服務(wù)的工作流引擎的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
面向服務(wù)的工作流引擎的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
面向服務(wù)的工作流引擎的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
面向服務(wù)的工作流引擎的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
面向服務(wù)的工作流引擎的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、學(xué)號(hào): 7 密級(jí): 武漢大學(xué)本科畢業(yè)論文面向服務(wù)的工作流引擎的設(shè)計(jì)與實(shí)現(xiàn)院(系)名 稱(chēng):國(guó)際軟件學(xué)院專(zhuān) 業(yè) 名 稱(chēng) :軟件工程學(xué) 生 姓 名 :指 導(dǎo) 教 師 : 二一年五月BACHELORS DEGREE THESIS OF WUHAN UNIVERSITYThe Designing and ImplementingWorkflow EngineBased on Service-Oriented ArchitectureCollege :International School of Software Subject :Software EngineeringName :Lu Fanfeng

2、Director :Ying Shi ProfessorMay 2010鄭 重 申 明本人呈交的科研項(xiàng)目論文,是在導(dǎo)師的指導(dǎo)下,獨(dú)立進(jìn)行研究工作所取得的成果,所有數(shù)據(jù)、圖片資料真實(shí)可靠。盡我所知,除文中已經(jīng)注明引用的內(nèi)容外,本論文的研究成果不包含他人享有著作權(quán)的內(nèi)容。對(duì)本論文所涉及的研究工作做出貢獻(xiàn)的其他個(gè)人和集體,均已在文中以明確的方式標(biāo)明。本學(xué)位論文的知識(shí)產(chǎn)權(quán)歸屬于培養(yǎng)單位。本人簽名: 日期: 摘 要傳統(tǒng)的工作流技術(shù)受體系結(jié)構(gòu)的限制,在適應(yīng)目前大規(guī)模的企業(yè)應(yīng)用需求上顯得力不從心,它無(wú)法將現(xiàn)有的web服務(wù)編排起來(lái),形成工作流程,適應(yīng)新的業(yè)務(wù)需求,實(shí)現(xiàn)web服務(wù)的重用和系統(tǒng)需求的重構(gòu)。本文就是

3、針對(duì)上述問(wèn)題,對(duì)面向服務(wù)的工作流引擎進(jìn)行研究,并以開(kāi)源的工作流引擎jbpm為基礎(chǔ),開(kāi)發(fā)一個(gè)面向服務(wù)的工作流引擎jbpm4ws。本文對(duì)jbpm4ws的研究圍繞著系統(tǒng)需求展開(kāi),在系統(tǒng)需求中詳細(xì)介紹了jbpm4ws需要實(shí)現(xiàn)的功能和系統(tǒng)應(yīng)滿(mǎn)足的非功能性需求。緊接著,對(duì)jbpm4ws的設(shè)計(jì)原理和系統(tǒng)的體系結(jié)構(gòu)做了詳細(xì)介紹,提出了jbpm4ws的流程定義語(yǔ)言jpdl4ws,jpdl4ws擴(kuò)展了jpdl對(duì)任務(wù)的描述,添加了任務(wù)處理的服務(wù)特性,支持以服務(wù)的形式描述任務(wù)處理過(guò)程;實(shí)現(xiàn)了流程的服務(wù)化,讓外界對(duì)流程數(shù)據(jù)的訪問(wèn)只能通過(guò)流程訪問(wèn)服務(wù)來(lái)完成。最后,以汽車(chē)制造為案例,介紹jbpm4ws在現(xiàn)實(shí)系統(tǒng)中的應(yīng)用場(chǎng)景

4、。關(guān)鍵詞:工作流引擎;面向服務(wù);流程定義;流程實(shí)例;流程的服務(wù)化;ABSTRACTBecause the architecture of the traditional workflow technology constraints, It cant adapt to the current application requirements in large-scale business enterprises,and it can not lay out the web services effectively so as to forming workflow and meeting ne

5、w functional requirements. This paper addresses this problem on a service-oriented workflow engine study, and developed a service-oriented workflow engine-jbpm4ws on the based of a open source workflow engine-jbpm. This paper starts as System Requirements, and in the system requirements it describes

6、 the non-functional requirements in detail which is needed to implement the functions and systems of jbpm4ws. Then, introduce the jbpm4ws design principles and the architecture of system in detail and propose jbpm4ws process definition language - jpdl4ws, jpbl4ws expands the description of the task,

7、 adds the services features of task processing, support the way to describe task processing the form of service; achieve the service of process, so that the outside world access to process data can only be accomplished through the process access to service.Finally, a car manufacturing company is tak

8、en as a case to introduce the scenarios of jbpm4ws in the real system.Key words: Workflow Engine;service-oriented ;Process Definition; Process Instance; the Service of Process目 錄摘 要IABSTRACTII第1章 引言11.1 研究背景11.2 研究?jī)?nèi)容21.3 論文組織結(jié)構(gòu)2第2章 背景知識(shí)介紹42.1 SOA基礎(chǔ)42.1.1 SOA的定義42.1.2 SOA的關(guān)鍵特性42.1.3 SOA的實(shí)現(xiàn)技術(shù)52.2 工作流基

9、礎(chǔ)62.2.1 工作流概述62.2.2工作流核心概念72.2.3 工作流參考模型82.3 jbpm基礎(chǔ)92.3.1 jbpm概述92.3.2 流程定義基礎(chǔ)知識(shí)10第3章 面向服務(wù)的工作流引擎jbpm4ws123.1 jbpm4ws系統(tǒng)說(shuō)明123.1.1 系統(tǒng)概述123.1.2 流程實(shí)例狀態(tài)圖123.2 jbpm4ws的需求分析133.2.1 管理流程需求分析133.2.2 管理流程實(shí)例需求分析143.2.3 非功能需求分析153.3 jbpm4ws程序開(kāi)發(fā)流程16第4章 jbpm4ws的設(shè)計(jì)與實(shí)現(xiàn)174.1 jbpm4ws的設(shè)計(jì)原理174.2 jpdl4ws的設(shè)計(jì)184.3 jbpm4ws的概

10、要設(shè)計(jì)194.3.1 系統(tǒng)整體架構(gòu)194.3.2 系統(tǒng)核心包204.4 jbpm4ws的實(shí)現(xiàn)234.4.1 功能服務(wù)實(shí)現(xiàn)234.4.2 流程的服務(wù)化26第5章 jbpm4ws的應(yīng)用案例285.1 案例簡(jiǎn)介285.2 案例分析與設(shè)計(jì)295.2.1 案例體系架構(gòu)295.2.2 系統(tǒng)流程設(shè)計(jì)305.2.3 功能服務(wù)設(shè)計(jì)315.3 部署實(shí)施32第6章 總結(jié)與展望35參考文獻(xiàn)36致 謝38第1章 引言1.1 研究背景隨著市場(chǎng)經(jīng)濟(jì)的發(fā)展,經(jīng)濟(jì)開(kāi)始走向全球化。在經(jīng)濟(jì)全球化面前,各個(gè)企業(yè)的業(yè)務(wù)將迅速增長(zhǎng),業(yè)務(wù)之間的關(guān)系將變得錯(cuò)綜復(fù)雜,從而導(dǎo)致變更業(yè)務(wù)需求、更新業(yè)務(wù)需求之間的聯(lián)系的工作量會(huì)變得非常龐大。如何以快

11、速的方式來(lái)實(shí)現(xiàn)需求的有效變更,減小軟件開(kāi)發(fā)過(guò)程中的工作量,提高系統(tǒng)的可維護(hù)性和可重用性,是如今IT界探討的新話(huà)題。SOA的解決方案正是在適應(yīng)這些需求下產(chǎn)生的。它是在以以前的軟件架構(gòu)技術(shù)為依托,一步一步發(fā)展而來(lái)的。它可以看作是B/S模型、XML/Web Service技術(shù)之后的自然延伸,是一個(gè)“松耦合、高內(nèi)聚”的漸變演進(jìn)過(guò)程。在一定程度上解決了系統(tǒng)的可重用性和可維護(hù)性。另一方面,在實(shí)際企業(yè)運(yùn)作中,已經(jīng)開(kāi)始提出了工作流程自動(dòng)化與企業(yè)再造工程的需求。這些企業(yè)希望由內(nèi)部做起,縮短流程作業(yè)時(shí)間,快速反應(yīng)市場(chǎng)與客戶(hù)需求,有效監(jiān)控工作進(jìn)度,加強(qiáng)內(nèi)部信息溝通傳遞效率,分析流程作業(yè)成本與死角,從而有效的降低管理

12、成本,提升企業(yè)決策反應(yīng)能力。將人工操作流程順利信息化與自動(dòng)化,已成為許多企業(yè)未來(lái)興衰的關(guān)鍵,而實(shí)現(xiàn)流程自動(dòng)化的關(guān)鍵技術(shù)就是工作流1。然而,傳統(tǒng)工作流技術(shù)由于體系結(jié)構(gòu)的限制,在適應(yīng)目前企業(yè)大規(guī)模的業(yè)務(wù)應(yīng)用需求上顯得力不從心,傳統(tǒng)的工作流技術(shù)受體系結(jié)構(gòu)的限制,在適應(yīng)目前大規(guī)模的企業(yè)應(yīng)用需求上顯得力不從心,它無(wú)法將現(xiàn)有的web服務(wù)編排成起來(lái),形成工作流程,適應(yīng)新的業(yè)務(wù)需求,實(shí)現(xiàn)web服務(wù)的重用和系統(tǒng)需求的重構(gòu)。因此面向服務(wù)的工作流17應(yīng)運(yùn)而生,在面向服務(wù)架構(gòu)下的工作流技術(shù)利用了SOA架構(gòu)所具有的快速反應(yīng)性、可適應(yīng)性和易操作性等特性,對(duì)提高企業(yè)的業(yè)務(wù)流程的信息化支持力度,對(duì)企業(yè)競(jìng)爭(zhēng)力方面有著非常積極的

13、作用?,F(xiàn)今j2ee平臺(tái)上應(yīng)用較為廣泛的開(kāi)源的工作流引擎產(chǎn)品有bpel和jbpm,然而bpel的開(kāi)發(fā)比較復(fù)雜,學(xué)習(xí)難度較大,相反jbpm學(xué)習(xí)起來(lái)就容易得多。而且jbpm是一種基于j2ee的輕量級(jí)工作流管理系統(tǒng),它還提供了對(duì)bpel的擴(kuò)展,存儲(chǔ)支持hibernate實(shí)現(xiàn)18。jbpm是較適合擴(kuò)展的開(kāi)源工作流引擎,也是較容易被商業(yè)化應(yīng)用的開(kāi)源工作流管理系統(tǒng)。然而,jbpm本身不提供對(duì)web服務(wù)的支持。1.2 研究?jī)?nèi)容本文對(duì)基于jbpm的面向服務(wù)的工作流引擎(jbpm4ws)的研發(fā)就是在上述的背景下展開(kāi)的。本文的研究?jī)?nèi)容包括以下五個(gè)部分:(1) 對(duì)jbpm4ws進(jìn)行需求分析,指出jbpm4ws應(yīng)該滿(mǎn)足

14、的功能性需求和非功能性需求。(2) 對(duì)jbpm的流程描述語(yǔ)言jpdl存在的問(wèn)題進(jìn)行分析,并以此為基礎(chǔ),提出了一套擴(kuò)展的面向服務(wù)的流程描述語(yǔ)言jpdl4ws。(3) 對(duì)jbpm工作流引擎進(jìn)行改進(jìn),采用cxf+spring+hibernate開(kāi)發(fā)新的面向服務(wù)的工作流引擎jbpm4ws。(4) 將流程服務(wù)化,讓外界可以以web服務(wù)的方式對(duì)流程的執(zhí)行過(guò)程進(jìn)行調(diào)度,對(duì)流程的執(zhí)行信息進(jìn)行監(jiān)控。(5) 將改進(jìn)的面向服務(wù)的工作流引擎用于汽車(chē)制造的案例中。 本文擴(kuò)展的工作流引擎具有以下四個(gè)特征:.(1) 跨平臺(tái)性:系統(tǒng)具備一定的跨平臺(tái)能力,支持企業(yè)采用不同的軟硬件平臺(tái)。(2) 提供對(duì)異構(gòu)的企業(yè)應(yīng)用環(huán)境的支持:能

15、夠通過(guò)流程建模,將異構(gòu)的企業(yè)應(yīng)用以服務(wù)的方式集成到工作流程中,完成整體應(yīng)用目標(biāo)。(3) 提供對(duì)上層統(tǒng)一接口的支持:系統(tǒng)為訪問(wèn)其內(nèi)部各個(gè)層次的組件提供一致的接口,以保證系統(tǒng)能與其他上層模塊或應(yīng)用系統(tǒng)以系統(tǒng)開(kāi)發(fā)時(shí)不能預(yù)見(jiàn)的方式集成。(4) 將流程服務(wù)化:將流程操作接口發(fā)布成服務(wù),讓外界系統(tǒng)能夠以服務(wù)的方式調(diào)用接口。雖然流程引擎的研發(fā)包含了需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、代碼實(shí)現(xiàn)、維護(hù)等各個(gè)方面,但本文著重從需求和設(shè)計(jì)兩個(gè)方面進(jìn)行論述。1.3 論文組織結(jié)構(gòu)本文大體可以分為以下五個(gè)部分:第一部分是引言,主要介紹了本文的研究背景、研究?jī)?nèi)容和全文的組織結(jié)構(gòu);第二部分是背景知識(shí)介紹,講解了開(kāi)發(fā)面向服務(wù)的工作流

16、模型要用到的相關(guān)知識(shí),主要是對(duì)SOA的基礎(chǔ)知識(shí)、工作流的基礎(chǔ)知識(shí)和jbpm的知識(shí)進(jìn)行介紹;第三部分是jbpm4ws的需求分析,在介紹需求分析時(shí),先介紹了系統(tǒng)的整體概況,然后通過(guò)用例圖的方式對(duì)系統(tǒng)的功能需求進(jìn)行了描述,同時(shí)對(duì)系統(tǒng)的非功能性需求進(jìn)行了文字描述,最后以怎樣使用jbpm4ws進(jìn)行系統(tǒng)開(kāi)發(fā)結(jié)尾;第四部分是jbpm4ws的概要設(shè)計(jì)和詳細(xì)設(shè)計(jì),在這個(gè)部分給出了jbpm4ws的體系結(jié)構(gòu)和核心包圖,是整篇論文的核心;第五部分則是針對(duì)開(kāi)發(fā)的工作流引擎jbpm4ws給出應(yīng)用案例;第六部分是總結(jié)與展望,是在總結(jié)全文的基礎(chǔ)之上,指出現(xiàn)有的jpbm4ws存在的問(wèn)題,為今后的工作做準(zhǔn)備。第2章 背景知識(shí)介紹

17、2.1 SOA基礎(chǔ)2.1.1 SOA的定義面向服務(wù)的體系結(jié)構(gòu)(SOA)的概念是在1996年由Gartner公司提出來(lái)的。當(dāng)時(shí)Gartner將SOA定義為:“客戶(hù)端/服務(wù)器的軟件設(shè)計(jì)方法?!睆倪@以后,SOA的定義便層出不窮,下面列舉了對(duì)SOA比較權(quán)威的定義。Service將SOA定義為:“服務(wù)的集合,服務(wù)間會(huì)彼此通信,這種通信可能是簡(jiǎn)單的數(shù)據(jù)傳送,也可能是兩個(gè)或更多的服務(wù)協(xié)調(diào)進(jìn)行某些活動(dòng),服務(wù)間需要某些方法進(jìn)行連接。而服務(wù)則是精確定義、封裝完善、獨(dú)立于其他服務(wù)所處環(huán)境和狀態(tài)的函數(shù)?!?W3C將SOA定義為:“一套可以被調(diào)用的組件,用戶(hù)可以發(fā)布并發(fā)現(xiàn)其接口?!?9IBM將SOA定義為:“一種將信息

18、模塊化為服務(wù)的架構(gòu)風(fēng)格?!卑俣劝倏浦袑OA定義為:“一個(gè)組件模型,它將應(yīng)用程序的不同功能單元(稱(chēng)為服務(wù))通過(guò)這些服務(wù)之間定義良好的接口和契約聯(lián)系起來(lái)。接口是采用中立的方式進(jìn)行定義的,它應(yīng)該獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺(tái)、操作系統(tǒng)和編程語(yǔ)言。這使得構(gòu)建在各種這樣的系統(tǒng)中的服務(wù)可以一種統(tǒng)一和通用的方式進(jìn)行交互。”到目前為止,關(guān)于SOA還沒(méi)有一個(gè)統(tǒng)一的、被廣泛認(rèn)可的定義。但無(wú)論專(zhuān)家如何詮釋SOA,它的核心思想是不變的,那就是服務(wù),SOA的重點(diǎn)是面向服務(wù)的3。當(dāng)然,這個(gè)服務(wù)包括企業(yè)的內(nèi)部與外部的每一個(gè)業(yè)務(wù)細(xì)節(jié),并把這些服務(wù)從復(fù)雜的環(huán)境中獨(dú)立出來(lái),使得各服務(wù)之間是可互操作的、獨(dú)立的、模塊化的、位置明確的、松

19、耦合的并且是可相互調(diào)用,不依賴(lài)于其它系統(tǒng)的。2.1.2 SOA的關(guān)鍵特性SOA作為一種新的架構(gòu)風(fēng)格,它與傳統(tǒng)的架構(gòu)風(fēng)格相比,有自己的特點(diǎn),這些特點(diǎn)主要體現(xiàn)在以下三個(gè)方面2,3:(1) 模塊化服務(wù),把業(yè)務(wù)功能分解并打包成模塊化服務(wù),該服務(wù)是具有自包含和自描述特征的。服務(wù)可以根據(jù)需要進(jìn)行混合和匹配來(lái)創(chuàng)建新的組合服務(wù),也可以由其他模塊化服務(wù)組成;(2) 服務(wù)封裝,將服務(wù)的內(nèi)容和其具有自描述特征的接口進(jìn)行分離。封裝公開(kāi)了服務(wù)的功能,隱藏了服務(wù)內(nèi)部的實(shí)現(xiàn),保證實(shí)現(xiàn)可以在接口不變的情況下進(jìn)行獨(dú)立演變;(3) 中立的接口定義:服務(wù)的接口定義是采用通用協(xié)議進(jìn)行的。正是由于上述特點(diǎn),使得SOA在與其它軟件架構(gòu)風(fēng)

20、格相比,有著一下三點(diǎn)優(yōu)勢(shì): (1) 耦合性低:SOA將應(yīng)用程序的不同功能單元,通過(guò)服務(wù)間定義的接口聯(lián)系起來(lái),而接口是中立的,這樣大大降低了系統(tǒng)與系統(tǒng)之間、系統(tǒng)內(nèi)部的各個(gè)功能模塊之間的耦合性;(2) 互操作性強(qiáng):SOA 可以實(shí)現(xiàn)任何平臺(tái)之間的跨平臺(tái)調(diào)用,而與編程的語(yǔ)言、操作系統(tǒng)和計(jì)算機(jī)類(lèi)型等等無(wú)關(guān),可以確保各系統(tǒng)之間的集成性和互操作性;(3) 重用性高:服務(wù)重用避免了重復(fù)開(kāi)發(fā)的弊端,同時(shí)提高了實(shí)現(xiàn)中的一致性。由于使用目的不同,可以將服務(wù)分別多次進(jìn)行組合。在應(yīng)用中,服務(wù)重用比組件重用和類(lèi)的重用要更容易實(shí)現(xiàn)。另外,在SOA系統(tǒng)中要注意保持服務(wù)接口的穩(wěn)定。穩(wěn)定的服務(wù)接口可以讓服務(wù)的提供者和服務(wù)的消費(fèi)者

21、獨(dú)立演變。2.1.3 SOA的實(shí)現(xiàn)技術(shù)在典型的SOA系統(tǒng)中,會(huì)涉及3個(gè)參與者。即服務(wù)注冊(cè)代理、服務(wù)請(qǐng)求者、服務(wù)提供者。這三者之間的關(guān)系可以用圖2-1來(lái)描述,下面是對(duì)參考模型中個(gè)參與者的解釋?zhuān)?圖2-1 SOA參考模型圖服務(wù)請(qǐng)求者:服務(wù)請(qǐng)求者是一個(gè)應(yīng)用程序、一個(gè)軟件模塊或SOA系統(tǒng)中的一個(gè)服務(wù)。它發(fā)起對(duì)服務(wù)注冊(cè)代理的服務(wù)查詢(xún),通過(guò)傳輸綁定協(xié)議調(diào)用遠(yuǎn)程服務(wù)。服務(wù)請(qǐng)求者根據(jù)接口契約來(lái)調(diào)用服務(wù)。服務(wù)提供者:服務(wù)提供者是實(shí)現(xiàn)服務(wù)接口的一個(gè)可通過(guò)網(wǎng)絡(luò)尋址來(lái)查找的軟件實(shí)體,它接受和執(zhí)行來(lái)自服務(wù)請(qǐng)求者的請(qǐng)求。它將自己的服務(wù)和接口契約發(fā)布到服務(wù)注冊(cè)代理,以便服務(wù)使用者可以發(fā)現(xiàn)和訪問(wèn)該服務(wù)。服務(wù)注冊(cè)代理:服務(wù)注冊(cè)

22、代理是服務(wù)發(fā)現(xiàn)的支持者。它包含一個(gè)可用服務(wù)的存儲(chǔ)庫(kù),并允許感興趣的服務(wù)請(qǐng)求者查找服務(wù)提供者。SOA架構(gòu)中每個(gè)參與者都扮演著服務(wù)提供者、使用者和注冊(cè)中心這三種角色中的某一種或多種。并且它們之間會(huì)通過(guò)協(xié)議進(jìn)行交互,他們之間的交互包括:發(fā)布:為了使服務(wù)可訪問(wèn),服務(wù)提供者會(huì)向服務(wù)注冊(cè)代理發(fā)布服務(wù),這樣服務(wù)使用者就可以通過(guò)服務(wù)注冊(cè)代理來(lái)發(fā)現(xiàn)和調(diào)用它。發(fā)現(xiàn):服務(wù)請(qǐng)求者定位服務(wù),方法是服務(wù)請(qǐng)求者向服務(wù)注冊(cè)代理發(fā)送請(qǐng)求,查找需要調(diào)用的服務(wù),服務(wù)注冊(cè)代理找到滿(mǎn)足其標(biāo)準(zhǔn)的服務(wù),并將結(jié)果返回給服務(wù)請(qǐng)求者。綁定和調(diào)用:在檢索完服務(wù)描述之后,服務(wù)請(qǐng)求者會(huì)根據(jù)服務(wù)描述中的信息向服務(wù)提供者發(fā)送請(qǐng)求,服務(wù)提供者會(huì)執(zhí)行相應(yīng)的服

23、務(wù),并將執(zhí)行結(jié)果返回給服務(wù)請(qǐng)求者。2.2 工作流基礎(chǔ)2.2.1 工作流概述工作流是對(duì)現(xiàn)實(shí)生活中業(yè)務(wù)流程的自動(dòng)化管理,它將將業(yè)務(wù)流程中的工作按照一定的邏輯順序組織在一起,并對(duì)組織在一起的工作實(shí)施管理,它能夠在多個(gè)參與者之間,利用計(jì)算機(jī),按某種預(yù)定的規(guī)則自動(dòng)傳遞文檔、信息或者任務(wù)。工作流技術(shù)的研究開(kāi)始于上個(gè)世紀(jì)70年代中期對(duì)辦公自動(dòng)化領(lǐng)域的研究,但工作流思想的出現(xiàn)還應(yīng)該更早,1968年Fritz Nordsieck就已經(jīng)清楚地表達(dá)了利用信息技術(shù)實(shí)現(xiàn)工作流程自動(dòng)化的想法。70年代與工作流有關(guān)的研究工作包括:賓夕法尼亞大學(xué)沃頓學(xué)院的Michael D. Zisman開(kāi)發(fā)的原型系統(tǒng)SCOOP,施樂(lè)帕洛阿

24、爾托研究中心的Clarence A. Ellis和Gary J. Nutt等人開(kāi)發(fā)的Officetalk系列試驗(yàn)系統(tǒng),還有Anatoly Holt和Paul Cashman開(kāi)發(fā)的ARPANET上的“監(jiān)控軟件故障報(bào)告”程序。SCOOP,Officetalk和Anatoly Holt開(kāi)發(fā)的系統(tǒng)都采用Petri網(wǎng)的某種變體進(jìn)行流程建模。其中SCOOP和Officetalk系統(tǒng),不但標(biāo)志著工作流技術(shù)的開(kāi)始,而且也是最早的辦公自動(dòng)化系統(tǒng)。含有工作流特征的商用系統(tǒng)的開(kāi)發(fā)始于1983年至1985年間,早期的商用系統(tǒng)主要來(lái)自于圖像處理領(lǐng)域和電子郵件領(lǐng)域。圖像處理許多時(shí)候需要流轉(zhuǎn)和跟蹤圖像,工作流恰好迎合這種需

25、求;增強(qiáng)的電子郵件系統(tǒng)也采用了工作流的思想,把原來(lái)點(diǎn)對(duì)點(diǎn)的郵件流轉(zhuǎn)改進(jìn)為依照某種流程來(lái)流轉(zhuǎn)。在這些早期的工作流系統(tǒng)中只有少數(shù)獲得了成功。進(jìn)入90年代以后,相關(guān)的技術(shù)條件逐漸成熟,工作流系統(tǒng)的開(kāi)發(fā)與研究進(jìn)入了一個(gè)新的熱潮4。據(jù)調(diào)查,截至1995年共有200多種軟件聲稱(chēng)支持工作流管理或者擁有工作流特征。工作流技術(shù)被應(yīng)用于電訊業(yè)、軟件工程、制造業(yè)、金融業(yè)、銀行業(yè)、科學(xué)試驗(yàn)、衛(wèi)生保健領(lǐng)域、航運(yùn)業(yè)和辦公自動(dòng)化領(lǐng)域。1993年8月,工作流技術(shù)標(biāo)準(zhǔn)化的工業(yè)組織-工作流管理聯(lián)盟(WFMC)成立。 1994年,工作流管理聯(lián)盟發(fā)布了用于工作流管理系統(tǒng)之間互操作的工作流參考模型,并相繼制定了一系列工業(yè)標(biāo)準(zhǔn)。2.2.

26、2工作流核心概念工作流管理聯(lián)盟的成立標(biāo)志著工作流技術(shù)進(jìn)入了相對(duì)成熟的階段5,6。為了實(shí)現(xiàn)不同工作流產(chǎn)品之間的互操作,工作流聯(lián)盟制定了工作流管理系統(tǒng)7,8,9的相關(guān)術(shù)語(yǔ)、體系結(jié)構(gòu)以及應(yīng)用編程接口,其中核心概念和定義如下:工作流:一類(lèi)能夠完全或者部分自動(dòng)執(zhí)行的經(jīng)營(yíng)過(guò)程,它根據(jù)一系列的過(guò)程規(guī)則,文檔、信息或任務(wù)能夠在不同的執(zhí)行者之間進(jìn)行傳遞與執(zhí)行;業(yè)務(wù)流程:企業(yè)或者機(jī)構(gòu)為了總體業(yè)務(wù)目標(biāo),而進(jìn)行的一系列相關(guān)活動(dòng),這些活動(dòng)的執(zhí)行需要遵循一定的規(guī)則;流程定義:業(yè)務(wù)流程的形式化描述,用來(lái)支持系統(tǒng)建模和運(yùn)行過(guò)程的自動(dòng)化。流程可分解為一系列的子流程和任務(wù),其定義包括描述流程起始、終止的關(guān)系網(wǎng)絡(luò)以及一些關(guān)于個(gè)體行

27、為的信息,具體而言,即構(gòu)成流程的各任務(wù)節(jié)點(diǎn)以及各任務(wù)間的關(guān)系、組織成員的角色、應(yīng)用中的數(shù)據(jù)結(jié)構(gòu)等;任務(wù):業(yè)務(wù)流程的一個(gè)執(zhí)行階段,由執(zhí)行者完成。執(zhí)行者可以是人、軟件系統(tǒng)或二者的集合,任務(wù)是過(guò)程執(zhí)行中可被工作流引擎調(diào)度的最小工作單元,任務(wù)的執(zhí)行要求有人或機(jī)器的參與;流程實(shí)例:實(shí)際運(yùn)行中的一個(gè)流程,每個(gè)實(shí)例代表一個(gè)能獨(dú)立控制執(zhí)行、具有內(nèi)部狀態(tài)的線(xiàn)程;工作流引擎:根據(jù)流程定義工具流程定義文件來(lái)管理,流程實(shí)例的生成、運(yùn)行與結(jié)束。一個(gè)任務(wù)執(zhí)行完成后,引擎根據(jù)流程定義文件將控制權(quán)及其所引用的過(guò)程實(shí)例數(shù)據(jù)自動(dòng)地向后傳遞。任務(wù)的執(zhí)行如果需要人的參與,引擎應(yīng)將該實(shí)例信息加入相應(yīng)人的工作列表中,并且在人選擇開(kāi)始該活

28、動(dòng)實(shí)例的運(yùn)行時(shí),激活預(yù)定義的應(yīng)用程序模塊,如果不需要人的參與,引擎應(yīng)直接激活預(yù)定義的軟件模塊。在流程實(shí)例執(zhí)行過(guò)程中,引擎將隨時(shí)記錄運(yùn)行信息。2.2.3 工作流參考模型工作流模型是對(duì)工作流的程序結(jié)構(gòu)的抽象表示。它確定了程序結(jié)構(gòu)中的接口,使得這些接口可以在不同產(chǎn)品和不同的結(jié)構(gòu)層次上協(xié)同工作10,11。圖2-2是WFMC給出的工作流系統(tǒng)的參考模型,從圖中可以看出,一個(gè)通用的工作流系統(tǒng)包含以下5個(gè)部分12,13:圖2-2 工作流參考模型圖(1) 流程定義工具:以計(jì)算機(jī)能處理的形式進(jìn)行流程定義,現(xiàn)在的大多數(shù)流程定義工具采用了圖形方式。流程設(shè)計(jì)者通過(guò)繪圖方式來(lái)創(chuàng)建流程模型,最后輸出一個(gè)流程定義文件;(2)

29、 工作流執(zhí)行服務(wù):由一個(gè)或多個(gè)工作流引擎組成,它主要解釋流程定義、創(chuàng)建流程實(shí)例、并執(zhí)行流程實(shí)例,在流程定義的執(zhí)行過(guò)程中,會(huì)與工作流客戶(hù)端和外部應(yīng)用系統(tǒng)進(jìn)行交互; (3) 客戶(hù)端應(yīng)用:是用戶(hù)操作工作流管理系統(tǒng)分配來(lái)的任務(wù)的客戶(hù)端,由工作流任務(wù)表管理器和任務(wù)操作共同完成。工作流任務(wù)表管理器是一個(gè)軟件模塊,負(fù)責(zé)管理工作流的任務(wù)表,并完成與工作流參與者的交互操作。(4) 調(diào)用應(yīng)用:在工作流任務(wù)執(zhí)行過(guò)程中,一些不需要人員參與的活動(dòng)會(huì)直接調(diào)用一些外部應(yīng)用程序。(5) 管理監(jiān)控工具:對(duì)工作流在整個(gè)組織內(nèi)的流程情況進(jìn)行監(jiān)控,并提供一系列管理功能,實(shí)現(xiàn)安全控制、過(guò)程控制、授權(quán)等操作。典型的功能范圍包括用戶(hù)管理、

30、角色管理、監(jiān)控管理、資源管理、過(guò)程監(jiān)控管理。具體如:過(guò)程模型的實(shí)例化,啟動(dòng)、掛起、恢復(fù)、終止過(guò)程實(shí)例;管理正在執(zhí)行的過(guò)程實(shí)例等;這5個(gè)部分之間的交互由下面5個(gè)接口來(lái)完成14:(1) 流程定義部署接口(接口一):將流程定義工具設(shè)計(jì)的流程定義文件部署到工作流引擎的通信接口;(2) 工作流客戶(hù)端應(yīng)用程序接口(接口二):客戶(hù)端工作流應(yīng)用程序與工作流引擎之間的通信接口;(3) 應(yīng)用程序調(diào)用接口(接口三):工作流引擎直接調(diào)用應(yīng)用程序或應(yīng)用程序代理的API,是工作流系統(tǒng)同應(yīng)用系統(tǒng)通信的主要接口;(4) WAPI協(xié)作功能接口(接口四):工作流引擎與工作流引擎之間的通信接口,是構(gòu)成分布式工作流管理系統(tǒng)的主要功能

31、接口;(5) 管理和監(jiān)控接口(接口五):提供對(duì)工作流機(jī)狀態(tài)以及工作流運(yùn)行實(shí)例的監(jiān)控和管理的接口。本文研究的工作流引擎與參考模型中的工作流引擎一致。2.3 jbpm基礎(chǔ)2.3.1 jbpm概述jbpm,全稱(chēng)是Java Business Process Management(業(yè)務(wù)流程管理),它是jboss開(kāi)發(fā)的開(kāi)源的工作流引擎。jbpm覆蓋了業(yè)務(wù)流程管理、工作流、服務(wù)協(xié)作等領(lǐng)域,是一個(gè)靈活的、易擴(kuò)展的可執(zhí)行流程語(yǔ)言框架15。jbpm框架主要有三部分組成:(1)、用于描述流程定義、處理業(yè)務(wù)邏輯的流程定義語(yǔ)言jpdl:jpdl是基于狀態(tài)圖的,它詳細(xì)定義了流程的起始狀態(tài)、結(jié)束狀態(tài)、狀態(tài)之間的轉(zhuǎn)換,以xm

32、l的方式直觀地描述業(yè)務(wù)流程;(2)、對(duì)流程邏輯進(jìn)行控制的流程虛擬機(jī)pvm:pvm將對(duì)jpdl定義的流程描述文件進(jìn)行解析,并將解析的數(shù)據(jù)持久化到數(shù)據(jù)庫(kù)中,當(dāng)請(qǐng)求創(chuàng)建流程實(shí)例時(shí),pvm會(huì)從數(shù)據(jù)庫(kù)中取出流程定義,并根據(jù)流程定義創(chuàng)建對(duì)應(yīng)的流程實(shí)例,然后執(zhí)行相應(yīng)的流程實(shí)例;(3)、對(duì)jpdl的建模工具,目前jbpm提供了eclipse插件版的圖形化建模工具,開(kāi)發(fā)人員可通過(guò)繪圖的方式構(gòu)建自己的流程定義。jbpm這三個(gè)部分之間是獨(dú)立的,開(kāi)發(fā)人員可以根據(jù)自己的需要對(duì)其進(jìn)行擴(kuò)展。例如,可以開(kāi)發(fā)符合自己需求的jpdl規(guī)范的流程建模工具。jbpm采用hibernate來(lái)進(jìn)行數(shù)據(jù)庫(kù)管理,因此,凡是 hibernate

33、 支持的數(shù)據(jù)庫(kù),jbpm也就支持。通過(guò)這種方式,jbpm將數(shù)據(jù)的管理職能分離出去,專(zhuān)注于商務(wù)邏輯的處理。另外,jbpm可以與spring進(jìn)行無(wú)縫集成,可以將jbpm對(duì)數(shù)據(jù)庫(kù)的事物管理、對(duì)IOC容器的管理交由spring來(lái)完成,從這兒也可以看出,jbpm的靈活性和可擴(kuò)展性。2.3.2 流程定義基礎(chǔ)知識(shí)流程定義包括流程建模,流程建模即采用圖形化的方式來(lái)定義流程,而流程建模是流程定義的核心,它會(huì)以一組對(duì)象來(lái)形式化描述流程。jbpm流程建模使用的是改良的UML活動(dòng)圖,同時(shí)采用jpdl作為流程建模語(yǔ)言,jpdl的核心元素主要有以下幾個(gè)部分組成16:狀態(tài)結(jié)點(diǎn)(state):是一個(gè)典型的等待狀態(tài)。同任務(wù)結(jié)點(diǎn)

34、不同的是,狀態(tài)結(jié)點(diǎn)不會(huì)向任務(wù)列表添加任務(wù)實(shí)例。它的完成需要等待外部系統(tǒng)的干預(yù),這兒的外部系統(tǒng)不包括人。開(kāi)始節(jié)點(diǎn)(start):是狀態(tài)節(jié)點(diǎn)的一種,它是整個(gè)流程的入口,在流程中只能有一個(gè)。終止節(jié)點(diǎn)(end):是狀態(tài)節(jié)點(diǎn)的一種,在流程中可以有多個(gè)。任務(wù)結(jié)點(diǎn)(task):任務(wù)結(jié)點(diǎn)由人介入的一個(gè)或多個(gè)任務(wù)組成,當(dāng)流程運(yùn)行到一個(gè)任務(wù)結(jié)點(diǎn)時(shí),會(huì)生成對(duì)應(yīng)的“任務(wù)實(shí)例對(duì)象(task instances)”,并添加到參與人的任務(wù)列表中,之后結(jié)點(diǎn)會(huì)處于等待狀態(tài),直到參與人完成任務(wù),并激活流程繼續(xù)向下執(zhí)行。轉(zhuǎn)換(Transition):它決定流程中節(jié)點(diǎn)之間的轉(zhuǎn)移路徑,它連接了源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)。分支判斷節(jié)點(diǎn)(deces

35、ion):它會(huì)對(duì)流程中的條件進(jìn)行判斷,會(huì)在不同的條件下轉(zhuǎn)移到不同的任務(wù)節(jié)點(diǎn)。第3章 面向服務(wù)的工作流引擎jbpm4ws3.1 jbpm4ws系統(tǒng)說(shuō)明本節(jié)是對(duì)jbpm4ws進(jìn)行需求分析前的說(shuō)明,主要包括系統(tǒng)概述、流程實(shí)例狀態(tài)圖兩個(gè)方面。其中,系統(tǒng)概述介紹了jbpm4ws的整體概況,而流程實(shí)例狀態(tài)圖則是對(duì)jbpm4ws中流程實(shí)例的狀態(tài)進(jìn)行描述。3.1.1 系統(tǒng)概述本文是對(duì)jbpm進(jìn)行擴(kuò)展,開(kāi)發(fā)一個(gè)面向服務(wù)的工作流引擎jbpm4ws。jbpm4ws對(duì)流程定義的描述采用的是jpdl4ws語(yǔ)言,它是擴(kuò)展了jpdl的面向服務(wù)的流程定義語(yǔ)言。jbpm4ws擴(kuò)展了jbpm的兩大功能:對(duì)web服務(wù)編排的支持和流

36、程的服務(wù)化。web服務(wù)編排,是將一系列的現(xiàn)有的服務(wù)資源通過(guò)一定的方式(流程),按照一定的次序,組合起來(lái),完成某個(gè)總體的業(yè)務(wù)目標(biāo)。流程的服務(wù)化:是將流程的操作接口發(fā)布成web服務(wù),即流程訪問(wèn)服務(wù),讓外界對(duì)流程數(shù)據(jù)的訪問(wèn)只能通過(guò)流程訪問(wèn)服務(wù)來(lái)完成,流程的服務(wù)化是數(shù)據(jù)服務(wù)化的一個(gè)特例,流程訪問(wèn)服務(wù)是數(shù)據(jù)訪問(wèn)服務(wù)的一種。另外,本文只是對(duì)jbpm的擴(kuò)展,jbpm支持的功能在jbpm4ws中都將被支持。這些功能主要包括兩大部分:(1)對(duì)流程的管理,包括流程的部署卸載、流程的掛起、流程信息的查詢(xún);(2)對(duì)流程實(shí)例的管理,包括流程實(shí)例的創(chuàng)建,流程實(shí)例的掛起、恢復(fù)、終止,執(zhí)行流程任務(wù),委派等。而本文對(duì)jbpm4

37、ws需求的描述是按jbpm4ws完成的功能進(jìn)行劃分的,其中管理流程的需求將在3.2.1中被描述,管理流程實(shí)例的需求將在3.2.2節(jié)中被描述,而對(duì)jbpm4ws的非功能性需求將在3.2.3節(jié)中被描述。3.1.2 流程實(shí)例狀態(tài)圖圖3-1描述了流程實(shí)例從創(chuàng)建到運(yùn)行結(jié)束的整個(gè)生命周期,而觸發(fā)流程實(shí)例狀態(tài)轉(zhuǎn)換的事件即是jbpm4ws對(duì)外界系統(tǒng)提供的對(duì)流程實(shí)例管理的api,它由人或者外界系統(tǒng)調(diào)用。下面是對(duì)流程實(shí)例各個(gè)狀態(tài)的介紹:就緒:在流程實(shí)例的生命周期中,沒(méi)有任務(wù)執(zhí)行時(shí)的狀態(tài)。運(yùn)行:在流程實(shí)例的生命周期中,有任務(wù)正在執(zhí)行時(shí)的狀態(tài)。掛起:在流程實(shí)例的生命周期中,不允許對(duì)流程實(shí)例進(jìn)行操作的暫時(shí)狀態(tài)。終止:流

38、程實(shí)例完成一次完整的執(zhí)行過(guò)程或強(qiáng)制終止后所處的狀態(tài),此時(shí)流程實(shí)例的生命周期終止。圖3-1 流程實(shí)例狀態(tài)圖3.2 jbpm4ws的需求分析3.2.1 管理流程需求分析圖3-2是管理流程用例圖,它是對(duì)流程管理和流程信息查詢(xún)的需求描述,從圖中可以看出,jbpm4ws引擎管理流程包括一下六個(gè)功能服務(wù):(1) 部署流程:將流程定義文件部署到j(luò)bpm4ws引擎中。(2) 卸載流程:將流程定義文件從jbpm4ws引擎中刪除。(3) 掛起流程:將整個(gè)流程掛起,掛起流程時(shí)會(huì)同時(shí)掛起對(duì)應(yīng)的流程實(shí)例。(4) 恢復(fù)流程:將掛起的流程恢復(fù),恢復(fù)時(shí)也會(huì)將對(duì)應(yīng)的流程實(shí)例恢復(fù)。(5) 獲取流程實(shí)例列表:查詢(xún)由某個(gè)流程定義創(chuàng)建

39、的流程實(shí)例列表。(6) 查詢(xún)流程信息:查詢(xún)與流程定義相關(guān)的信息,例如,流程定義名,流程定義ID,流程是否被掛起等。圖3-2 管理流程用例圖3.2.2 管理流程實(shí)例需求分析圖3-3是管理流程實(shí)例用例圖,它是對(duì)流程實(shí)例管理和流程實(shí)例信息查詢(xún)的需求描述,從圖中可以看出,jbpm4ws管理流程實(shí)例包括以下七個(gè)功能服務(wù):(1) 創(chuàng)建流程實(shí)例:jbpm4ws引擎根據(jù)指定的流程定義,創(chuàng)建相應(yīng)的流程實(shí)例。(2) 執(zhí)行流程任務(wù):執(zhí)行流程實(shí)例中某個(gè)任務(wù)節(jié)點(diǎn)的任務(wù),并觸發(fā)流程實(shí)例轉(zhuǎn)移到下一個(gè)任務(wù)節(jié)點(diǎn)。(3) 指派流程任務(wù):為流程中的某個(gè)任務(wù)指定負(fù)責(zé)人。(4) 掛起流程實(shí)例:將流程實(shí)例的狀態(tài)由就緒改為掛起;(5) 恢

40、復(fù)流程實(shí)例:將流程實(shí)例狀態(tài)由掛起改為就緒;(6) 查詢(xún)流程信息:根據(jù)客戶(hù)端的請(qǐng)求查詢(xún)相應(yīng)的流程實(shí)例信息;(7) 終止流程實(shí)例:終止處于就緒狀態(tài)的流程實(shí)例。圖3-3 管理流程實(shí)例用例圖3.2.3 非功能需求分析jbpm4ws除了包括前面兩節(jié)的功能需求外,還必須滿(mǎn)足下面的非功能需求:(1) jbpm4ws須支持流程的服務(wù)化,這就要求jbpm4ws的服務(wù)層接口的數(shù)據(jù)定義必須采用基本數(shù)據(jù)類(lèi)型;(2) jbpm4ws內(nèi)核實(shí)現(xiàn)要是動(dòng)態(tài)可配置的,這主要包括數(shù)據(jù)訪問(wèn)方式的可配置,xml解析器的可配置,和內(nèi)核支持環(huán)境的可配置;(3) jbpm4ws的使用要支持jbpm原有的功能,不能限制jbpm的功能,本文僅是

41、對(duì)jbpm的擴(kuò)展;(4) jbpm4ws支持對(duì)服務(wù)的編排,能夠調(diào)用外界系統(tǒng)提供的web服務(wù)。3.3 jbpm4ws程序開(kāi)發(fā)流程基于上述需求開(kāi)發(fā)的工作流引擎jbpm4ws進(jìn)行應(yīng)用系統(tǒng)開(kāi)發(fā)時(shí)的開(kāi)發(fā)流程包括四個(gè)方面:流程的設(shè)計(jì),流程服務(wù)的選取,流程與流程服務(wù)的綁定,流程的部署實(shí)施。流程的設(shè)計(jì)可以通過(guò)圖形化的界面讓普通的不懂計(jì)算機(jī)的業(yè)務(wù)人員參與完成,也可以通過(guò)編制xml的方式由專(zhuān)業(yè)的系統(tǒng)開(kāi)發(fā)人員完成。流程服務(wù)選取分為兩步完成:從服務(wù)資源庫(kù)中查詢(xún)現(xiàn)有的服務(wù)資源,如果現(xiàn)有的服務(wù)資源可以完成或可以通過(guò)一定的組合方式完成目標(biāo)功能,則將查詢(xún)到的服務(wù)作為待選取的服務(wù);當(dāng)服務(wù)資源庫(kù)中查詢(xún)不到與目標(biāo)功能匹配的服務(wù)資源

42、,則進(jìn)行系統(tǒng)構(gòu)建服務(wù),將構(gòu)建的系統(tǒng)服務(wù)作為待選取的服務(wù),并將構(gòu)建的服務(wù)添加到服務(wù)資源庫(kù)中。服務(wù)資源庫(kù)的構(gòu)建是在不斷的系統(tǒng)開(kāi)發(fā)中不斷積累而成。當(dāng)服務(wù)資源積累到一定程度時(shí),系統(tǒng)的構(gòu)建將變得異常容易,只是一個(gè)資源的查找過(guò)程。這也是jbpm4ws引擎與jbpm引擎相比最大的優(yōu)勢(shì)。流程與服務(wù)的綁定是指,在流程設(shè)計(jì)好之后,流程的某個(gè)任務(wù)節(jié)點(diǎn)要與相應(yīng)的流程服務(wù)進(jìn)行綁定,這樣當(dāng)進(jìn)行流程調(diào)度時(shí),jbpm4ws引擎就可以通過(guò)綁定信息同時(shí)進(jìn)行流程服務(wù)的調(diào)度。流程的部署實(shí)施,當(dāng)所有工作完成之后,就可以通過(guò)調(diào)用jbpm4ws的部署功能將流程部署到數(shù)據(jù)庫(kù)之中。外界的系統(tǒng)就可以通過(guò)jbpm4ws引擎提供的流程操作接口對(duì)流程

43、進(jìn)行管理、調(diào)度。第4章 jbpm4ws的設(shè)計(jì)與實(shí)現(xiàn)4.1 jbpm4ws的設(shè)計(jì)原理圖4-1是jbpm4ws的設(shè)計(jì)原理圖,從圖中可以看出,在外界向jbpm4ws發(fā)送執(zhí)行流程任務(wù)請(qǐng)求后,jbpm4ws引擎會(huì)接收發(fā)送過(guò)來(lái)的請(qǐng)求,然后解析對(duì)應(yīng)的流程定義文件。解析完成后,jbpm4ws會(huì)查詢(xún)與任務(wù)綁定的服務(wù),然后調(diào)用對(duì)應(yīng)的服務(wù)。與此同時(shí),jbpm4ws會(huì)調(diào)用jbpm提供的功能觸發(fā)流程實(shí)例繼續(xù)向下運(yùn)行。圖中核心部分的解釋如下:圖4-1 jbpm4ws設(shè)計(jì)原理圖由橢圓表示的service是由流程引擎的使用者開(kāi)發(fā)的功能服務(wù),功能服務(wù)主要包括規(guī)則校驗(yàn)服務(wù)和任務(wù)處理服務(wù)兩部分。由矩形框表示的流程服務(wù)是由流程引擎的

44、使用者開(kāi)發(fā)的功能服務(wù),它會(huì)調(diào)用jbpm4ws提供的流程訪問(wèn)服務(wù)。由圓角矩形表示的jbpm引擎會(huì)對(duì)流程進(jìn)行調(diào)度,觸發(fā)流程的執(zhí)行。由矩形表示的任務(wù)-服務(wù)綁定描述的是流程中任務(wù)節(jié)點(diǎn)與流程服務(wù)的綁定信息,這樣在對(duì)任務(wù)進(jìn)行調(diào)度時(shí)可以查詢(xún)相應(yīng)的功能服務(wù),然后進(jìn)行處理。由矩形表示的解析jpdl4ws會(huì)對(duì)jpdl4ws進(jìn)行解析,將jpdl4ws分成兩個(gè)部分:用jpdl定義的流程定義文件;和對(duì)任務(wù)節(jié)點(diǎn)和服務(wù)進(jìn)行綁定的配置文件。4.2 jpdl4ws的設(shè)計(jì)要使jpdl4ws描述的流程支持面向服務(wù)的特性,需要在jpdl的任務(wù)節(jié)點(diǎn)中添加對(duì)服務(wù)的描述。因此,在jpdl原有的task元素的基礎(chǔ)上,添加task-servi

45、ce子元素,圖4-2是jpdl4ws中任務(wù)節(jié)點(diǎn)的schema描述。從圖中可以看出,每一個(gè)任務(wù)節(jié)點(diǎn)(task)對(duì)應(yīng)一個(gè)任務(wù)處理服務(wù)(task-service)。圖4-2 jpdl4ws的task描述圖task-service的詳細(xì)定義如圖4-3所示。每一個(gè)任務(wù)處理服務(wù)(task-service)包含0個(gè)到多個(gè)規(guī)則校驗(yàn)服務(wù)(task-check)。任務(wù)處理服務(wù)和規(guī)則校驗(yàn)服務(wù)中都含有一個(gè)location屬性,它描述的是服務(wù)所在的地址,類(lèi)型是string。圖4-3 jpdl4ws的task-service描述圖jpdl4ws中描述的規(guī)則校驗(yàn)服務(wù)都是對(duì)任務(wù)處理服務(wù)的前置規(guī)則校驗(yàn),而對(duì)任務(wù)處理服務(wù)的后置規(guī)

46、則校驗(yàn)均可轉(zhuǎn)化為對(duì)下一個(gè)任務(wù)的前置規(guī)則校驗(yàn)。4.3 jbpm4ws的概要設(shè)計(jì)4.3.1 系統(tǒng)整體架構(gòu)根據(jù)4.1節(jié)的的系統(tǒng)設(shè)計(jì)原理圖,可以設(shè)計(jì)出對(duì)應(yīng)的系統(tǒng)架構(gòu)圖如下:圖4-4 jbpm4ws的整體架構(gòu)圖從圖4-4可以看出,jbpm4ws從上至下可以分為三層,service層、jbpm4ws內(nèi)核和運(yùn)行支持環(huán)境。各層的功能描述如下:service:jbpm4ws對(duì)外提供的流程訪問(wèn)服務(wù),在本文中,這些服務(wù)均以web服務(wù)的方式提供。jbpm4ws內(nèi)核:它是jbpm4ws的核心,包括service層的實(shí)現(xiàn),對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)、流程調(diào)度、任務(wù)調(diào)度、jpdl4ws解析五個(gè)功能模塊,其中數(shù)據(jù)訪問(wèn)、流程調(diào)度、任務(wù)處理

47、、xml解析都是為service的實(shí)現(xiàn)提供服務(wù),它們彼此之間無(wú)依賴(lài)關(guān)系。運(yùn)行支持環(huán)境:它是jbpm4ws的底層支持,是jbpm4ws的底層設(shè)施,其中hibernate為數(shù)據(jù)庫(kù)訪問(wèn)提供支持,jbpm為流程調(diào)度提供支持,CXF為服務(wù)調(diào)度提供支持,JAXB為jpdl4ws解析提供支持。4.3.2 系統(tǒng)核心包由上一節(jié)的系統(tǒng)架構(gòu)圖可以得到,圖4-5所示的包圖。下面分別從每一個(gè)包的名稱(chēng)、功能兩個(gè)方面進(jìn)行描述。圖4-5 jbpm4ws的核心包圖l com.jbpm4ws.service:jbpm4ws的對(duì)外提供的服務(wù),在com.jbpm4ws.service中包含 ManageProcessComponen

48、tService和ManageProcessInstanceService兩個(gè)核心接口,其中ManageProcessComponentService提供對(duì)流程的管理服務(wù),而ManageProcessInstanceService提供對(duì)流程實(shí)例的管理服務(wù)。l com.jbpm4ws.core:jbpm4ws的內(nèi)核實(shí)現(xiàn),它是整個(gè)jbpm4ws的核心。它實(shí)現(xiàn)了com.jbpm4ws.service,圖4-6是com.jbpm4ws.core的內(nèi)部包圖,下面是對(duì)各個(gè)包的解釋。 cesscomponent:jbpm4ws對(duì)流程的管理包,該包實(shí)現(xiàn)了service層

49、ManageProcessComponentService接口的所有方法。 cessinstance:jbpm4ws對(duì)流程實(shí)例管理的核心包,該包實(shí)現(xiàn)了service層ManageProcessInstanceService接口的所有方法。 cesscomponent.deploy:jbpm4ws對(duì)流程部署的處理包,該包主要完成對(duì)jpdl4ws描述的任務(wù)信息的持久化。圖4-6 com.jbpm4ws.core的內(nèi)部包圖 cesscomponent.undeploy:jbpm4w

50、s對(duì)流程卸載的處理包,該包主要完成對(duì)jpdl4ws中描述的任務(wù)信息的刪除。 pletetask:jdpm4ws執(zhí)行任務(wù)的處理,該包主要通過(guò)調(diào)用web服務(wù)來(lái)進(jìn)行規(guī)則校驗(yàn)和任務(wù)處理。 com.jbpm4ws.core.stream:jbpm4ws對(duì)數(shù)據(jù)流的處理,主要完成數(shù)據(jù)流之間的轉(zhuǎn)換。 com.jbpm4ws.core.persistence:jbpm4ws對(duì)jpdl4ws持久化的核心包,該包主要包括dao和model兩個(gè)子包,其中model是jpdl4ws的pojo類(lèi),dao是數(shù)據(jù)庫(kù)持久化時(shí)的數(shù)據(jù)訪問(wèn)類(lèi)。 com.jbpm4ws.core.persistence.invokeservice:調(diào)

51、用web服務(wù)的核心類(lèi),該類(lèi)會(huì)調(diào)用com.r2e.runtime.workflow.cxf包中的cxf代理,來(lái)完成web服務(wù)的調(diào)用。l com.jbpm4ws.validate:jbpm4ws規(guī)則校驗(yàn)服務(wù)接口包,它是jbpm4ws與規(guī)則校驗(yàn)服務(wù)進(jìn)行通訊的接口包,開(kāi)發(fā)人員在使用jbpm4ws引擎來(lái)定制規(guī)則校驗(yàn)服務(wù)時(shí)需要實(shí)現(xiàn)該接口包中定義的接口,該包的核心接口是IValidateProcess。l com.jbpm4ws.work:jbpm4ws任務(wù)處理服務(wù)接口包,它是jbm4ws與任務(wù)處理服務(wù)進(jìn)行通訊的接口包,開(kāi)發(fā)人員在使用jbpm4ws引擎來(lái)定制任務(wù)處理服務(wù)時(shí)需要實(shí)現(xiàn)該接口包中定義的接口,該包的

52、核心接口是IWorkProcess。l com.jbpm4ws.jpdl4ws:jbpm4ws對(duì)jpdl4ws的解析,在該包中會(huì)實(shí)現(xiàn)對(duì)jpdl4ws的解析功能,其中對(duì)xml的處理使用的是JAXB;來(lái)完成的,圖4-7是com.jbpm4ws.jpdl4ws的內(nèi)部包圖。 圖4-7 com.jbpm4ws.jpdl4ws的內(nèi)部包圖下面是對(duì)各個(gè)包的解釋?zhuān)?com.jbpm4ws.jpdl4ws.parse是對(duì)xml進(jìn)行解析的核心包,該包中有ParseXml2Java和ParseJava2Xml分別完成從xml到j(luò)ava和從java到xml的轉(zhuǎn)換。 com.jbpm4ws.jpdl4ws.jaxbmod

53、el是對(duì)jpdl4ws的schema中的元素進(jìn)行建模的java對(duì)象。 l com.jbpm4ws.jbpm:jbpm4ws對(duì)jbpm的代理,在該包中將構(gòu)建一個(gè)對(duì)jbpm的代理,所有對(duì)jbpm的訪問(wèn)都將通過(guò)該包提供的接口類(lèi)來(lái)進(jìn)行,該包包含兩個(gè)類(lèi)ProcessEngineFactoryBean和JbpmProxy,其中ProcessEngineFactoryBean是生成jbpm的ProcessEngine的核心類(lèi),該類(lèi)會(huì)讀取jbpm的配置文件,并生成相應(yīng)的ProcessEngine,而JbpmProxy是訪問(wèn)jbpm的接口,所有對(duì)jbpm的調(diào)用都會(huì)通過(guò)JbpmProxy來(lái)完成。l com.jbp

54、m4ws.util:jbpm4ws使用的工具類(lèi),該包是jbpm4ws使用到的所有的工具類(lèi),這些工具類(lèi)主要包括,對(duì)文件的操作、對(duì)文件的目錄的操作,分別對(duì)應(yīng)DirProcess,F(xiàn)ileProcess兩個(gè)類(lèi)。l com.Jbpm4ws.exception:jbpm4ws的異常定義包,主要定義了一個(gè)Jbpm4wsException的異常類(lèi),該類(lèi)繼承至RuntimeException,jbpm4ws中所有對(duì)異常的處理都會(huì)由該類(lèi)來(lái)完成。4.4 jbpm4ws的實(shí)現(xiàn)4.4.1 功能服務(wù)實(shí)現(xiàn)本節(jié)將對(duì)需求中提到的主要的功能服務(wù)進(jìn)行實(shí)現(xiàn),實(shí)現(xiàn)的描述主要通過(guò)時(shí)序圖來(lái)完成。這些功能服務(wù)主要包括,流程的部署、卸載,流

55、程任務(wù)的執(zhí)行,而對(duì)于其它的功能服務(wù)由于是由jbpm完成,jbpm4ws只是調(diào)用jbpm的一個(gè)中間代理層,在此就不在做介紹。(1) 部署流程圖4-8是jbpm4ws部署流程的時(shí)序圖,從圖可以看出,jbpm4ws引擎客戶(hù)端向jbpm4ws引擎發(fā)送部署流程請(qǐng)求后,ManageProcessComponent類(lèi)會(huì)接收發(fā)送的請(qǐng)求,并調(diào)用ParseXml2Java類(lèi)的parse方法解析jpdl4ws定義的流程文件。解析完成后,會(huì)得到用jpdl描述的流程信息和任務(wù)與服務(wù)的綁定信息。然后ManageProcesscomponent類(lèi)調(diào)用jbpm的代理類(lèi)JbpmContext的deploy方法將jpdl描述的流

56、程信息部署到j(luò)bpm引擎中,并返回流程的部署ID。最后ManageProcessComponent類(lèi)調(diào)用ProcessComponentDeployImp類(lèi)的deploy方法,ProcessComponentDeployImp類(lèi)會(huì)調(diào)用TaskServiceDaoImp類(lèi)的save方法,將任務(wù)與服務(wù)的綁定信息部署到數(shù)據(jù)庫(kù)中。圖4-8 jpdl4ws部署流程時(shí)序圖(2) 卸載流程圖4-9是jbpm4ws卸載流程的時(shí)序圖,從圖可以看出,jbpm4ws引擎客戶(hù)端向jbpm4ws引擎發(fā)送卸載流程請(qǐng)求后,ManageProcessComponent類(lèi)會(huì)接收發(fā)送的請(qǐng)求,并調(diào)用jbpm的代理類(lèi)JbpmContext的deleteDeployment方法將jpdl描述的流程信息從jbpm引擎中卸載。然后ManageProcessComponent類(lèi)調(diào)用ProcessComponentDeployImp類(lèi)的undeploy方法,ProcessComponentDeployImp類(lèi)會(huì)調(diào)用TaskServiceDaoImp類(lèi)的delete方法,將任務(wù)與服務(wù)的綁定信息從數(shù)據(jù)庫(kù)中卸載。圖4-9 卸載流程時(shí)序圖(3) 執(zhí)行流程服務(wù)圖4-10是jbpm4ws執(zhí)行流程服務(wù)的時(shí)序圖,從圖可以看出,jbpm4ws引擎客戶(hù)端向jbpm4ws引擎發(fā)送執(zhí)行流程服務(wù)請(qǐng)求后,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論