本書全文連載地址
四、拉模式
與推模式相比,拉模式的區別在于動作的主語發生了變化:推模式的主語是系統,由系統將工作項推送至資源的工作項列表,那么,接下來的主動權交由單個資源本身,由其拉動工作項的執行。
圖 5-28
如圖5-17所示,拉模式對應著工作項的五種狀態變遷:
由提供給一個資源拾取到指派給一個資源負責執行,這意味著該資源拾取了該工作項,其將負責該工作項的執行,并將在未來的某個時候執行該工作項;
由提供給多個資源拾取到指派給一個資源負責執行,這意味著多個資源中的一個資源拾取了該工作項,其將負責該工作項的執行,并將在未來的某個時候執行該工作項,余下的資源將不再有機會執行該工作項;
由提供給一個資源拾取到開始執行,這意味著該資源拾取了該工作項,其將負責該工作項的執行,并立即開始執行該工作項;
由指派給一個資源負責執行到開始執行,這意味著該資源開始執行該工作項;
由提供給多個資源拾取到開始執行,這意味著多個資源中的一個資源拾取了該工作項,其將負責該工作項的執行,并立即開始執行該工作項,余下的資源將不再有機會執行該工作項;
拉模式共有6種,分為兩組:前三種模式關注工作項的狀態變遷;后三種模式關注工作項顯示在資源工作項列表里的順序以及選擇執行的方式。
1、資源驅動指派(WRP_21: Resource-Initiated Allocation)
描述
資源能夠將工作項指派給自己,負責該工作項的執行,但是不必馬上開始執行該工作項。
圖 5-29
如圖5-29所示,員工甲拾取了可拾取列表里的任務A工作項,該工作項由可拾取列表移至待辦列表。可拾取列表通常是一個共享的列表,而待辦列表則是某一資源的專屬列表。資源拾取工作項,意味著工作項從共享狀態進入到專屬狀態。
該模式實際對應著工作項的兩種狀態變遷:由提供給一個資源拾取到指派給一個資源負責執行;由提供給多個資源拾取到指派給一個資源負責執行。
應用
該模式符合大多數的工作場景,我選擇負責執行該工作,但我并不馬上開始,我可能還有其他的工作需要處理,等到處理完畢后才處理該工作。
實現
分配給角色、部門等資源組的工作項通常都以共享的形式分配給所有的組內成員,一旦有人拾取即進入他的專屬待辦列表,其他人不再可見。
2、資源驅動執行-指派工作項(WRP_22: Resource-Initiated
Execution – Allocated Work Item)
描述
資源能夠開始執行指派給其的工作項。
圖 5-30
如圖5-30所示,員工甲開始執行任務A工作項,該工作項由待辦列表移至辦理列表。
該模式對應著工作項的一種狀態變遷:由指派給一個資源負責執行到開始執行。
實現
最基本的工作項狀態變遷,所有的工作流系統都提供支持。
3、資源驅動執行-提供工作項(WRP_23:
Resource-Initiated Execution – Offered Work Item)
描述
資源能夠選取提供給其的一個工作項,并馬上開始執行該工作項。
圖 5-31
如圖5-29所示,員工甲拾取了可拾取列表里的任務A工作項并立刻開始執行,該工作項由可拾取列表移至辦理列表。
該模式對應著工作項的兩種狀態變遷:由提供給一個資源拾取到開始執行;由提供給多個資源拾取到開始執行。
應用
與描述略有不同,實際應用該模式是強制要求資源一旦拾取了共享的工作項就必須馬上開始執行,基于兩點的考慮:一是工作項能夠盡快執行;二是工作項能夠指派給當前最為空閑的資源,不會出現該工作項被一繁忙資源卡住,造成等待和阻塞。
在敏捷開發里,我們使用故事卡管理項目的開
發,故事卡足夠小(如果大的故事卡則分解為多個任務),每天早上由開發人員挑選移動該卡,一旦該卡由可開發狀態移動至開發狀態,則必須進行該卡的開發工
作,這樣項目的真實進展隨時得到顯示,同時不允許一個開發人員同時進行多張卡的開發。
實現
通過這三個模式我們可以發現,工作流系統實現這些模式只是在不同的工作項列表里移動這些工作項,以反映工作項不同的狀態和變遷策略,這對于IT系
統而言這不是很困難,困難在于如何能保證人確實是這么做的,例如說一旦拾取就必須開始執行,工作項的跳轉很簡單,但無法保證的是拾取該工作項的人一定會按
照要求馬上開始執行該工作項,也就是說業務流程項目的實施不僅僅包含技術實施,也包含了一套與之相應的管理實施。那種期望上一套流程系統就能馬上提高生產
效率和管理水平顯然是不現實的,其中一定包含管理方式的變化和組織機構的變化。
敏捷開發中,早上的站立會議是重要的部分,每個團隊成員都會匯報昨天的進展和今天將要進行的工作,這樣就保證了工作執行的有效性。
4、系統決定工作隊列內容(WRP_24:
System-Determined Work Queue Content)
描述
工作流系統能夠排定資源工作項列表里的工作項順序和內容。
圖 5-32
如圖5-32所示,員工甲共享的可拾取列表默認按時間排序工作項。
應用
實際應用中工作項的排序條件非常多,其目的就是將最重要或優先級最高的工作項排在最前面,引起資源的注意或優先執行。
實現
實際實現時有多種排序策略,通常會有時間排序,例如先進先出、先進后出等,同時也有很多其他的排序元素,例如工作項的預定完成時間、執行該工作項的成本預算、工作項的優先級或重要程度等,系統查詢工作項時根據這些影響因素進行默認排序。
5、資源決定工作隊列內容(WRP_24:
Resource-Determined Work Queue Content)
描述
資源能夠排定其工作項列表里的工作項順序和內容。
應用
為資源提供一定程度上排定工作項的靈活性。每個人關注的視角和側重點不同,就會產生不同的排序和內容過濾。
例如,作為老板,我可能更為關注各個工作的成本預算,我需要按成本排定各項工作;而作為秘書,我更為關注老板下發各項工作的重要程度,我需要按老板指定的重要程度排定工作。
實現
提供工作項列表的客戶端排序,一般情況下列表顯示系統給定的順序,用戶可以在客戶端進行二次排序,典型的Web系統中,工作流系統提供JavaScript的表格控件,利用Ajax異步請求重新排序或進行工作項的過濾。
6、自主選擇(WRP_26:
Selection Autonomy)
描述
資源能夠根據自己個人的情況選擇執行工作項。
圖 5-32
如圖5-32所示,員工甲能夠根據自己的情況選擇執行任務A、B、C中任意一個工作項。
應用
盡管老板要求先實現功能最后再重構,但是我認為當前代碼如果不進行一定重構會嚴重影響后續的開發效率,所以我決定先進行部分重構。
實現
幾乎所有工作流系統都不會對用戶實際選擇執行工作項的方式進行限制,也沒有辦法限制。但是系統一般會把重要的工作項加以高亮顯示,讓用戶優先選擇。
http://www.tkk7.com/ronghao 榮浩原創,轉載請注明出處:)
posted on 2009-11-01 20:48
ronghao 閱讀(1437)
評論(0) 編輯 收藏 所屬分類:
Head First Process-深入淺出流程