Beispiel #1
0
        public int Clone(int id)
        {
            var eavCt    = _appManager.DataController;                                        // DbDataController.Instance(appId: appId);
            var clonedId = new DbPipeline(eavCt).CopyDataPipeline(_appManager.AppId, id, ""); // _userName);

            return(clonedId);
        }
Beispiel #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;
                }

                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);
                }
            }
        }
Beispiel #3
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);
                }
            }
        }
Beispiel #4
0
        public Message.MessageTaskDeliverReply TaskDeliver(DbTask task, DbPipeline line)
        {
            var servants = ServantList();

            Message.MessageTaskDeliver td = new Message.MessageTaskDeliver();
            td.id         = task.Id;
            td.input      = task.Inputs;
            td.servants   = servants.Select(m => m.id).ToList();
            td.resources  = new List <string>();
            td.isParallel = line.IsParallel;
            td.originalID = td.id;
            td.pipeline   = (new Message.MessagePipeline()
            {
                id = line.Id,
                name = line.Name,
                pipes = new List <Message.MessagePipe>()
            });

            using (MDB db = new MDB())
            {
                for (int i = 0; i < line.PipeIds.Count; i++)
                {
                    var pipe = db.FindOne <DbPipe>(x => x.Id == line.PipeIds[i]);
                    var p    = new Message.MessagePipe()
                    {
                        id             = pipe.Id,
                        executor       = pipe.Executor,
                        multipleInput  = pipe.IsMultipleInput,
                        multipleThread = pipe.IsMultipleThread,
                        parameters     = pipe.Parameters,
                        name           = pipe.Name
                    };

                    td.pipeline.pipes.Add(p);
                }
            }

            var msg = PostData <Message.MessageTaskDeliverReply>("/task/deliver", Newtonsoft.Json.JsonConvert.SerializeObject(td));

            //sock.Send<Message.MessageTaskDeliver>(Message.MessageTaskDeliver.SerializeToBytes(td));
            //msg = sock.Receive() as Message.MessageTaskDeliverReply;
            //sock.Close();
            return(msg);
        }
Beispiel #5
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);
                }
            }
        }