private static async Task ExecutingWithTasks(TTData data, GroupEventTaskResp <TTRes> groupResp, IList <BaseEventTask <TTData, TTRes> > tasks) { GroupExecuteResp <TTData, TTRes> exeResp; if (groupResp.meta.Process_type == GroupProcessType.Parallel) { exeResp = await tasks.Executing_Parallel(data); } else { exeResp = await tasks.Executing_Serial(data); } // 处理回退其他任务 if ((exeResp.status & GroupExecuteStatus.Revert) == GroupExecuteStatus.Revert) { if (groupResp.meta.Process_type == GroupProcessType.Parallel) { await exeResp.TaskResults.Executing_ParallelRevert(data); } else { await exeResp.TaskResults.Executing_SerialRevert(data); } } groupResp.run_status = (exeResp.status & GroupExecuteStatus.Failed) == GroupExecuteStatus.Failed ? TaskRunStatus.RunFailed : TaskRunStatus.RunCompleted; groupResp.results = exeResp.TaskResults.Select(x => x.Value).ToList(); }
internal override async Task Processing(TTData data, GroupEventTaskResp <TTRes> res) { // 获取任务元数据列表 var tasks = await GetTasks(res.tried_times); if (tasks == null || !tasks.Any()) { return; } foreach (var task in tasks) { task.OwnerType = OwnerType; } // 执行处理结果 await ExecutingWithTasks(data, res, tasks); }