以上是描述新增加一項資源時的檢驗演算法,在實作資源串列時採用雙向 鏈結配合雜湊表,則查詢資料串列時僅需O(1)時間,效能僅與回溯長度有關,
以Figure 7 回溯長度最長的 worst case 而言,整體的時間複雜度為 O(n),雖然
看似與互動式分析的時間複雜度一樣,但實際上對遞增式分析而言,此O(n)表 示回溯的 processes 數,並不等於需要計算的 processes 數,需要計算的部分僅 是回溯路徑上的AND-SPLIT 個數。詳細的時間複雜度討論將留待第五章當中。
Chapter 4. 考慮時間因素的資源分配限制分析
第三章的分析工作,並未加入時間因素的考量。實際上,若是工作流程規 格在定義時,無法確切得知所有activity process 的工作時間區段的話,就無法 加入時間因素的分析,只能採用第三章的分析方法去判斷一個 activity process 的異動。本章假設各activity process 的最小完成工作時限、最大完成工作時限 (min. and max. time durations) 能夠在設計階段時清楚定義,且 control processes 與flows 無需消耗額外的時間的前提下,對 activity process 編輯分析加入時間因 素的考量。
4.1 考慮時間因素的 activity process 編輯與影響
對於activity processes 可編輯的操作而言,就會產生以下五種情況: (1) 新 增插入activity process, (2) 刪除 activity process, (3) 增加 activity process 某 項參考的資源, (4) 刪除了 activity process 某項資源, (5) 修改 activity process 工作時限 (durations)。
考慮時間因素的情況下,使得(1)(2)的情況變得較複雜,因此將(1)(2)的討 論置於修改activity process 的工作時限內容之後討論。至於增加或是刪除已存 在activity process 的某項資源,其所帶來的影響分析,與不考慮時間因素的情 況下,檢驗法相似,僅是多加入EST 與 LET 的計算,根據 2.4.3 節中資源衝突 定義的第三個條件,EAI overlapping,求出更精確的潛在資源衝突。
就更動工作時限而言,不僅會引發資源衝突的增加或消除,也可能會影響 到其descendent processes。假設一個被異動的 activity process a 原先的最小工作
限改為 D’。在正常的改變下,意即 d’≤ D’,則可分為以下四種基本情況探討:
(1) D’ > D
a 的工作時限最大值增加,根據 2.4.3 節中 LET 的定義,意味著 LET(a) 延後,且所有 a 的 descendant processes 皆因此可能增加 LET 值。LET 的延後造成EAI 變寬,須對這些受影響的 processes 做檢驗,以判斷新 產 生 的 資 源 衝 突 。 這 種 影 響 會 直 到 End node , 或 者 直 到 某 一 個 descendent process 的 LET 與 LET’不再有變化為止。LET 不再有變化的 情況乃是該process 處在一個 AND-JOIN 或 XOR-JOIN 後,而原先產生 LET 變化的路徑在 JOIN 後不是最大值。
(2) D’ < D
a 的工作時限最大值減少,意味著 LET(a) 變小,根據定義,意味著所 有 a 的 descendant processes 因此可能降低 LET 值,EAI 因此變窄,分 析有哪些已存在的潛在資源衝突的情況因此消除。這種影響會直到End node,或者直到某一個 descendent process 的 LET 與 LET’不再有變化為 止。
(3) d’ > d
a 的工作時限最小值增加,根據定義,意味著所有 a 的 descendant processes 因此可能增加 EST 值,EAI 因此變窄,需分析有哪些已存在 的潛在資源衝突會因此消除。這種影響會直到 End node,或者直到某 一個descendent process 的 EST 與 EST’不再有變化為止。
(4) d’ < d
a 的工作時限最小值減少,根據定義,意味著所有 a 的 descendant processes 因此可能降低了 EST 值,EAI 因此變寬,必須檢驗會有哪些 新的潛在資源衝突情況發生。這種影響會直到 End node,或者直到某 一個descendent process 的 EST 與 EST’不再有變化為止。
Figure 8 Changing durations of a process
因此可以根據上述規則,判斷 d → d’ 與 D → D’ 的變化,是否該做資源 衝突的檢驗。Figure 8 用圖例來說明,工作時限異動對 activity process 以及其 後的 descendant processes 所產生的連續影響。
當一個activity process a 被新增、置入一個流程定義的結構當中,假設其 parent process 為 a0,child process 為 a1 。由於是新增的 process,其工作時限 的設定 (d(a) > 0, D(a) > 0) ,故勢必會造成 a1的工作時間區段受到影響,我們 以 EST’(a1) 與 LET’(a1) 表示異動後 a1 的最早開始工作時間與最晚工作結束 時間,根據定義:
原先 EST(a1) = EST(a0) + d(a0) 原先 LET(a ) = LET(a ) + D(a );
a a1
d’ < d
an
EAI
D’ > D
EST(a) LET(a) EST(a1) EST(LET(a1) an)
D’ < D
d’ > d
LET(an)
EST’(a1) = EST(a) + d(a) = EST(a0) + d(a0) + d(a) = EST (a1) + d(a) > EST(a1) LET’(a1) = LET(a) + D(a1) = LET(a0) + D(a) + D(a1) = LET(a1) + D(a) >
LET(a1)
除了 a 本身有可能造成新的潛在資源衝突外,由上述式子可以發現 a1 的 EST 延遲了 d(a),而其 LET 延遲了 D(a)。如此連鎖效應,對所有 descendant processes 的工作時間區段都產生兩種影響,第一種影響是這些 descendant processes 的 EST 皆延遲了 d(a),可能因此消除了某些已存在的資源衝突,而第 二種影響延遲了最晚工作結束時間,也就是說多出來的 D’(a) – D(a) 的這段時 間就可能與某個 activity process 產生了潛在資源衝突。當新增一個 activity process a 時,除了 a 本身的檢驗外,由於影響了接續其後的 descendant processes,檢驗工作必須逐個執行。
若是從工作流程規格的結構當中刪去一個 activity process a,則可視為此 process 改變成為一個空的 (null) process,也就是說,d → d’=0 與 D → D’=0,
假設其 parent process 為 a0,觀察其child process a1的 EST’ 與 LET’ 的變化:
原先 EST(a1) = EST(a) + d(a) = EST(a0) + d(a0) + d(a) 原先 LET(a1) = LET(a) + D(a1) = LET(a0) + D(a) + D(a1) 刪除 process a 於 a0與a1間後:
EST’(a1) = EST(a0) + d(a0) < EST(a1) LET’(a1) = LET(a0) + D(a1) < LET(a1)
EST’ (a1) 的提早,造成 descendant processes 的工作時間區段可能與其他 processes 發生潛在資源衝突,LET’(a1) 的提早也可能消除一些既有的資源衝 突。而a 後的所有 descendant processes 都會受到這種連鎖效應的影響,因此刪 除activity process,也要對其後接續的所有 processes 進行資源衝突增減的分析。
4.2 考慮時間因素的互動式檢驗演算法
Boolean T_OBD(workflow specification ws, process n) 1 {
2 flow queue P=φ; // flows of parallel paths of n 3 if (n.TYPE=ACTIVITY) and (R(n)≠φ) then
4 {
5 P = COLLECT_Parallel-Path(ws,n);
6 while P≠φ
21 if (T_OBD(ws,n’)=FALSE) then return FALSE;
22 return TRUE;
23}