(1). WorkFlowEngine.dll是工作流引擎組件,所有的工作流引擎功能都封裝在此組件中。
(2). 其他組件:Castle.DynamicProxy2.dll、Iesi.Collections.dll、log4net.dll、NHibernate.dll、nunit.framework.dll 這些組件是工作流引擎組件自身用到的,所以也必須要引用。
(3). 配置文件:hibernate.cfg.xml,此文件時工作流的配置文件,其中有數據鏈接配置。必須要放到業務系統的運行目錄下。
(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()中獲取表單的數據。
(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類中來管理。