国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

PDM系統(tǒng)中動態(tài)工作流變化的分析與研究

2012-10-12 13:28:58樊廣軍熊勁華
制造業(yè)自動化 2012年5期
關(guān)鍵詞:實例變化節(jié)點

樊廣軍,熊勁華

FAN Guang-jun, XIONG Jin-hua

(中南大學(xué) 機電工程學(xué)院 高性能復(fù)雜制造國家重點實驗室,長沙 410012)

0 引言

作為PDM系統(tǒng)的重要組成部分,工作流管理有利于工作流的建立與執(zhí)行,從而達到簡化業(yè)務(wù)流程的目的。然而,現(xiàn)有的工作流管理解決方案是用來處理靜態(tài)業(yè)務(wù)流程。當(dāng)一個工作流程發(fā)生變化的時候,這些解決方案會完全中止執(zhí)行受到影響的工作流程實例,然后從頭開始執(zhí)行修改過的工作流程實例。這種簡單化的解決方案會導(dǎo)致任務(wù)已經(jīng)完成的工作流節(jié)點被重復(fù)執(zhí)行,從而造成系統(tǒng)資源的浪費。目前許多學(xué)者對工作流的研究大多局限于工作流建模,有關(guān)動態(tài)工作流變化的問題卻沒有得到很好的解決,現(xiàn)存的解決方案不能夠為管理工作流變化提供有效的方法[1]。因此,對PDM系統(tǒng)中動態(tài)工作流變化的分析與研究是十分必要的。

1 PDM系統(tǒng)中工作流的表達

工作流是一類能夠完全或部分自動執(zhí)行的業(yè)務(wù)過程,根據(jù)一系列過程規(guī)則,文檔、信息或任務(wù)能夠在不同的執(zhí)行者傳遞、執(zhí)行[2]。作為一種計算機化的業(yè)務(wù)流程,工作流可以采用Petri網(wǎng)(Petri Net, PN)、有向圖(Directed Network Graph,DNG)等許多正式方法對其建模[3,4]。因為基于有向圖的表達形式被廣泛的應(yīng)用在各種業(yè)務(wù)平臺中,所以本文采用它來實現(xiàn)工作流程平臺。于是,一個工作流W可以用一個二元組(N,C)來表示,其中N={n1,n2,...}為工作流中的各個活動,在工作流模型中表現(xiàn)為節(jié)點;C={c1,c2,...}為各個活動間的次序關(guān)系,在工作流模型中表現(xiàn)為節(jié)點間的連接線。圖1舉例說明了一個簡單的工作流W=(N,C),其中N={n0,n1,n2,n3,n4},C={c0,c1,c2,c3,c4}。如果連接線c指向節(jié)點n,那么c是節(jié)點n的輸入連接線;反之c是節(jié)點n的輸出連接線。每一個節(jié)點n又可以用一個四元組(t,u,Ci,Co)來表示,其中t代表相關(guān)任務(wù),u代表相關(guān)用戶,Ci代表所有輸入連接線,Co代表所有輸出連接線。每一條連接線c由一個三元組(r,ns,ne)表示,其中r是關(guān)于c的響應(yīng),ns是連接線c的開始節(jié)點,ne是連接線c的結(jié)束節(jié)點,節(jié)點ns是節(jié)點ne的前節(jié)點,節(jié)點ne是節(jié)點ns的后節(jié)點。一條連接線的響應(yīng)類型決定了它的觸發(fā)條件,假如一個節(jié)點被成功執(zhí)行,則它的輸出連接線將會觸發(fā)“接受”響應(yīng),否則其連接線將會觸發(fā)“拒絕”響應(yīng)。圖2提供了一個帶有不同響應(yīng)連接線的示例。

圖1 由五個節(jié)點和五條連接線組成的一個簡單的工作流

圖2 兩種響應(yīng)類型:“接受”和“拒絕”

在實際的工作流管理系統(tǒng)中,工作流被定義成模板或圖示的形式。當(dāng)一個工作流模板被初始化,它就被稱之為實例。任何時候,一個工作流實例中的所有節(jié)點可以按照狀態(tài)的不同劃分為三種類型:就緒提交節(jié)點,等待執(zhí)行節(jié)點,已完成節(jié)點[5]。工作流實例中節(jié)點的狀態(tài)在執(zhí)行過程中會發(fā)生變化,節(jié)點不同狀態(tài)間的轉(zhuǎn)換如圖3所示。

圖3 狀態(tài)轉(zhuǎn)換

每個節(jié)點的初始狀都是“就緒提交”,當(dāng)此狀態(tài)的節(jié)點被其用戶開發(fā)來執(zhí)行時,這時節(jié)點狀態(tài)為“等待執(zhí)行”。如果節(jié)點被成功執(zhí)行,它的狀態(tài)就轉(zhuǎn)化成“完成”,否則就變成“就緒提交”狀態(tài)。必須引起注意的是,有一些節(jié)點可能由于“拒絕”響應(yīng)而被多次執(zhí)行。理想狀態(tài)為,工作流實例應(yīng)該是未受中斷影響而一直執(zhí)行完成。然而,工作流變化會在實際的工程環(huán)境中發(fā)生。一個工作流實例的變化通常有可能是:1)節(jié)點的增加或去除;2)連接線的增加或去除;3)節(jié)點屬性的修改[6]。一旦工作流實例受上述變化的影響,它將被迫中止執(zhí)行。此后,這種變化會應(yīng)用于受影響的工作流實例。通常情況下,修改后的工作流模板將會用來初始化工作流實例,并且該實例將重新啟動。在普通工作流管理系統(tǒng)中,重啟工作流實例將會導(dǎo)致所有節(jié)點回到初始狀態(tài),而不論這些節(jié)點現(xiàn)有狀態(tài)情況。這是一種消極的處理方式,因為所有在重啟實例中的節(jié)點都將再執(zhí)行一次。

2 節(jié)點識別

為了方便動態(tài)工作流變化的管理,主要依據(jù)以下三個條件對節(jié)點進行識別,依次對這三個條件識別完成后,才能確定節(jié)點n在新工作流實例中是否需要重新執(zhí)行。這三個條件為:1)節(jié)點n的屬性和連接線(觸發(fā)條件)是否發(fā)生了變化,即節(jié)點是否為未變節(jié)點;2)節(jié)點n的任務(wù)是否已經(jīng)完成,即節(jié)點n是否為完成節(jié)點;3)節(jié)點n的所有前節(jié)點是否都不需要重新執(zhí)行,即節(jié)點n的所有前節(jié)點是否都為可繞開節(jié)點。

2.1 未變節(jié)點的識別

假設(shè)一個工作流模板T1,一個被初始化的工作流實例W1。當(dāng)執(zhí)行W1時,工作流模板T1改變成T2,一個新工作流實例W2在模板T2中被初始化,用來取代工作流實例W1。對于實例W1中的任何一個節(jié)點n可能發(fā)生屬性改變或連接線改變。如果該節(jié)點的位置在實例W2中發(fā)生了改變,事實上就是該節(jié)點的連接線發(fā)生了改變,因此該節(jié)點屬于第二種情況。假設(shè)節(jié)點n在新工作流實例W2中發(fā)生了改變,并且它的名稱也變化了,那么該節(jié)點被認定為一個新節(jié)點。

2.1.1 節(jié)點屬性變化的識別

在工作流實例中,一個節(jié)點的屬性主要包括任務(wù)與用戶兩個部分。如果任務(wù)發(fā)生了變化,那么該節(jié)點應(yīng)當(dāng)識別為變化的。如果節(jié)點的用戶發(fā)生了改變,那么該節(jié)點可以認為沒有變化。因為用戶的改變不會影響節(jié)點的狀態(tài),如果節(jié)點的任務(wù)已經(jīng)完成了,那么在新的工作流實例中,新用戶就不用去執(zhí)行該任務(wù)了;如果節(jié)點處于就緒提交狀態(tài)或等待執(zhí)行狀態(tài),不論用戶改變與否,它在新工作流實例中都要被執(zhí)行。

因為節(jié)點的用戶名具有唯一索引,所以發(fā)現(xiàn)節(jié)點用戶的改變是比較容易的,而發(fā)現(xiàn)節(jié)點任務(wù)的改變卻是比較困難。一般的,節(jié)點的任務(wù)可能由人工或系統(tǒng)自動產(chǎn)生。人工產(chǎn)生的任務(wù)往往用來代表一系列描述信息或文檔(包括文本和圖形),因此通過比較描述信息或文檔標識(文檔編號、大小、修改時間等)可以比較容易的區(qū)分兩個人工產(chǎn)生的任務(wù)。如果任務(wù)是由系統(tǒng)自動的生成的,它實際上是一個可以調(diào)用的計算機程序。通過比較兩個計算機程序的全路徑(如果它們都是本地可執(zhí)行文件)或統(tǒng)一資源定位(如果它們來自遠程服務(wù)器的調(diào)用),可以明確的把它們區(qū)分開來。然而,應(yīng)該有一種方法用來檢查這種情況:當(dāng)計算機程序發(fā)生了變化而它的全路徑或統(tǒng)一資源定位卻沒有改變。為了解決這樣的問題,自動產(chǎn)生的任務(wù)應(yīng)該有版本管理功能,即它能對版本進行響應(yīng)。作為一個例子,接下來的邏輯方法可以用來判斷一個節(jié)點的任務(wù)是否發(fā)生了變化。

如果兩個節(jié)點n1,n2有相同的屬性,那兩個節(jié)點的關(guān)系可以表示為n1en2。

2.1.2 節(jié)點連接線變化的識別

工作流實例中的節(jié)點也可能發(fā)生連接線的變化,圖4舉例說明了一些連接線變化的類型。如圖所示,在(a)中節(jié)點n2的位置變化導(dǎo)致節(jié)點n2連接線的改變;在(b)中增加節(jié)點n3和節(jié)點n4導(dǎo)致節(jié)點n1連接線的改變。

圖4 連接線的改變

為了解決上述問題,需要設(shè)定以下規(guī)則:

1)任何兩個工作流實例的開始節(jié)點是相同的。

理想情況是,如果兩個節(jié)點不僅屬性相同,而且連接線也相同,那么這兩個節(jié)點相同。對于舊工作流實例中的節(jié)點n,如果在新工作流實例中有一個節(jié)點n滿足n=n,則說明節(jié)點n沒有變化。

2.2 完成節(jié)點的識別

判斷一個節(jié)點在舊工作流實例中是否為完成節(jié)點是比較簡單的,因為所有的工作流管理系統(tǒng)都允許節(jié)點的狀態(tài)查詢,通過訪問節(jié)點狀態(tài)屬性的方式來獲得節(jié)點的狀態(tài)。

2.3 可繞開節(jié)點的識別

如果一個節(jié)點的任務(wù)在舊工作流實例中被執(zhí)行完成,在新工作流實例中仍然有效而不需要重新執(zhí)行,那么該節(jié)點在新工作流實例中就是可繞開節(jié)點[7]。顯然,可繞開節(jié)點應(yīng)該是1)舊工作流實例中存在的,2)已經(jīng)執(zhí)行完成的。然而,以上兩個條件還是不足以確定一個節(jié)點是否為可繞開節(jié)點,其緣由是一個節(jié)點的執(zhí)行狀況受到其輸入情況的影響。為了掌握節(jié)點輸入情況的關(guān)鍵部分,本文定義了如下概念:

1)如果連接線c對于節(jié)點n1來說是輸出連接線,對節(jié)點n2來說是輸入連接線,那么節(jié)點n1就是節(jié)點n2的前節(jié)點。兩個節(jié)點之間的相互關(guān)系可用n1→n2來表示。

2)如果n1到n2之間有一個節(jié)點集{nai}使得n1→na1,na1→na2,...,nan→na2,即n1→n2,那么可以認為n1到n2之間有一個路徑。

為了確定新工作流實例中的節(jié)點是否為可繞開節(jié)點,需要增加一個概念:一個指向當(dāng)前節(jié)點的路徑中的所有節(jié)點都為可繞開節(jié)點。

因為一個可繞開節(jié)點在舊工作流實例和新工作流實例中產(chǎn)生的輸出結(jié)果是相同的,所以可繞開節(jié)點的聚合肯定也會產(chǎn)生相同的效果。因此,使用下面三個條件判斷一個節(jié)點在新工作流實例中是否為可繞開節(jié)點是足夠的。

1)節(jié)點n的屬性在新工作流實例沒有改變;

2)節(jié)點n在舊工作流實例中被執(zhí)行完成;

顯然,在一個新工作流實例中,開始節(jié)點總是可繞開節(jié)點,因為它總是滿足以上三個條件(在所有的工作流管理系統(tǒng)中,任何工作流實例中的開始節(jié)點都是由系統(tǒng)自動完成)。

我們可以運用以上三個條件,對新工作流實例中的每一個節(jié)點進行分析,然后確定其是否為可繞開節(jié)點。判斷步驟如下所示:

1)建立一個包括新工作流實例W2中所有節(jié)點的有序列表L;

2)從列表L中去除W2中的開始節(jié)點,并把開始節(jié)點設(shè)置為可繞開節(jié)點;

3)對于列表L中的任何節(jié)點n,核查在舊工作流實例W1中是否有一個節(jié)點n,使得n與n有相同的屬性,并且n是被執(zhí)行完成的。如果節(jié)點n不滿足這兩個條件,再次從步驟(1)開始執(zhí)行,進行下一個節(jié)點的判斷;若節(jié)點n滿足這兩個條件,則進行下一步。

4)識別W2中所有的節(jié)點,確定其中是否存在指向節(jié)點n的路徑。若存在,則該路徑中所有的節(jié)點都為可繞開節(jié)點,那么就可以把節(jié)點n設(shè)置成可繞開節(jié)點,并從列表L中移除,重新回到步驟(1)再進行下一個節(jié)點的判斷。

5)當(dāng)列表L中所有的節(jié)點都經(jīng)過了判斷,核實列表 的長度有沒有發(fā)生變化。如果發(fā)生了變化,再次從步驟1開始判斷;如果長度沒有發(fā)生變化,中止整個判斷步驟,因為列表L中的所有可繞開節(jié)點已經(jīng)被識別出來,并且已從列表L中移除。

以上的非遞歸步驟確保了在一個或多個可繞開節(jié)點識別以后,有序列表L中的所有節(jié)點都會得到處理。盡管這種方式是非常簡單和健壯的,但由于一些位于有序列表前端的節(jié)點在識別是否為可繞開節(jié)點之前已經(jīng)被重復(fù)判斷了多次,從而導(dǎo)致該種方式缺乏效率。

一種更有效的理念就是運用新工作流實例的拓撲結(jié)構(gòu)來檢查節(jié)點,該理念能夠使這些節(jié)點有更多的機會被識別為可繞開節(jié)點。顯而易見的是,在新工作流實例中,由于開始節(jié)點總是可繞開節(jié)點,所以它是第一個被檢查到的可繞開節(jié)點。基于已有的規(guī)則,如果在新工作流實例中存在指向節(jié)點 的路徑中有一個節(jié)點不是可繞開節(jié)點,那么節(jié)點 就不是可繞開節(jié)點。因此,從新工作流實例的開始節(jié)點,即第一個可繞開節(jié)點開始,沿著開始節(jié)點的輸出連接線方向,遍歷整個工作流的方法是非常合理的。在開始節(jié)點的所有后續(xù)節(jié)點中,這些非可繞開節(jié)點能夠被識別出來,通過這樣的方式能簡化工作流實例,避免不必要的檢查。為了實現(xiàn)上述這些理念,本文開發(fā)了一種遞歸方法,如下所述:

1)如果輸入節(jié)點n是新工作流實例的開始節(jié)點,或者該節(jié)點的所有前節(jié)點都是可繞開節(jié)點,那么把節(jié)點n設(shè)置為可繞開節(jié)點。

2)經(jīng)過步驟(1)之后,如果輸入節(jié)點n是可繞開節(jié)點,則找出節(jié)點n的所有后續(xù)節(jié)點,把每一個后續(xù)節(jié)點設(shè)置為這種流程的輸入節(jié)點,重復(fù)相應(yīng)的流程;否則就退出該流程。

以上的方法從第一個可繞開節(jié)點,開始節(jié)點開始。該方法只測試了一個可繞開節(jié)點的后續(xù)節(jié)點,通過利用工作流實例的拓撲結(jié)構(gòu),可以避免對非可繞開節(jié)點的檢測。但是,對內(nèi)存的巨大需求卻成為該方法的一個主要問題。當(dāng)處理大量工作流實例的時候,這樣的一種遞歸算法可能會嚴重的降低工作流管理系統(tǒng)的運行效率。因此,針對工作流,適度的運用遞歸方法是合理的。為了處理大量的工作流的變化,這就需要有高效穩(wěn)定的非遞歸方法。

為了提出一種非遞歸方法,本文引入了節(jié)點層的概念。節(jié)點 的層指的是從開始節(jié)點到節(jié)點 的路徑中節(jié)點的個數(shù)[8]。例如,在一個路徑n0→n1→n2→n3中,節(jié)點n2和n3的層分別為3和4。如果從開始節(jié)點到節(jié)點n有多條路徑,那么節(jié)點n的層被定義為最短路徑中節(jié)點的個數(shù)。

當(dāng)評估一個節(jié)點成為可繞開節(jié)點的可能性時,從前面層的節(jié)點開始運行是可取的。因為這些節(jié)點有更多的機會成為可繞開節(jié)點,能夠更早的從有序列表中移除。隨后,在有序列表中對節(jié)點進行排序之后,能夠運用先前提及的非遞歸方法來實現(xiàn)對可繞開節(jié)點的識別。通過合理的消耗內(nèi)存,節(jié)點排序能夠有效的減少動態(tài)工作流變化的處理時間。

3 應(yīng)用實現(xiàn)

在上述理論研究的基礎(chǔ)之上,運用Java開發(fā)語言,以MyEclipse 9.0 M1為開發(fā)環(huán)境,SQL Server 2005為數(shù)據(jù)庫,開發(fā)了支持動態(tài)工作流變化的工作流管理系統(tǒng),并實現(xiàn)與已有PDM系統(tǒng)的集成。系統(tǒng)界面如圖5所示。用戶可以根據(jù)不同企業(yè)的工作習(xí)慣,靈活的使用可視化的工作流編輯器,建立相應(yīng)的工作流程。為了方便對動態(tài)工作流變化的管理,運用Java程序來實現(xiàn)所提出的方法,程序執(zhí)行步驟如下:

1)打開PDM系統(tǒng),在工作流編輯器中產(chǎn)生必要的數(shù)據(jù)集對象。

2)獲得一個流程實例。

3)獲得流程的新舊工作流模板。

4)把舊工作流實例保存在內(nèi)存中,給工作流過程附加新的工作流模板。

5)識別新工作流實例中的所有可繞開節(jié)點。

6)對新工作流實例進行初始化,執(zhí)行所有可繞開節(jié)點。

7)把修改后的工作流過程釋放給所有等待執(zhí)行節(jié)點的用戶。

圖5 工作流管理系統(tǒng)界面

4 結(jié)束語

工作流管理是PDM系統(tǒng)的重要組成部分,是其基本功能,對動態(tài)工作流變化進行分析與研究可以提高工作流管理系統(tǒng)的柔性。將動態(tài)工作流變化管理技術(shù)應(yīng)用到現(xiàn)有的PDM系統(tǒng)中來,實現(xiàn)了產(chǎn)品設(shè)計開發(fā)相關(guān)數(shù)據(jù)的完整性,提高了企業(yè)管理經(jīng)營的自動化水平。

[1]劉艷平,趙武,熊欣.基于PDM的產(chǎn)品設(shè)計過程動態(tài)工作流管理[J].機械設(shè)計與制造,2009,(1):225-227.

[2]歐陽昱.工作流與訪問控制[M].北京:航空工業(yè)出版社,2010.

[3]羅海濱,范玉順,吳澄.一種面向企業(yè)用戶的工作流模型[J].計算機集成制造系統(tǒng),2000,6(3):55-59.

[4]陳四根,蔣增強,安蘇華,等.基于有向圖的工作流建模及其運行[J].合肥工業(yè)大學(xué)學(xué)報:自然科學(xué)版,2007,30(1):60-65.

[5]王偉,蔣增強,劉名周,等.PDM系統(tǒng)中動態(tài)工作流的分析與研究[J].合肥工業(yè)大學(xué)學(xué)報:自然科學(xué)版,2010,33(11):1618-1622.

[6]徐兆宏,戴躍洪,王永峰.PDM系統(tǒng)中工作流程動態(tài)變化的研究[J].設(shè)計與研究,2007,(5):13-14.

[7]W.M.P.van der Aalst,S.Jablogski.Dealing with work flow change:identification of issues and solutions[J].International Journal of Computer Systems Science&Engineering.2000,15(5):267-276.

[8]L.Pudhota,E.Guntama,E.Chang,etc.Extension of activity diagrams for flexible business work flow modeling[J].Computer Systems Science and Engineering.2003,18(13):137-152.

猜你喜歡
實例變化節(jié)點
CM節(jié)點控制在船舶上的應(yīng)用
Analysis of the characteristics of electronic equipment usage distance for common users
基于AutoCAD的門窗節(jié)點圖快速構(gòu)建
從9到3的變化
這五年的變化
特別文摘(2018年3期)2018-08-08 11:19:42
抓住人才培養(yǎng)的關(guān)鍵節(jié)點
鳥的變化系列
詩選刊(2015年6期)2015-10-26 09:47:11
完形填空Ⅱ
完形填空Ⅰ
“讓路”讓出的變化
中國火炬(2012年2期)2012-07-24 14:17:54
秀山| 西昌市| 镇江市| 滕州市| 阿鲁科尔沁旗| 莱州市| 榆树市| 慈溪市| 哈巴河县| 三门峡市| 固安县| 瓮安县| 平潭县| 宣威市| 海兴县| 临泉县| 社旗县| 蒲江县| 巴中市| 阳原县| 溧阳市| 庆安县| 潜山县| 原平市| 抚松县| 邢台县| 噶尔县| 稻城县| 顺昌县| 巴楚县| 南江县| 灌云县| 陕西省| 肥城市| 循化| 瑞昌市| 库伦旗| 南华县| 永年县| 大城县| 祁连县|