• 沒有找到結果。

流程模式

在文檔中 Item 987654321/15890 (頁 28-31)

第四章 .萃取演算法

第一節 流程模式

企業中有許多的流程(process),執行這些流程可以達成某些企業目標。而 一個流程是由許多的活動(activity)所組成,這些活動是某些較小單位的工作。

例如,保險公司有”客戶索求保險給付”的處理流程,當客戶要求保險給付時,

就可以依這些流程進行處理。這個流程中可能包括”客戶填寫表單”、”表單資料 審查”、”保費費率計算”、”專業審查”...等等的單位工作,這些單位工作就稱 為活動。因此,一個流程可以包含許多的活動,而流程的一次執行則稱為此流 程的一個流程例。

本研究以一個有向圖來代表流程中活動的執行,圖中的每一個點(Vertex) 都 代 表 一 個 活 動 , 點 與 點 間 的 邊 (Edge) , 則 代 表 這 兩 個 活 動 的 執 行 順 序 (Dependence)。同時,邊上也含有一個布林函數(boolean function)。如果,

流程執行時,這個函數值為”真”(true),則下一個活動就會被執行;如果是”

假”(false),則下一個活動就不會被執行了。所以,流程中活動的執行,可以 分為下列三種情形:

1. 循序( Sequence) :流程中的活動依序往下執行,如圖 4-1 所示。活動 A 執行完成後,活動 B 才開始執行,活動 B 執行完成後,活動 C 才開始執 行,以此類推。也就是說,在這樣的有向圖中,這些活動與活動間的邊 上所附的布林函數值都是”真”。因此,這些活動依序往下執行。

圖<4-1>

2. 平行( Parallel) :如圖 4-2 所示,活動 A 執行完成後,會測試 A→B 邊 上的布林函數,如果值為”真”,則執行活動 B,如果為”假”,當然活動 B 就不執行了。同樣地,也會測試 A→C、A→D 邊上的布林函數以決定是否 執行活動 C 和活動 D。

圖<4-2>

也就是說,當活動有數個連出去(outgoing)的邊時,每一個邊上的布林 函數都必須被測試,以決定所連的下一個活動是否執行。而且,這些布 林函數測試結果是獨立的,不影響其它布林函數的成立與否。如 A→B 邊 上的測試結果不影響 A→C 邊上的測試結果。所以當一個活動所有可能的 下一個活動都會被執行(函數測試值皆為”真”)時,這種情形稱為 AND;也 可能總是只有一個被執行,這種情形稱為 XOR;當然也有可能介於上述 二者之間,一次有數個不等的活動執行,稱為 OR。

在上述的定義中,活動 B、C、D 的執行與否是彼此獨立的,端視其連進 來邊上的布林函數值是否為真,本研究此項定義是參考[WfMC98]中 AND_SPLIT 的定義而來。當然,目前也有一些不同的定義方法,例如,

[WfMC98]中有另一種 XOR_SPLIT 的定義,在這種定義裡,活動之間的執 行不是彼此獨立的(但此種定義也可以用 AND_SPLIT 的定義來處理)。而 在[Atti93]的研究中,更詳細的定義了多種活動之間可能的關係。目前 有許多定義活動間關係的研究提出[Atti93][Adam98],本研究不再於此 贅述,但這些活動間關係較為複雜、適用於特定狀況,所以本研究採用 較為一般化,且廣為工作流程管理系統所接受的平行活動獨立的假設。

另外,上述有許多連出去(outgoing)邊的活動,是一個分支(Split)的活 動,必有一相對應活動,有許多的連進來(incoming)的邊,可以將前面

A B C

A

B C

D

E

分支出去的邊合併(Join),如圖 4-2 中的活動 E。這兩個分支(Split)、

合併(Join)活動之間的部份流程,就視為一個區間(Block)。

當然,合併也有兩種情形,一種是必須等前面所有分支出去的流程皆執 行完成,才能往下執行,這種情形稱為 AND_Join。如圖 4-2 中活動 A 執 行後,活動 B、C 執行,而活動 E 必須等到活動 B、C 皆執行完成,才能 開始執行。另一種是只要前面所有分支出去的流程其中之一執行完成,

就可以往下執行,這種情形稱為 XOR_Join。如圖 4-2 中活動 A 執行後,

活動 B、C 執行,而活動 E 只要等到活動 B 或活動 C 執行完成,就可以開 始執行了。

3. 迴圈( Loop) :流程中的活動可以重覆執行,如圖 4-3 所示。活動 A 執 行完成後,執行活動 B,活動 B 執行完成後,會執行活動 C,當活動 C 執 行完成後,有 C→B、C→D 邊上的條件會被測試,若 C→B 邊上條件為”假”,

C→D 邊上條件為”真”,則執行活動 D。反之,則重覆執行活動 B、活動 C,

再測試條件,以此類推。因此活動 B、C 可能重覆執行多次。

圖<4-3>

如圖 4-3 中 C→B、C→D 邊上的控制條件,稱為迴圈條件,這兩個條件彼 此不交集,一個成立(為”真”),另一個必不成立(為“假”),且在迴圈執 行完成後測試。至於活動 B、活動 C,則構成迴圈的主體,也將迴圈主體 視為一個區間。在圖 4-3 中的迴圈主體(活動 B、活動 C),是順序執行的,

當然迴圈主體也可以是平行、迴圈(巢狀)的執行方式,如圖 4-4 所示。

圖<4-4>

A B C D

A B

C

D

E F

(a)

A B C E F

(b)

流程中,每一個活動會執行一段時間,當活動執行期間會留下一些事件 (event)記錄。事件是”瞬間(instantaneous)”發生的、沒有事件的發生時間相 同。在本研究中,並非記錄所有事件,而是對每一個活動,記錄這個活動的開 始(begin)、結束(end)、寫入(write)變數事件。其中的開始、結束事件,每一 個事件以三個資料項(3-tuple)來表示,記錄成[InsNo,AcNo,TS]。其中 InsNo 是流程例代號、AcNo 是活動代號,而 TS 則是這個事件發生的時間。因此就可 以將相同流程例、相同活動的開始、結束時間找出,整理如表 4-1 所示。由表 4-1,就可以得知每一個流程例中,各活動的開始、結束時間。本研究便以表 4-1 的資料作為第二節控制流萃取演算法的輸入資料,以找出流程定義(以有向圖表 示)。

Instance_No Activity_No Begin_time End_time 表<4-1>

而寫入變數的事件,則以四個資料項(4-tuple)來表示,記錄成

[InsNo,AcNo,VarName,Value]。其中 InsNo 是流程例代號、AcNo 是活動代號,

而 VarName、Value 則是這個事件所寫入變數的變數名稱和變數值。本研究記錄 了所有寫入事件的資料後,便以此作為第三節控制條件萃取演算法的輸入資料。

因此,在本研究中,首先由使用者列出流程中所有的活動,並假設每個流 程中都可以找到一個開始與結束的活動。如果實際上,流程中的開始活動(start activity)不只一個,則使用者可以加上一個空(null)的開始活動,並由這個空 的開始活動連至原來的開始活動。同樣的,若流程中的結束活動(end activity) 不只一個,則使用者可以加上一個空(null)的結束活動,並由原來的結束活動 連至這個新的結束活動,而使得流程中只有一個開始與一個結束活動。當使用 者列出所有的活動後,工作流程管理系統便可以去收集、記錄如前所述的事件 資料,本研究則試圖由這些資料,利用下節的演算法以找出流程定義。

在文檔中 Item 987654321/15890 (頁 28-31)

相關文件