/// <summary>
        /// 成功
        /// </summary>
        /// <param name="task"></param>
        /// <param name="node"></param>
        /// <returns></returns>
        public virtual int Done(TaskschedNode task, ExecutingNode node)
        {
            const string taskUpdateText = "update {0}task set  NextStep = @NextStep,EditDate = @EditDate,ProcessPercent = @ProcessPercent, AttachState = @AttachState, Version = Version + 1,NextTime = null where TaskId = @TaskId and Status = 0;";
            const string nodeUpdateText = "update {0}task_node set FinishTime = @FinishTime, ResultMessage = @ResultMessage,EditDate = @EditDate,Version = Version + 1 where RowId = @RowId and TaskId = @TaskId and FinishTime is null;";

            using (var sql = this.Open())
            {
                var rowId       = 0;
                var transaction = sql as SqlClient.SqlExecuter;
                if (transaction != null)
                {
                    transaction.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted);
                    try
                    {
                        rowId = sql.Update(string.Format(taskUpdateText, this.TablePrefixName), new { @NextStep = task.NextStep, @TaskId = task.TaskId, @EditDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), @ProcessPercent = task.ProcessPercent, AttachState = task.AttachState, });
                        if (rowId > 0)
                        {
                            sql.Update(string.Format(nodeUpdateText, this.TablePrefixName), new { @FinishTime = node.FinishTime, @ResultMessage = node.ResultMessage, @RowId = node.RowId, @TaskId = node.TaskId, @EditDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), });
                        }

                        transaction.CommitTransaction();
                    }
                    catch
                    {
                        transaction.RollBackTransaction();
                        throw;
                    }

                    return(rowId);
                }

                var tasksb = new StringBuilder(100);
                tasksb.AppendFormat("update {0}task set NextStep = '{1}' EditDate = '{2}', Version = Version + 1,ProcessPercent = {3},AttachState ='{4}' NextTime = null where TaskId = '{5}' and Status = 0;",
                                    this.TablePrefixName,
                                    task.NextStep,
                                    DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                    task.ProcessPercent,
                                    task.AttachState.ToString(),
                                    task.TaskId.ToString());

                var nodesb = new StringBuilder(100);
                nodesb.AppendFormat("update {0}task_node set FinishTime = '{1}', ResultMessage = '{2}', EditDate = '{3}',Version = Version + 1 where RowId = '{4}' and TaskId = '{5}' and FinishTime is null;",
                                    this.TablePrefixName,
                                    (node.FinishTime.HasValue ? node.FinishTime.Value : DateTime.Now).ToString("yyyy-MM-dd HH:mm:ss"),
                                    this.Transferred(node.ResultMessage),
                                    DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                    node.RowId.ToString(),
                                    node.TaskId.ToString());

                rowId = sql.Update(tasksb.ToString(), null);
                if (rowId > 0)
                {
                    rowId = sql.Update(nodesb.ToString(), null);
                }

                return(rowId);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 在详情节点出现空消息的时候,可能会更新节点任务的下一次开始时间和详情节点的空消息次数
        /// </summary>
        /// <param name="task"></param>
        /// <param name="node"></param>
        /// <returns></returns>
        public virtual int NextWork(TaskschedNode task, ExecutingNode node)
        {
            const string taskUpdateText = "update {0}task set NextTime = @NextTime, EditDate = @EditDate, AttachState = @AttachState, ExecutingMessage = @ExecutingMessage, Version = Version + 1 where TaskId = @TaskId and Status = 0;";

            using (var sql = this.Open())
            {
                var para = new
                {
                    @NextTime         = task.NextTime,
                    @TaskId           = task.TaskId,
                    @EditDate         = DateTime.Now,
                    @ExecutingMessage = node.ExecutingMessage,
                    @AttachState      = task.AttachState
                };

                var rowId = sql.Update(string.Format(taskUpdateText, this.TablePrefixName), para);
                return(rowId);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 成功
        /// </summary>
        /// <param name="task"></param>
        /// <param name="node"></param>
        /// <returns></returns>
        public virtual int Done(TaskschedNode task, ExecutingNode node)
        {
            const string taskUpdateText = "update {0}task set  NextStep = @NextStep,EditDate = @EditDate,ProcessPercent = @ProcessPercent, AttachState = @AttachState, ResultMessage = @ResultMessage, Version = Version + 1,NextTime = null where TaskId = @TaskId and Status = 0;";

            using (var sql = this.Open())
            {
                var para = new
                {
                    @NextStep       = task.NextStep,
                    @TaskId         = task.TaskId,
                    @EditDate       = DateTime.Now,
                    @ProcessPercent = task.ProcessPercent,
                    @AttachState    = task.AttachState,
                    @ResultMessage  = node.ResultMessage,
                };

                var rowId = sql.Update(string.Format(taskUpdateText, this.TablePrefixName), para);
                return(rowId);
            }
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="task"></param>
 /// <param name="node"></param>
 /// <returns></returns>
 public int NextWork(TaskschedNode task, ExecutingNode node)
 {
     return(1);
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="task"></param>
 /// <param name="node"></param>
 /// <returns></returns>
 public int Exception(TaskschedNode task, ExecutingNode node)
 {
     return(1);
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="task"></param>
 /// <param name="node"></param>
 /// <returns></returns>
 public int Done(TaskschedNode task, ExecutingNode node)
 {
     return(1);
 }
        /// <summary>
        /// 在详情节点出现错误的时候,可能会更新节点任务的下一次开始时间
        /// </summary>
        /// <param name="task"></param>
        /// <param name="node"></param>
        /// <returns></returns>
        public virtual int Exception(TaskschedNode task, ExecutingNode node)
        {
            const string taskUpdateText  = "update {0}task set NextTime = @NextTime, EditDate = @EditDate,AttachState = @AttachState, Version = Version + 1 where TaskId = @TaskId and Status = 0;";
            const string nodeUpdateText  = "update {0}task_node set FailTimes = FailTimes + 1,ExecutingMessage = @ExecutingMessage, EditDate = @EditDate,Version = Version + 1 where RowId = @RowId and TaskId = @TaskId and FinishTime is null;";
            const string errorInsertText = "insert into {0}task_node_error(RowId,CreateDate,StepType,FailException)values(@RowId,@CreateDate,@StepType,@FailException)";

            using (var sql = this.Open())
            {
                var rowId       = 0;
                var transaction = sql as SqlClient.ITransactionExecuter;
                if (transaction != null)
                {
                    transaction.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted);
                    try
                    {
                        rowId = sql.Update(string.Format(taskUpdateText, this.TablePrefixName), new { @NextTime = task.NextTime, @TaskId = task.TaskId, @EditDate = DateTime.Now, AttachState = task.AttachState });
                        if (rowId > 0)
                        {
                            rowId = sql.Update(string.Format(nodeUpdateText, this.TablePrefixName), new { @ExecutingMessage = node.ExecutingMessage, @RowId = node.RowId, @TaskId = node.TaskId, @EditDate = DateTime.Now, });
                            sql.Insert(string.Format(errorInsertText, this.TablePrefixName), new { @RowId = node.RowId, @CreateDate = DateTime.Now, @StepType = node.StepType, @FailException = node.ExecutingMessage });
                        }

                        transaction.CommitTransaction();
                    }
                    catch
                    {
                        transaction.RollBackTransaction();
                        throw;
                    }

                    return(rowId);
                }

                var tasksb = new StringBuilder(100);
                tasksb.AppendFormat("update {0}task set NextTime = '{1}', EditDate = '{2}',AttachState = '{3}' Version = Version + 1 where TaskId = '{4}' and Status = 0;",
                                    this.TablePrefixName,
                                    (task.NextTime.HasValue ? task.NextTime.Value : DateTime.Now).ToString("yyyy-MM-dd HH:mm:ss"),
                                    DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                    task.AttachState.ToString(),
                                    task.TaskId.ToString());

                var nodesb = new StringBuilder(100);
                nodesb.AppendFormat("update {0}task_node set FailTimes = FailTimes + 1,ExecutingMessage = '{1}', EditDate = '{2}',Version = Version + 1 where RowId = '{3}' and TaskId = '{4}' and FinishTime is null;",
                                    this.TablePrefixName,
                                    this.Transferred(node.ExecutingMessage),
                                    DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                    node.RowId.ToString(),
                                    node.TaskId.ToString());

                var errorsb = new StringBuilder(100);
                errorsb.AppendFormat("insert into {0}task_node_error(RowId,CreateDate,StepType,FailException)values('{1}','{2}','{3}','{4}');",
                                     this.TablePrefixName,
                                     node.RowId.ToString(),
                                     DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                     node.StepType,
                                     this.Transferred(node.ExecutingMessage));

                rowId = sql.Update(tasksb.ToString(), null);
                if (rowId > 0)
                {
                    rowId = sql.Update(nodesb.ToString(), null);
                    sql.Insert(errorsb.ToString(), null);
                }

                return(rowId);
            }
        }