WWF 工作流程學習筆記(二)

來源:互聯網
上載者:User

在WWF中有兩種類型的工作流程,序列工作流程和狀態機器工作流程,和我一樣,許多剛接觸WWF的人可能比較迷惑,什麼時候該選擇序列工作流程,而什麼時候又該選擇狀態機器工作流程呢?

序列工作流程是最容易讓人理解的一種工作流程概念,比如挂號->看病->繳費->取藥這個流程是一個非常典型的序列工作流程,用Sequential工作流程模型可以很容易的為這種情景建模。

但是,現實中還有一些流程可能不會這麼簡單,考慮一個缺陷管理系統,當測試人員發現了一個BUG,建立一個缺陷,然後將它分配給某開發人員,然後他解決了改BUG,然後返回給測試人員進行迴歸測試,測試人員確認該BUG被解決後,關閉該缺陷。該情景看起來和挂號看病的流程很類似。但是,現實情景很可能是這樣的,測試人員發現了BUG,將它分配給開發人員Bill,而Bill在看了該Bug後說:這不是我的問題,這是Clive的。然後將該Bug重新分配給了Clive。或者Bill說,是測試人員弄錯了,這根本就不是一個Bug。然後拒絕了該Bug。或者Bill請測試人員提供更詳細的資訊。或者,Bill今天心情很好,處理了該Bug。或者原始的測試人員出去了,被另外一個測試人員接手該Bug的迴歸。或者該測試人員失誤開啟了一個不應該被開啟的缺陷等等。每一個參與者都有可能在一堆選擇中做出一個跳到任意一個其它的步驟。請問如何設計該序列工作流程?

面對這樣的問題,使用狀態機器工作流程就會是一個更好的選擇。可以將Bug的每個狀態設定為一個環節(Stage),工作流程的行為就是在各個狀態之間進行轉換。你可以非常容易的使用State Machine Workflow來為這個流程建模。

那麼,什麼情況下使用何種類型的工作流程有沒有一個簡單的評判依據呢?

Cave給出了一個簡單的判斷標準:影響工作流程的一些重要的選擇是否發生在工作流程外部(out of workflow)?是否由使用者進行控制?假如是,那麼採用序列工作流程的概念來建模將是一件非常讓人頭疼的工作。而狀態機器工作流程則比較期望工作流程的狀態選擇發生在工作流程的外部。

那麼為什麼狀態機器工作流程會更加適合這種情況?根本原因在於序列工作流程在本質上是對工作流程的路徑建模,將路徑資訊都編碼到了模型之中。但是在某些時候,我們並不關心工作流程的路徑,我們只關心當前的工作流程狀態,並且有哪些可能的選擇會跳轉到某個另外的狀態。假如一定要用序列工作流程來描述這種情形,那麼會畫出許多複雜的路徑流程,但是這些複雜的路徑卻並非我們所關注的問題域。造成了開發成本的浪費。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.