Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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);
        }