public override async Task <string> Excute(ProcessInstance pi) { return(await Task <string> .Factory.StartNew(() => { BPMDBService.TaskDone(this.ID, pi.CreateUser); pi.Status = ProcessStatus.Finish; //Console.WriteLine(this.Name); return null; })); }
public override async Task <string> Excute(ProcessInstance pi) { // 第一次轮到 var arg = getArg(pi); if (this.Status == TaskStatus.Waiting) { // 用户提交了任务, this.Status = TaskStatus.Done; this.IsDone = true; BPMDBService.TaskDone(this.ID, this.UserID); // 通知任务完成 _Observation.TaskDone(arg); return(await base.Excute(pi)); } else { this.Status = TaskStatus.Waiting; this.TurnDate = DateTime.Now; this.UserID = int.Parse(arg.TaskUser); // 异步更新任务状态 BPMDBService.TaskTurn(this.ID, this.UserID); if (!await _Observation.TaskTurnCall(arg)) { // 发起一个用户通知 // 中断等待用户回应 return(string.Empty); } else { // 继续任务 return(await base.Excute(pi)); } } }
public override async Task <string> Excute(ProcessInstance pi) { var arg = getArg(pi); // 第一次轮到会签 if (!BPMDBService.ExistsJoinSignTask(this.ID)) { // 中断等待用户回应 this.Status = TaskStatus.Waiting; this.TurnDate = DateTime.Now; // 异步更新任务状态 BPMDBService.TaskTurn(this.ID, 0, arg.TaskUser); // 创建会签人员列表 // TODO arg.TaskUser == 0 arg.JoinSigns = BPMDBService.CreateJoinSignTasks(this.ID, arg.TaskUser); // 发起一个用户通知 if (!await _Observation.TaskTurnCall(arg)) { return(string.Empty); } else { // 任务完成 BPMDBService.TaskDone(this.ID, int.Parse(arg.TaskUser)); // 通知任务完成 _Observation.TaskDone(arg); // 继续任务 return(await base.Excute(pi)); } } else { // 会签任务完成 BPMDBService.JoinSignTaskDone(int.Parse(pi.InputData["SignID"].ToString()), bool.Parse(pi.InputData["SignIDResult"].ToString())); // 通知任务完成 _Observation.TaskDone(arg); // 第二次,检查所有的会签任务是否完成 if (BPMDBService.CheckAllJoinSignTaskDone(this.ID)) { // 任务完成 BPMDBService.TaskDone(this.ID, 0); // 如果会签的下一个节点是唯一网关,只要有一个会签失败,这个网关的参数设置为false if (BPMDBService.CheckFailureSign(this.ID) && !string.IsNullOrEmpty(arg.ArgName) && arg.ArgName.StartsWith("bool_")) { pi.InputData[arg.ArgName] = false; } // 继续任务 return(await base.Excute(pi)); } else { // 没有全部完成 继续等待 return(string.Empty); } } }