workflow engine
TRANSCRIPT
![Page 1: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/1.jpg)
WorkflowEngine.NET 介紹功能與實作方式介紹
![Page 2: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/2.jpg)
2
Agenda
基本架構介紹
工作流程設計方式說明
流程控制方式說明
![Page 3: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/3.jpg)
3
基本架構介紹 – 優點
易於部署的架構
便利的流程設計辦法
即時 (real time)變動、獨立設計多個流程
![Page 4: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/4.jpg)
4
易於部署的架構
1.
透過引用 Workflow Engine .NET 的DLL ,執行提供的流程方法,便可完成流程功能的實作。
2.
可以結合 Code first 等方式,建立工作流程相關的 Table 於資料庫內。
3.
可以結合 .NET Identity 功能,完美整合使用者相關資訊。
![Page 5: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/5.jpg)
5
便利的流程設計辦法
1.
透過網頁即可進行工作流程的關卡、流程路線設計出流程 XML 檔案。
( 設計功能須付費才可使用 )
2.
同時支援透過 T4 範本設計工作流程XML 。
![Page 6: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/6.jpg)
6
即時 (real time) 變動、獨立設計多個流程
1.
由於透過 XML 內容作為流程的依據,意味著更動 XML 內容,即可達到即時變動流程的效果。
2.
可以獨立設計不同的流程 XML , 透過不同的 IWorkflowBuilder 介面進行切換。
工作流程 B
工作流程 C
工作流程 A
![Page 7: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/7.jpg)
7
工作流程設計方式說明
1.OptimaJet.Common.dll
2.OptimaJet.Workflow.Core.dll
3.OptimaJet.Workflow.DbPersistence.dll
4.log4net.dll (version 1.2.10.0 only)
Step 1. 加入參考元件
1.WorkflowProcessScheme
2.WorkflowProcessInstance
3.WorkflowProcessInstancePersistence
4.WorkflowProcessTransitionHistory
5.WorkflowProcessInstanceStatus
6.WorkflowRuntime
7.WorkflowScheme
Step 2. 加入Workflow相關的資料表
1.建立WorkflowRole類別2.建立WorkflowRule類別3.建立WorkflowInit類別4.建立WorkflowActions類別
Step 3. 加入WorkflowRuntime的設定
Step 4. XML流程設計
![Page 8: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/8.jpg)
8
工作流程設計方式說明 :Step 2. 加入 Workflow 相關的資料表
# Name Description
1 WorkflowProcessScheme 紀錄流程被建立時的 Scheme快照2 WorkflowProcessInstance 紀錄流程主要資訊,例如當前狀態、先前狀態…等3 WorkflowProcessInstancePersistence 紀錄流程設計中參數為 Persisted的變數資料4 WorkflowProcessTransitionHistory 紀錄流程關卡或狀態轉換的歷史資訊5 WorkflowProcessInstanceStatus 紀錄流程執行的狀態 (例如 :執行中、停止 )
6 WorkflowRuntime 目前版本並無使用7 WorkflowScheme 存放根據 Xml檔案所設定的 Scheme
![Page 9: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/9.jpg)
9
工作流程設計方式說明 Step 3. 加入 WorkflowRuntime 的設定
WorkflowRole : 定義流程中的使用者角色來源方法1. 判斷是否存在於角色中,根據 User 的 Identity Id 以及角色名稱
bool IsInRole(Guid IdentityId, string RoleName)
2. 取得所有 User 的 Identity Id ,根據角色名稱
IEnumerable<Guid> GetAllInRole(string RoleName)
![Page 10: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/10.jpg)
10
工作流程設計方式說明 Step 3. 加入 WorkflowRuntime 的設定
WorkflowRole : 定義流程使用的身分判斷規則1. 對應於流程設計的 Actor 分頁中,類型為 ExecuteRule 的方法
2. 取得所有 User 的 Identity Id ,根據角色名稱
![Page 11: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/11.jpg)
11
工作流程設計方式說明 Step 3. 加入 WorkflowRuntime 的設定
WorkflowInit : 定義流程主要功能, WorkflowRuntime 的設定1. 實作 IWorkflowBuilder 來初始化 WorkflowRuntime 所執行的流程
2. 透過多個完成實作 IWorkflowBuilder 的 Interface ,可定義多個WorkflowRuntime ,達到執行多個流程的功能。
![Page 12: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/12.jpg)
12
工作流程設計方式說明 Step 3. 加入 WorkflowRuntime 的設定
WorkflowAction : 定義流程中使用的方法1. 對應於流程設計的 Action 分頁中,所建立的方法
![Page 13: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/13.jpg)
13
工作流程設計方式說明 Step 4. XML 設計
透過 Designer 頁面進行流程的設計
網址 : 官方範例
![Page 14: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/14.jpg)
14
流程控制方式說明
流程指令(Commands)介紹
流程關卡(Activity)、狀態 (State)介紹
![Page 15: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/15.jpg)
15
流程控制方式說明流程指令 (Command) 介紹
1. WorkflowRuntime.GetAvailableCommands
取得可以使用的指令,根據當前流程狀態以及使用者 Id 、身分
2. WorkflowRuntime.ExecuteCommand
根據流程 XML 所設定的 Command 進行對應的流程動作。
![Page 16: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/16.jpg)
16
流程控制方式說明流程關卡 (Activity) 、狀態 (State) 介紹
1. WorkflowRuntime.GetAvailableStateToSet
取得可以使用的流程狀態,根據流程 Id
2. WorkflowRuntime.SetState
根據流程 XML 所設定的 State 進行對應的流程狀態設定,可使流程狀態於執行後改變。
![Page 17: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/17.jpg)
17
流程控制方式說明流程關卡 (Activity) 、狀態 (State) 介紹
1. WorkflowRuntime.GetCurrentStateName
取得當前流程狀態名稱,根據流程 Id
2. WorkflowRuntime.GetCurrentActivityName
取得當前流程關卡名稱,根據流程 Id 。
![Page 18: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/18.jpg)
18
參考來源
http://workflowenginenet.com/
http://workflowengine.codeplex.com/
![Page 19: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/19.jpg)
19
Question & Answer
![Page 20: Workflow engine](https://reader033.vdocuments.net/reader033/viewer/2022061404/55629677d8b42aa17d8b548d/html5/thumbnails/20.jpg)
The End
Thanks!