工作流程


一個工作流程(workflow),就是你程式中一個行程的模型。它可以是「部落格主題從草稿、審核到發布」的進程。另一個例子是,當一位使用者提交一系列不同的表單以完成一個任務。類似的進程最好從你的models中脫離,而且應該在設定資訊中定義。

一個工作流程的 definition(定義) 包含places(位置)和actions(動作),以從一個位置來到另一個位置。 actions被稱為 transistions(過渡)。工作流程也需要知道每個物件在工作流程中的位置。那個 marking store 寫入了物件的一個屬性來記住目前位置。

上面的專有名詞一般被用來討論工作流程和 Petri nets

Workflow元件支援狀態機(state machines)。狀態機是工作流程的子集(subset),其目的是持有你的模型的一個狀態。在 工作流程作為狀態機 一文可以讀到更多的關於狀態機的不同和特定的功能。

範例 

最簡單的工作流程就是下面這種。它包括兩個places和一個transition。

777_simple.png

當用來描述一個真實業務時,工作流程可以是更複雜的。下面的工作流程描述了在job程式中進行填入的進程。

1485943055_74540_85131_job_application.png

當你填寫本例中的一個工作時,根據所要求的工作之不同,會有4到7步驟。某些工作需要性格測驗,邏輯測驗,以及/或需要使用者填寫正式的需求。另一些則不需要。 GuardEvent 用於在特定程式中決定「允許進行的下一步是什麼」。

透過像這樣定義一個工作流程,流程如何被展現就能知其大概。行程的邏輯並不與控制器、model層或view層混為一談。步驟(steps)的次序只能透過改變「設定資訊」才可以改變。