Exemple #1
0
 public void On_TaskJob_Finished(CurrentProcessTask Task)
 {
     Task.Finished = true;
     _TaskReport.On_TaskJob_Finished(Task);
     TaskRemove(Task);
     logger.Debug("On_TaskJob_Finished");
 }
Exemple #2
0
        public static CurrentProcessTask Excute(Command TaskName, Dictionary <string, string> param = null, string TaskId = "", string MainTaskId = "")
        {
            CurrentProcessTask result = null;
            string             uid    = TaskId.Equals("")? Guid.NewGuid().ToString():TaskId;

            lock (CurrentProcessTasks)
            {
                if (!CurrentProcessTasks.ContainsKey(uid))
                {
                    result = new CurrentProcessTask();
                    CurrentProcessTasks.Add(uid, result);

                    result.Id         = uid;
                    result.MainTaskId = TaskId.Equals("") ? MainTaskId : TaskId;
                    result.IsSubTask  = TaskId.Equals("");
                    result.Params     = param;
                    result.TaskName   = TaskName;
                }
                else
                {
                    logger.Error("ID is exsit:" + uid);
                    return(null);
                }
            }
            logger.Debug("TaskName:" + TaskName.ToString());

            ThreadPool.QueueUserWorkItem(new WaitCallback(TaskFlow.Excute), result);


            return(result);
        }
Exemple #3
0
        private static void Next(Node Node, Transaction Txn, string ReturnType)
        {
            CurrentProcessTask CurrentTask = Txn.TaskObj;
            int count = 0;

            lock (CurrentProcessTasks)
            {
                var findExcuted = from each in CurrentTask.CheckList
                                  where each.ExcuteName.Equals(Txn.Method) && each.ExcuteType.Equals(ReturnType.ToUpper()) && each.NodeName.Equals(Txn.NodeName) && !each.Finished
                                  select each;
                if (findExcuted.Count() != 0)//標記完成的命令
                {
                    findExcuted.First().Finished = true;
                }

                findExcuted = from each in CurrentTask.CheckList
                              where !each.Finished
                              select each;
                count = findExcuted.Count();
            }
            if (count == 0)//當全部完成後,繼續下一步
            {
                CurrentTask.CurrentIndex++;
                CurrentTask.CheckList.Clear();
                TaskFlow.Excute(CurrentTask);
            }
        }
Exemple #4
0
        public static void TaskRemove(CurrentProcessTask Task)
        {
            lock (CurrentProcessTasks)
            {
                logger.Debug("Delete Task " + Task.TaskName.ToString() + ":" + Task.Id);

                CurrentProcessTasks.Remove(Task.Id);
            }
        }
Exemple #5
0
        public static CurrentProcessTask GetTask(string TaskId)
        {
            CurrentProcessTask result = null;

            lock (CurrentProcessTasks)
            {
                CurrentProcessTasks.TryGetValue(TaskId, out result);
            }
            return(result);
        }
Exemple #6
0
 public void On_TaskJob_Ack(CurrentProcessTask Task)
 {
     _TaskReport.On_TaskJob_Ack(Task);
 }