private void CreateNextInstanceTask(WfRunner runner, WfResult result, WF_Task nextTask) { var iTask = new WF_InstanceTask(); iTask.InitializeId(); iTask.DCreate = DateTime.Now; iTask.Prev_Id = result.InstanceTask.Id; iTask.AppInstanceId = runner.AppInstanceId; iTask.Process_Id = result.Process.Id; iTask.Process_Name = result.Process.Name; iTask.Task_Id = nextTask.Id; iTask.Task_Name = nextTask.Name; iTask.Status = WfTaskStatus.Pending; iTask.Audit = WfAuditState.Pending; iTask.Action = WfActionType.Forward; iTask.CreateUser_Id = runner.AC.User.Id; iTaskService.Insert(iTask); }
private void CreateNextInstanceTask(WfRunner runner, WfResult result, WF_Task backTask) { var iTask = new WF_InstanceTask(); iTask.InitializeId(); iTask.DCreate = DateTime.Now; iTask.Prev_Id = result.InstanceTask.Id; iTask.AppInstanceId = runner.AppInstanceId; iTask.Process_Id = result.Process.Id; iTask.Process_Name = result.Process.Name; iTask.Task_Id = backTask.Id; iTask.Task_Name = backTask.Name; iTask.Status = WfTaskStatus.Dealing; iTask.DFetch = DateTime.Now; iTask.Audit = result.Instance.StartTask_Id == backTask.Id ? WfAuditState.UnSend : WfAuditState.Pending; iTask.Action = WfActionType.Backward; iTask.CreateUser_Id = runner.AC.User.Id; iTask.User_Id = result.BackInstanceTask.User_Id; iTask.User_Name = result.BackInstanceTask.User_Name; iTaskService.Insert(iTask); }
public WfResult Execute(WfRunner runner) { var result = instanceService.GetInstance(runner); if (result.Instance == null) { // create instance var instance = new WF_Instance(); instance.InitializeId(); instance.DCreate = DateTime.Now; instance.AppInstanceId = runner.AppInstanceId; instance.CreateUser_Id = runner.AC.User.Id; instance.CreateUser_Name = runner.AC.User.UserName ?? runner.AC.User.NickName; instance.Process_Id = result.Process.Id; instance.Process_Name = result.Process.Name; instance.StartTask_Id = result.Task.Id; instance.Status = WfProcessStatus.Running; instanceService.Insert(instance); var iTask = new WF_InstanceTask(); iTask.InitializeId(); iTask.DCreate = DateTime.Now; iTask.AppInstanceId = runner.AppInstanceId; iTask.Process_Id = result.Process.Id; iTask.Process_Name = result.Process.Name; iTask.Task_Id = result.Task.Id; iTask.Task_Name = result.Task.Name; iTask.DFetch = DateTime.Now; iTask.Status = WfTaskStatus.Dealing; iTask.Audit = WfAuditState.UnSend; iTask.Action = WfActionType.Begin; iTask.CreateUser_Id = runner.AC.User.Id; iTask.User_Id = instance.CreateUser_Id; iTask.User_Name = instance.CreateUser_Name; iTaskService.Insert(iTask); result.Instance = instance; result.InstanceTask = iTask; } if (runner.LoadPrevInstanceTask && result.InstanceTask.Prev_Id.HasValue) { result.PrevInstanceTask = iTaskService.Get(result.InstanceTask.Prev_Id.Value); } if (runner.LoadBackInstanceTask) { result.BackInstanceTask = GetBackInstanceTask(result); } if (runner.LoadNextTasks) { result.NextTasks = GetNextTasks(result); } if (runner.LoadCanWithdraw) { if (result.InstanceTask.Status == WfTaskStatus.Processed) { result.CanWithdraw = CanWithdraw(runner, result); } else { result.CanWithdraw = false; } } return(result); }