OSWorkflow 工作流的入門知識點.

悠悠隱於市發表於2011-01-28

一、工作流框架的選擇
由於開源的流行我們可以有更多的選擇,這給我們帶來了很多的方便,好處多多不用說了,但也給我們帶了了一些麻煩,用Java 的人都瞭解,百家爭鳴讓人眼花繚亂,一個重要的事情是選擇,哪一個適合自己,或者說你更喜歡哪一個。選擇也是一個難題。選擇的好能節省很多時間,少走彎路。
在這個問題上我沒有選擇,因為我不是這個方面的主要負責人,框架的選擇已經定下來了,OSWorkFlow.這對我也許是個好訊息,因為我不需要再在大量的框架中去選擇,只需要專一於一個,省去大量的時間。
三、OSWorkFlow主要優勢
OSWorkflow 給你絕對的靈活性。OSWorkflow 被認為是一種“低階別”工作流實現。與其他工作流系統能用圖示表現“Loops(迴路)”和“Conditions(條件)”相比,OSWorkflow 只是手工“編碼(Coded)”來實現的。但這並不能說實際的程式碼是需要完全手工編碼的,指令碼語言能勝任這種情形。OSWorkflow 不希望一個非技術使用者修改工作流程,雖然一些其他工作流系統提供了簡單的 GUI 用於工作流編輯,但像這樣改變工作流,通常會破壞這些應用。所以,進行工作流調整的最佳人選是開發人員,他們知道該怎麼改變。不過,在最新的版本中,OSWorkflow 也提供了 GUI 設計器來協助工作流的編輯。

OSWorkflow 基於有限狀態機概念。每個 state 由 step ID 和 status 聯合表現(可簡單理解為 step 及其 status 表示有限狀態機的 state)。一個 state 到另一 state 的 transition 依賴於 action 的發生,在工作流生命期內有至少一個或多個活動的 state。這些簡單概念展現了 OSWorkflow 引擎的核心思想,並允許一個簡單 XML 檔案解釋工作流業務流程。

上邊這段話是從OSWorkFlow的教程中得到的,總結一下,OSWorkFlow是基於xml手工配置的,它特點是靈活,它認為工作流的調整應該是程式設計師的事情。
四、OSWorkFlow核心概念
步驟(Step)
    一個 Step 描述的是工作流所處的位置。可能從一個 Step Transtion(流轉)到另外一個 Step,或者也可以在同一個 Step 內流轉(因為 Step 可以通 Status 來細分,形成多個State)。一個流程裡面可以多個Step。

狀態(Status)
    工作流 Status 是用來描述工作流程中具體Step(步驟)狀態的字串。OSWorkflow 的有 Underway(進行中)、Queued(等候處理中)、Finished(完成)三種 Status。一個實際State(狀態)真正是由兩部分組成:State = (Step + Status) 。

流轉(Transtion)
    一個State到另一個State的轉移。

動作(Action)
    Action 觸發了發生在 Step 內或 Step 間的流轉,或者說是基於 State 的流轉。一個 step 裡面可以有多個Action。Action 和Step 之間的關係是,Step 說明“在哪裡”,Action 說明“去哪裡”。 一個 Action 典型地由兩部分組成:可以執行此Action(動作)的
Condition(條件),以及執行此動作後的 Result(結果)。    

條件(Condition)
類似於邏輯判斷,可包含“AND”和“OR”邏輯。比如一個請假流程中的“本部門審批階段”,該階段利用“AND”邏輯,判斷流程狀態是否為等候處理中,以及審批者是否為本部門主管。

結果(Result)
Result 代表執行Action(動作)後的結果,指向新的 Step 及其 Step Status,也可能進入 Split 或者 Join。Result 分為兩種, Contidional-Result (有條件結果),只有條件為真時才使用該結果,和 Unconditional-Result(無條件結果),當條件不滿足或沒有條件時使用該結果。

分離/連線(Split/Join)
流程的切分和融合。很簡單的概念,Split 可以提供多個 Result(結果);Join 則判斷多個 Current Step 的態提供一個 Result(結果)。

好了,到這裡,工作流的一個概貌是出來了。在下邊的文章中會以OSWorkFlow為例來進入工作流的天地。

相關文章