private void wfruntime_RunFail(object sender, WorkFlowEventArgs e) { }
private void wfruntime_RunSuccess(object sender, WorkFlowEventArgs e) { }
public virtual void OnRunFail(Object sender, WorkFlowEventArgs e) { if (RunFail != null) RunFail(this, e); }
public virtual void OnRunSuccess(Object sender, WorkFlowEventArgs e) { if (RunSuccess != null) RunSuccess(this, e);//提交成功后触发成功事件 }
/**//// <summary> /// 提交流程 /// </summary> /// <param name="userid"></param> /// <param name="operatorInsId"></param> /// <param name="commandName"></param> public string Run(string userid, string operatorInsId, string commandName) { if (string.IsNullOrEmpty(userid)) return WorkFlowConst.IsNullUserIdCode; if (string.IsNullOrEmpty(operatorInsId)) return WorkFlowConst.IsNullOperatorInsIdCode; if (string.IsNullOrEmpty(commandName)) return WorkFlowConst.IsNullCommandNameCode; DataTable operdt = OperatorInstance.GetOperatorInstance(operatorInsId); if (operdt != null && operdt.Rows.Count > 0) { WorkFlowId = operdt.Rows[0]["workflowId"].ToString(); WorkTaskId = operdt.Rows[0]["WorkTaskId"].ToString(); WorkFlowInstanceId = operdt.Rows[0]["workflowInsId"].ToString(); WorkTaskInstanceId = operdt.Rows[0]["worktaskInsId"].ToString(); UserId = userid; OperatorInstanceId = operatorInsId; CommandName = commandName; return Run(); } else { return WorkFlowConst.NoFoundInstanceCode; } } /**//// <summary> /// 启动流程,草稿和启动两种状态 /// </summary> public string Start() { try { if (string.IsNullOrEmpty(WorkFlowInstanceId)) WorkFlowInstanceId = Guid.NewGuid().ToString(); if (string.IsNullOrEmpty(WorkTaskInstanceId)) WorkTaskInstanceId = Guid.NewGuid().ToString(); if (string.IsNullOrEmpty(OperatorInstanceId)) OperatorInstanceId = Guid.NewGuid().ToString(); if (string.IsNullOrEmpty(UserId)) return WorkFlowConst.IsNullUserIdCode; if (string.IsNullOrEmpty(WorkFlowId)) return WorkFlowConst.IsNullWorkFlowIdCode; if (string.IsNullOrEmpty(WorkTaskId)) return WorkFlowConst.IsNullWorkTaskIdCode; if (string.IsNullOrEmpty(CommandName)) return WorkFlowConst.IsNullCommandNameCode; if (string.IsNullOrEmpty(WorkFlowNo)) return WorkFlowConst.IsNullWorkFlowNoCode; if (string.IsNullOrEmpty(WorkflowInsCaption)) return WorkFlowConst.IsNullWorkflowInsCaption; if (WorkFlowHelper.isTaskInsCompleted(WorkTaskInstanceId)) return WorkFlowConst.InstanceIsCompletedCode;//流程实例已完成,不能重复提交 //检查是否已经保存过草稿。如果已经保存过则不需要再创建实例,只保存业务表单数据, //此处的处理与交互节点的处理不同,需要加判断。 if (WorkTaskInstance.Exists(WorkTaskInstanceId)==false)//实例不存在,说明未保存过 { //创建流程实例 WorkFlowInstance workflowInstance = new WorkFlowInstance(); workflowInstance.WorkflowId = WorkFlowId; workflowInstance.WorkflowInsId = WorkFlowInstanceId; workflowInstance.WorkflowNo = WorkFlowNo; workflowInstance.WorkflowInsCaption = WorkflowInsCaption; workflowInstance.Description = Description; workflowInstance.Priority = Priority; if (IsDraft) workflowInstance.Status = "1"; else workflowInstance.Status = Status; workflowInstance.NowTaskId = WorkTaskId;//当前流程所处流程模板的位置 workflowInstance.isSubWorkflow = isSubWorkflow; workflowInstance.MainWorkflowInsId = MainWorkflowInsId; workflowInstance.MainWorktaskId = MainWorktaskId; workflowInstance.MainWorkflowId = MainWorkflowId; workflowInstance.MainWorktaskInsId = MainWorktaskInsId; workflowInstance.Create(); //创建启动节点的任务实例 WorkTaskInstance workTaskInstance = new WorkTaskInstance(); workTaskInstance.WorkflowId = WorkFlowId; workTaskInstance.WorktaskId = WorkTaskId; workTaskInstance.WorkflowInsId = WorkFlowInstanceId; workTaskInstance.WorktaskInsId = WorkTaskInstanceId; workTaskInstance.TaskInsCaption = WorkFlowTask.GetTaskCaption(WorkTaskId); if (isSubWorkflow)//是子流程调用,需要放到未认领任务中 { //workTaskInstance.PreviousTaskId = WorkTaskInstanceId; workTaskInstance.PreviousTaskId = MainWorktaskInsId; workTaskInstance.Status = "1"; } else//不是子流程调用,启动节点直接放入已认领任务中 { workTaskInstance.PreviousTaskId = WorkTaskInstanceId;//开始节点的前一节点等于自己 if (IsDraft) workTaskInstance.Status = "1"; else workTaskInstance.Status = "2"; } workTaskInstance.Create(); //创建启动节点的处理人实例 OperatorInstance operatorInstance = new OperatorInstance(); operatorInstance.OperatorInsId = OperatorInstanceId; operatorInstance.WorkflowId = WorkFlowId; operatorInstance.WorktaskId = WorkTaskId; operatorInstance.WorkflowInsId = WorkFlowInstanceId; operatorInstance.WorktaskInsId = WorkTaskInstanceId; operatorInstance.UserId = UserId; operatorInstance.OperRealtion = 0; operatorInstance.OperContent = UserId; string userName = UserData.GetUserNameById(UserId); if (string.IsNullOrEmpty(userName)) userName = "******"; operatorInstance.OperContentText = userName; operatorInstance.OperType = 3; if (isSubWorkflow)//是子流程调用,需要放到未认领任务中 operatorInstance.OperStatus = "0"; else//不是子流程调用,启动节点直接放入已认领任务中 { if (IsDraft) operatorInstance.OperStatus = "0"; else operatorInstance.OperStatus = "3"; } operatorInstance.Create(); } if (!IsDraft)//不是草稿状态,提交任务 { string result= WorkFlowHelper.CreateNextTaskInstance(UserId, WorkFlowId, WorkTaskId, WorkFlowInstanceId, WorkTaskInstanceId, OperatorInstanceId, CommandName); if (result != WorkFlowConst.SuccessCode) { WorkFlowEventArgs e = new WorkFlowEventArgs(this); e.ResultMsg = result; OnRunFail(this, e); return result; } else { WorkFlowEventArgs e = new WorkFlowEventArgs(this); e.ResultMsg = WorkFlowConst.SuccessMsg; OnRunSuccess(this, e); } } return WorkFlowConst.SuccessCode; } catch (Exception ex) { string msg = string.Format(WorkFlowConst.EngineErrorMsg, ex.Message); WorkFlowEventArgs e = new WorkFlowEventArgs(this); e.ResultMsg = msg; OnRunFail(this, e); return WorkFlowConst.OtherErrorCode; } }
public string Run() { try { if (string.IsNullOrEmpty(UserId)) return WorkFlowConst.IsNullUserIdCode; if (string.IsNullOrEmpty(WorkFlowId)) return WorkFlowConst.IsNullWorkFlowIdCode; if (string.IsNullOrEmpty(WorkTaskId)) return WorkFlowConst.IsNullWorkTaskIdCode; if (string.IsNullOrEmpty(WorkFlowInstanceId)) return WorkFlowConst.IsNullWorkFlowInsIdCode; if (string.IsNullOrEmpty(WorkTaskInstanceId)) return WorkFlowConst.IsNullWorkTaskInsIdCode; if (string.IsNullOrEmpty(OperatorInstanceId)) return WorkFlowConst.IsNullOperatorInsIdCode; if (string.IsNullOrEmpty(CommandName)) return WorkFlowConst.IsNullCommandNameCode; if (WorkFlowHelper.isTaskInsCompleted(WorkTaskInstanceId)) return WorkFlowConst.InstanceIsCompletedCode;//流程实例已完成,不能重复提交 string result= WorkFlowHelper.CreateNextTaskInstance(UserId, WorkFlowId, WorkTaskId, WorkFlowInstanceId, WorkTaskInstanceId, OperatorInstanceId, CommandName); if (result != WorkFlowConst.SuccessCode) { WorkFlowEventArgs e = new WorkFlowEventArgs(this); e.ResultMsg = result; OnRunFail(this, e); return result; } else { WorkFlowEventArgs e = new WorkFlowEventArgs(this); e.ResultMsg = WorkFlowConst.SuccessMsg; OnRunSuccess(this, e); } return WorkFlowConst.SuccessCode; } catch (Exception ex) { string msg =string.Format(WorkFlowConst.EngineErrorMsg,ex.Message); WorkFlowEventArgs e = new WorkFlowEventArgs(this); e.ResultMsg = msg; OnRunFail(this, e); return WorkFlowConst.OtherErrorCode; } }