.net工作流引擎设计(二):WorkFlowEngine工作流引擎使用简要说明

慕弘伟
2023-12-01

1.   添加组件和配置文件

(1). WorkFlowEngine.dll是工作流引擎組件,所有的工作流引擎功能都封裝在此組件中。

(2). 其他組件:Castle.DynamicProxy2.dllIesi.Collections.dlllog4net.dllNHibernate.dllnunit.framework.dll 這些組件是工作流引擎組件自身用到的,所以也必須要引用

(3). 配置文件:hibernate.cfg.xml,此文件時工作流的配置文件,其中有數據鏈接配置。必須要放到業務系統的運行目錄下。


 

2.   業務系統調用工作流引擎功能說明

(1)  . 從工作流系統中啟動業務表單的時候,會通過url把流程的id(pid)、任務id(tid)、工作項id(wid)和業務數據id(bid)傳遞,開發人員可以從地址中獲取這些參數來實現相應的業務功能。

(2)  . 流程入口:WorkflowSession 類是工作流引擎功能的入口,所有屬性、功能的訪問通過此類事例來訪問,例如下麵保存流程信息,

WorkflowSession.Process.PROCESS_NAME = “測試流程”;

WorkflowSession.Process.PROCESS_CODE = “process_001”

WorkflowSession.Process.Save();

(3)  . 流程初始化:在啟動流程的業務表單中調用InitWorkflow方法來初始化流程,例如

WorkflowSession. InitWorkflow(processid, userid, businessid);

   processid:是流程id,就是此業務表單是要初始化哪個流程;

   userid:是當前登錄者的id,就是啟動流程者;

   businessid:是當前業務表單產生的主數據的id

(4). 完成工作項:當登錄者登錄系統,完成他自己的工作項時,對應的業務表單中在完成操作的時候要調用WorkItemComplete方法來告訴引擎你要完成此工作項。工作項相關的操作都放在WorkItemManager類中,例如

 WorkflowSession.WorkItemManager.WorkItemComplete(workitemid,description);

workitemid:要完成的工作項id,id可以通過Request[“wid”]來獲得。

description:是完成此工作項的描述信息。

web表單中完成工作項還可以調用如下方法,此方法要傳入Request.QueryString 這個參數,工作流引擎會自動捕獲工作項的id

WorkflowSession.WorkItemManager.WorkItemCompleteForWeb (this.Request.QueryString.ToString(), description);

 

(5). 保存表單歷史數據到工作流數據庫中

在業務表單完成的時候,可以調用SaveWebFormData方法來保存當前表單的數據,如下

WorkflowSession.SaveWebFormData(this.Request.QueryString.ToString(), this.Request.Form.ToString())

 

其中的兩個參數安例子中寫即可,不需要用戶來指定傳入的值。

工作流引擎會從Request.QueryString.ToString()中獲取流程id、任務id、工作項id

工作流引擎會從Request.Form.ToString()中獲取表單的數據。

3.   工作流引擎其他功能說明

(1)  .針對每個model的增、刪、改都通過model自身來完成,例如

Process   process   =   new Process();

process.Process_Name = “test”;

process.Process_Code = “process_001”;

新增:process.Save();

修改:process.Update();

刪除:process.Delete();

(2)  . 流程相關的操作都放在ProcessManager類中來管理,比如流程信息的查詢

IList<Process> processList = WorkflowSession. ProcessManager. GetProcess(processModel)

Process  process = WorkflowSession. ProcessManager. GetProcessByID(processid)

(3). 任務相關的操作都放在TaskManager類中來管理,比如任務信息的查詢

IList<Task> taskList =  WorkflowSession.TaskManager.GetTask(taskModel)

Task  task = WorkflowSession. TaskManager. GetTaskByID(taskid)

(4). 工作項相關操作都放在WorkItemManager類中來管理。

 

 

 

 类似资料: