• 沒有找到結果。

控制條件萃取演算法

在文檔中 Item 987654321/15890 (頁 46-52)

第四章 .萃取演算法

第三節 控制條件萃取演算法

利用演算法 1、2,可以得到一個有向圖,來表示流程中各活動執行的順序 關係。除了這些執行順序關係,如第一節流程模式所說明的,有向圖中的每一 個邊都附有一個布林函數,當一個活動執行完成後,這個活動所有連出去的邊 上的布林函數都會被計算,只有當各邊的布林函數值為”真”時,這個邊所連的 下一個活動才會被執行。所以流程的定義,除了要考慮上述的活動執行順序外,

也須考慮這些布林函數。

當一個活動執行時,會參考、修改許多的資料,這些資料稱為參考資料 (relevant data),這些資料會被記錄在前述寫入變數事件(write event)中。

當這個活動執行完成後,就會依這些參考資料的值,求算所有連出去邊上的布 林函數值,來決定如何執行下一個活動。所以,可以選取流程例資料中,(1)一 個活動的參考資料值和(2)該活動執行完成後,所有相連活動被執行的集合,組 成分析資料,利用一些分類的方法,找出參考資料值落在那些值域時,各連出 去邊上的布林函數值為”真”,也就是找出參考資料值落在那些值域時,下一個 活動會被執行。

將上述想法說明,整理成演算法 3 如下:

Algorithm3

10. For each activity in G, which has more than one outgoing edge 20. For each outgoing edge(u,v)

{

30. let edge_condition_data=φ 40. For each instance

{

50. read activity data from activity u to next activity u (or last activity of the instance)

{

60. IF activity u has outgoing edge (u,v)

THEN insert a record (variable values, P) to edge_condition_data Else insert a record (variable values, N) to edge_condition_data }

}

70. call any classification procedure, edge_condition_data as input, to decide outgoing rules of the outgoing edge(u,v)

}

我們可以用圖 4-2 的例子來說明演算法 3。在圖 4-2 中,活動 A 執行完成 後,有三個連出去的邊 A→B、A→C、A→D。設活動 A 有一個參考資料:

V1(0<V1<100,V1 是整數)。設表 4-2 為 10 個流程例中,所收集活動 A 的參考資 料(V1)值(如表 4-2 中”V1”欄所示)與各流程例中,活動 A 執行完成後,所執行 相連活動的集合(如表 4-2 中”執行活動”欄所示)。

V1 執行活動 活動 B 活動 C 活動 D

95 B P N N

85 B P N N

75 B P N N

65 B、C P P N

55 C N P N

45 C N P N

35 C、D N P P

25 D N N P

15 D N N P

5 D N N P

表<4-2>

在表 4-2 中,有些 V1 值會導致二個以上的活動被執行,如當 V1 值為 65 時,

活動 B、C 都會被執行,V1 值為 35 時,活動 C、D 都會被執行。所以,若利用 分類方法來分類時,這兩筆資料無法直接判斷(這是因為一般分類方法,是利用 資料的屬性與資料的類別作為輸入,判斷在那些屬性組合下,資料會屬於那一 個類別。因此,同一屬性組合的資料,只能屬於同一類,否則就無法判斷了)。

因此,我們將上述分類問題轉成多重決策(multi decision)的問題。因為在第 一節流程模式中,本研究定義,當活動有數個連出去(outgoing)的邊時,每一 個邊上的布林函數都必須被測試,以決定所連的下一個活動是否執行。而且,

這些布林函數測試結果是獨立的,不受其它布林函數的成立與否所影響。

另外,在第一節流程模式中,我們也定義循序執行的活動,連出去邊上的 布林函數值都是”真”(因為活動是依序執行的),所以只要考慮那些有超過一個 以上連出去邊的活動(代表這個活動執行完成後,進入平行的執行流程)就可以 了。因此,圖 4-2 在演算法 3 中,行號 10 只考慮連出去邊在二個以上的活動 A。

接著,行號 20,依序考慮活動 A 的每一個連出去邊 A→B、A→C、A→D。首先考 慮 A→B 邊,在表 4-2 中(即行號 40,每一個流程例中),當 V1 值為 95、85、75、

65 時,活動 B 會執行,所以這些設為”P”類,都會加入(V1 值,P)到

edge_condition_data 中。而 V1 值為 55、45、35、25、15、5 時,活動 B 不會 執行,所以設為”N”類,都會加入(V1 值,N)到 edge_condition_data 中,分類 如表 4-2 中”活動 B”欄所示(這些加入資料到 edge_condition_data 的動作,在 行號 60 執行)。所以此時的 edge_condition_data 如表 4-3”B”所示。

B C D

**EXAMPLE FILE**

%V1 Cond_B 95 P;

**EXAMPLE FILE**

%V1 Cond_B 95 N;

**EXAMPLE FILE**

%V1 Cond_B 95 N;

接下來,只要把表 4-3 的資料,透過一些分類(classification)方法來分 類就可以了(行號 70)。例如 cn2[Clar89],分類後的結果如表 4-4 中”Condition rule B”欄所示。由表 4-4 的”Condition rule B”欄,可以很容易地看出,當 V1 值大於 60 時,A→B 邊上的布林函數會為”真”。

Condition rule B Condition rule C Condition rule D

*---*

|UN-ORDERED RULE LIST|

*---*

(DEFAULT) condition = N [4 6]

*---*

|UN-ORDERED RULE LIST|

*---*

(DEFAULT) condition = N [4 6]

*---*

|UN-ORDERED RULE LIST|

*---*

(DEFAULT) condition = N [4 6]

表<4-4>

同樣的方法,回到行號 20,對活動 A 的 A→C 邊來考慮。所產生的分類如 表 4-2”活動 C”欄所示,而產生的 edge_condition_data 如表 4-3”C”欄所示,而 分類後的結果如表 4-4”Condition rule C”欄所示。同樣的,再次回到行號 20,

對活動 A 的 A→D 邊來考慮。所產生的分類如表 4-2”活動 D”欄所示,而產生的 edge_condition_data 如表 4-3”D”欄所示,而分類後的結果如表 4-4”Condition rule D”欄所示。透過上述方法,就可以知道 V1 值落在某個值域時,活動 B、C、

D 是否會被執行了。

但是流程中可能會有迴圈,也就是說在每個流程例中,連出去邊數大於 1 的活動 u,可能執行一次以上。以圖 4-16、4-18 的例子來說明,圖 4-18 中連出

去邊數大於 1 的活動只有活動 C,因此以活動 C 來說明。活動 C 執行完成後可 能執行活動 B(迴圈重覆執行)或執行活動 D(離開迴圈)。所以活動 C 可能執行一 次以上,在圖 4-16(b)的流程例中,活動 C 即執行二次。第一次,活動 C 執行 完成後 C→B 邊的條件為真,所以執行活動 B。而第二次,活動 C 執行完成後,

C→D 邊上的條件為真,因此執行活動 D,也就是結束迴圈。所以,在同一個流 程例中,活動 C 可能執行一次以上,而且每一次活動 C 執行完成後,會選擇連 出去邊上條件為”真”的下一個活動來執行。因此,從同一個流程例中,活動 C 執行後究竟執行活動 B 還是活動 D,可能就可以得到數次的資料。

那麼怎麼辨別同一個流程例中各次的資料呢?以圖 4-16(b)為例,只要判 斷活動 C 執行完成後至下次活動 C 執行之前(或這個流程例結束),在這個區間 內所執行的活動是否有活動 B 或活動 D 就可以了,概念如圖 4-25 所示。所以利 用圖 4-25,可以知道在圖 4-16(b)的流程例中,第一次活動 C 執行之後,執行 活動 B(若對 C→B 邊來考慮時,將[參考資料,P]加入 edge_condition_data 的 檔案中,也就是說對 C→D 邊來考慮時,將[參考資料值,N]加入

edge_condition_data 的檔案中)。而第二次活動 C 執行之後,執行活動 D(若對 C→B 邊來考慮時,將[參考資料,N]加入 edge_condition_data 的檔案中,也就 是說對 C→D 邊來考慮時,將[參考資料值,P]加入 edge_condition_data 的檔 案中)。這個概念如行號 50 所表示。而利用這個方式,就可以將迴圈條件視為 一般的平行分支條件了。也就是說,只要考慮迴圈重覆執行將使得某些活動執 行一次以上,所以將同一個流程例分隔成數次活動執行的條件就可以了。

圖<4-25>

最後,如果針對一個有許多連出去邊的活動,所找出來各邊的布林函數為”

真”的參考資料值域完全相同時,這個分支點是 AND(因為每一組參考資料值都 會使所有連出去邊的布林函數為”真”)。如果值域部份重疊時,這個分支點是

A

B

C

D B

C

第一次活動C執行 完成後執行活動B

第二次活動C執行 完成後執行活動D

OR(因為某些參考資料值會使部份連出去邊的布林函數為”真”),當然,如果值 域完全不相同時,這個分支點是 XOR(因為每一組參考資料值都只會使一個連出 去邊的布林函數為”真”)。

在文檔中 Item 987654321/15890 (頁 46-52)

相關文件