public async Task <TaskInfo> GetTaskInfo(int id)
        {
            TaskInfo res;

            if (_taskInfos.TryGetValue(id, out res))
            {
                return(res);
            }

            using (var scope = this.Services.CreateScope())
            {
                var provider = scope.ServiceProvider;
                using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.Suppress, TimeSpan.FromSeconds(30), TransactionScopeAsyncFlowOption.Enabled))
                {
                    var          database = provider.GetRequiredService <SSSBDbContext>();
                    OnDemandTask task     = await database.OnDemandTask.Include((d) => d.Executor).SingleOrDefaultAsync(t => t.OnDemandTaskId == id);

                    if (task == null)
                    {
                        throw new Exception(string.Format("OnDemandTask with taskID={0} was not found", id));
                    }
                    res = TaskInfo.FromOnDemandTask(task);
                }
            }

            _taskInfos.TryAdd(id, res);
            return(res);
        }
Exemple #2
0
        public static TaskInfo FromOnDemandTask(OnDemandTask task)
        {
            TaskInfo info     = new TaskInfo();
            Executor executor = task.Executor;

            info.ExecutorTypeName = executor.FullTypeName;
            info.OnDemandTaskID   = task.OnDemandTaskId;
            info.Name             = task.Name;
            info.ExecutorID       = task.ExecutorId;
            info.SheduleID        = task.SheduleId;
            info.SettingID        = task.SettingId;
            return(info);
        }