Exemple #1
0
        /// <summary>
        /// 生成一个 X_Batch 记录,并为后期登记变化状态
        /// </summary>
        /// <param name="create">生成任务头</param>
        /// <param name="trace">加入任务执行上下文</param>
        /// <param name="transControl">是否将头创建与任务执行体做事务控制</param>
        public void NewJobTrace(
            Func <TB_sys_batch, bool> create,
            Action <TB_sys_batch, TContext> trace, bool transControlled = false)
        {
            var newId = Guid.NewGuid();
            var job   = new TB_sys_batch()
            {
                Id        = newId,
                Completed = false,
                Channel   = (int)D.BatchChannel.Timer,
                Priority  = -1
            };

            // 如果无需创建,则返回
            if (!create(job))
            {
                return;
            }
            if (transControlled)
            {
                trace(job, Context);
            }
            else
            {
                var tb = Context.GetTable <TB_sys_batch>();
                tb.InsertOnSubmit(job);
                Context.SubmitChanges();
                trace(tb.Single(j => j.Id == newId), Context);
            }
        }
Exemple #2
0
 /// <summary>
 /// 前置检查
 /// </summary>
 /// <param name="last"></param>
 /// <param name="current"></param>
 /// <returns></returns>
 protected virtual bool _ShouldDo(TB_sys_batch last, Action <string> tip)
 {
     return(true);
 }
Exemple #3
0
 /// <summary>
 /// 执行方法入口
 /// </summary>
 /// <param name="handle">(上次执行,当前执行)</param>
 protected virtual void _Execute(TB_sys_batch last, TB_sys_batch current, Action <string> succeeded)
 {
 }