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,
}
}
}