Exemplo n.º 1
0
        private void wfruntime_RunFail(object sender, WorkFlowEventArgs e)
        {

        }
Exemplo n.º 2
0
        private void wfruntime_RunSuccess(object sender, WorkFlowEventArgs e)
        {

        }
Exemplo n.º 3
0
 public virtual void OnRunFail(Object sender, WorkFlowEventArgs e)
 {
     if (RunFail != null)
         RunFail(this, e);
 }
Exemplo n.º 4
0
        public virtual void OnRunSuccess(Object sender, WorkFlowEventArgs e)
        {
            if (RunSuccess != null)
                RunSuccess(this, e);//提交成功后触发成功事件
 
        }
Exemplo n.º 5
0
        /**//// <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;
            }
           
  
        }
Exemplo n.º 6
0
 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;
     }
 }