《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于統(tǒng)一建模平臺(tái)的BPMN模型業(yè)務(wù)流程驗(yàn)證
基于統(tǒng)一建模平臺(tái)的BPMN模型業(yè)務(wù)流程驗(yàn)證
2016年電子技術(shù)應(yīng)用第6期
王克麗1,武淑紅1,王耀力2
1.太原理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,山西 太原030024;2.太原理工大學(xué) 信息工程學(xué)院,山西 太原030024
摘要: 為了解決業(yè)務(wù)流程設(shè)計(jì)、形式化分析、驗(yàn)證的平臺(tái)不統(tǒng)一以及可移植性差等問題,提出了一種在統(tǒng)一建模平臺(tái)上處理BPMN模型輸出的業(yè)務(wù)流程形式化驗(yàn)證方案。首先構(gòu)建基于Java語(yǔ)言的形式化建模平臺(tái),將BPMN模型輸出作為該平臺(tái)的輸入。隨后輸出基于BPMN2.0業(yè)務(wù)流程形式化驗(yàn)證的Java程序代碼,該代碼可在構(gòu)建的建模平臺(tái)實(shí)現(xiàn)自動(dòng)檢驗(yàn)業(yè)務(wù)流程模型中可能存在的死鎖、活鎖。最后給出復(fù)雜信息系統(tǒng)相應(yīng)實(shí)例驗(yàn)證了方案的有效性。
中圖分類號(hào): TP301.2
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.06.032
中文引用格式: 王克麗,武淑紅,王耀力. 基于統(tǒng)一建模平臺(tái)的BPMN模型業(yè)務(wù)流程驗(yàn)證[J].電子技術(shù)應(yīng)用,2016,42(6):117-120.
英文引用格式: Wang Keli,Wu Shuhong,Wang Yaoli. Verification of BPMN processes based on the unified modeling platform[J].Application of Electronic Technique,2016,42(6):117-120.
Verification of BPMN processes based on the unified modeling platform
Wang Keli1,Wu Shuhong1,Wang Yaoli2
1.College of Computer Science and Technology,Taiyuan University of Technology,Taiyuan 030024,China; 2.College of Information Engineering,Taiyuan University of Technology,Taiyuan 030024,China
Abstract: To tackle the problems of non-unified platform and poor portability in business process design, formal analysis and verification phase, this paper introduces a formal verification protocol which is based on our unified modeling platform to process the output processes of Business Process Model Notation(BPMN2.0) model. First of all, the formal modeling platform is built based on Java language and its input is directly from the output of BPMN model. Then, a Java code based verification approach for Business Processes Modeling method is proposed by using the BPMN 2.0 standard. In this way after the modeling phase, the created Java code can be automatically run in order to find out possible deadlocks and livelocks. Finally, complex system corresponding instances are introduced to demonstrate the effectiveness of our method.
Key words : BPMN2.0;process verification;complex system;deadlock;livelock

0 引言

    人工設(shè)計(jì)或自動(dòng)構(gòu)建的系統(tǒng)組合可能存在死鎖、活鎖等主要問題,特別是對(duì)于復(fù)雜信息系統(tǒng)。因此,系統(tǒng)交付前軟件開發(fā)人員必須對(duì)信息系統(tǒng)進(jìn)行嚴(yán)格的驗(yàn)證,以及時(shí)發(fā)現(xiàn)系統(tǒng)組合中存在的問題。

    目前使用的BPMN(Business Process Model Notation)流程驗(yàn)證方法主要集中在:(1)BPMN—Petri網(wǎng)映射及驗(yàn)證;(2)BPMN—Business Process Execution Language(BPEL)映射及驗(yàn)證;(3)BPMN—進(jìn)程代數(shù)映射及驗(yàn)證等。

    文獻(xiàn)[1,2]中,DIJKMAN R M等人提出的方法是將BPMN映射到Petri網(wǎng)。Petri網(wǎng)能揭示系統(tǒng)的許多并發(fā)特性,但是它只有模型而沒有演算[3],對(duì)于一個(gè)復(fù)雜的信息系統(tǒng),若將BPMN模型映射為其對(duì)應(yīng)的Petri網(wǎng)模型也會(huì)相對(duì)比較復(fù)雜,因此,Petri網(wǎng)對(duì)于復(fù)雜信息系統(tǒng)的描述有一定的局限性[4]。文獻(xiàn)[5]展現(xiàn)了BPMN模型如何生成一個(gè)BPEL流程,但是采用的是人工方式,沒有提供一個(gè)通用的自動(dòng)解決方案。在文獻(xiàn)[6,7]中,利用業(yè)務(wù)流程建模符號(hào)(BPMN)建立的業(yè)務(wù)流程模型可以直接映射到業(yè)務(wù)流程執(zhí)行語(yǔ)言(BPEL4WS),在業(yè)務(wù)流程執(zhí)行引擎中直接運(yùn)行,但并不是每一個(gè)BPMN元素和BPEL元素都可以形成一一對(duì)應(yīng),所以不可避免地存在映射對(duì)應(yīng)問題,降低了效率。還有一些文獻(xiàn)提出了將BPMN映射到進(jìn)程代數(shù)的方法(如π演算)[8],這種方法需要基于MWB(Mobility WorkBench)驗(yàn)證工具來(lái)驗(yàn)證存在的死鎖、活鎖和平臺(tái)不統(tǒng)一[9]。

    文中驗(yàn)證方法直接實(shí)現(xiàn)為eclipse的一個(gè)插件,可在統(tǒng)一建模平臺(tái)上直接處理BPMN模型的輸出,從BPMN2.0開始直接生成java程序,有利于系統(tǒng)移植,減少驗(yàn)證的復(fù)雜度;同時(shí)在解決復(fù)雜信息系統(tǒng)的信息爆炸方面,本文實(shí)現(xiàn)了優(yōu)化展開算法。

1 研究?jī)?nèi)容

1.1 業(yè)務(wù)流程建模

    BPMN2.0體系5種核心元素介紹如下:

    (1)流對(duì)象(Connecting Objects)

    活動(dòng)(Activitics):企業(yè)所作的工作,活動(dòng)的類型包括:任務(wù)(Task)、進(jìn)程(Process)和子進(jìn)程(Sub-Process)。

    事件(Events):業(yè)務(wù)流程的運(yùn)行過程中發(fā)生的事情。包括啟動(dòng)事件、中間事件和結(jié)束事件。

    網(wǎng)關(guān)(Gateways):用于控制流程的分支和聚合。使用最多的是互斥網(wǎng)關(guān)和并行網(wǎng)關(guān)。

    (2)連接對(duì)象(Connecting Objects)

    順序流(Sequence Flow):用來(lái)表示活動(dòng)執(zhí)行的順序。

    關(guān)聯(lián)(Association):把流對(duì)象聯(lián)系起來(lái)。關(guān)聯(lián)用于展示活動(dòng)的輸入和輸出。

    數(shù)據(jù)關(guān)聯(lián)(Data Association):用于將數(shù)據(jù)信息與流對(duì)象聯(lián)系起來(lái)。

    消息流(Message Flow):表示兩個(gè)實(shí)體間消息的傳遞。

    (3)數(shù)據(jù)(Date)

    數(shù)據(jù)對(duì)象(Data Objects):表示活動(dòng)所需要或產(chǎn)生的數(shù)據(jù)。它們通過關(guān)聯(lián)與活動(dòng)連接起來(lái)。

    數(shù)據(jù)輸入對(duì)象(Data Input Objects):整個(gè)流程中可以被活動(dòng)讀取的外部數(shù)據(jù)。

    數(shù)據(jù)輸出對(duì)象(Data Output Objects):整個(gè)流程的輸出數(shù)據(jù)量。

    數(shù)據(jù)存儲(chǔ)(Data Store):整個(gè)流程存儲(chǔ)數(shù)據(jù)的地方,如數(shù)據(jù)庫(kù)或文件。

    (4)泳道(Swimlanes)

    池(Pools):描述流程中的一個(gè)參與者??煽醋鍪菍⒁幌盗谢顒?dòng)區(qū)別于其他池的一個(gè)圖形容器,一般用于B2B建模。

    道(Lanes):是池的細(xì)分,代表同一實(shí)體的不同部分。

    (5)描述對(duì)象(Artifacts)

    組(Group):用于分析文檔,不會(huì)影響流程。

    注釋(Annotation):為了便于理解,提供一些附加性的文本信息。

1.2 流程到Java代碼的轉(zhuǎn)換jsj1-t1.gif

    本文在eclipse平臺(tái)集成環(huán)境中設(shè)計(jì)并驗(yàn)證BP(Business Process)模型,eclipse插件的體系結(jié)構(gòu)如圖1所示。

    對(duì)于BPMN2.0模型,使用Xpand引擎給出了Java的形式化語(yǔ)義,Xpand引擎為每個(gè)BPMN2.0模型的元素創(chuàng)建了合適的Java代碼。這個(gè)引擎專門用于代碼生成,它是基于EMF框架和轉(zhuǎn)換模板定義的。這就意味著能夠從BPMN2.0流程開始直接生成Java程序代碼。為了表示BPMN2.0元素的每個(gè)類型(例如開始、網(wǎng)關(guān)、事件等),介紹了適于支持驗(yàn)證的每種類型的具體方法,它們都遵循BPMN2.0的語(yǔ)義。定義如下方法:

    addPObject():一旦Activity被創(chuàng)建就被加到特定的進(jìn)程中;

    setNext():設(shè)置它的下一個(gè)元素,定義BP的流向;

    setMsgToSend():用來(lái)表示發(fā)送消息的任務(wù);

    sendMsg():是為了指定用setMsgToSend方法定義的Activity發(fā)送一個(gè)消息。

2 BPMN流程驗(yàn)證

2.1 優(yōu)化算法及驗(yàn)證

    展開算法是一種較好的死鎖檢測(cè)的方法。它是一個(gè)偏序規(guī)約的技術(shù),被廣泛應(yīng)用到Petri網(wǎng)和進(jìn)程代數(shù)中,以減少驗(yàn)證活動(dòng)中發(fā)生的狀態(tài)爆炸問題。事實(shí)上,模型的展開算法是無(wú)限的,但如果在算法中設(shè)置一個(gè)特殊的點(diǎn),稱之為“結(jié)束前綴”或“截止點(diǎn)”,一旦構(gòu)造了結(jié)束前綴, 找到識(shí)別活鎖狀態(tài)的截止點(diǎn),就可以減少對(duì)路徑的搜索,避免狀態(tài)爆炸問題,這樣就實(shí)現(xiàn)了展開算法的優(yōu)化。

2.2 BPMN驗(yàn)證

2.2.1 活鎖驗(yàn)證jsj1-t2.gif

    對(duì)于活鎖的驗(yàn)證,利用配置樹找到識(shí)別活鎖狀態(tài)的截止點(diǎn)。當(dāng)且僅當(dāng)在配置樹的一個(gè)祖先節(jié)點(diǎn)的勘探階段已經(jīng)觀察到當(dāng)前節(jié)點(diǎn)時(shí),路徑是活鎖,并標(biāo)記當(dāng)前這個(gè)點(diǎn)為截止點(diǎn)。截止點(diǎn)的標(biāo)識(shí)可以有效防止復(fù)雜信息系統(tǒng)的狀態(tài)爆炸問題。活鎖的BPMN流程圖如圖2所示。

    圖2 BPMN流程不用轉(zhuǎn)換成狀態(tài)較多的Petri網(wǎng)而生成Main.java。

    public Main(){


        Process Process_1= new Process("Process_1");

        Activity ExclusiveGateway_1 = new Activity

        (Activity.GATEWAY_EXCLUSIVE); 

        Activity Task_2 = new Activity(Activity.TASK);

        Activity Task_1 = new Activity(Activity.TASK);

        Activity StartEvent_1 = new Activity(Activity.EVENT_START);

        Activity EndEvent_1 = new Activity(Activity.EVENT_END);


        Process_1.addActivity(ExclusiveGateway_1);

        Process_1.addActivity(Task_2);

        Process_1.addActivity(Task_1);

        Process_1.addActivity(StartEvent_1);

        Process_1.addActivity(EndEvent_1);


        ExclusiveGateway_1.setData("EG 1");

        ExclusiveGateway_1.setNext(EndEvent_1);

        ExclusiveGateway_1.setNext(Task_1);

        Task_2.setData("T2");

        Task_2.setNext(ExclusiveGateway_1);

        Task_1.setData("T1");

        Task_1.setNext(Task_2);

        StartEvent_1.setData("S1");

        StartEvent_1.setNext(ExclusiveGateway_1);

            EndEvent_1.setData("E1");

    }

    參照上面的代碼段,涉及到圖2 Process1中的元素,把Process1中所創(chuàng)建的S1、EG1、T1、T2、E1分別作為不同類型的Activity:START、GATEWAY_EXCLUSIVE、TASK、TASK、END。對(duì)每個(gè)元素都用setNext方法設(shè)置它的下一個(gè)元素;對(duì)于發(fā)送消息的任務(wù),用setMsgToSend方法;發(fā)送消息用sendMsg方法。那么,對(duì)象就添加到程序中了。圖2示例驗(yàn)證結(jié)果如圖3所示。

jsj1-t3.gif

2.2.2 死鎖驗(yàn)證jsj1-t4.gif

    對(duì)于死鎖的驗(yàn)證,遵循BPMN2.0的終止范式。在BPMN2.0中,進(jìn)程執(zhí)行期間,結(jié)束或終止事件發(fā)生時(shí),BP才會(huì)終止。從配置中一一刪除結(jié)束事件,路徑發(fā)生死鎖當(dāng)且僅當(dāng)當(dāng)前配置中有阻塞元素(即任務(wù)或事件等待消息并且一個(gè)并行網(wǎng)關(guān)等待的輸入流將永遠(yuǎn)不會(huì)到來(lái)),就說明路徑有死鎖發(fā)生,這種方法也符合展開算法。死鎖的BPMN流程圖如圖4所示。

    圖4 BPMN流程不用轉(zhuǎn)換成狀態(tài)較多的Petri網(wǎng)而生成Main.java(略)。圖4示例驗(yàn)證結(jié)果如圖5所示。

jsj1-t5.gif

2.3 Petri網(wǎng)驗(yàn)證BPMN流程

    DIJKMAN R M等人提出的用Petri網(wǎng)驗(yàn)證BPMN流程是將BPMN模型轉(zhuǎn)換為等價(jià)的Petri網(wǎng)模型,BPMN模型在ILOG BPMN Modeler中創(chuàng)建并使用ProM驗(yàn)證。

    死鎖、活鎖定義:Petri網(wǎng)模型的可達(dá)圖G=<V:E>是有向圖,頂點(diǎn)集V是Petri 網(wǎng)的狀態(tài)集合{M(P0,P1,…,Pn)};

     jsj1-t5-x1.gif有向弧E記錄可執(zhí)行變遷及其引起的狀態(tài)遷移。當(dāng)遍歷完P(guān)etri網(wǎng)的所有變遷后,庫(kù)所能夠到達(dá)結(jié)束庫(kù)所并且其他的庫(kù)所都是空的時(shí),這個(gè)流程是可達(dá)的。當(dāng)可達(dá)樹中,葉子節(jié)點(diǎn)的狀態(tài)標(biāo)識(shí)存在Pi=1但不是結(jié)束庫(kù)所的庫(kù)所時(shí),流程存在死鎖。當(dāng)可達(dá)圖G的任一條路徑Li=M0→M1…Mn(Mi表示庫(kù)所變遷后的狀態(tài))表示從初始狀態(tài)到結(jié)束狀態(tài),那么若任一路徑中存在Li=Mi→M1→M0→M1…Mj(Mi=Mj),則流程存在活鎖[10]。

2.3.1 Petri網(wǎng)的活鎖驗(yàn)證

    如圖6所示是圖2的BPMN模型轉(zhuǎn)化為等價(jià)的Petri網(wǎng)模型, P1和t1是開始庫(kù)所和變遷,P6和t6是結(jié)束庫(kù)所和變遷。圖6的Petri網(wǎng)手工模擬分析結(jié)果如圖7所示。

jsj1-t6.gif

2.3.2 Petri網(wǎng)的死鎖驗(yàn)證jsj1-t7.gif

    如圖8所示是圖4的BPMN模型轉(zhuǎn)化為等價(jià)的Petri網(wǎng)模型,用圓圈表示Petri網(wǎng)的庫(kù)所,用長(zhǎng)方形表示Petri網(wǎng)的變遷,P0和t0是開始庫(kù)所和變遷,P13和t4是結(jié)束庫(kù)所和變遷。圖8 的Petri網(wǎng)手工模擬分析結(jié)果如圖9所示。

jsj1-t8.gif

jsj1-t9.gif

3 驗(yàn)證結(jié)果分析

    對(duì)比BPMN模型和Petri網(wǎng)模型,如表1。

jsj1-b1.gif

    通過以上對(duì)兩種驗(yàn)證死鎖和活鎖方法的比較以及表1,可得出本文的BPMN直接驗(yàn)證法優(yōu)點(diǎn):

    (1)BPMN模型比等價(jià)的Petri網(wǎng)模型的圖元總數(shù)少。BPMN模型轉(zhuǎn)換成等價(jià)的Petri網(wǎng)模型時(shí),隨著BPMN模型的復(fù)雜度提高,生成的Petri網(wǎng)模型復(fù)雜性也會(huì)增加。

    (2)BPMN模型驗(yàn)證可在統(tǒng)一建模平臺(tái)上直接處理BPMN模型輸出,從BPMN2.0開始直接生成Java程序,并自動(dòng)檢驗(yàn)業(yè)務(wù)流程模型中可能存在的死鎖、活鎖。BPMN模型轉(zhuǎn)換成等價(jià)的Petri網(wǎng)模型時(shí),不可避免地存在映射對(duì)應(yīng)問題,降低了效率。

    (3)對(duì)于一個(gè)復(fù)雜的信息組合系統(tǒng),用BPMN模型直接驗(yàn)證,可采用“截止點(diǎn)”防止?fàn)顟B(tài)爆炸問題。但若將BPMN模轉(zhuǎn)換成等價(jià)的Petri網(wǎng)模型,狀態(tài)增多,同時(shí)Petri網(wǎng)所引起的狀態(tài)爆炸問題和資源消耗問題很難避免,對(duì)于復(fù)雜信息系統(tǒng)的描述有一定的局限性。

4 結(jié)束語(yǔ)

    本文研究了對(duì)BPMN流程的直接驗(yàn)證方法,并與Petri網(wǎng)驗(yàn)證作比較,通過對(duì)兩個(gè)典型的死鎖、活鎖例子的整個(gè)過程的建模、轉(zhuǎn)換和驗(yàn)證,結(jié)果表明對(duì)于復(fù)雜系統(tǒng),所提方法可以驗(yàn)證死鎖、活鎖并有效地避免狀態(tài)爆炸問題和映射問題,且平臺(tái)統(tǒng)一,可移植性好。今后的工作準(zhǔn)備引入π-演算,在統(tǒng)一平臺(tái)上實(shí)現(xiàn)π-演算的形式化驗(yàn)證。

參考文獻(xiàn)

[1] DIJKMAN R M,DUMAS M,OUYANG C.Semantics and anaIysis of business proces models in BPMN[J].Information and Software Technology,2008,50(12):1281-1294.

[2] DIJKMAN R M,DUMAS M,OUYANG C.Formal semantics and anaIysis of BPMN process models using Petri Nets[J].Information and Software Technology,2008,50(12):1281-1294.

[3] 錢軍,馮玉琳.系統(tǒng)動(dòng)態(tài)行為語(yǔ)義模型及其形式描述[J].Journal of Computer Research&Development,1999,36(8):907-914.

[4] 朱明英.基于BPMN的Web服務(wù)組合模型的形式化分析[D].天津:南開大學(xué),2009.

[5] WHITE S.Using BPMN to model a BPEL process[J].BP Trends,2005,3(3):1-18.

[6] 秦天保.從BPMN到可執(zhí)行業(yè)務(wù)流程建模[J].計(jì)算機(jī)應(yīng)用,2006(S1):266-268,284.

[7] 魏明,夏永霖,魏峻.BPMN到BPEL2.0的模型轉(zhuǎn)換方法[J].計(jì)算機(jī)應(yīng)用研究,2008(11):3363-3366.

[8] 云本勝.基于π-演算的信任Web服務(wù)組合建模[J].計(jì)算機(jī)科學(xué),2012(S3):240-244.

[9] 李元,李祥.通信系統(tǒng)演算CCS與自動(dòng)驗(yàn)證工具M(jìn)WB[J].通信技術(shù),2005(S1):178-180.

[10] 懷文佳,劉旭東,孫海龍,等.一種基于時(shí)間Petri網(wǎng)的業(yè)務(wù)流程模型驗(yàn)證方法[C].2010年全國(guó)軟件與應(yīng)用學(xué)術(shù)會(huì)議(NASAC2010)論文集,2010:76-81.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。