版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、學號: 200632580267 密級: 武漢大學本科畢業(yè)論文面向服務的工作流引擎的設(shè)計與實現(xiàn)院(系)名 稱:國際軟件學院專 業(yè) 名 稱 :軟件工程學 生 姓 名 :指 導 教 師 : 二一年五月bachelors degree thesis of wuhan universitythe designing and implementingworkflow enginebased on service-oriented architecturecollege :international school of software subject :software engineeringname
2、:lu fanfengdirector :ying shi professormay 2010鄭 重 申 明本人呈交的科研項目論文,是在導師的指導下,獨立進行研究工作所取得的成果,所有數(shù)據(jù)、圖片資料真實可靠。盡我所知,除文中已經(jīng)注明引用的內(nèi)容外,本論文的研究成果不包含他人享有著作權(quán)的內(nèi)容。對本論文所涉及的研究工作做出貢獻的其他個人和集體,均已在文中以明確的方式標明。本學位論文的知識產(chǎn)權(quán)歸屬于培養(yǎng)單位。本人簽名: 日期: 摘 要傳統(tǒng)的工作流技術(shù)受體系結(jié)構(gòu)的限制,在適應目前大規(guī)模的企業(yè)應用需求上顯得力不從心,它無法將現(xiàn)有的web服務編排起來,形成工作流程,適應新的業(yè)務需求,實現(xiàn)web服務的重用和系
3、統(tǒng)需求的重構(gòu)。本文就是針對上述問題,對面向服務的工作流引擎進行研究,并以開源的工作流引擎jbpm為基礎(chǔ),開發(fā)一個面向服務的工作流引擎jbpm4ws。本文對jbpm4ws的研究圍繞著系統(tǒng)需求展開,在系統(tǒng)需求中詳細介紹了jbpm4ws需要實現(xiàn)的功能和系統(tǒng)應滿足的非功能性需求。緊接著,對jbpm4ws的設(shè)計原理和系統(tǒng)的體系結(jié)構(gòu)做了詳細介紹,提出了jbpm4ws的流程定義語言jpdl4ws,jpdl4ws擴展了jpdl對任務的描述,添加了任務處理的服務特性,支持以服務的形式描述任務處理過程;實現(xiàn)了流程的服務化,讓外界對流程數(shù)據(jù)的訪問只能通過流程訪問服務來完成。最后,以汽車制造為案例,介紹jbpm4ws
4、在現(xiàn)實系統(tǒng)中的應用場景。關(guān)鍵詞:工作流引擎;面向服務;流程定義;流程實例;流程的服務化;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
5、 meeting new 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 i
6、t describes 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 o
7、f the task, 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 com
8、pany is taken 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 研究內(nèi)容21.3 論文組織結(jié)構(gòu)2第2章 背景知識介紹42.1 soa基礎(chǔ)42.1.1 soa的定義42.1.2 soa的關(guān)鍵特性42.1.3 soa的實現(xiàn)
9、技術(shù)52.2 工作流基礎(chǔ)62.2.1 工作流概述62.2.2工作流核心概念72.2.3 工作流參考模型82.3 jbpm基礎(chǔ)92.3.1 jbpm概述92.3.2 流程定義基礎(chǔ)知識10第3章 面向服務的工作流引擎jbpm4ws123.1 jbpm4ws系統(tǒng)說明123.1.1 系統(tǒng)概述123.1.2 流程實例狀態(tài)圖123.2 jbpm4ws的需求分析133.2.1 管理流程需求分析133.2.2 管理流程實例需求分析143.2.3 非功能需求分析153.3 jbpm4ws程序開發(fā)流程16第4章 jbpm4ws的設(shè)計與實現(xiàn)174.1 jbpm4ws的設(shè)計原理174.2 jpdl4ws的設(shè)計184.
10、3 jbpm4ws的概要設(shè)計194.3.1 系統(tǒng)整體架構(gòu)194.3.2 系統(tǒng)核心包204.4 jbpm4ws的實現(xiàn)234.4.1 功能服務實現(xiàn)234.4.2 流程的服務化26第5章 jbpm4ws的應用案例285.1 案例簡介285.2 案例分析與設(shè)計295.2.1 案例體系架構(gòu)295.2.2 系統(tǒng)流程設(shè)計305.2.3 功能服務設(shè)計315.3 部署實施32第6章 總結(jié)與展望35參考文獻36致 謝38第1章 引言1.1 研究背景隨著市場經(jīng)濟的發(fā)展,經(jīng)濟開始走向全球化。在經(jīng)濟全球化面前,各個企業(yè)的業(yè)務將迅速增長,業(yè)務之間的關(guān)系將變得錯綜復雜,從而導致變更業(yè)務需求、更新業(yè)務需求之間的聯(lián)系的工作量會
11、變得非常龐大。如何以快速的方式來實現(xiàn)需求的有效變更,減小軟件開發(fā)過程中的工作量,提高系統(tǒng)的可維護性和可重用性,是如今it界探討的新話題。soa的解決方案正是在適應這些需求下產(chǎn)生的。它是在以以前的軟件架構(gòu)技術(shù)為依托,一步一步發(fā)展而來的。它可以看作是b/s模型、xml/web service技術(shù)之后的自然延伸,是一個“松耦合、高內(nèi)聚”的漸變演進過程。在一定程度上解決了系統(tǒng)的可重用性和可維護性。另一方面,在實際企業(yè)運作中,已經(jīng)開始提出了工作流程自動化與企業(yè)再造工程的需求。這些企業(yè)希望由內(nèi)部做起,縮短流程作業(yè)時間,快速反應市場與客戶需求,有效監(jiān)控工作進度,加強內(nèi)部信息溝通傳遞效率,分析流程作業(yè)成本與死
12、角,從而有效的降低管理成本,提升企業(yè)決策反應能力。將人工操作流程順利信息化與自動化,已成為許多企業(yè)未來興衰的關(guān)鍵,而實現(xiàn)流程自動化的關(guān)鍵技術(shù)就是工作流1。然而,傳統(tǒng)工作流技術(shù)由于體系結(jié)構(gòu)的限制,在適應目前企業(yè)大規(guī)模的業(yè)務應用需求上顯得力不從心,傳統(tǒng)的工作流技術(shù)受體系結(jié)構(gòu)的限制,在適應目前大規(guī)模的企業(yè)應用需求上顯得力不從心,它無法將現(xiàn)有的web服務編排成起來,形成工作流程,適應新的業(yè)務需求,實現(xiàn)web服務的重用和系統(tǒng)需求的重構(gòu)。因此面向服務的工作流17應運而生,在面向服務架構(gòu)下的工作流技術(shù)利用了soa架構(gòu)所具有的快速反應性、可適應性和易操作性等特性,對提高企業(yè)的業(yè)務流程的信息化支持力度,對企業(yè)競
13、爭力方面有著非常積極的作用?,F(xiàn)今j2ee平臺上應用較為廣泛的開源的工作流引擎產(chǎn)品有bpel和jbpm,然而bpel的開發(fā)比較復雜,學習難度較大,相反jbpm學習起來就容易得多。而且jbpm是一種基于j2ee的輕量級工作流管理系統(tǒng),它還提供了對bpel的擴展,存儲支持hibernate實現(xiàn)18。jbpm是較適合擴展的開源工作流引擎,也是較容易被商業(yè)化應用的開源工作流管理系統(tǒng)。然而,jbpm本身不提供對web服務的支持。1.2 研究內(nèi)容本文對基于jbpm的面向服務的工作流引擎(jbpm4ws)的研發(fā)就是在上述的背景下展開的。本文的研究內(nèi)容包括以下五個部分:(1) 對jbpm4ws進行需求分析,指出
14、jbpm4ws應該滿足的功能性需求和非功能性需求。(2) 對jbpm的流程描述語言jpdl存在的問題進行分析,并以此為基礎(chǔ),提出了一套擴展的面向服務的流程描述語言jpdl4ws。(3) 對jbpm工作流引擎進行改進,采用cxf+spring+hibernate開發(fā)新的面向服務的工作流引擎jbpm4ws。(4) 將流程服務化,讓外界可以以web服務的方式對流程的執(zhí)行過程進行調(diào)度,對流程的執(zhí)行信息進行監(jiān)控。(5) 將改進的面向服務的工作流引擎用于汽車制造的案例中。 本文擴展的工作流引擎具有以下四個特征:.(1) 跨平臺性:系統(tǒng)具備一定的跨平臺能力,支持企業(yè)采用不同的軟硬件平臺。(2) 提供對異構(gòu)的
15、企業(yè)應用環(huán)境的支持:能夠通過流程建模,將異構(gòu)的企業(yè)應用以服務的方式集成到工作流程中,完成整體應用目標。(3) 提供對上層統(tǒng)一接口的支持:系統(tǒng)為訪問其內(nèi)部各個層次的組件提供一致的接口,以保證系統(tǒng)能與其他上層模塊或應用系統(tǒng)以系統(tǒng)開發(fā)時不能預見的方式集成。(4) 將流程服務化:將流程操作接口發(fā)布成服務,讓外界系統(tǒng)能夠以服務的方式調(diào)用接口。雖然流程引擎的研發(fā)包含了需求分析、概要設(shè)計、詳細設(shè)計、代碼實現(xiàn)、維護等各個方面,但本文著重從需求和設(shè)計兩個方面進行論述。1.3 論文組織結(jié)構(gòu)本文大體可以分為以下五個部分:第一部分是引言,主要介紹了本文的研究背景、研究內(nèi)容和全文的組織結(jié)構(gòu);第二部分是背景知識介紹,講解
16、了開發(fā)面向服務的工作流模型要用到的相關(guān)知識,主要是對soa的基礎(chǔ)知識、工作流的基礎(chǔ)知識和jbpm的知識進行介紹;第三部分是jbpm4ws的需求分析,在介紹需求分析時,先介紹了系統(tǒng)的整體概況,然后通過用例圖的方式對系統(tǒng)的功能需求進行了描述,同時對系統(tǒng)的非功能性需求進行了文字描述,最后以怎樣使用jbpm4ws進行系統(tǒng)開發(fā)結(jié)尾;第四部分是jbpm4ws的概要設(shè)計和詳細設(shè)計,在這個部分給出了jbpm4ws的體系結(jié)構(gòu)和核心包圖,是整篇論文的核心;第五部分則是針對開發(fā)的工作流引擎jbpm4ws給出應用案例;第六部分是總結(jié)與展望,是在總結(jié)全文的基礎(chǔ)之上,指出現(xiàn)有的jpbm4ws存在的問題,為今后的工作做準備
17、。第2章 背景知識介紹2.1 soa基礎(chǔ)2.1.1 soa的定義面向服務的體系結(jié)構(gòu)(soa)的概念是在1996年由gartner公司提出來的。當時gartner將soa定義為:“客戶端/服務器的軟件設(shè)計方法?!睆倪@以后,soa的定義便層出不窮,下面列舉了對soa比較權(quán)威的定義。service將soa定義為:“服務的集合,服務間會彼此通信,這種通信可能是簡單的數(shù)據(jù)傳送,也可能是兩個或更多的服務協(xié)調(diào)進行某些活動,服務間需要某些方法進行連接。而服務則是精確定義、封裝完善、獨立于其他服務所處環(huán)境和狀態(tài)的函數(shù)?!?w3c將soa定義為:“一套可以被調(diào)用的組件,用戶可以發(fā)布并發(fā)現(xiàn)其接口?!?9ibm將so
18、a定義為:“一種將信息模塊化為服務的架構(gòu)風格?!卑俣劝倏浦袑oa定義為:“一個組件模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約聯(lián)系起來。接口是采用中立的方式進行定義的,它應該獨立于實現(xiàn)服務的硬件平臺、操作系統(tǒng)和編程語言。這使得構(gòu)建在各種這樣的系統(tǒng)中的服務可以一種統(tǒng)一和通用的方式進行交互。”到目前為止,關(guān)于soa還沒有一個統(tǒng)一的、被廣泛認可的定義。但無論專家如何詮釋soa,它的核心思想是不變的,那就是服務,soa的重點是面向服務的3。當然,這個服務包括企業(yè)的內(nèi)部與外部的每一個業(yè)務細節(jié),并把這些服務從復雜的環(huán)境中獨立出來,使得各服務之間是可互操作的、獨立的、模
19、塊化的、位置明確的、松耦合的并且是可相互調(diào)用,不依賴于其它系統(tǒng)的。2.1.2 soa的關(guān)鍵特性soa作為一種新的架構(gòu)風格,它與傳統(tǒng)的架構(gòu)風格相比,有自己的特點,這些特點主要體現(xiàn)在以下三個方面2,3:(1) 模塊化服務,把業(yè)務功能分解并打包成模塊化服務,該服務是具有自包含和自描述特征的。服務可以根據(jù)需要進行混合和匹配來創(chuàng)建新的組合服務,也可以由其他模塊化服務組成;(2) 服務封裝,將服務的內(nèi)容和其具有自描述特征的接口進行分離。封裝公開了服務的功能,隱藏了服務內(nèi)部的實現(xiàn),保證實現(xiàn)可以在接口不變的情況下進行獨立演變;(3) 中立的接口定義:服務的接口定義是采用通用協(xié)議進行的。正是由于上述特點,使得s
20、oa在與其它軟件架構(gòu)風格相比,有著一下三點優(yōu)勢: (1) 耦合性低:soa將應用程序的不同功能單元,通過服務間定義的接口聯(lián)系起來,而接口是中立的,這樣大大降低了系統(tǒng)與系統(tǒng)之間、系統(tǒng)內(nèi)部的各個功能模塊之間的耦合性;(2) 互操作性強:soa 可以實現(xiàn)任何平臺之間的跨平臺調(diào)用,而與編程的語言、操作系統(tǒng)和計算機類型等等無關(guān),可以確保各系統(tǒng)之間的集成性和互操作性;(3) 重用性高:服務重用避免了重復開發(fā)的弊端,同時提高了實現(xiàn)中的一致性。由于使用目的不同,可以將服務分別多次進行組合。在應用中,服務重用比組件重用和類的重用要更容易實現(xiàn)。另外,在soa系統(tǒng)中要注意保持服務接口的穩(wěn)定。穩(wěn)定的服務接口可以讓服務
21、的提供者和服務的消費者獨立演變。2.1.3 soa的實現(xiàn)技術(shù)在典型的soa系統(tǒng)中,會涉及3個參與者。即服務注冊代理、服務請求者、服務提供者。這三者之間的關(guān)系可以用圖2-1來描述,下面是對參考模型中個參與者的解釋: 圖2-1 soa參考模型圖服務請求者:服務請求者是一個應用程序、一個軟件模塊或soa系統(tǒng)中的一個服務。它發(fā)起對服務注冊代理的服務查詢,通過傳輸綁定協(xié)議調(diào)用遠程服務。服務請求者根據(jù)接口契約來調(diào)用服務。服務提供者:服務提供者是實現(xiàn)服務接口的一個可通過網(wǎng)絡(luò)尋址來查找的軟件實體,它接受和執(zhí)行來自服務請求者的請求。它將自己的服務和接口契約發(fā)布到服務注冊代理,以便服務使用者可以發(fā)現(xiàn)和訪問該服務。
22、服務注冊代理:服務注冊代理是服務發(fā)現(xiàn)的支持者。它包含一個可用服務的存儲庫,并允許感興趣的服務請求者查找服務提供者。soa架構(gòu)中每個參與者都扮演著服務提供者、使用者和注冊中心這三種角色中的某一種或多種。并且它們之間會通過協(xié)議進行交互,他們之間的交互包括:發(fā)布:為了使服務可訪問,服務提供者會向服務注冊代理發(fā)布服務,這樣服務使用者就可以通過服務注冊代理來發(fā)現(xiàn)和調(diào)用它。發(fā)現(xiàn):服務請求者定位服務,方法是服務請求者向服務注冊代理發(fā)送請求,查找需要調(diào)用的服務,服務注冊代理找到滿足其標準的服務,并將結(jié)果返回給服務請求者。綁定和調(diào)用:在檢索完服務描述之后,服務請求者會根據(jù)服務描述中的信息向服務提供者發(fā)送請求,服
23、務提供者會執(zhí)行相應的服務,并將執(zhí)行結(jié)果返回給服務請求者。2.2 工作流基礎(chǔ)2.2.1 工作流概述工作流是對現(xiàn)實生活中業(yè)務流程的自動化管理,它將將業(yè)務流程中的工作按照一定的邏輯順序組織在一起,并對組織在一起的工作實施管理,它能夠在多個參與者之間,利用計算機,按某種預定的規(guī)則自動傳遞文檔、信息或者任務。工作流技術(shù)的研究開始于上個世紀70年代中期對辦公自動化領(lǐng)域的研究,但工作流思想的出現(xiàn)還應該更早,1968年fritz nordsieck就已經(jīng)清楚地表達了利用信息技術(shù)實現(xiàn)工作流程自動化的想法。70年代與工作流有關(guān)的研究工作包括:賓夕法尼亞大學沃頓學院的michael d. zisman開發(fā)的原型系統(tǒng)
24、scoop,施樂帕洛阿爾托研究中心的clarence a. ellis和gary j. nutt等人開發(fā)的officetalk系列試驗系統(tǒng),還有anatoly holt和paul cashman開發(fā)的arpanet上的“監(jiān)控軟件故障報告”程序。scoop,officetalk和anatoly holt開發(fā)的系統(tǒng)都采用petri網(wǎng)的某種變體進行流程建模。其中scoop和officetalk系統(tǒng),不但標志著工作流技術(shù)的開始,而且也是最早的辦公自動化系統(tǒng)。含有工作流特征的商用系統(tǒng)的開發(fā)始于1983年至1985年間,早期的商用系統(tǒng)主要來自于圖像處理領(lǐng)域和電子郵件領(lǐng)域。圖像處理許多時候需要流轉(zhuǎn)和跟蹤圖像
25、,工作流恰好迎合這種需求;增強的電子郵件系統(tǒng)也采用了工作流的思想,把原來點對點的郵件流轉(zhuǎn)改進為依照某種流程來流轉(zhuǎn)。在這些早期的工作流系統(tǒng)中只有少數(shù)獲得了成功。進入90年代以后,相關(guān)的技術(shù)條件逐漸成熟,工作流系統(tǒng)的開發(fā)與研究進入了一個新的熱潮4。據(jù)調(diào)查,截至1995年共有200多種軟件聲稱支持工作流管理或者擁有工作流特征。工作流技術(shù)被應用于電訊業(yè)、軟件工程、制造業(yè)、金融業(yè)、銀行業(yè)、科學試驗、衛(wèi)生保健領(lǐng)域、航運業(yè)和辦公自動化領(lǐng)域。1993年8月,工作流技術(shù)標準化的工業(yè)組織-工作流管理聯(lián)盟(wfmc)成立。 1994年,工作流管理聯(lián)盟發(fā)布了用于工作流管理系統(tǒng)之間互操作的工作流參考模型,并相繼制定了一
26、系列工業(yè)標準。2.2.2工作流核心概念工作流管理聯(lián)盟的成立標志著工作流技術(shù)進入了相對成熟的階段5,6。為了實現(xiàn)不同工作流產(chǎn)品之間的互操作,工作流聯(lián)盟制定了工作流管理系統(tǒng)7,8,9的相關(guān)術(shù)語、體系結(jié)構(gòu)以及應用編程接口,其中核心概念和定義如下:工作流:一類能夠完全或者部分自動執(zhí)行的經(jīng)營過程,它根據(jù)一系列的過程規(guī)則,文檔、信息或任務能夠在不同的執(zhí)行者之間進行傳遞與執(zhí)行;業(yè)務流程:企業(yè)或者機構(gòu)為了總體業(yè)務目標,而進行的一系列相關(guān)活動,這些活動的執(zhí)行需要遵循一定的規(guī)則;流程定義:業(yè)務流程的形式化描述,用來支持系統(tǒng)建模和運行過程的自動化。流程可分解為一系列的子流程和任務,其定義包括描述流程起始、終止的關(guān)系
27、網(wǎng)絡(luò)以及一些關(guān)于個體行為的信息,具體而言,即構(gòu)成流程的各任務節(jié)點以及各任務間的關(guān)系、組織成員的角色、應用中的數(shù)據(jù)結(jié)構(gòu)等;任務:業(yè)務流程的一個執(zhí)行階段,由執(zhí)行者完成。執(zhí)行者可以是人、軟件系統(tǒng)或二者的集合,任務是過程執(zhí)行中可被工作流引擎調(diào)度的最小工作單元,任務的執(zhí)行要求有人或機器的參與;流程實例:實際運行中的一個流程,每個實例代表一個能獨立控制執(zhí)行、具有內(nèi)部狀態(tài)的線程;工作流引擎:根據(jù)流程定義工具流程定義文件來管理,流程實例的生成、運行與結(jié)束。一個任務執(zhí)行完成后,引擎根據(jù)流程定義文件將控制權(quán)及其所引用的過程實例數(shù)據(jù)自動地向后傳遞。任務的執(zhí)行如果需要人的參與,引擎應將該實例信息加入相應人的工作列表中
28、,并且在人選擇開始該活動實例的運行時,激活預定義的應用程序模塊,如果不需要人的參與,引擎應直接激活預定義的軟件模塊。在流程實例執(zhí)行過程中,引擎將隨時記錄運行信息。2.2.3 工作流參考模型工作流模型是對工作流的程序結(jié)構(gòu)的抽象表示。它確定了程序結(jié)構(gòu)中的接口,使得這些接口可以在不同產(chǎn)品和不同的結(jié)構(gòu)層次上協(xié)同工作10,11。圖2-2是wfmc給出的工作流系統(tǒng)的參考模型,從圖中可以看出,一個通用的工作流系統(tǒng)包含以下5個部分12,13:圖2-2 工作流參考模型圖(1) 流程定義工具:以計算機能處理的形式進行流程定義,現(xiàn)在的大多數(shù)流程定義工具采用了圖形方式。流程設(shè)計者通過繪圖方式來創(chuàng)建流程模型,最后輸出一
29、個流程定義文件;(2) 工作流執(zhí)行服務:由一個或多個工作流引擎組成,它主要解釋流程定義、創(chuàng)建流程實例、并執(zhí)行流程實例,在流程定義的執(zhí)行過程中,會與工作流客戶端和外部應用系統(tǒng)進行交互; (3) 客戶端應用:是用戶操作工作流管理系統(tǒng)分配來的任務的客戶端,由工作流任務表管理器和任務操作共同完成。工作流任務表管理器是一個軟件模塊,負責管理工作流的任務表,并完成與工作流參與者的交互操作。(4) 調(diào)用應用:在工作流任務執(zhí)行過程中,一些不需要人員參與的活動會直接調(diào)用一些外部應用程序。(5) 管理監(jiān)控工具:對工作流在整個組織內(nèi)的流程情況進行監(jiān)控,并提供一系列管理功能,實現(xiàn)安全控制、過程控制、授權(quán)等操作。典型的
30、功能范圍包括用戶管理、角色管理、監(jiān)控管理、資源管理、過程監(jiān)控管理。具體如:過程模型的實例化,啟動、掛起、恢復、終止過程實例;管理正在執(zhí)行的過程實例等;這5個部分之間的交互由下面5個接口來完成14:(1) 流程定義部署接口(接口一):將流程定義工具設(shè)計的流程定義文件部署到工作流引擎的通信接口;(2) 工作流客戶端應用程序接口(接口二):客戶端工作流應用程序與工作流引擎之間的通信接口;(3) 應用程序調(diào)用接口(接口三):工作流引擎直接調(diào)用應用程序或應用程序代理的api,是工作流系統(tǒng)同應用系統(tǒng)通信的主要接口;(4) wapi協(xié)作功能接口(接口四):工作流引擎與工作流引擎之間的通信接口,是構(gòu)成分布式工
31、作流管理系統(tǒng)的主要功能接口;(5) 管理和監(jiān)控接口(接口五):提供對工作流機狀態(tài)以及工作流運行實例的監(jiān)控和管理的接口。本文研究的工作流引擎與參考模型中的工作流引擎一致。2.3 jbpm基礎(chǔ)2.3.1 jbpm概述jbpm,全稱是java business process management(業(yè)務流程管理),它是jboss開發(fā)的開源的工作流引擎。jbpm覆蓋了業(yè)務流程管理、工作流、服務協(xié)作等領(lǐng)域,是一個靈活的、易擴展的可執(zhí)行流程語言框架15。jbpm框架主要有三部分組成:(1)、用于描述流程定義、處理業(yè)務邏輯的流程定義語言jpdl:jpdl是基于狀態(tài)圖的,它詳細定義了流程的起始狀態(tài)、結(jié)束狀態(tài)、
32、狀態(tài)之間的轉(zhuǎn)換,以xml的方式直觀地描述業(yè)務流程;(2)、對流程邏輯進行控制的流程虛擬機pvm:pvm將對jpdl定義的流程描述文件進行解析,并將解析的數(shù)據(jù)持久化到數(shù)據(jù)庫中,當請求創(chuàng)建流程實例時,pvm會從數(shù)據(jù)庫中取出流程定義,并根據(jù)流程定義創(chuàng)建對應的流程實例,然后執(zhí)行相應的流程實例;(3)、對jpdl的建模工具,目前jbpm提供了eclipse插件版的圖形化建模工具,開發(fā)人員可通過繪圖的方式構(gòu)建自己的流程定義。jbpm這三個部分之間是獨立的,開發(fā)人員可以根據(jù)自己的需要對其進行擴展。例如,可以開發(fā)符合自己需求的jpdl規(guī)范的流程建模工具。jbpm采用hibernate來進行數(shù)據(jù)庫管理,因此,凡
33、是 hibernate 支持的數(shù)據(jù)庫,jbpm也就支持。通過這種方式,jbpm將數(shù)據(jù)的管理職能分離出去,專注于商務邏輯的處理。另外,jbpm可以與spring進行無縫集成,可以將jbpm對數(shù)據(jù)庫的事物管理、對ioc容器的管理交由spring來完成,從這兒也可以看出,jbpm的靈活性和可擴展性。2.3.2 流程定義基礎(chǔ)知識流程定義包括流程建模,流程建模即采用圖形化的方式來定義流程,而流程建模是流程定義的核心,它會以一組對象來形式化描述流程。jbpm流程建模使用的是改良的uml活動圖,同時采用jpdl作為流程建模語言,jpdl的核心元素主要有以下幾個部分組成16:狀態(tài)結(jié)點(state):是一個典型
34、的等待狀態(tài)。同任務結(jié)點不同的是,狀態(tài)結(jié)點不會向任務列表添加任務實例。它的完成需要等待外部系統(tǒng)的干預,這兒的外部系統(tǒng)不包括人。開始節(jié)點(start):是狀態(tài)節(jié)點的一種,它是整個流程的入口,在流程中只能有一個。終止節(jié)點(end):是狀態(tài)節(jié)點的一種,在流程中可以有多個。任務結(jié)點(task):任務結(jié)點由人介入的一個或多個任務組成,當流程運行到一個任務結(jié)點時,會生成對應的“任務實例對象(task instances)”,并添加到參與人的任務列表中,之后結(jié)點會處于等待狀態(tài),直到參與人完成任務,并激活流程繼續(xù)向下執(zhí)行。轉(zhuǎn)換(transition):它決定流程中節(jié)點之間的轉(zhuǎn)移路徑,它連接了源節(jié)點和目標節(jié)點。分
35、支判斷節(jié)點(decesion):它會對流程中的條件進行判斷,會在不同的條件下轉(zhuǎn)移到不同的任務節(jié)點。第3章 面向服務的工作流引擎jbpm4ws3.1 jbpm4ws系統(tǒng)說明本節(jié)是對jbpm4ws進行需求分析前的說明,主要包括系統(tǒng)概述、流程實例狀態(tài)圖兩個方面。其中,系統(tǒng)概述介紹了jbpm4ws的整體概況,而流程實例狀態(tài)圖則是對jbpm4ws中流程實例的狀態(tài)進行描述。3.1.1 系統(tǒng)概述本文是對jbpm進行擴展,開發(fā)一個面向服務的工作流引擎jbpm4ws。jbpm4ws對流程定義的描述采用的是jpdl4ws語言,它是擴展了jpdl的面向服務的流程定義語言。jbpm4ws擴展了jbpm的兩大功能:對w
36、eb服務編排的支持和流程的服務化。web服務編排,是將一系列的現(xiàn)有的服務資源通過一定的方式(流程),按照一定的次序,組合起來,完成某個總體的業(yè)務目標。流程的服務化:是將流程的操作接口發(fā)布成web服務,即流程訪問服務,讓外界對流程數(shù)據(jù)的訪問只能通過流程訪問服務來完成,流程的服務化是數(shù)據(jù)服務化的一個特例,流程訪問服務是數(shù)據(jù)訪問服務的一種。另外,本文只是對jbpm的擴展,jbpm支持的功能在jbpm4ws中都將被支持。這些功能主要包括兩大部分:(1)對流程的管理,包括流程的部署卸載、流程的掛起、流程信息的查詢;(2)對流程實例的管理,包括流程實例的創(chuàng)建,流程實例的掛起、恢復、終止,執(zhí)行流程任務,委派
37、等。而本文對jbpm4ws需求的描述是按jbpm4ws完成的功能進行劃分的,其中管理流程的需求將在3.2.1中被描述,管理流程實例的需求將在3.2.2節(jié)中被描述,而對jbpm4ws的非功能性需求將在3.2.3節(jié)中被描述。3.1.2 流程實例狀態(tài)圖圖3-1描述了流程實例從創(chuàng)建到運行結(jié)束的整個生命周期,而觸發(fā)流程實例狀態(tài)轉(zhuǎn)換的事件即是jbpm4ws對外界系統(tǒng)提供的對流程實例管理的api,它由人或者外界系統(tǒng)調(diào)用。下面是對流程實例各個狀態(tài)的介紹:就緒:在流程實例的生命周期中,沒有任務執(zhí)行時的狀態(tài)。運行:在流程實例的生命周期中,有任務正在執(zhí)行時的狀態(tài)。掛起:在流程實例的生命周期中,不允許對流程實例進行操
38、作的暫時狀態(tài)。終止:流程實例完成一次完整的執(zhí)行過程或強制終止后所處的狀態(tài),此時流程實例的生命周期終止。圖3-1 流程實例狀態(tài)圖3.2 jbpm4ws的需求分析3.2.1 管理流程需求分析圖3-2是管理流程用例圖,它是對流程管理和流程信息查詢的需求描述,從圖中可以看出,jbpm4ws引擎管理流程包括一下六個功能服務:(1) 部署流程:將流程定義文件部署到j(luò)bpm4ws引擎中。(2) 卸載流程:將流程定義文件從jbpm4ws引擎中刪除。(3) 掛起流程:將整個流程掛起,掛起流程時會同時掛起對應的流程實例。(4) 恢復流程:將掛起的流程恢復,恢復時也會將對應的流程實例恢復。(5) 獲取流程實例列表:
39、查詢由某個流程定義創(chuàng)建的流程實例列表。(6) 查詢流程信息:查詢與流程定義相關(guān)的信息,例如,流程定義名,流程定義id,流程是否被掛起等。圖3-2 管理流程用例圖3.2.2 管理流程實例需求分析圖3-3是管理流程實例用例圖,它是對流程實例管理和流程實例信息查詢的需求描述,從圖中可以看出,jbpm4ws管理流程實例包括以下七個功能服務:(1) 創(chuàng)建流程實例:jbpm4ws引擎根據(jù)指定的流程定義,創(chuàng)建相應的流程實例。(2) 執(zhí)行流程任務:執(zhí)行流程實例中某個任務節(jié)點的任務,并觸發(fā)流程實例轉(zhuǎn)移到下一個任務節(jié)點。(3) 指派流程任務:為流程中的某個任務指定負責人。(4) 掛起流程實例:將流程實例的狀態(tài)由就
40、緒改為掛起;(5) 恢復流程實例:將流程實例狀態(tài)由掛起改為就緒;(6) 查詢流程信息:根據(jù)客戶端的請求查詢相應的流程實例信息;(7) 終止流程實例:終止處于就緒狀態(tài)的流程實例。圖3-3 管理流程實例用例圖3.2.3 非功能需求分析jbpm4ws除了包括前面兩節(jié)的功能需求外,還必須滿足下面的非功能需求:(1) jbpm4ws須支持流程的服務化,這就要求jbpm4ws的服務層接口的數(shù)據(jù)定義必須采用基本數(shù)據(jù)類型;(2) jbpm4ws內(nèi)核實現(xiàn)要是動態(tài)可配置的,這主要包括數(shù)據(jù)訪問方式的可配置,xml解析器的可配置,和內(nèi)核支持環(huán)境的可配置;(3) jbpm4ws的使用要支持jbpm原有的功能,不能限制j
41、bpm的功能,本文僅是對jbpm的擴展;(4) jbpm4ws支持對服務的編排,能夠調(diào)用外界系統(tǒng)提供的web服務。3.3 jbpm4ws程序開發(fā)流程基于上述需求開發(fā)的工作流引擎jbpm4ws進行應用系統(tǒng)開發(fā)時的開發(fā)流程包括四個方面:流程的設(shè)計,流程服務的選取,流程與流程服務的綁定,流程的部署實施。流程的設(shè)計可以通過圖形化的界面讓普通的不懂計算機的業(yè)務人員參與完成,也可以通過編制xml的方式由專業(yè)的系統(tǒng)開發(fā)人員完成。流程服務選取分為兩步完成:從服務資源庫中查詢現(xiàn)有的服務資源,如果現(xiàn)有的服務資源可以完成或可以通過一定的組合方式完成目標功能,則將查詢到的服務作為待選取的服務;當服務資源庫中查詢不到與
42、目標功能匹配的服務資源,則進行系統(tǒng)構(gòu)建服務,將構(gòu)建的系統(tǒng)服務作為待選取的服務,并將構(gòu)建的服務添加到服務資源庫中。服務資源庫的構(gòu)建是在不斷的系統(tǒng)開發(fā)中不斷積累而成。當服務資源積累到一定程度時,系統(tǒng)的構(gòu)建將變得異常容易,只是一個資源的查找過程。這也是jbpm4ws引擎與jbpm引擎相比最大的優(yōu)勢。流程與服務的綁定是指,在流程設(shè)計好之后,流程的某個任務節(jié)點要與相應的流程服務進行綁定,這樣當進行流程調(diào)度時,jbpm4ws引擎就可以通過綁定信息同時進行流程服務的調(diào)度。流程的部署實施,當所有工作完成之后,就可以通過調(diào)用jbpm4ws的部署功能將流程部署到數(shù)據(jù)庫之中。外界的系統(tǒng)就可以通過jbpm4ws引擎提
43、供的流程操作接口對流程進行管理、調(diào)度。第4章 jbpm4ws的設(shè)計與實現(xiàn)4.1 jbpm4ws的設(shè)計原理圖4-1是jbpm4ws的設(shè)計原理圖,從圖中可以看出,在外界向jbpm4ws發(fā)送執(zhí)行流程任務請求后,jbpm4ws引擎會接收發(fā)送過來的請求,然后解析對應的流程定義文件。解析完成后,jbpm4ws會查詢與任務綁定的服務,然后調(diào)用對應的服務。與此同時,jbpm4ws會調(diào)用jbpm提供的功能觸發(fā)流程實例繼續(xù)向下運行。圖中核心部分的解釋如下:圖4-1 jbpm4ws設(shè)計原理圖由橢圓表示的service是由流程引擎的使用者開發(fā)的功能服務,功能服務主要包括規(guī)則校驗服務和任務處理服務兩部分。由矩形框表示的
44、流程服務是由流程引擎的使用者開發(fā)的功能服務,它會調(diào)用jbpm4ws提供的流程訪問服務。由圓角矩形表示的jbpm引擎會對流程進行調(diào)度,觸發(fā)流程的執(zhí)行。由矩形表示的任務-服務綁定描述的是流程中任務節(jié)點與流程服務的綁定信息,這樣在對任務進行調(diào)度時可以查詢相應的功能服務,然后進行處理。由矩形表示的解析jpdl4ws會對jpdl4ws進行解析,將jpdl4ws分成兩個部分:用jpdl定義的流程定義文件;和對任務節(jié)點和服務進行綁定的配置文件。4.2 jpdl4ws的設(shè)計要使jpdl4ws描述的流程支持面向服務的特性,需要在jpdl的任務節(jié)點中添加對服務的描述。因此,在jpdl原有的task元素的基礎(chǔ)上,添
45、加task-service子元素,圖4-2是jpdl4ws中任務節(jié)點的schema描述。從圖中可以看出,每一個任務節(jié)點(task)對應一個任務處理服務(task-service)。圖4-2 jpdl4ws的task描述圖task-service的詳細定義如圖4-3所示。每一個任務處理服務(task-service)包含0個到多個規(guī)則校驗服務(task-check)。任務處理服務和規(guī)則校驗服務中都含有一個location屬性,它描述的是服務所在的地址,類型是string。圖4-3 jpdl4ws的task-service描述圖jpdl4ws中描述的規(guī)則校驗服務都是對任務處理服務的前置規(guī)則校驗,而
46、對任務處理服務的后置規(guī)則校驗均可轉(zhuǎn)化為對下一個任務的前置規(guī)則校驗。4.3 jbpm4ws的概要設(shè)計4.3.1 系統(tǒng)整體架構(gòu)根據(jù)4.1節(jié)的的系統(tǒng)設(shè)計原理圖,可以設(shè)計出對應的系統(tǒng)架構(gòu)圖如下:圖4-4 jbpm4ws的整體架構(gòu)圖從圖4-4可以看出,jbpm4ws從上至下可以分為三層,service層、jbpm4ws內(nèi)核和運行支持環(huán)境。各層的功能描述如下:service:jbpm4ws對外提供的流程訪問服務,在本文中,這些服務均以web服務的方式提供。jbpm4ws內(nèi)核:它是jbpm4ws的核心,包括service層的實現(xiàn),對數(shù)據(jù)庫的訪問、流程調(diào)度、任務調(diào)度、jpdl4ws解析五個功能模塊,其中數(shù)據(jù)訪
47、問、流程調(diào)度、任務處理、xml解析都是為service的實現(xiàn)提供服務,它們彼此之間無依賴關(guān)系。運行支持環(huán)境:它是jbpm4ws的底層支持,是jbpm4ws的底層設(shè)施,其中hibernate為數(shù)據(jù)庫訪問提供支持,jbpm為流程調(diào)度提供支持,cxf為服務調(diào)度提供支持,jaxb為jpdl4ws解析提供支持。4.3.2 系統(tǒng)核心包由上一節(jié)的系統(tǒng)架構(gòu)圖可以得到,圖4-5所示的包圖。下面分別從每一個包的名稱、功能兩個方面進行描述。圖4-5 jbpm4ws的核心包圖l com.jbpm4ws.service:jbpm4ws的對外提供的服務,在com.jbpm4ws.service中包含 manageproc
48、esscomponentservice和manageprocessinstanceservice兩個核心接口,其中manageprocesscomponentservice提供對流程的管理服務,而manageprocessinstanceservice提供對流程實例的管理服務。l com.jbpm4ws.core:jbpm4ws的內(nèi)核實現(xiàn),它是整個jbpm4ws的核心。它實現(xiàn)了com.jbpm4ws.service,圖4-6是com.jbpm4ws.core的內(nèi)部包圖,下面是對各個包的解釋。 cesscomponent:jbpm4ws對流程的管理包,該包
49、實現(xiàn)了service層manageprocesscomponentservice接口的所有方法。 cessinstance:jbpm4ws對流程實例管理的核心包,該包實現(xiàn)了service層manageprocessinstanceservice接口的所有方法。 cesscomponent.deploy:jbpm4ws對流程部署的處理包,該包主要完成對jpdl4ws描述的任務信息的持久化。圖4-6 com.jbpm4ws.core的內(nèi)部包圖 cesscomponent.unde
50、ploy:jbpm4ws對流程卸載的處理包,該包主要完成對jpdl4ws中描述的任務信息的刪除。 pletetask:jdpm4ws執(zhí)行任務的處理,該包主要通過調(diào)用web服務來進行規(guī)則校驗和任務處理。 com.jbpm4ws.core.stream:jbpm4ws對數(shù)據(jù)流的處理,主要完成數(shù)據(jù)流之間的轉(zhuǎn)換。 com.jbpm4ws.core.persistence:jbpm4ws對jpdl4ws持久化的核心包,該包主要包括dao和model兩個子包,其中model是jpdl4ws的pojo類,dao是數(shù)據(jù)庫持久化時的數(shù)據(jù)訪問類。 com.jbpm4ws.core.persistence.invo
51、keservice:調(diào)用web服務的核心類,該類會調(diào)用com.r2e.runtime.workflow.cxf包中的cxf代理,來完成web服務的調(diào)用。l com.jbpm4ws.validate:jbpm4ws規(guī)則校驗服務接口包,它是jbpm4ws與規(guī)則校驗服務進行通訊的接口包,開發(fā)人員在使用jbpm4ws引擎來定制規(guī)則校驗服務時需要實現(xiàn)該接口包中定義的接口,該包的核心接口是ivalidateprocess。l com.jbpm4ws.work:jbpm4ws任務處理服務接口包,它是jbm4ws與任務處理服務進行通訊的接口包,開發(fā)人員在使用jbpm4ws引擎來定制任務處理服務時需要實現(xiàn)該接口
52、包中定義的接口,該包的核心接口是iworkprocess。l com.jbpm4ws.jpdl4ws:jbpm4ws對jpdl4ws的解析,在該包中會實現(xiàn)對jpdl4ws的解析功能,其中對xml的處理使用的是jaxb;來完成的,圖4-7是com.jbpm4ws.jpdl4ws的內(nèi)部包圖。 圖4-7 com.jbpm4ws.jpdl4ws的內(nèi)部包圖下面是對各個包的解釋: com.jbpm4ws.jpdl4ws.parse是對xml進行解析的核心包,該包中有parsexml2java和parsejava2xml分別完成從xml到j(luò)ava和從java到xml的轉(zhuǎn)換。 com.jbpm4ws.jpdl
53、4ws.jaxbmodel是對jpdl4ws的schema中的元素進行建模的java對象。 l com.jbpm4ws.jbpm:jbpm4ws對jbpm的代理,在該包中將構(gòu)建一個對jbpm的代理,所有對jbpm的訪問都將通過該包提供的接口類來進行,該包包含兩個類processenginefactorybean和jbpmproxy,其中processenginefactorybean是生成jbpm的processengine的核心類,該類會讀取jbpm的配置文件,并生成相應的processengine,而jbpmproxy是訪問jbpm的接口,所有對jbpm的調(diào)用都會通過jbpmproxy來完
54、成。l com.jbpm4ws.util:jbpm4ws使用的工具類,該包是jbpm4ws使用到的所有的工具類,這些工具類主要包括,對文件的操作、對文件的目錄的操作,分別對應dirprocess,fileprocess兩個類。l com.jbpm4ws.exception:jbpm4ws的異常定義包,主要定義了一個jbpm4wsexception的異常類,該類繼承至runtimeexception,jbpm4ws中所有對異常的處理都會由該類來完成。4.4 jbpm4ws的實現(xiàn)4.4.1 功能服務實現(xiàn)本節(jié)將對需求中提到的主要的功能服務進行實現(xiàn),實現(xiàn)的描述主要通過時序圖來完成。這些功能服務主要包括
55、,流程的部署、卸載,流程任務的執(zhí)行,而對于其它的功能服務由于是由jbpm完成,jbpm4ws只是調(diào)用jbpm的一個中間代理層,在此就不在做介紹。(1) 部署流程圖4-8是jbpm4ws部署流程的時序圖,從圖可以看出,jbpm4ws引擎客戶端向jbpm4ws引擎發(fā)送部署流程請求后,manageprocesscomponent類會接收發(fā)送的請求,并調(diào)用parsexml2java類的parse方法解析jpdl4ws定義的流程文件。解析完成后,會得到用jpdl描述的流程信息和任務與服務的綁定信息。然后manageprocesscomponent類調(diào)用jbpm的代理類jbpmcontext的deploy
56、方法將jpdl描述的流程信息部署到j(luò)bpm引擎中,并返回流程的部署id。最后manageprocesscomponent類調(diào)用processcomponentdeployimp類的deploy方法,processcomponentdeployimp類會調(diào)用taskservicedaoimp類的save方法,將任務與服務的綁定信息部署到數(shù)據(jù)庫中。圖4-8 jpdl4ws部署流程時序圖(2) 卸載流程圖4-9是jbpm4ws卸載流程的時序圖,從圖可以看出,jbpm4ws引擎客戶端向jbpm4ws引擎發(fā)送卸載流程請求后,manageprocesscomponent類會接收發(fā)送的請求,并調(diào)用jbpm的代理類jbpmcontext的deletedeployment方法將jpdl描述的流程信息從jbpm引擎中卸載。然后manageprocesscomponent類調(diào)用processcomponentdeployimp類的undeploy方法,processcomponentdeployimp類會調(diào)用taskservicedaoimp類的delete方法,將任務與服務的綁定信息從數(shù)據(jù)庫中卸載。圖4-9 卸載流程時序圖(3) 執(zhí)行流程服務圖4-10是jbpm4ws執(zhí)行流程服務的時序圖,從圖可以看出,jbpm4ws引擎客戶端向jbpm4ws引擎發(fā)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《威海節(jié)日習俗》課件
- 《室內(nèi)設(shè)計課件》課件
- 單位管理制度集合大合集人力資源管理篇
- 單位管理制度合并選集【員工管理篇】十篇
- 單位管理制度分享匯編員工管理篇
- 單位管理制度分享大全人員管理篇十篇
- 《審計與管理》課件
- 《客房優(yōu)化方案》課件
- 《診斷思路》課件
- (高頻選擇題50題)第2單元 社會主義制度的建立與社會主義建設(shè)的探索(解析版)
- cad自定義線型、形定義線型、cad斜坡線學習
- 任上線立塔架線施工專項方案
- 139.華師《管理溝通》期末考試復習資料精簡版
- 超星爾雅學習通《通航空與航天(復旦大學上海大學)》章節(jié)測試附答案
- 膽囊結(jié)石合并急性膽囊炎臨床路徑表單
- 電力建設(shè)安全工作規(guī)程解析(線路部分)課件
- 小學英語不規(guī)則動詞表
- VIC模型PPT課件
- AQL2.5抽檢標準
- 宣傳廣告彩頁制作合同
- 征信知識測試題及答案
評論
0/150
提交評論