Пример #1
0
 /// <summary>
 /// 转义
 /// </summary>
 /// <param name="writer"></param>
 /// <param name="source"></param>
 protected string Transferred(Serialization.Json.ThunderWriter writer, string source)
 {
     writer.Clear();
     foreach (var i in source)
     {
         Serialization.Json.MethodProviders.CharMethodProvider.Default.Write(writer, new Serialization.Json.JsonSerializeSetting(), i);
     }
     return(writer.ToString());
 }
Пример #2
0
        /// <summary>
        /// 转义
        /// </summary>
        /// <param name="source"></param>
        protected string Transferred(string source)
        {
            var writer = new Serialization.Json.ThunderWriter(source.Length);

            return(this.Transferred(writer, source));
        }
        /// <summary>
        /// 创建一个任务
        /// </summary>
        /// <param name="task"></param>
        /// <param name="nodes"></param>
        /// <returns></returns>
        public virtual int Save(TaskschedNode task, ExecutingNode[] nodes)
        {
            const string taskInsertText = "insert into {0}task(TaskId,UserSign,UserSignState,AttachState,CommandType,Status,StartTime,NextTime,FinishTime,StepCount,NextStep,ProcessPercent,PushMessage,CreateDate,EditDate,Version) values(@TaskId,@UserSign,@UserSignState,0,@CommandType,@Status,@StartTime,@NextTime,@FinishTime,@StepCount,@NextStep,@ProcessPercent,@PushMessage,@CreateDate,@EditDate,@Version);";
            const string nodeInsertText = "insert into {0}task_node(RowId,TaskId,OrderNo,StepCount,StartTime,FinishTime,FailTimes,WaitTimes,StepType,StepCoordinationMode,ResultMessage,Removed,CreateDate,EditDate,Version) values(@RowId,@TaskId,@OrderNo,@StepCount,@StartTime,@FinishTime,@FailTimes,@WaitTimes,@StepType,@StepCoordinationMode,@ResultMessage,@Removed,@CreateDate,@EditDate,@Version);";

            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 = (int)Convert.ChangeType(sql.Insert(string.Concat(string.Format(taskInsertText, this.TablePrefixName), this.SelectIdentity),
                                                                   new
                        {
                            @TaskId         = task.TaskId,
                            @UserSign       = task.UserSign,
                            @UserSignState  = task.UserSignState,
                            @CommandType    = task.CommandType,
                            @Status         = (int)task.Status,
                            @StartTime      = task.StartTime,
                            @NextTime       = task.NextTime,
                            @FinishTime     = task.FinishTime,
                            @StepCount      = task.StepCount,
                            @NextStep       = task.NextStep,
                            @ProcessPercent = task.ProcessPercent,
                            @PushMessage    = task.PushMessage,
                            @CreateDate     = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                            @EditDate       = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                            @Version        = 1,
                        }), TypeCode.Int32);

                        foreach (var node in nodes)
                        {
                            sql.Insert(string.Format(nodeInsertText, this.TablePrefixName),
                                       new
                            {
                                @RowId                = node.RowId,
                                @TaskId               = node.TaskId,
                                @OrderNo              = node.OrderNo,
                                @StepCount            = task.StepCount,
                                @StartTime            = node.StartTime,
                                @FinishTime           = node.FinishTime,
                                @FailTimes            = node.FailTimes,
                                @WaitTimes            = node.WaitTimes,
                                @StepType             = node.StepType,
                                @StepCoordinationMode = node.StepCoordinationMode,
                                @Removed              = false,
                                @ResultMessage        = string.IsNullOrEmpty(node.ResultMessage) ? null : node.ResultMessage,
                                @CreateDate           = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                @EditDate             = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                @Version              = 1,
                            });
                        }

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

                var tasksb = new StringBuilder(200);
                var writer = new Serialization.Json.ThunderWriter(task.PushMessage == null ? 0 : task.PushMessage.Length);

                tasksb.AppendFormat("insert into {0}task(TaskId,UserSign,UserSignState,AttachState,CommandType,Status,StartTime,NextTime,FinishTime,StepCount,NextStep,ProcessPercent,PushMessage,CreateDate,EditDate,Version) values('{1}','{2}','{3}',0,'{4}',0,'{5}',null,null,'{6}',1,0,'{7}','{8}','{9}',1);",
                                    this.TablePrefixName,
                                    task.TaskId.ToString(),
                                    task.UserSign,
                                    task.UserSignState,
                                    task.CommandType,
                                    task.StartTime.ToString("yyyy-MM-dd HH:mm:ss"),
                                    task.StepCount,
                                    this.Transferred(writer, task.PushMessage),
                                    DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                    DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));

                foreach (var node in nodes)
                {
                    if (node.FinishTime.HasValue)
                    {
                        tasksb.AppendFormat("insert into {0}task_node(RowId,TaskId,OrderNo,StepCount,StartTime,FinishTime,FailTimes,WaitTimes,StepType,StepCoordinationMode,ResultMessage,Removed,CreateDate,EditDate,Version)values('{1}','{2}','{3}','{4}','{5}','{6}',0,0,'{7}','{8}','{9}',0,'{10}','{11}',1);",
                                            this.TablePrefixName,
                                            node.RowId.ToString(),
                                            node.TaskId.ToString(),
                                            node.OrderNo,
                                            task.StepCount,
                                            DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                            node.FinishTime.Value.ToString("yyyy-MM-dd HH:mm:ss"),
                                            node.StepType,
                                            (byte)node.StepCoordinationMode,
                                            this.Transferred(writer, node.ResultMessage),
                                            DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                            DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                    }
                    else
                    {
                        tasksb.AppendFormat("insert into {0}task_node(RowId,TaskId,OrderNo,StepCount,StartTime,FailTimes,WaitTimes,StepType,StepCoordinationMode,ResultMessage,Removed,CreateDate,EditDate,Version)values('{1}','{2}','{3}','{4}','{5}',0,0,'{6}','{7}','{8}',0,'{9}','{10}',1);",
                                            this.TablePrefixName,
                                            node.RowId.ToString(),
                                            node.TaskId.ToString(),
                                            node.OrderNo,
                                            task.StepCount,
                                            DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                            node.StepType,
                                            (byte)node.StepCoordinationMode,
                                            this.Transferred(writer, node.ResultMessage),
                                            DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                            DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                    }
                }

                tasksb.Append(this.SelectIdentity);
                rowId = (int)Convert.ChangeType(sql.Insert(tasksb.ToString(), null), TypeCode.Int32);
                return(rowId);
            }
        }