【正文】
型更加面向計(jì)算機(jī),計(jì)算機(jī)更容易理解。PSM層可執(zhí)行工作流模型來(lái)源于PIM層的信息,它們的不同之處有三點(diǎn)。(1)表現(xiàn)形式不同 PIM層工作流模型采用圖形化的方法,以直觀、快捷的方式展現(xiàn)一個(gè)業(yè)務(wù)流程,方便軟件開(kāi)發(fā)人員和用戶理解、溝通;而PSM層是平臺(tái)相關(guān)模型,PSM層可執(zhí)行工作流模型采用了XML描述語(yǔ)言,方便了計(jì)算機(jī)的理解,但相對(duì)于圖形而言,人理解的難度要比圖形化方法高很多。(2)作用不同 PIM層工作流模型的主要作用用于開(kāi)發(fā)人員將現(xiàn)實(shí)世界的業(yè)務(wù)流程抽象成模型;而PSM層可執(zhí)行工作流模型的主要作用是用計(jì)算機(jī)能夠執(zhí)行語(yǔ)言描述PIM層已建立的模型,側(cè)重于可執(zhí)行的特性。(3)包含元素和信息不同 PSM層是平臺(tái)相關(guān)的,模型中勢(shì)必會(huì)加入平臺(tái)所需的必要信息以保證模型能夠被計(jì)算機(jī)理解并解釋。因此,PSM層可執(zhí)行工作流模型的元素和信息會(huì)多一些?;谏鲜鋈c(diǎn),PIM層工作流模型和PSM層可執(zhí)行工作流模型存在了諸多不同之處,PSM可執(zhí)行工作流模型不能將PIM層工作流模型直接作為它本身的一部分。但PSM層可執(zhí)行工作流模型中的絕大部分信息是可以從PIM層獲取的,而無(wú)需再?gòu)念^做起,否則就失去了MDA的特點(diǎn),因此研究PIM到PSM層工作流模型的自動(dòng)映射是非常必要的。元模型是指模型的模型,它用來(lái)定義建模語(yǔ)言的元素及元素之間的關(guān)系。元模型是特殊的模型,它的建模對(duì)象是建模語(yǔ)言。如果能夠?qū)IM層工作流元模型自動(dòng)映射為PSM層工作流元模型,那么模型就可自動(dòng)映射成功。 基于有限自動(dòng)機(jī)的映射自動(dòng)映射的過(guò)程可以模型化為一個(gè)有限自動(dòng)機(jī)(S,L,S0,→,S1),其中S表示狀態(tài)集合,S0和S1是S的子元素,分別表示初始和結(jié)束狀態(tài),L是標(biāo)簽的集合,而→∈SLS表示轉(zhuǎn)換函數(shù)[30,31]。每一個(gè)狀態(tài)σ由以下元素定義:(1)已經(jīng)由PIM層工作流模型產(chǎn)生的可執(zhí)行工作流模型的部分組成元素。(2)MapBA是一個(gè)為PIM層工作流模型的每一個(gè)業(yè)務(wù)活動(dòng)轉(zhuǎn)換成相應(yīng)的PSM層的活動(dòng)的函數(shù)。將MapBA形式定義如下:(3)MapFlows是一個(gè)將PIM層工作流模型的每一個(gè)控制流轉(zhuǎn)換成相應(yīng)的PSM層的變遷的函數(shù)。將MapFlows形式定義如下:(4)MapDecisions是一個(gè)將PIM層工作流模型的每一個(gè)決策節(jié)點(diǎn)轉(zhuǎn)換成相應(yīng)的PSM層的路徑活動(dòng)的函數(shù)。將MapDecisions形式定義如下:(5)MapRoles是一個(gè)將PIM層工作流模型的每一個(gè)角色轉(zhuǎn)換成相應(yīng)的PSM層的參與者的函數(shù)。將MapRoles形式定義如下:(6)MapEvents是一個(gè)將PIM層工作流模型的每一個(gè)事件轉(zhuǎn)換成相應(yīng)的PSM層的事件的函數(shù)。將MapEvents形式定義如下:(7)MapConnectors是一個(gè)將PIM層工作流模型的每一個(gè)連接器轉(zhuǎn)換成相應(yīng)的PSM層的路徑活動(dòng)的函數(shù)。將MapConnectors形式定義如下:(8)MapConds是一個(gè)將PIM層工作流模型的每一個(gè)條件轉(zhuǎn)換成相應(yīng)的PSM層的條件表達(dá)式的函數(shù)。將MapConds形式定義如下:(9)MapStart是將PIM層工作流模型的開(kāi)始轉(zhuǎn)換成相應(yīng)的PSM層的開(kāi)始的函數(shù)。將MapStart形式定義如下:(10)MapFinish是一個(gè)將PIM層工作流模型的每一個(gè)控制流轉(zhuǎn)換成相應(yīng)的PSM層的變遷的函數(shù)。將MapFinish形式定義如下:(2)(10)中使用了部分函數(shù),原因在于在轉(zhuǎn)換的過(guò)程中,并不是每一個(gè)業(yè)務(wù)活動(dòng)(控制流、決策節(jié)點(diǎn)、……)都對(duì)應(yīng)于擴(kuò)展XPDL中的元素,因?yàn)榇嬖谝恍┥形幢晦D(zhuǎn)換的元素。這些函數(shù)在轉(zhuǎn)換過(guò)程的最后會(huì)變成完全函數(shù)。并且將要被轉(zhuǎn)換的PIM工作流模型的元素不包含在系統(tǒng)的狀態(tài)中。實(shí)際上,在整個(gè)轉(zhuǎn)換的過(guò)程中這些元素并不會(huì)改變。換句話說(shuō),他們的取值與系統(tǒng)的狀態(tài)是完全獨(dú)立的。因此,對(duì)一個(gè)狀態(tài)p來(lái)說(shuō),表達(dá)式p(x)表示x在狀態(tài)p的取值。初始狀態(tài)S0和結(jié)束狀態(tài)S1滿足以下謂詞公式:其中,dom(MapBA)表示所有在函數(shù)MapBA的定義域。換句話說(shuō),它表示已經(jīng)轉(zhuǎn)換完成的業(yè)務(wù)活動(dòng)集合。其它的dom(Map…)函數(shù)有著類似含義。定義域。因此,把每一個(gè)(p,u,q)∈→寫成,其中u表示從狀態(tài)p映射到q的規(guī)則名字。自動(dòng)映射的主要思想就是匹配業(yè)務(wù)活動(dòng)到相應(yīng)類型的活動(dòng)、控制流到變遷、決策節(jié)點(diǎn)到路徑活動(dòng)、連接器到路徑活動(dòng)、事件到事件、角色到參與者,具體的元素及元素關(guān)系如下所述。 映射規(guī)則 業(yè)務(wù)活動(dòng)映射規(guī)則在PIM層工作流模型中,業(yè)務(wù)活動(dòng)存在一般活動(dòng)、關(guān)聯(lián)活動(dòng)、集成活動(dòng)、關(guān)聯(lián)集成活動(dòng)、子流程活動(dòng)五種類型,對(duì)每一種類型的業(yè)務(wù)活動(dòng),都映射成相應(yīng)類型的PSM層可執(zhí)行工作流模型的活動(dòng),同時(shí)將反映業(yè)務(wù)活動(dòng)的屬性函數(shù)也映射成相應(yīng)的函數(shù),舉例來(lái)說(shuō),將函數(shù)ActBCID映射成ActBOID,映射規(guī)則為:(1)一般業(yè)務(wù)活動(dòng)映射成一般活動(dòng)(2)關(guān)聯(lián)業(yè)務(wù)活動(dòng)映射為關(guān)聯(lián)活動(dòng)(3)集成業(yè)務(wù)活動(dòng)映射為集成活動(dòng)(4)關(guān)聯(lián)集成活動(dòng)(5)子流程活動(dòng) 決策節(jié)點(diǎn)映射規(guī)則決策節(jié)點(diǎn)由多個(gè)條件表達(dá)式組成,根據(jù)這些條件表達(dá)式的結(jié)果決定控制流分支的流向。因此,將決策節(jié)點(diǎn)映射為路徑活動(dòng),如果僅僅將決策節(jié)點(diǎn)映射完畢,不再作任何轉(zhuǎn)換,將會(huì)存在如下問(wèn)題:(1)丟失信息 決策節(jié)點(diǎn)包含了多個(gè)條件表達(dá)式,但在PSM可執(zhí)行工作路模型中,路徑活動(dòng)并不包含任何條件表達(dá)式,它僅僅起了一個(gè)路徑的轉(zhuǎn)移作用,這就會(huì)引起條件表達(dá)式信息的丟失。(2)模型復(fù)雜化 由決策節(jié)點(diǎn)發(fā)出的控制流必定流向一個(gè)XOR連接器,如果將這個(gè)目標(biāo)連接器單純的映射成一個(gè)路徑活動(dòng),這就會(huì)導(dǎo)致轉(zhuǎn)換成的PSM可執(zhí)行工作流模型中出現(xiàn)兩個(gè)連續(xù)的路徑活動(dòng),這兩個(gè)連續(xù)的路徑活動(dòng)完全可以合并成一個(gè),否則容易使得模型復(fù)雜化,增加了理解的難度。針對(duì)上述兩點(diǎn)不足,提出特定的決策節(jié)點(diǎn)映射的方法和步驟如下,圖29描述了這個(gè)映射的過(guò)程和方法。(1)對(duì)于一個(gè)決策節(jié)點(diǎn)x,將其映射為一個(gè)路徑活動(dòng)y。(2)對(duì)于決策節(jié)點(diǎn)通過(guò)控制流連接的XOR連接器co,直接轉(zhuǎn)換成路徑活動(dòng)y的Out屬性,并且這個(gè)屬性的取值為XOR,即Out(y)= XOR。(3)對(duì)于XOR連接器co發(fā)出的每一條控制流fll,根據(jù)fll的FlowResult取值找到對(duì)應(yīng)的決策節(jié)點(diǎn)x的條件表達(dá)式t,創(chuàng)建一個(gè)變遷,變遷的源活動(dòng)為路徑活動(dòng)y,變遷的目標(biāo)活動(dòng)為fll發(fā)出的業(yè)務(wù)活動(dòng)z映射的活動(dòng)z’,變遷的類型為條件,條件表達(dá)式為t。圖29 決策節(jié)點(diǎn)的映射Figure 29 The mapping of the decisions node并定義形式化的映射規(guī)則為: 連接器映射規(guī)則連接器描述了控制流間的邏輯關(guān)系,將連接器映射為可執(zhí)行工作流模型的路徑活動(dòng),而對(duì)于連接器的取值,將其映射為路徑活動(dòng)的In和Out,對(duì)于XOR和OR,都映射為XORJoin和XORSplit,而AND映射為ANDJoin和ANDSplit,映射如圖210所示。圖210連接器映射圖示Figure 210 The mapping of the connectors定義映射規(guī)則為: 事件映射規(guī)則事件直接映射為可執(zhí)行工作流模型中的事件,類型也隨之映射完成。此外,又由于在PIM層工作流模型的事件是附加在控制流上的,因此,必須將映射后的事件附加到控制流所映射的變遷上。映射規(guī)則為: 角色映射規(guī)則角色映射為可執(zhí)行工作流模型的參與者,但可執(zhí)行工作流模型中的參與者有著多種類型,必須為映射到的參與者制定其類型為role,映射規(guī)則為: 控制流映射規(guī)則控制流描述了元素間的流轉(zhuǎn)次序,它連接了兩個(gè)有著時(shí)序關(guān)系的元素,對(duì)于控制流的映射并不能一視同仁,因?yàn)榭刂屏鬟B接的元素會(huì)有所不同。根據(jù)控制流的源和目標(biāo)元素的不同,可以將控制流分為七種類型。圖211控制流類型分析Figure 211 Types of the flows如圖211所示,可將控制流分為七種類型:業(yè)務(wù)活動(dòng)→連接器、連接器→業(yè)務(wù)活動(dòng)、業(yè)務(wù)活動(dòng)→決策節(jié)點(diǎn)、決策節(jié)點(diǎn)→連接器、連接器→決策節(jié)點(diǎn)、連接器→連接器、業(yè)務(wù)活動(dòng)→業(yè)務(wù)活動(dòng)。對(duì)于每一種類型分別定義相應(yīng)的規(guī)則描述其映射規(guī)則。對(duì)于類型決策節(jié)點(diǎn)→連接器是特殊的,因此本節(jié)無(wú)需為其定義映射規(guī)則。最后定義六條映射規(guī)則就可將控制流映射為變遷。這六條映射規(guī)則是類似的,都是在控制流的源和目標(biāo)元素完成映射后才能執(zhí)行,并且控制流映射為可執(zhí)行工作流模型的變遷,同時(shí)將控制流的源和目標(biāo)元素對(duì)應(yīng)的映射元素記錄到變遷的源和目標(biāo)活動(dòng)。他們唯一的不同是控制流的源和目標(biāo)元素的映射元素存在不同。六條映射規(guī)則定義為:(1)業(yè)務(wù)活動(dòng)→連接器(2)連接器→業(yè)務(wù)活動(dòng)(3)業(yè)務(wù)活動(dòng)→決策節(jié)點(diǎn)(4)連接器→決策節(jié)點(diǎn)(5)連接器→連接器(6)業(yè)務(wù)活動(dòng)→業(yè)務(wù)活動(dòng) 本章小結(jié)本章首先對(duì)ICEMDA做了簡(jiǎn)單介紹,詳細(xì)定義PIM層工作流模型和PSM層可執(zhí)行工作流模型的功能。然后描述了PIM層工作流模型中包含的圖形元素以及圖形之間的連接關(guān)系。而后分析XPDL規(guī)范的元模型,在此基礎(chǔ)上通過(guò)擴(kuò)展屬性建立一個(gè)XML語(yǔ)言描述的PSM層可執(zhí)行工作流模型。最后,為了能夠?qū)崿F(xiàn)PIM層工作流模型到PSM層工作流模型的自動(dòng)映射,分別對(duì)PIM和PSM層的工作流模型進(jìn)行了形式化定義,并在形式化定義的基礎(chǔ)上,定義了一個(gè)有限自動(dòng)機(jī)和映射規(guī)則來(lái)實(shí)現(xiàn)二者的自動(dòng)映射。第3章 支持ICEMDA的工作流引擎研究 功能分析與體系結(jié)構(gòu) WfMC的工作流參考模型工作流管理系統(tǒng)是一個(gè)軟件系統(tǒng),它完成工作流的定義和管理,并按照在計(jì)算機(jī)中預(yù)先定義好的工作流邏輯推進(jìn)工作流實(shí)例的執(zhí)行。WfMC定義的工作流管理系統(tǒng)的體系結(jié)構(gòu)如圖31所示[1]。圖31 工作流管理系統(tǒng)的體系結(jié)構(gòu)Figure 31 The architecture of the workflow management system首先,由過(guò)程建模人員對(duì)業(yè)務(wù)過(guò)程進(jìn)行建模,生成的結(jié)果成為過(guò)程定義。然后生成的過(guò)程定義作為輸入由工作流執(zhí)行服務(wù)器來(lái)解釋執(zhí)行,其中工作流執(zhí)行服務(wù)器是由一個(gè)或多個(gè)工作流引擎來(lái)解釋執(zhí)行過(guò)程定義的。工作流引擎對(duì)過(guò)程進(jìn)行實(shí)例化,并根據(jù)過(guò)程定義,通過(guò)引用組織/角色模型分配任務(wù),過(guò)程定義中的活動(dòng)需要調(diào)用外部應(yīng)用時(shí),工作流引擎使用工作流相關(guān)數(shù)據(jù)對(duì)外部應(yīng)用進(jìn)行更新。當(dāng)過(guò)程定義中的活動(dòng)需要人機(jī)交互時(shí),通過(guò)任務(wù)表跟任務(wù)表管理器進(jìn)行交互,任務(wù)表管理器最終跟一般用戶進(jìn)行交互,從而達(dá)到過(guò)程執(zhí)行的目的,在此期間為了保證過(guò)程的執(zhí)行,需要維護(hù)工作流控制數(shù)據(jù)。在工作流引擎的運(yùn)行過(guò)程中,系統(tǒng)管理員可以監(jiān)控管理工作流引擎。過(guò)程執(zhí)行完成后,相應(yīng)的業(yè)務(wù)過(guò)程就完成了[32]。工作引擎提供的功能僅僅依靠其自身是無(wú)法完成的,例如,工作流引擎的功能之一是實(shí)例化及執(zhí)行過(guò)程模型,那么此過(guò)程模型并不是憑空產(chǎn)生的,它需要建模人員以一定的方式將工作流模型表達(dá)出來(lái),而后才能提供給工作流引擎使用,這就是WfMC提出的工作流參考模型中的接口1。工作流引擎的另一個(gè)功能是與外部資源交互完成各項(xiàng)活動(dòng),業(yè)務(wù)過(guò)程的執(zhí)行離不開(kāi)人或者系統(tǒng)的參與,這就對(duì)應(yīng)了參考模型的接口2和3。WfMC給出了工作流參考模型,如圖32所示。圖32 WfMC 定義的工作流參考模型Figure 32 Workflow reference model defined by WfMC(1)接口1過(guò)程定義輸入輸出接口。這個(gè)接口為在不同物理或電子介質(zhì)傳遞過(guò)程定義的信息提供了交互的形式和API調(diào)用函數(shù)。實(shí)現(xiàn)了建模環(huán)境和運(yùn)行環(huán)境的分離,使用某種建模工具創(chuàng)建的模型可以運(yùn)行在不同的工作流產(chǎn)品上。(2)接口2客戶端函數(shù)接口。此接口是工作流服務(wù)和客戶應(yīng)用之間的接口,這事最主要的接口規(guī)范,它約定所有客戶方應(yīng)用與工作流服務(wù)之間的功能操作方式。(3)接口3激活應(yīng)用程序接口。此接口是工作流機(jī)和直接調(diào)用的應(yīng)用程序之間的直接接口。(4)接口4工作流執(zhí)行服務(wù)之間的互操作接口。(5)接口5工作流服務(wù)和工作流管理工具之間的接口。 ICEMDA的工作流體系結(jié)構(gòu)ICEMDA的工作流引擎在WfMC的體系結(jié)構(gòu)上,針對(duì)ICEMDA自身的特點(diǎn),提出了圖33的系統(tǒng)結(jié)構(gòu)。圖33 ICEMDA的工作流體系結(jié)構(gòu)Figure 33 Architecture of the ICEMDA workflow首先,工作流建模人員通過(guò)工作流模型建模工具對(duì)業(yè)務(wù)流程建模,生成了模型定義文件。工作流引擎將模型定義文件的內(nèi)容解析并通過(guò)持久化到數(shù)據(jù)庫(kù)中。用戶通過(guò)對(duì)業(yè)務(wù)構(gòu)件的操作來(lái)啟動(dòng)一個(gè)工作流實(shí)例或者發(fā)送操作完成后產(chǎn)生的相關(guān)事件,工作流引擎的事件管理器監(jiān)控業(yè)務(wù)構(gòu)件產(chǎn)生的事件,并調(diào)用相關(guān)的內(nèi)核程序處理,完成工作流實(shí)例的導(dǎo)航。 工作流引擎的核心算法研究 路由算法 問(wèn)題描述工作流引擎負(fù)責(zé)解釋執(zhí)行工作流模型,完成維護(hù)管理業(yè)務(wù)流程的目的,使得任務(wù)(對(duì)應(yīng)一個(gè)活動(dòng)實(shí)例)被正確的分配給正確的人員或系統(tǒng)處理。在一個(gè)任務(wù)完成后,工作流引擎需要根據(jù)工作流模型定義中的信息,以及當(dāng)前任務(wù)處理后相應(yīng)的工作流相關(guān)數(shù)據(jù)取值,計(jì)算出下一個(gè)應(yīng)該實(shí)例化的活動(dòng)從而創(chuàng)建任務(wù)并通知相關(guān)人員或者調(diào)用相關(guān)工具。在工作流模型定義中,某個(gè)業(yè)務(wù)活動(dòng)完全有可能有多個(gè)發(fā)出變遷,而且這多個(gè)發(fā)出變遷有一定的邏輯關(guān)系——XOR或AND,這些變遷也可能是附加條件或事件的,工作流引擎必須根據(jù)邏輯關(guān)系、運(yùn)行時(shí)轉(zhuǎn)移條件的取值以及變遷附加的事件是否產(chǎn)生這些信息,來(lái)判斷每一個(gè)變遷的是否能夠被通過(guò),才能根據(jù)滿足通過(guò)條件的變遷找到變遷的目標(biāo)活動(dòng),而后實(shí)例化目標(biāo)活動(dòng)創(chuàng)建任務(wù)。算法的已知條件有四個(gè)。(1)任務(wù)對(duì)應(yīng)的工作流過(guò)程定義(2)任務(wù)對(duì)應(yīng)的活動(dòng)定義 任務(wù)對(duì)應(yīng)于一個(gè)活動(dòng)實(shí)例,活動(dòng)實(shí)例對(duì)應(yīng)了一個(gè)活動(dòng)定義,因此此活動(dòng)定義是工作流過(guò)程定義所包含的一個(gè)活動(dòng),并且此活動(dòng)實(shí)例化后創(chuàng)建了任務(wù)?;顒?dòng)定義用act表示,并且act∈。(3)任務(wù)完成后產(chǎn)生的事件(4)工作流相關(guān)數(shù)據(jù) 工作流相關(guān)數(shù)據(jù)對(duì)應(yīng)于業(yè)務(wù)構(gòu)件的某個(gè)屬性,由業(yè)務(wù)構(gòu)件更新,工作流引擎只能訪問(wèn)。算法的輸出是下一個(gè)或下一些將被實(shí)例化的活動(dòng)