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