Пример #1
0
        public void result(MaratonResult json)
        {
            if (json == null)
            {
                return;
            }

            MaratonAPI api      = new MaratonAPI();
            DbTask     task     = null;
            DbPipeline pipeline = null;

            using (MDB mdb = new MDB())
            {
                task     = mdb.Find <DbTask>(x => x.Id == json.taskid).FirstOrDefault();
                pipeline = mdb.Find <DbPipeline>(x => x.Id == json.pipelineid).FirstOrDefault();

                if (task == null ||
                    pipeline == null)
                {
                    return;
                }

                if (json.status == 303)
                {
                    for (int i = 0; i < task.Pipelines.Count; i++)
                    {
                        if (task.Pipelines[i] != pipeline.Id)
                        {
                            continue;
                        }

                        if (i < (task.Pipelines.Count - 1))
                        {
                            var p = mdb.FindOne <DbPipeline>(x => x.Id == task.Pipelines[i + 1]);
                            task.Inputs = json.data;
                            api.TaskDeliver(task, p);
                            return;
                        }
                        else if (i == (task.Pipelines.Count - 1))
                        {
                            task.State      = json.status;
                            task.Result     = json.data;
                            task.FinishTime = DateTime.Now;
                            task.Duratation = (int)((task.FinishTime - task.ExecuteTime).TotalSeconds);
                            mdb.UpdateOne <DbTask>(x => x.Id == json.taskid, task);
                        }
                    }
                }
                else
                {
                    task.State = json.status;
                    mdb.UpdateOne <DbTask>(x => x.Id == json.taskid, task);
                }
            }
        }
Пример #2
0
        public void result(MaratonResult json)
        {
            if (json == null)
            {
                return;
            }

            MaratonAPI api      = new MaratonAPI();
            DbTask     task     = null;
            DbPipeline pipeline = null;

            using (MDB mdb = new MDB())
            {
                task     = mdb.Find <DbTask>(x => x.Id == json.taskid).FirstOrDefault();
                pipeline = mdb.Find <DbPipeline>(x => x.Id == json.pipelineid).FirstOrDefault();

                if (task == null ||
                    pipeline == null)
                {
                    return;
                }

                TryFinishTask(json, task, pipeline);

                var newTask     = mdb.Find <DbTask>(x => x.State == 2).FirstOrDefault();
                var newpipeline = mdb.Find <DbPipeline>(x => x.Id == newTask.Pipelines[0]).FirstOrDefault();

                if (newTask == null)
                {
                    return;
                }
                if (newpipeline == null)
                {
                    return;
                }

                var result = api.TaskDeliver(newTask, newpipeline);

                if (result.code == 0)
                {
                    newTask.ExecuteTime = DateTime.Now;
                    newTask.State       = 1;
                    mdb.UpdateOne <DbTask>(x => x.Id == newTask.Id, newTask);
                }
                else
                {
                    newTask.State = 2;
                    mdb.UpdateOne <DbTask>(x => x.Id == newTask.Id, newTask);
                }
            }
        }
Пример #3
0
        bool TryFinishTask(MaratonResult json, DbTask task, DbPipeline pipeline)
        {
            MaratonAPI api = new MaratonAPI();

            using (MDB mdb = new MDB())
            {
                if (json.status == 303)
                {
                    for (int i = 0; i < task.Pipelines.Count; i++)
                    {
                        if (task.Pipelines[i] != pipeline.Id)
                        {
                            continue;
                        }

                        if (i < (task.Pipelines.Count - 1))
                        {
                            var p = mdb.FindOne <DbPipeline>(x => x.Id == task.Pipelines[i + 1]);
                            task.Inputs = json.data;
                            api.TaskDeliver(task, p);
                            return(true);
                        }
                        else if (i == (task.Pipelines.Count - 1))
                        {
                            task.State      = json.status;
                            task.Result     = json.data;
                            task.FinishTime = DateTime.Now;
                            task.Duratation = (int)((task.FinishTime - task.ExecuteTime).TotalSeconds);
                            mdb.UpdateOne <DbTask>(x => x.Id == json.taskid, task);
                            return(true);
                        }
                    }
                    return(true);
                }
                else
                {
                    task.State = json.status;
                    mdb.UpdateOne <DbTask>(x => x.Id == json.taskid, task);
                    return(true);
                }
            }
        }