1 工作流是什麼?
爲了實現某個業務目標,利用計算機在多個參與者之間按某種預定規則自動傳遞文檔、信息或者任務。
2 分類
業務流、審批流
3 解決方案
Workflow、BPM、Activity
二 工作流服務
1 對外接口
1 流程定義的導入導出,爲不同的流程定義提供商定義了一個接口規範。
2 用戶接口,工作流系統必須提供與用戶交互的通道
3 外部應用接口,調用外部應用所需要的接口
4 不同工作流系統之間的接口,跨系統、跨服務器之間的數據接口
5 管理和監視,用戶管理和監控系統運行狀態,查看歷史記錄等數據。
2 核心業務
RepositoryService:用於設計流程模板。
RuntimeService:每當一個流程定義被啓動一次之後,都會生成一個相應的流程對象實例。Runtime Service 提供了啓動流程、查詢流程實例、設置獲取流程實例變量等功能。
TaskService:流程定義中的每一個執行節點被稱爲一個 Task,對流程中的數據存取,狀態變更等操作均需要在 Task 中完成。
IdentityService:工作流內置了用戶以及組管理的功能,必須使用這些用戶和組的信息才能獲取到相應的 Task。
ManagementService:Management Service 提供了對流程引擎的管理和維護功能,這些功能不在工作流驅動的應用程序中使用,主要用於工作流系統的日常維護。
HistoryService: History Service 用於獲取正在運行或已經完成的流程實例的信息,與 Runtime Service 中獲取的流程信息不同,歷史信息包含已經持久化存儲的永久信息,並已經被針對查詢優化。
FormService: 工作流中的流程和狀態 Task 均可以關聯業務相關的數據。通過使用 Form Service 可以存取啓動和完成任務所需的表單數據並且根據需要來渲染表單。
三 持久化
1 持久化方式
XML、數據庫
2 持久化數據庫
四 工作流宿主
1 WorkflowInvoker提供調用工作流的簡單方法,我們使用WorkflowInvoker對象時,就像使用一個普通方法一樣創建和啓動工作流,並且只能用於不使用持久化的工作流;
2 WorkflowApplication對象爲執行工作流提供了更加豐富的模型,包括生命週期事件通知、執行控制、書籤恢復和持久化等;
3 WorkflowServiceHost爲消息傳遞活動提供支持,一個工作流主機可以管理多個工作流實例,用於工作流遠程調用。
五 設計時描述
設計時描述類:每個流程以IWfProcess來表示,在流程中我們會有很多的活動點,但是起始點和終結點只有一個.所以流程的描述會有一個起始點描述,多箇中間活動點描述和一個終結點描述.這些活動點上可能有一些流轉時的限制條件,所以我們還需要條件的描述.
但是隻有這些內容不足以完整的定義一個流程,因爲缺少流程的流向,即活動點之間的關係.所以我們還需要線描述來聯結活動點,說明活動點的先後順序.線的流轉也可能會有一些條件的判斷和限制,比如說當金額超出時流轉到活動點1,否則流轉到活動點2.這樣我們就可以完整地描述一個流程,並將其保存至數據庫或文件.
六 運行時實例
運行時實例:流程的運行時對象與設計時對象相比,多了一些操作和流程的起始結束時間,創建者,操作者,分派人,候選人等信息,流程運行的操作包括流轉到下一活動點,撤回到已有活動點,取消流程,流程結束.這些操作都由流程的實例來完成.活動點實例檢查是否可以流轉,受到活動點條件描述或線條件描述的制約.
七 運行環境
1 運行時的參數
WfProcessStartupParams
流程啓動參數包含流程創建人,分派人等信息持有一個流程描述.
WfRuntimeParameters
流程啓動參數,定義是否加載Action
WfTransferParams
流程流轉時參數包含分派人以及操作人.持有下一活動點的描述.持有下一活動點的入線描述.持有WfBranchProcessTransferParams集合,爲只讀屬性.由描述文件自動生成
WfBranchProcessTransferParams
子流程啓動參數,持有子流程描述,持有WfBranchProcessStartupParams集合
WfBranchProcessStartupParams
每一種分支流程的啓動參數,包括分派人集合信息.
2 流程執行上下文
WfProcessActionContext
在工作流的運行環境中用來存放一些行爲和操作,流程的流轉,撤回,通知相關人員等操作都需要使用 WfProcessActionContext中的一些數據或操作.
3 流程實例管理器
WfRuntime
前面我們在啓動流程時使用過WfRuntime類, 通過WfRuntime來管理所有運行中的流程實例。該類提供了流程實例的裝載,保存,刪除以及啓動新流程實例的功能.它持有一個很重要的對象,就是WfProcessActionContext,在WfRuntime中它的生命週期是單次會話,即緩存在ContextCacheQueue中,很多方法都要訪問WfProcessActionContext來完成。
八 前臺框架
介紹前臺幾個模塊之間的關係
九 執行控制
1 表單數據
2 持久層
3 控件
4 事件
1 工作流執行時觸發的事件
1 Aborted工作流中止時觸發的事件
2 Completed工作流完成時觸發的事件
3 Unloaded 工作流卸載時觸發的事件
4 Idel 工作流進入空閒狀態時觸發的事件
5 PersistableIdle工作流進入空閒狀態並且可被持久化時執行的事件
2 客戶選擇觸發的事件
<span style="font-size:18px;"> public event MoveToEventHandler BeforeMoveTo;
public event MoveToEventHandler AfterMoveTo;</span><span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-size:18px;">
public event ExecutorEventHandler BeforeExecute;
public event ExecutorEventHandler PrepareApplicationData;
public event PrepareTasksEventHandler PrepareMoveToTasks;
public event PrepareTasksEventHandler PrepareNotifyTasks;
public event PrepareUserOperationLogEventHandler PrepareUserOperationLog;
public event ExecutorEventHandler SaveApplicationData;
public event ExecutorEventHandler AfterSaveApplicationData;
public event ExecutorEventHandler AfterModifyWorkflow;
public event ErrorEventHandler Error;</span>