using System; using SqlSugar; using System.Linq; using System.ComponentModel; using System.Collections.Generic; using Tiger.Model.Extensions; namespace Tiger.Model { /// /// 实体:任务触发器 /// [Description("Primary:ID")] [Serializable] [SugarTable("TSK_TRIG")] public class TSK_TRIG : DbEntityWithAuth { #region 构造函数 /// /// 实体:任务触发器 /// public TSK_TRIG() {} #endregion #region 公共属性 /// /// 作业 Id /// public string JobId { get; set; } /// /// 作业触发器类型,存储的是类型的 FullName /// public string TriggerType { get; set; } /// /// 作业触发器类型所在程序集,存储的是程序集 Name /// public string AssemblyName { get; set; } /// /// 作业触发器参数,运行时将反序列化为 object[] 类型并作为构造函数参数 /// public string Args { get; set; } /// /// 描述信息 /// public string Description { get; set; } /// /// 作业触发器状态(0Backlog积压,起始时间大于当前时间|1Ready就绪|2Running正在运行|3Pause暂停|4Blocked阻塞,本该执行但是没有执行|5ErrorToReady由失败进入就绪,运行错误当并未超出最大错误数,进入下一轮就绪|6Archived归档,结束时间小于当前时间|7Panic崩溃,错误次数超出了最大错误数|8Overrun超限,运行次数超出了最大限制|9Unoccupied无触发时间,下一次执行时间为null|10NotStart初始化时末启动|11Unknown未知作业触发器,作业触发器运行时类型为null|12Unhandled未知作业处理程序,作业处理程序类型运行时类型为null) /// public int Status { get; set; } = 1; /// /// 起始时间 /// public DateTime? StartTime { get; set; } = DateTime.MinValue; /// /// 结束时间 /// public DateTime? EndTime { get; set; } = DateTime.MinValue; /// /// 最后运行时间 /// public DateTime? LastRunTime { get; set; } = DateTime.MinValue; /// /// 下一次运行时间 /// public DateTime? NextRunTime { get; set; } = DateTime.MinValue; /// /// 触发次数 /// public long NumberOfRuns { get; set; } = 0; /// /// 最大触发次数,0: 不限制,n: N 次 /// public long MaxNumberOfRuns { get; set; } = 0; /// /// 出错次数 /// public long NumberOfErrors { get; set; } = 0; /// /// 最大出错次数,0:不限制,n: N 次 /// public long MaxNumberOfErrors { get; set; } = 0; /// /// 重试次数 /// public int NumRetries { get; set; } = 0; /// /// 重试间隔时间,毫秒单位 /// public int RetryTimeout { get; set; } = 1000; /// /// 是否立即启动 /// public bool StartNow { get; set; } = true; /// /// 是否启动时执行一次 /// public bool RunOnStart { get; set; } = false; /// /// 是否在启动时重置最大触发次数等于一次的作业 /// public bool ResetOnlyOnce { get; set; } = true; /// /// 本次执行返回结果 /// public string Result { get; set; } /// /// 本次执行耗时,单位 ms /// public long ElapsedTime { get; set; } = 0; /// /// 作业触发器更新时间 /// public DateTime UpdatedTime { get; set; } = DateTime.MinValue; /// /// 备注 /// public string Remark { get; set; } #endregion #region 虚拟属性 //例子 [SugarColumn(IsIgnore = true)] public string StatusStr => Status.GetEnum().GetName(); #endregion #region 外键属性 /*例子 //一对一外键导航 [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是TSK_TRIG类里面的外键ID字段 public ClassA ClassA { get; set; } //不能赋值只能是null //一对多外键导航 [Navigate(NavigateType.OneToMany, nameof(ClassA.TSK_TRIGId))]//ClassA表中的TSK_TRIGId public List ClassAList { get; set; }//注意禁止给books手动赋值 //多对多外键导航 [Navigate(typeof(MappingClass), nameof(MappingClass.TSK_TRIGId), nameof(MappingClass.ClassAId))]//注意顺序 public List ClassAList { get; set; } //只能是null不能赋默认值 */ #endregion #region 枚举变量 /// /// 作业触发器状态(0Backlog积压,起始时间大于当前时间|1Ready就绪|2Running正在运行|3Pause暂停|4Blocked阻塞,本该执行但是没有执行|5ErrorToReady由失败进入就绪,运行错误当并未超出最大错误数,进入下一轮就绪|6Archived归档,结束时间小于当前时间|7Panic崩溃,错误次数超出了最大错误数|8Overrun超限,运行次数超出了最大限制|9Unoccupied无触发时间,下一次执行时间为null|10NotStart初始化时末启动|11Unknown未知作业触发器,作业触发器运行时类型为null|12Unhandled未知作业处理程序,作业处理程序类型运行时类型为null) /// public enum Statuss { [Description("积压,起始时间大于当前时间")] Backlog, [Description("就绪")] Ready, [Description("正在运行")] Running, [Description("暂停")] Pause, [Description("阻塞,本该执行但是没有执行")] Blocked, [Description("由失败进入就绪,运行错误当并未超出最大错误数,进入下一轮就绪")] ErrorToReady, [Description("归档,结束时间小于当前时间")] Archived, [Description("崩溃,错误次数超出了最大错误数")] Panic, [Description("超限,运行次数超出了最大限制")] Overrun, [Description("无触发时间,下一次执行时间为null")] Unoccupied, [Description("初始化时末启动")] NotStart, [Description("未知作业触发器,作业触发器运行时类型为null")] Unknown, [Description("未知作业处理程序,作业处理程序类型运行时类型为null")] Unhandled, } #endregion #region 公共方法 #endregion }//endClass public class TrigArgs { public string ToRunNow { get; set; } public int ToRunEvery { get; set; } public int ToRunOnceIn { get; set; } public string NonReentrant { get; set; } //Y不重复,N重复 public EveryType Type { get; set; } public Int64 Milliseconds { get; set; } public int Seconds { get; set; } public int Minutes { get; set; } public int Hours { get; set; } public int Days { get; set; } public int Weekday { get; set; } public enum EveryType { [Description("毫秒")] Milliseconds, [Description("秒")] Seconds, [Description("分钟")] Minutes, [Description("小时")] Hours, [Description("天")] Days, [Description("周")] Weeks, [Description("星期几")] Weekdays, [Description("月")] Months, } } }