工作流組件示例(全部開源)


1.概述

1.1簡介

本文檔旨在幫助開發人員快速使用工作流組件,完成OA或審批等涉及到工作流組件的系統開發工作

1.2組件構成

1.2.1組件層次圖

clip_image002

組件的核心是工作流引擎,它負責存儲工作流模板.引擎被服務所包圍,也就是說,若用到工作流引擎操作,必須通過工作流服務

工作流服務包含幾大部分:模板服務,流程實例服務,查詢服務,跟蹤服務,持久化服務,定時服務等

1.2.2與宿主關系圖

clip_image003

宿主通過工作流服務提供的各種命令操作,來完成想要實現的功能.如發起模板,流轉實例等

同時,工作流服務會反饋信息給宿主,通知宿主操作是否成功

1.2.3服務運行模式

clip_image004

1.2.4組件類圖

clip_image006

clip_image008

1.2.4輔助接口

l 權限組件IpermissionService

clip_image009

方法詳細描述如下圖所示

clip_image011

l 數據庫組件IDataBaseService

clip_image012

方法詳細描述如下圖所示

clip_image014

clip_image016

l 定時組件ItimingService

clip_image017

方法詳細描述如下圖所示

clip_image019

1.2.5數據庫結構

l 工作流模板部分

clip_image021

l 工作流流程實例部分

clip_image023

l 工作流其他配置部分

clip_image024

2示例模板

示例模板如圖-所示

clip_image026

2.1功能要求

l 模板發起權限:用戶1

l 模板包含4個環節.其中,首環節為[擬稿];末環節為[發證].其環節辦理對象如下所示

環節ID

處理決策

辦理對象

用戶列表

擬稿

第一用戶

用戶/用戶1

用戶1

審核

第一用戶

用戶/用戶2

用戶2

審查

任務共享

角色/角色1

用戶1,用戶2,用戶3,用戶4,用戶5

發證

第一用戶

用戶/用戶6

用戶6

l 在[審核]環節包含子流程,並且是回歸.即主流程需等待子流程完成后

l 所有環節均支持回退,跳轉,掛起,取消掛起,強制歸檔,刪除,備份等命令

3代碼開發

3.1創建Db並導入腳本和數據

l 創建SQLServer數據庫

l 打開02.db腳本文件夾,在查詢分析器中

n 執行” init_workflow_sqlserver.sql”文件,用於創建腳本

3.2創建解決方案

名稱

描述

Navi.Example.Workflow

整個解決方案名稱

Navi.Example.Workflow.WinForm

WinForm場景示例文件

Navi.Example.Workflow.WebForm

WebForm場景示例文件

Navi.Example.Workflow.WebMVC3

WebMVC3場景示例文件

3.3項目引用DLL文件

clip_image027

3.4Config配置文件說明

clip_image029

結點名稱

描述

RunMode

系統運行場景.包括:WinForm,WebForm,WebMVC

PermissionService

權限中心組件,實體操作類字符串,用於反射.繼承自IpermissionService接口

PermissionDataBaseService

權限中心組件,數據庫操作類字符串

PermissionDbConnectionString

權限中心組件,數據庫連接字符串

WorkflowDebugMode

工作流組件.調試模式

WorkflowLoadMode

工作流組件.模板數據源類型.包括Xml和Db

WorkflowLoadFileName

工作流組件.模板數據文件名稱

WorkflowService

工作流組件操作類字符串

WorkflowDataBaseService

工作流組件.數據庫操作類字符串

WorkflowDbConnectionString

工作流組件.數據庫連接字符串

WorkflowTimingService

工作流組件.定時服務操作類字符串

3.5環境變量注冊

clip_image031

如上圖所示.以WinForm應用場景為例

先增加異常捕獲,再獲取應用程序路徑和名稱,再注冊權限組件和工作流組件,最后打開主頁面

注:也可同時注冊數據庫組件,並且支持多數據庫同時注冊

3.6功能模塊

3.6.1擬辦列表

clip_image033

3.6.1.1檢索

檢索條件是模板名稱,支持模糊查詢

3.6.1.2發起

發起選中的模板列表.若發起成功,則提示下圖,表示發起成功

clip_image034

若模板發起失敗原因有多種,一般包括

n 用戶沒有發起模板權限

n 選中的模板,其版本不是最大版本號.不允許發起歷史模板

n 在發起過程中出現問題.如:用戶未找到角色或組織機構.或者傳入參數不正確等,需具體問題具體分析

3.6.1.3發起(含業務)

功能與發起類似,區別是根據選中的模板,彈出模板對應的UI業務表單.在此示例DEMO中,不支持業務表單配置

3.6.1.4新增委托

clip_image035

功能描述

n 委托是精確至模板環節級別,並且可將委托對象設置為組織機構,角色或用戶

n 委托是在某一時間段內.即需設置開始和結束時間.某人的待辦數據交由另一人或多人辦理

n 到期處理包括:撤消和繼續.用於工作流定時引擎服務中使用

n 是否立即委托,是指委托數據增加成功后,立即實現委托功能,並不是根據開始和結束時間

n 待辦是否隱藏:是指在用戶待辦信息中,是否過濾掉屬於被委托者的待辦件

3.6.1.5委托列表

clip_image037

功能描述

l 檢索

檢索條件包括:環節ID,開始和結束時間,是否使用.:數據本身已經根據模板ID和版本過濾

l 查看

查看模板委托詳細信息.:只允許查看,不允許修改

l 撤消委托

撤消模板委托后,此模板再發起的流程實例將沒有委托信息,之前已經發起的流程實例,其委托信息仍存在

l 刪除委托

直接將模板委托數據刪除.此功能已實現撤消委托功能,並且將數據直接從Db表中刪除

3.6.2流程實例

clip_image039

3.6.2.1模塊描述

l 左側為樹控件,按流程實例狀態類型區分.選中一級結點,加載登錄用戶此狀態的流程實例數據

l 檢索條件可以根據模板名稱,版本,流程實例ID和操作用戶過濾.注:若為管理員登錄,可使用操作用戶檢索條件,檢索出屬於此用戶的流程實例數據

l 功能命令,采用工具欄布局.包括流轉,完結,回退等功能

l 批量數據欄目名稱包括:環節ID,辦理時限和單位,開始時間,運動狀態等.對應的實體類是WFWaitDealModel

3.6.2.2流轉

l 點擊[流轉]彈出流轉配置頁面,如下圖所示

clip_image041

l 功能說明

n 采用Tabpage控件,每個面板表示待流轉的環節信息待辦用戶,是指待流轉環節的待辦用戶

n 左側為待選擇的用戶列表.此配置信息為模板環節辦理權限.:無論辦理權類型是組織機構,角色或用戶.最終會轉為用戶,供用戶選擇

u 右側頂部分,是記錄已選中用戶列表

u 辦理權限

Ø 目標環節處理決策:在模板配置時已配置環節處理決策,此處允許再次修改.原因:流轉到環節的情況有多種,包括正常流轉,回退,跳轉等

Ø 是否允許分發:用於並行操作.假設選中5個用戶.不勾選此選項時,會生成1條環節數據,5條環節審批意見數據;如果勾選此選項,則會生成5條環節數據,每條環節數據各生成1條環節審批意見數據

Ø 預生成數據:用於環節處理決策是任務共享的情況.當環節的辦理用戶均要求辦理時,第1個用戶辦理完結后,是不生成目標環節待辦數據的.若勾選此選項,則先生成目標環節待辦數據,但不允許操作

u 右側底部為子流程列表,在流轉過程中,需額外發起其他模板來輔助完成此流程操作

u 底部為發送信息配置選項.可發送信息至短信,郵件,站內信等.注:每個發送選項實現,已提供接口,直接實現即可

l 操作完成后,點擊[確定]按鈕,執行工作流組件服務中[SubmitWFInstance]方法.若操作成功,則將流程實例當前環節實例ID返回

3.6.2.3完結

完結命令,只適用於環節處理決策是任務共享.非最后一個用戶使用.表示用戶已經辦理過此辦理件.若操作成功,則將流程實例當前環節實例ID返回.若操作失敗,可能原因如下所示

clip_image042

3.6.2.4回退

l 點擊[回退]彈出回退配置頁面,如下圖所示

clip_image043

l 功能說明

n 與[流轉]面板布局和功能相同

l 操作完成后,點擊[確定]按鈕,執行工作流組件服務中[BackWFInstance]方法.若操作成功,則將流程實例當前環節實例ID返回

3.6.2.5跳轉

l 點擊[跳轉]彈出跳轉配置頁面,如下圖所示

clip_image045

l 功能說明

n 左側為跳轉環節列表.注:允許跳轉至任何環節,包括已發起或未發起的環節.通過狀態欄目區分

n 右側為左側選中環節的辦理用戶列表,支持多選

n 底端為其他配置,是將此辦件信息通過何種方式發送給待辦用戶

l 選中環節和環節辦理用戶后,點擊確定按鈕,執行工作流組件[SkipWFInstance]方法.若操作成功, 則將流程實例當前環節實例ID返回

3.6.2.6置換

l 點擊[置換]按鈕,彈出置換配置頁面,如下圖所示

clip_image046

l 功能說明

n 頁面采用組織機構+用戶列表布局

n 選中左側樹結點,右側列表加載此組織機構下的用戶,供選擇

l 選中用戶信息后,點擊確定按鈕.執行工作流組件的[ChangeWFInstance]方法

3.6.2.7歸檔

歸檔命令,是將流程實例的運行狀態置為end.表示此流程實例已經流轉完成,不需要其他操作.:此命令只將處於末級環節的流程實例數據歸檔.非末級環節時不允許歸檔

3.6.2.8強制歸檔

強制歸檔命令,功能與歸檔完全一致.不同之處,在於流程實例不限於處在末級環節.在任何環節都可以將流程實例歸檔

3.6.2.9撤消委托

撤消委托命令,並不是模板級別的撤消委托.是將流程實例中的委托數據刪除,與模板中的撤消委托功能統一稱之為撤消委托.分別對模板和流程實例撤消委托

3.6.2.10掛起

l 點擊[掛起]彈出掛起配置頁面,如下圖所示

clip_image047

l 功能描述

n 開始和結束時間,表示流程實例掛起的起止時間

n 到期處理方式,包括撤消和繼續.用於工作流定時服務

n 掛起原因,表明為何掛起

n 是否立即掛起,是不依賴於開始和結束時間,掛起數據保存成功后,直接將對應的流程實例數據掛起

l 數據錄入完成后,點擊確定按鈕,完成掛起操作

3.6.2.11復制

復制命令,是指將流程實例數據完整拷貝一份新的,其流程實例ID也是新的.拷貝的數據包括流程實例,環節實例,環節審批意見以及流程監控數據

3.6.2.11備份

備份命令,是指將流程實例的運行狀態修改為backup,表示此流程實例不在用戶待辦和已辦中出現

3.6.2.12刪除

刪除命令,即將流程實例從Db表中直接刪除.注:刪除同時,將此流程實例數據存儲至持久化表中,方便以后查找

3.6.2.13監控

l 點擊[監控]命令彈出監控頁面,如下圖所示

clip_image049

l 功能說明

n 頂部展現流程實例基本信息,包括對應模板ID和版本等

n 左側為環節流轉信息

n 右側為環節操作信息.如執行掛起,恢復,置換等,均有記錄

3.6.3配置選項

clip_image051

3.6.3.1檢索

檢索條件是選項名稱和啟用狀態.其中選項名稱支持模糊查詢

3.6.3.2新增

新增配選項,如下圖所示

clip_image052

錄入數據完成后,點擊保存,將數據保存至數據庫

3.6.3.3修改

修改列表中選中的配置選項值,如下圖所示

clip_image053

修改數據完成后,點擊保存,將數據保存至數據庫

注:若配置選項為系統配置,則不允許修改,會提示如下圖所示的對話框

clip_image054

3.6.3.4刪除

將列表中選中的配置選項刪除

注:若配置選項為系統配置,則不允許刪除

3.6.4工作流日歷

clip_image056

3.6.4.1檢索

檢索條件包括開始和結束日期,日期種類(日期和時間),日期類型(工作日和休息日)

3.6.4.2新增

新增日期,如下圖所示

clip_image057

錄入數據完成后,點擊保存按鈕,將數據保存至數據庫

3.6.4.3修改

修改日期,如下圖所示

clip_image058

修改數據完成后, 點擊保存按鈕,將數據保存至數據庫

3.6.4.4刪除

將列表中選中的日歷刪除

3.6.5默認審批意見

clip_image060

3.6.5.1檢索

檢索分為2部分.一是根據用戶檢索;二是根據審批意見檢索,同時,支持模糊查詢

3.6.5.2新增

新增審批意見數據.如下圖所示

clip_image061

模板信息支持彈出頁面選擇,如下圖所示

clip_image062

錄入數據完成后,點擊保存按鈕,將數據保存至數據庫

3.6.5.3刪除

刪除列表中選中審批意見數據

4設計器

4.1設計器(WinForm版本)

4.1.1模板列表

clip_image064

功能描述

l 左側樹控件.加載不同版本的模板名稱.單擊樹結點,加載此模板名稱不同版本的列表.:單擊頂級節點,加載所有模板

l 右側頂部為檢索條件,檢索條件是模板名稱和啟用狀態

l 右側頂部下面為工具欄列表.包括模板新增,復制新增,修改,刪除,導入和導出

n 新增:彈出模板單據頁面,用於新增

n 復制新增:獲取選中行模板ID和版本並加載,其詳細信息加載至表單中,供用戶修改.:版本號自動+1處理

n 修改:修改選中行模板信息.:修改操作,不允許執行刪除環節及環節其他信息

n 刪除:刪除功能包括刪除當前選中行模板信息(某一版本);刪除某一模板(所有版本)信息和刪除某一模板(某一版本)生成的流程實例信息

n 導入和導出,支持將模板數據導出為Xml和Sql,共2種文件格式

l 右側右半部分包括上下2個內容.上面顯示此模板的發起權限列表;下面顯示為模板環節列表

4.1.2模板表單

clip_image066

功能描述

l 頂部為工具欄,包括發起權限新增,發布模板和關閉

n 發起權限:維護此模板允許哪些人發起

n 發布模板:模板設計完成后,點擊此按鈕,保存至數據庫

l 上半部分為模板基本信息.包括模板名稱,發起時間,辦理時限等

l 下半部分為模板環節信息.功能包括新增,復制,刪除環節和快速錄入

n 新增環節:彈出新增環節表單

n 復制環節:根據選中行環節信息,復制新增環節,其標識符+1處理

n 刪除環節:將選中行環節刪除

n 選中某行,點擊”設置”按鈕,彈出修改環節表單

4.1.3模板發起權限

clip_image068

功能描述

l 權限類型包括

n 到人

n 到角色

n 到組織機構

n 動態到模板環節辦理人:是指模板環節配置的辦理用戶列表

n 動態到流程實例待辦人:是指用戶在模板環節配置的用戶列列表中,選擇此環節哪些人可以辦理

n 動態到流程實例辦理人:是指此環節實例真正辦理的用戶列表

l 發起權限允許有多條,而且權限類型可以不同

4.1.4模板環節表單.基礎信息

clip_image070

功能描述

l 狀態ID:環節標識符,在模板中唯一,不允許重復

l 辦理時限:此環節需辦理的時間限度.單位包括:分鍾,小時,天

l 狀態類型:標識此環節是否為模板的特殊環節:即首環節或末環節.首環節是指模板發起后,流轉到的環節;末環節是指模板允許歸檔的環節.:整個模板中,有且僅有一個首環節和末環節

l 處理決策:允許此環節向下流轉的條件類型.包括第一用戶和任務共享.注:二者區別詳見操作手冊

l 並行設置:此選項用於並行分支的發起和匯聚.配置發起選項時,表示此環節的待流轉分支都要生成用戶待辦數據;配置匯聚選項時,表示此環節的允許流轉條件要額外判斷是否所有流向此環節的待辦數據已流轉完成,若完成,則允許向下流轉

4.1.5模板環節信息.辦理權限

clip_image072

功能描述

:其配置方式與模板發起權限相同,

4.1.6模板環節信息.條件分支

clip_image074

功能描述

l 環節條件分支是指此環節允許向下流轉的分支走向.相當於要達到目的地,可以有很多條路到達,這些條路就相當於條件分支.條件分支是供用戶選擇的

l 條件分支錄入頁面

clip_image075

功能描述

n 分支名稱:環節ID.必須是環節ID

n 分支標簽:並行分支時使用.若某幾個分支的分支標簽相同,表示這幾個分支需並行處理

n 默認分支:定時引擎使用.若辦理用戶在規定時間內沒有辦理,則通過定時引擎此環節可以自動流轉至默認分支

n 過濾組織機構和過濾角色,用於選擇環節辦理用戶時,根據當前登錄用戶所在的組織機構和角色,過濾出與登錄用戶在同一組織機構或角色的辦理用戶

n 環節處理決策:是指目標環節的處理決策,允許在此處修改

4.1.7模板環節信息.子流程

clip_image077

功能描述

l 環節子流程是指在此環節中,允許另外發起某模板.注:同一環節允許發起多個模板

l 子流程錄入頁面

clip_image078

功能描述

n 子流程信息,通過選擇模板表單加載.如下圖所示

clip_image062[1]

n 是否回歸至主流程,表示主流程是否需等待發起的子流程

n 子流程版本使用Max代替:由於模板會根據業務不斷調整,重新發起新的模板,則某一時間點的子流程,其版本就可能是歷史版本的模板.選中此項,表示子流程的模板版本,永遠保持最新,使用最大版本的模板信息

4.2設計器(WebForm版本)

暫不提供,請參考WinForm頁面開發

4.3設計器(WebMVC版本)

暫不提供,請參考WinForm頁面開發

5與其他系統整合

 

源碼下載方式

1,關注微信公眾號:小特工作室(也可直接掃描簽名處二維碼)

2,發送:示例4003

即可下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM