/// <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); } }
/// <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); } }
/// <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); } }