20
WorkflowEngine.NET 介介 功功功功功功功功功

Workflow engine

Embed Size (px)

Citation preview

Page 1: Workflow engine

WorkflowEngine.NET 介紹功能與實作方式介紹

Page 2: Workflow engine

2

Agenda

基本架構介紹

工作流程設計方式說明

流程控制方式說明

Page 3: Workflow engine

3

基本架構介紹 – 優點

易於部署的架構

便利的流程設計辦法

即時 (real time)變動、獨立設計多個流程

Page 4: Workflow engine

4

易於部署的架構

1.

透過引用 Workflow Engine .NET 的DLL ,執行提供的流程方法,便可完成流程功能的實作。

2.

可以結合 Code first 等方式,建立工作流程相關的 Table 於資料庫內。

3.

可以結合 .NET Identity 功能,完美整合使用者相關資訊。

Page 5: Workflow engine

5

便利的流程設計辦法

1.

透過網頁即可進行工作流程的關卡、流程路線設計出流程 XML 檔案。

( 設計功能須付費才可使用 )

2.

同時支援透過 T4 範本設計工作流程XML 。

Page 6: Workflow engine

6

即時 (real time) 變動、獨立設計多個流程

1.

由於透過 XML 內容作為流程的依據,意味著更動 XML 內容,即可達到即時變動流程的效果。

2.

可以獨立設計不同的流程 XML , 透過不同的 IWorkflowBuilder 介面進行切換。

工作流程 B

工作流程 C

工作流程 A

Page 7: Workflow engine

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

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

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

10

工作流程設計方式說明 Step 3. 加入 WorkflowRuntime 的設定

WorkflowRole : 定義流程使用的身分判斷規則1. 對應於流程設計的 Actor 分頁中,類型為 ExecuteRule 的方法

2. 取得所有 User 的 Identity Id ,根據角色名稱

Page 11: Workflow engine

11

工作流程設計方式說明 Step 3. 加入 WorkflowRuntime 的設定

WorkflowInit : 定義流程主要功能, WorkflowRuntime 的設定1. 實作 IWorkflowBuilder 來初始化 WorkflowRuntime 所執行的流程

2. 透過多個完成實作 IWorkflowBuilder 的 Interface ,可定義多個WorkflowRuntime ,達到執行多個流程的功能。

Page 12: Workflow engine

12

工作流程設計方式說明 Step 3. 加入 WorkflowRuntime 的設定

WorkflowAction : 定義流程中使用的方法1. 對應於流程設計的 Action 分頁中,所建立的方法

Page 13: Workflow engine

13

工作流程設計方式說明 Step 4. XML 設計

透過 Designer 頁面進行流程的設計

網址 : 官方範例

Page 14: Workflow engine

14

流程控制方式說明

流程指令(Commands)介紹

流程關卡(Activity)、狀態 (State)介紹

Page 15: Workflow engine

15

流程控制方式說明流程指令 (Command) 介紹

1. WorkflowRuntime.GetAvailableCommands

取得可以使用的指令,根據當前流程狀態以及使用者 Id 、身分

2. WorkflowRuntime.ExecuteCommand

根據流程 XML 所設定的 Command 進行對應的流程動作。

Page 16: Workflow engine

16

流程控制方式說明流程關卡 (Activity) 、狀態 (State) 介紹

1. WorkflowRuntime.GetAvailableStateToSet

取得可以使用的流程狀態,根據流程 Id

2. WorkflowRuntime.SetState

根據流程 XML 所設定的 State 進行對應的流程狀態設定,可使流程狀態於執行後改變。

Page 17: Workflow engine

17

流程控制方式說明流程關卡 (Activity) 、狀態 (State) 介紹

1. WorkflowRuntime.GetCurrentStateName

取得當前流程狀態名稱,根據流程 Id

2. WorkflowRuntime.GetCurrentActivityName

取得當前流程關卡名稱,根據流程 Id 。

Page 19: Workflow engine

19

Question & Answer

Page 20: Workflow engine

The End

Thanks!