/// <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); } }
/// <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); }
/// <summary> /// 执行方法入口 /// </summary> /// <param name="handle">(上次执行,当前执行)</param> protected virtual void _Execute(TB_sys_batch last, TB_sys_batch current, Action <string> succeeded) { }