workflow engine

Post on 25-May-2015

318 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

2

Agenda

基本架構介紹

工作流程設計方式說明

流程控制方式說明

3

基本架構介紹 – 優點

易於部署的架構

便利的流程設計辦法

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

4

易於部署的架構

1.

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

2.

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

3.

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

5

便利的流程設計辦法

1.

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

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

2.

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

6

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

1.

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

2.

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

工作流程 B

工作流程 C

工作流程 A

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流程設計

8

工作流程設計方式說明 :Step 2. 加入 Workflow 相關的資料表

# Name Description

1 WorkflowProcessScheme 紀錄流程被建立時的 Scheme快照2 WorkflowProcessInstance 紀錄流程主要資訊,例如當前狀態、先前狀態…等3 WorkflowProcessInstancePersistence 紀錄流程設計中參數為 Persisted的變數資料4 WorkflowProcessTransitionHistory 紀錄流程關卡或狀態轉換的歷史資訊5 WorkflowProcessInstanceStatus 紀錄流程執行的狀態 (例如 :執行中、停止 )

6 WorkflowRuntime 目前版本並無使用7 WorkflowScheme 存放根據 Xml檔案所設定的 Scheme

9

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

WorkflowRole : 定義流程中的使用者角色來源方法1. 判斷是否存在於角色中,根據 User 的 Identity Id 以及角色名稱

bool IsInRole(Guid IdentityId, string RoleName)

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

IEnumerable<Guid> GetAllInRole(string RoleName)

10

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

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

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

11

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

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

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

12

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

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

13

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

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

網址 : 官方範例

14

流程控制方式說明

流程指令(Commands)介紹

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

15

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

1. WorkflowRuntime.GetAvailableCommands

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

2. WorkflowRuntime.ExecuteCommand

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

16

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

1. WorkflowRuntime.GetAvailableStateToSet

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

2. WorkflowRuntime.SetState

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

17

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

1. WorkflowRuntime.GetCurrentStateName

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

2. WorkflowRuntime.GetCurrentActivityName

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

19

Question & Answer

The End

Thanks!

top related