数据模型
This commit is contained in:
parent
eec9e389bf
commit
56fe305f7b
|
@ -0,0 +1,66 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net45;netstandard2.0</TargetFrameworks>
|
||||
<AssemblyTitle>星尘数据</AssemblyTitle>
|
||||
<Description>星尘,轻量级服务框架。远程方法调用,服务自动注册和发现,负载均衡,动态伸缩,故障转移,性能监控。</Description>
|
||||
<Copyright>版权所有(C) 新生命开发团队 2019</Copyright>
|
||||
<Company>新生命开发团队</Company>
|
||||
<Version>1.0.2019.0320</Version>
|
||||
<FileVersion>1.0.2019.0320</FileVersion>
|
||||
<AssemblyVersion>1.0.*</AssemblyVersion>
|
||||
<Deterministic>false</Deterministic>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="Log\**" />
|
||||
<EmbeddedResource Remove="Log\**" />
|
||||
<None Remove="Log\**" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="Build.tt" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="Build.tt">
|
||||
<Generator>TextTemplatingFileGenerator</Generator>
|
||||
<LastGenOutput>Build.log</LastGenOutput>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\AntJob\AntJob.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TargetFramework)'=='net45'">
|
||||
<Reference Include="NewLife.Core">
|
||||
<HintPath>..\DLL\NewLife.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="XCode">
|
||||
<HintPath>..\DLL\XCode.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TargetFramework)'=='netstandard2.0'">
|
||||
<Reference Include="NewLife.Core">
|
||||
<HintPath>..\DLL20\NewLife.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="XCode">
|
||||
<HintPath>..\DLL20\XCode.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Update="Build.log">
|
||||
<DesignTime>True</DesignTime>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Build.tt</DependentUpon>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
|
@ -0,0 +1,16 @@
|
|||
<#@ template language="C#" hostSpecific="true" debug="true" #>
|
||||
<#@ assembly name="$(ProjectDir)\$(OutputPath)\NewLife.Core.dll" #>
|
||||
<#@ assembly name="$(ProjectDir)\$(OutputPath)\XCode.dll" #>
|
||||
<#@ import namespace="System.Diagnostics" #>
|
||||
<#@ import namespace="System.IO" #>
|
||||
<#@ import namespace="XCode.Code" #>
|
||||
<#@ output extension=".log" #>
|
||||
<#
|
||||
// 设置当前工作目录
|
||||
PathHelper.BaseDirectory = Host.ResolvePath(".");
|
||||
// 导入模型文件并生成实体类,模型文件、输出目录、命名空间、连接名
|
||||
EntityBuilder.Build();
|
||||
|
||||
//var tables = DAL.ImportFrom("Company.Project.xml");
|
||||
//EntityBuilder.Build(tables);
|
||||
#>
|
|
@ -0,0 +1,10 @@
|
|||
using XCode;
|
||||
|
||||
namespace AntJob.Data
|
||||
{
|
||||
/// <summary>实体基类</summary>
|
||||
/// <typeparam name="TEntity"></typeparam>
|
||||
public class EntityBase<TEntity> : Entity<TEntity> where TEntity : EntityBase<TEntity>, new()
|
||||
{
|
||||
}
|
||||
}
|
|
@ -0,0 +1,184 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using System.Xml.Serialization;
|
||||
using NewLife;
|
||||
using NewLife.Data;
|
||||
using NewLife.Log;
|
||||
using NewLife.Model;
|
||||
using NewLife.Reflection;
|
||||
using NewLife.Threading;
|
||||
using NewLife.Web;
|
||||
using XCode;
|
||||
using XCode.Cache;
|
||||
using XCode.Configuration;
|
||||
using XCode.DataAccessLayer;
|
||||
using XCode.Membership;
|
||||
|
||||
namespace AntJob.Data.Entity
|
||||
{
|
||||
/// <summary>作业</summary>
|
||||
public partial class Job : EntityBase<Job>
|
||||
{
|
||||
#region 对象操作
|
||||
static Job()
|
||||
{
|
||||
// 累加字段
|
||||
//var df = Meta.Factory.AdditionalFields;
|
||||
//df.Add(__.AppID);
|
||||
|
||||
// 过滤器 UserModule、TimeModule、IPModule
|
||||
Meta.Modules.Add<UserModule>();
|
||||
Meta.Modules.Add<TimeModule>();
|
||||
Meta.Modules.Add<IPModule>();
|
||||
}
|
||||
|
||||
/// <summary>验证数据,通过抛出异常的方式提示验证失败。</summary>
|
||||
/// <param name="isNew">是否插入</param>
|
||||
public override void Valid(Boolean isNew)
|
||||
{
|
||||
// 如果没有脏数据,则不需要进行任何处理
|
||||
if (!HasDirty) return;
|
||||
|
||||
// 在新插入数据或者修改了指定字段时进行修正
|
||||
// 处理当前已登录用户信息,可以由UserModule过滤器代劳
|
||||
/*var user = ManageProvider.User;
|
||||
if (user != null)
|
||||
{
|
||||
if (isNew && !Dirtys[nameof(CreateUserID)) nameof(CreateUserID) = user.ID;
|
||||
if (!Dirtys[nameof(UpdateUserID)]) nameof(UpdateUserID) = user.ID;
|
||||
}*/
|
||||
//if (isNew && !Dirtys[nameof(CreateTime)]) nameof(CreateTime) = DateTime.Now;
|
||||
//if (!Dirtys[nameof(UpdateTime)]) nameof(UpdateTime) = DateTime.Now;
|
||||
//if (isNew && !Dirtys[nameof(CreateIP)]) nameof(CreateIP) = ManageProvider.UserHost;
|
||||
//if (!Dirtys[nameof(UpdateIP)]) nameof(UpdateIP) = ManageProvider.UserHost;
|
||||
|
||||
// 检查唯一索引
|
||||
// CheckExist(isNew, __.AppID, __.Name);
|
||||
}
|
||||
|
||||
///// <summary>首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法</summary>
|
||||
//[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
//protected override void InitData()
|
||||
//{
|
||||
// // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用
|
||||
// if (Meta.Session.Count > 0) return;
|
||||
|
||||
// if (XTrace.Debug) XTrace.WriteLine("开始初始化Job[作业]数据……");
|
||||
|
||||
// var entity = new Job();
|
||||
// entity.ID = 0;
|
||||
// entity.AppID = 0;
|
||||
// entity.Name = "abc";
|
||||
// entity.DisplayName = "abc";
|
||||
// entity.Mode = 0;
|
||||
// entity.Topic = "abc";
|
||||
// entity.MessageCount = 0;
|
||||
// entity.Start = DateTime.Now;
|
||||
// entity.End = DateTime.Now;
|
||||
// entity.Step = 0;
|
||||
// entity.MinStep = 0;
|
||||
// entity.MaxStep = 0;
|
||||
// entity.StepRate = 0;
|
||||
// entity.BatchSize = 0;
|
||||
// entity.Offset = 0;
|
||||
// entity.MaxTask = 0;
|
||||
// entity.MaxError = 0;
|
||||
// entity.MaxRetry = 0;
|
||||
// entity.MaxTime = 0;
|
||||
// entity.MaxRetain = 0;
|
||||
// entity.MaxIdle = 0;
|
||||
// entity.ErrorDelay = 0;
|
||||
// entity.Total = 0;
|
||||
// entity.Success = 0;
|
||||
// entity.Error = 0;
|
||||
// entity.Times = 0;
|
||||
// entity.Speed = 0;
|
||||
// entity.FetchSpeed = 0;
|
||||
// entity.Enable = true;
|
||||
// entity.Description = "abc";
|
||||
// entity.CreateUserID = 0;
|
||||
// entity.CreateUser = "abc";
|
||||
// entity.CreateTime = DateTime.Now;
|
||||
// entity.CreateIP = "abc";
|
||||
// entity.UpdateUserID = 0;
|
||||
// entity.UpdateUser = "abc";
|
||||
// entity.UpdateTime = DateTime.Now;
|
||||
// entity.UpdateIP = "abc";
|
||||
// entity.Insert();
|
||||
|
||||
// if (XTrace.Debug) XTrace.WriteLine("完成初始化Job[作业]数据!");
|
||||
//}
|
||||
|
||||
///// <summary>已重载。基类先调用Valid(true)验证数据,然后在事务保护内调用OnInsert</summary>
|
||||
///// <returns></returns>
|
||||
//public override Int32 Insert()
|
||||
//{
|
||||
// return base.Insert();
|
||||
//}
|
||||
|
||||
///// <summary>已重载。在事务保护范围内处理业务,位于Valid之后</summary>
|
||||
///// <returns></returns>
|
||||
//protected override Int32 OnDelete()
|
||||
//{
|
||||
// return base.OnDelete();
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region 扩展属性
|
||||
/// <summary>应用</summary>
|
||||
[XmlIgnore]
|
||||
//[ScriptIgnore]
|
||||
public App App { get { return Extends.Get(nameof(App), k => App.FindByID(AppID)); } }
|
||||
|
||||
/// <summary>应用</summary>
|
||||
[XmlIgnore]
|
||||
//[ScriptIgnore]
|
||||
[DisplayName("应用")]
|
||||
[Map(__.AppID, typeof(App), "ID")]
|
||||
public String AppName { get { return App?.Name; } }
|
||||
#endregion
|
||||
|
||||
#region 扩展查询
|
||||
/// <summary>根据编号查找</summary>
|
||||
/// <param name="id">编号</param>
|
||||
/// <returns>实体对象</returns>
|
||||
public static Job FindByID(Int32 id)
|
||||
{
|
||||
if (id <= 0) return null;
|
||||
|
||||
// 实体缓存
|
||||
if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.ID == id);
|
||||
|
||||
// 单对象缓存
|
||||
return Meta.SingleCache[id];
|
||||
|
||||
//return Find(_.ID == id);
|
||||
}
|
||||
|
||||
/// <summary>根据应用、名称查找</summary>
|
||||
/// <param name="appid">应用</param>
|
||||
/// <param name="name">名称</param>
|
||||
/// <returns>实体对象</returns>
|
||||
public static Job FindByAppIDAndName(Int32 appid, String name)
|
||||
{
|
||||
// 实体缓存
|
||||
if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.AppID == appid && e.Name == name);
|
||||
|
||||
return Find(_.AppID == appid & _.Name == name);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 高级查询
|
||||
#endregion
|
||||
|
||||
#region 业务操作
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,790 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using XCode;
|
||||
using XCode.Configuration;
|
||||
using XCode.DataAccessLayer;
|
||||
|
||||
namespace AntJob.Data.Entity
|
||||
{
|
||||
/// <summary>作业</summary>
|
||||
[Serializable]
|
||||
[DataObject]
|
||||
[Description("作业")]
|
||||
[BindIndex("IU_Job_AppID_Name", true, "AppID,Name")]
|
||||
[BindTable("Job", Description = "作业", ConnName = "Ant", DbType = DatabaseType.None)]
|
||||
public partial class Job : IJob
|
||||
{
|
||||
#region 属性
|
||||
private Int32 _ID;
|
||||
/// <summary>编号</summary>
|
||||
[DisplayName("编号")]
|
||||
[Description("编号")]
|
||||
[DataObjectField(true, true, false, 0)]
|
||||
[BindColumn("ID", "编号", "")]
|
||||
public Int32 ID { get { return _ID; } set { if (OnPropertyChanging(__.ID, value)) { _ID = value; OnPropertyChanged(__.ID); } } }
|
||||
|
||||
private Int32 _AppID;
|
||||
/// <summary>应用</summary>
|
||||
[DisplayName("应用")]
|
||||
[Description("应用")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("AppID", "应用", "")]
|
||||
public Int32 AppID { get { return _AppID; } set { if (OnPropertyChanging(__.AppID, value)) { _AppID = value; OnPropertyChanged(__.AppID); } } }
|
||||
|
||||
private String _Name;
|
||||
/// <summary>名称</summary>
|
||||
[DisplayName("名称")]
|
||||
[Description("名称")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("Name", "名称", "", Master = true)]
|
||||
public String Name { get { return _Name; } set { if (OnPropertyChanging(__.Name, value)) { _Name = value; OnPropertyChanged(__.Name); } } }
|
||||
|
||||
private String _DisplayName;
|
||||
/// <summary>显示名</summary>
|
||||
[DisplayName("显示名")]
|
||||
[Description("显示名")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("DisplayName", "显示名", "")]
|
||||
public String DisplayName { get { return _DisplayName; } set { if (OnPropertyChanging(__.DisplayName, value)) { _DisplayName = value; OnPropertyChanged(__.DisplayName); } } }
|
||||
|
||||
private JobModes _Mode;
|
||||
/// <summary>调度模式</summary>
|
||||
[DisplayName("调度模式")]
|
||||
[Description("调度模式")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Mode", "调度模式", "")]
|
||||
public JobModes Mode { get { return _Mode; } set { if (OnPropertyChanging(__.Mode, value)) { _Mode = value; OnPropertyChanged(__.Mode); } } }
|
||||
|
||||
private String _Topic;
|
||||
/// <summary>主题。消息调度时消费的主题</summary>
|
||||
[DisplayName("主题")]
|
||||
[Description("主题。消息调度时消费的主题")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("Topic", "主题。消息调度时消费的主题", "")]
|
||||
public String Topic { get { return _Topic; } set { if (OnPropertyChanging(__.Topic, value)) { _Topic = value; OnPropertyChanged(__.Topic); } } }
|
||||
|
||||
private Int32 _MessageCount;
|
||||
/// <summary>消息数</summary>
|
||||
[DisplayName("消息数")]
|
||||
[Description("消息数")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("MessageCount", "消息数", "")]
|
||||
public Int32 MessageCount { get { return _MessageCount; } set { if (OnPropertyChanging(__.MessageCount, value)) { _MessageCount = value; OnPropertyChanged(__.MessageCount); } } }
|
||||
|
||||
private DateTime _Start;
|
||||
/// <summary>开始。大于等于</summary>
|
||||
[DisplayName("开始")]
|
||||
[Description("开始。大于等于")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("Start", "开始。大于等于", "")]
|
||||
public DateTime Start { get { return _Start; } set { if (OnPropertyChanging(__.Start, value)) { _Start = value; OnPropertyChanged(__.Start); } } }
|
||||
|
||||
private DateTime _End;
|
||||
/// <summary>结束。小于,不等于</summary>
|
||||
[DisplayName("结束")]
|
||||
[Description("结束。小于,不等于")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("End", "结束。小于,不等于", "")]
|
||||
public DateTime End { get { return _End; } set { if (OnPropertyChanging(__.End, value)) { _End = value; OnPropertyChanged(__.End); } } }
|
||||
|
||||
private Int32 _Step;
|
||||
/// <summary>步进。最大区间大小,秒</summary>
|
||||
[DisplayName("步进")]
|
||||
[Description("步进。最大区间大小,秒")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Step", "步进。最大区间大小,秒", "")]
|
||||
public Int32 Step { get { return _Step; } set { if (OnPropertyChanging(__.Step, value)) { _Step = value; OnPropertyChanged(__.Step); } } }
|
||||
|
||||
private Int32 _MinStep;
|
||||
/// <summary>最小步进。默认5秒</summary>
|
||||
[DisplayName("最小步进")]
|
||||
[Description("最小步进。默认5秒")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("MinStep", "最小步进。默认5秒", "")]
|
||||
public Int32 MinStep { get { return _MinStep; } set { if (OnPropertyChanging(__.MinStep, value)) { _MinStep = value; OnPropertyChanged(__.MinStep); } } }
|
||||
|
||||
private Int32 _MaxStep;
|
||||
/// <summary>最大步进。默认3600秒</summary>
|
||||
[DisplayName("最大步进")]
|
||||
[Description("最大步进。默认3600秒")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("MaxStep", "最大步进。默认3600秒", "")]
|
||||
public Int32 MaxStep { get { return _MaxStep; } set { if (OnPropertyChanging(__.MaxStep, value)) { _MaxStep = value; OnPropertyChanged(__.MaxStep); } } }
|
||||
|
||||
private Int32 _StepRate;
|
||||
/// <summary>步进率。动态调节步进时,不能超过该比率,百分位,默认100%</summary>
|
||||
[DisplayName("步进率")]
|
||||
[Description("步进率。动态调节步进时,不能超过该比率,百分位,默认100%")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("StepRate", "步进率。动态调节步进时,不能超过该比率,百分位,默认100%", "")]
|
||||
public Int32 StepRate { get { return _StepRate; } set { if (OnPropertyChanging(__.StepRate, value)) { _StepRate = value; OnPropertyChanged(__.StepRate); } } }
|
||||
|
||||
private Int32 _BatchSize;
|
||||
/// <summary>批大小</summary>
|
||||
[DisplayName("批大小")]
|
||||
[Description("批大小")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("BatchSize", "批大小", "")]
|
||||
public Int32 BatchSize { get { return _BatchSize; } set { if (OnPropertyChanging(__.BatchSize, value)) { _BatchSize = value; OnPropertyChanged(__.BatchSize); } } }
|
||||
|
||||
private Int32 _Offset;
|
||||
/// <summary>偏移。距离实时时间的秒数,部分业务不能跑到实时,秒</summary>
|
||||
[DisplayName("偏移")]
|
||||
[Description("偏移。距离实时时间的秒数,部分业务不能跑到实时,秒")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Offset", "偏移。距离实时时间的秒数,部分业务不能跑到实时,秒", "")]
|
||||
public Int32 Offset { get { return _Offset; } set { if (OnPropertyChanging(__.Offset, value)) { _Offset = value; OnPropertyChanged(__.Offset); } } }
|
||||
|
||||
private Int32 _MaxTask;
|
||||
/// <summary>并行。多任务并行处理</summary>
|
||||
[DisplayName("并行")]
|
||||
[Description("并行。多任务并行处理")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("MaxTask", "并行。多任务并行处理", "")]
|
||||
public Int32 MaxTask { get { return _MaxTask; } set { if (OnPropertyChanging(__.MaxTask, value)) { _MaxTask = value; OnPropertyChanged(__.MaxTask); } } }
|
||||
|
||||
private Int32 _MaxError;
|
||||
/// <summary>最大错误。连续错误达到最大错误数时停止</summary>
|
||||
[DisplayName("最大错误")]
|
||||
[Description("最大错误。连续错误达到最大错误数时停止")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("MaxError", "最大错误。连续错误达到最大错误数时停止", "")]
|
||||
public Int32 MaxError { get { return _MaxError; } set { if (OnPropertyChanging(__.MaxError, value)) { _MaxError = value; OnPropertyChanged(__.MaxError); } } }
|
||||
|
||||
private Int32 _MaxRetry;
|
||||
/// <summary>最大重试。默认10次,超过该次数后将不再重试</summary>
|
||||
[DisplayName("最大重试")]
|
||||
[Description("最大重试。默认10次,超过该次数后将不再重试")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("MaxRetry", "最大重试。默认10次,超过该次数后将不再重试", "")]
|
||||
public Int32 MaxRetry { get { return _MaxRetry; } set { if (OnPropertyChanging(__.MaxRetry, value)) { _MaxRetry = value; OnPropertyChanged(__.MaxRetry); } } }
|
||||
|
||||
private Int32 _MaxTime;
|
||||
/// <summary>最大执行时间。默认600秒,超过该时间则认为执行器故障,将会把该任务分配给其它执行器</summary>
|
||||
[DisplayName("最大执行时间")]
|
||||
[Description("最大执行时间。默认600秒,超过该时间则认为执行器故障,将会把该任务分配给其它执行器")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("MaxTime", "最大执行时间。默认600秒,超过该时间则认为执行器故障,将会把该任务分配给其它执行器", "")]
|
||||
public Int32 MaxTime { get { return _MaxTime; } set { if (OnPropertyChanging(__.MaxTime, value)) { _MaxTime = value; OnPropertyChanged(__.MaxTime); } } }
|
||||
|
||||
private Int32 _MaxRetain;
|
||||
/// <summary>保留。任务项保留天数,超过天数的任务项将被删除,默认3天</summary>
|
||||
[DisplayName("保留")]
|
||||
[Description("保留。任务项保留天数,超过天数的任务项将被删除,默认3天")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("MaxRetain", "保留。任务项保留天数,超过天数的任务项将被删除,默认3天", "")]
|
||||
public Int32 MaxRetain { get { return _MaxRetain; } set { if (OnPropertyChanging(__.MaxRetain, value)) { _MaxRetain = value; OnPropertyChanged(__.MaxRetain); } } }
|
||||
|
||||
private Int32 _MaxIdle;
|
||||
/// <summary>最大空闲时间。默认3600秒,超过该时间不更新则认为应用程序故障,系统触发告警</summary>
|
||||
[DisplayName("最大空闲时间")]
|
||||
[Description("最大空闲时间。默认3600秒,超过该时间不更新则认为应用程序故障,系统触发告警")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("MaxIdle", "最大空闲时间。默认3600秒,超过该时间不更新则认为应用程序故障,系统触发告警", "")]
|
||||
public Int32 MaxIdle { get { return _MaxIdle; } set { if (OnPropertyChanging(__.MaxIdle, value)) { _MaxIdle = value; OnPropertyChanged(__.MaxIdle); } } }
|
||||
|
||||
private Int32 _ErrorDelay;
|
||||
/// <summary>错误延迟。默认60秒,出错延迟后重新发放</summary>
|
||||
[DisplayName("错误延迟")]
|
||||
[Description("错误延迟。默认60秒,出错延迟后重新发放")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("ErrorDelay", "错误延迟。默认60秒,出错延迟后重新发放", "")]
|
||||
public Int32 ErrorDelay { get { return _ErrorDelay; } set { if (OnPropertyChanging(__.ErrorDelay, value)) { _ErrorDelay = value; OnPropertyChanged(__.ErrorDelay); } } }
|
||||
|
||||
private Int64 _Total;
|
||||
/// <summary>总数</summary>
|
||||
[DisplayName("总数")]
|
||||
[Description("总数")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Total", "总数", "")]
|
||||
public Int64 Total { get { return _Total; } set { if (OnPropertyChanging(__.Total, value)) { _Total = value; OnPropertyChanged(__.Total); } } }
|
||||
|
||||
private Int64 _Success;
|
||||
/// <summary>成功</summary>
|
||||
[DisplayName("成功")]
|
||||
[Description("成功")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Success", "成功", "")]
|
||||
public Int64 Success { get { return _Success; } set { if (OnPropertyChanging(__.Success, value)) { _Success = value; OnPropertyChanged(__.Success); } } }
|
||||
|
||||
private Int32 _Error;
|
||||
/// <summary>错误</summary>
|
||||
[DisplayName("错误")]
|
||||
[Description("错误")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Error", "错误", "")]
|
||||
public Int32 Error { get { return _Error; } set { if (OnPropertyChanging(__.Error, value)) { _Error = value; OnPropertyChanged(__.Error); } } }
|
||||
|
||||
private Int32 _Times;
|
||||
/// <summary>次数</summary>
|
||||
[DisplayName("次数")]
|
||||
[Description("次数")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Times", "次数", "")]
|
||||
public Int32 Times { get { return _Times; } set { if (OnPropertyChanging(__.Times, value)) { _Times = value; OnPropertyChanged(__.Times); } } }
|
||||
|
||||
private Int32 _Speed;
|
||||
/// <summary>速度</summary>
|
||||
[DisplayName("速度")]
|
||||
[Description("速度")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Speed", "速度", "")]
|
||||
public Int32 Speed { get { return _Speed; } set { if (OnPropertyChanging(__.Speed, value)) { _Speed = value; OnPropertyChanged(__.Speed); } } }
|
||||
|
||||
private Int32 _FetchSpeed;
|
||||
/// <summary>抽取速度</summary>
|
||||
[DisplayName("抽取速度")]
|
||||
[Description("抽取速度")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("FetchSpeed", "抽取速度", "")]
|
||||
public Int32 FetchSpeed { get { return _FetchSpeed; } set { if (OnPropertyChanging(__.FetchSpeed, value)) { _FetchSpeed = value; OnPropertyChanged(__.FetchSpeed); } } }
|
||||
|
||||
private Boolean _Enable;
|
||||
/// <summary>启用</summary>
|
||||
[DisplayName("启用")]
|
||||
[Description("启用")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Enable", "启用", "")]
|
||||
public Boolean Enable { get { return _Enable; } set { if (OnPropertyChanging(__.Enable, value)) { _Enable = value; OnPropertyChanged(__.Enable); } } }
|
||||
|
||||
private String _Description;
|
||||
/// <summary>内容</summary>
|
||||
[DisplayName("内容")]
|
||||
[Description("内容")]
|
||||
[DataObjectField(false, false, true, 2000)]
|
||||
[BindColumn("Message", "内容", "")]
|
||||
public String Description { get { return _Description; } set { if (OnPropertyChanging(__.Description, value)) { _Description = value; OnPropertyChanged(__.Description); } } }
|
||||
|
||||
private Int32 _CreateUserID;
|
||||
/// <summary>创建者</summary>
|
||||
[DisplayName("创建者")]
|
||||
[Description("创建者")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("CreateUserID", "创建者", "")]
|
||||
public Int32 CreateUserID { get { return _CreateUserID; } set { if (OnPropertyChanging(__.CreateUserID, value)) { _CreateUserID = value; OnPropertyChanged(__.CreateUserID); } } }
|
||||
|
||||
private String _CreateUser;
|
||||
/// <summary>创建者</summary>
|
||||
[DisplayName("创建者")]
|
||||
[Description("创建者")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("CreateUser", "创建者", "")]
|
||||
public String CreateUser { get { return _CreateUser; } set { if (OnPropertyChanging(__.CreateUser, value)) { _CreateUser = value; OnPropertyChanged(__.CreateUser); } } }
|
||||
|
||||
private DateTime _CreateTime;
|
||||
/// <summary>创建时间</summary>
|
||||
[DisplayName("创建时间")]
|
||||
[Description("创建时间")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("CreateTime", "创建时间", "")]
|
||||
public DateTime CreateTime { get { return _CreateTime; } set { if (OnPropertyChanging(__.CreateTime, value)) { _CreateTime = value; OnPropertyChanged(__.CreateTime); } } }
|
||||
|
||||
private String _CreateIP;
|
||||
/// <summary>创建地址</summary>
|
||||
[DisplayName("创建地址")]
|
||||
[Description("创建地址")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("CreateIP", "创建地址", "")]
|
||||
public String CreateIP { get { return _CreateIP; } set { if (OnPropertyChanging(__.CreateIP, value)) { _CreateIP = value; OnPropertyChanged(__.CreateIP); } } }
|
||||
|
||||
private Int32 _UpdateUserID;
|
||||
/// <summary>更新者</summary>
|
||||
[DisplayName("更新者")]
|
||||
[Description("更新者")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("UpdateUserID", "更新者", "")]
|
||||
public Int32 UpdateUserID { get { return _UpdateUserID; } set { if (OnPropertyChanging(__.UpdateUserID, value)) { _UpdateUserID = value; OnPropertyChanged(__.UpdateUserID); } } }
|
||||
|
||||
private String _UpdateUser;
|
||||
/// <summary>更新者</summary>
|
||||
[DisplayName("更新者")]
|
||||
[Description("更新者")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("UpdateUser", "更新者", "")]
|
||||
public String UpdateUser { get { return _UpdateUser; } set { if (OnPropertyChanging(__.UpdateUser, value)) { _UpdateUser = value; OnPropertyChanged(__.UpdateUser); } } }
|
||||
|
||||
private DateTime _UpdateTime;
|
||||
/// <summary>更新时间</summary>
|
||||
[DisplayName("更新时间")]
|
||||
[Description("更新时间")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("UpdateTime", "更新时间", "")]
|
||||
public DateTime UpdateTime { get { return _UpdateTime; } set { if (OnPropertyChanging(__.UpdateTime, value)) { _UpdateTime = value; OnPropertyChanged(__.UpdateTime); } } }
|
||||
|
||||
private String _UpdateIP;
|
||||
/// <summary>更新地址</summary>
|
||||
[DisplayName("更新地址")]
|
||||
[Description("更新地址")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("UpdateIP", "更新地址", "")]
|
||||
public String UpdateIP { get { return _UpdateIP; } set { if (OnPropertyChanging(__.UpdateIP, value)) { _UpdateIP = value; OnPropertyChanged(__.UpdateIP); } } }
|
||||
#endregion
|
||||
|
||||
#region 获取/设置 字段值
|
||||
/// <summary>获取/设置 字段值</summary>
|
||||
/// <param name="name">字段名</param>
|
||||
/// <returns></returns>
|
||||
public override Object this[String name]
|
||||
{
|
||||
get
|
||||
{
|
||||
switch (name)
|
||||
{
|
||||
case __.ID : return _ID;
|
||||
case __.AppID : return _AppID;
|
||||
case __.Name : return _Name;
|
||||
case __.DisplayName : return _DisplayName;
|
||||
case __.Mode : return _Mode;
|
||||
case __.Topic : return _Topic;
|
||||
case __.MessageCount : return _MessageCount;
|
||||
case __.Start : return _Start;
|
||||
case __.End : return _End;
|
||||
case __.Step : return _Step;
|
||||
case __.MinStep : return _MinStep;
|
||||
case __.MaxStep : return _MaxStep;
|
||||
case __.StepRate : return _StepRate;
|
||||
case __.BatchSize : return _BatchSize;
|
||||
case __.Offset : return _Offset;
|
||||
case __.MaxTask : return _MaxTask;
|
||||
case __.MaxError : return _MaxError;
|
||||
case __.MaxRetry : return _MaxRetry;
|
||||
case __.MaxTime : return _MaxTime;
|
||||
case __.MaxRetain : return _MaxRetain;
|
||||
case __.MaxIdle : return _MaxIdle;
|
||||
case __.ErrorDelay : return _ErrorDelay;
|
||||
case __.Total : return _Total;
|
||||
case __.Success : return _Success;
|
||||
case __.Error : return _Error;
|
||||
case __.Times : return _Times;
|
||||
case __.Speed : return _Speed;
|
||||
case __.FetchSpeed : return _FetchSpeed;
|
||||
case __.Enable : return _Enable;
|
||||
case __.Description : return _Description;
|
||||
case __.CreateUserID : return _CreateUserID;
|
||||
case __.CreateUser : return _CreateUser;
|
||||
case __.CreateTime : return _CreateTime;
|
||||
case __.CreateIP : return _CreateIP;
|
||||
case __.UpdateUserID : return _UpdateUserID;
|
||||
case __.UpdateUser : return _UpdateUser;
|
||||
case __.UpdateTime : return _UpdateTime;
|
||||
case __.UpdateIP : return _UpdateIP;
|
||||
default: return base[name];
|
||||
}
|
||||
}
|
||||
set
|
||||
{
|
||||
switch (name)
|
||||
{
|
||||
case __.ID : _ID = value.ToInt(); break;
|
||||
case __.AppID : _AppID = value.ToInt(); break;
|
||||
case __.Name : _Name = Convert.ToString(value); break;
|
||||
case __.DisplayName : _DisplayName = Convert.ToString(value); break;
|
||||
case __.Mode : _Mode = (JobModes)value.ToInt(); break;
|
||||
case __.Topic : _Topic = Convert.ToString(value); break;
|
||||
case __.MessageCount : _MessageCount = value.ToInt(); break;
|
||||
case __.Start : _Start = value.ToDateTime(); break;
|
||||
case __.End : _End = value.ToDateTime(); break;
|
||||
case __.Step : _Step = value.ToInt(); break;
|
||||
case __.MinStep : _MinStep = value.ToInt(); break;
|
||||
case __.MaxStep : _MaxStep = value.ToInt(); break;
|
||||
case __.StepRate : _StepRate = value.ToInt(); break;
|
||||
case __.BatchSize : _BatchSize = value.ToInt(); break;
|
||||
case __.Offset : _Offset = value.ToInt(); break;
|
||||
case __.MaxTask : _MaxTask = value.ToInt(); break;
|
||||
case __.MaxError : _MaxError = value.ToInt(); break;
|
||||
case __.MaxRetry : _MaxRetry = value.ToInt(); break;
|
||||
case __.MaxTime : _MaxTime = value.ToInt(); break;
|
||||
case __.MaxRetain : _MaxRetain = value.ToInt(); break;
|
||||
case __.MaxIdle : _MaxIdle = value.ToInt(); break;
|
||||
case __.ErrorDelay : _ErrorDelay = value.ToInt(); break;
|
||||
case __.Total : _Total = value.ToLong(); break;
|
||||
case __.Success : _Success = value.ToLong(); break;
|
||||
case __.Error : _Error = value.ToInt(); break;
|
||||
case __.Times : _Times = value.ToInt(); break;
|
||||
case __.Speed : _Speed = value.ToInt(); break;
|
||||
case __.FetchSpeed : _FetchSpeed = value.ToInt(); break;
|
||||
case __.Enable : _Enable = value.ToBoolean(); break;
|
||||
case __.Description : _Description = Convert.ToString(value); break;
|
||||
case __.CreateUserID : _CreateUserID = value.ToInt(); break;
|
||||
case __.CreateUser : _CreateUser = Convert.ToString(value); break;
|
||||
case __.CreateTime : _CreateTime = value.ToDateTime(); break;
|
||||
case __.CreateIP : _CreateIP = Convert.ToString(value); break;
|
||||
case __.UpdateUserID : _UpdateUserID = value.ToInt(); break;
|
||||
case __.UpdateUser : _UpdateUser = Convert.ToString(value); break;
|
||||
case __.UpdateTime : _UpdateTime = value.ToDateTime(); break;
|
||||
case __.UpdateIP : _UpdateIP = Convert.ToString(value); break;
|
||||
default: base[name] = value; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 字段名
|
||||
/// <summary>取得作业字段信息的快捷方式</summary>
|
||||
public partial class _
|
||||
{
|
||||
/// <summary>编号</summary>
|
||||
public static readonly Field ID = FindByName(__.ID);
|
||||
|
||||
/// <summary>应用</summary>
|
||||
public static readonly Field AppID = FindByName(__.AppID);
|
||||
|
||||
/// <summary>名称</summary>
|
||||
public static readonly Field Name = FindByName(__.Name);
|
||||
|
||||
/// <summary>显示名</summary>
|
||||
public static readonly Field DisplayName = FindByName(__.DisplayName);
|
||||
|
||||
/// <summary>调度模式</summary>
|
||||
public static readonly Field Mode = FindByName(__.Mode);
|
||||
|
||||
/// <summary>主题。消息调度时消费的主题</summary>
|
||||
public static readonly Field Topic = FindByName(__.Topic);
|
||||
|
||||
/// <summary>消息数</summary>
|
||||
public static readonly Field MessageCount = FindByName(__.MessageCount);
|
||||
|
||||
/// <summary>开始。大于等于</summary>
|
||||
public static readonly Field Start = FindByName(__.Start);
|
||||
|
||||
/// <summary>结束。小于,不等于</summary>
|
||||
public static readonly Field End = FindByName(__.End);
|
||||
|
||||
/// <summary>步进。最大区间大小,秒</summary>
|
||||
public static readonly Field Step = FindByName(__.Step);
|
||||
|
||||
/// <summary>最小步进。默认5秒</summary>
|
||||
public static readonly Field MinStep = FindByName(__.MinStep);
|
||||
|
||||
/// <summary>最大步进。默认3600秒</summary>
|
||||
public static readonly Field MaxStep = FindByName(__.MaxStep);
|
||||
|
||||
/// <summary>步进率。动态调节步进时,不能超过该比率,百分位,默认100%</summary>
|
||||
public static readonly Field StepRate = FindByName(__.StepRate);
|
||||
|
||||
/// <summary>批大小</summary>
|
||||
public static readonly Field BatchSize = FindByName(__.BatchSize);
|
||||
|
||||
/// <summary>偏移。距离实时时间的秒数,部分业务不能跑到实时,秒</summary>
|
||||
public static readonly Field Offset = FindByName(__.Offset);
|
||||
|
||||
/// <summary>并行。多任务并行处理</summary>
|
||||
public static readonly Field MaxTask = FindByName(__.MaxTask);
|
||||
|
||||
/// <summary>最大错误。连续错误达到最大错误数时停止</summary>
|
||||
public static readonly Field MaxError = FindByName(__.MaxError);
|
||||
|
||||
/// <summary>最大重试。默认10次,超过该次数后将不再重试</summary>
|
||||
public static readonly Field MaxRetry = FindByName(__.MaxRetry);
|
||||
|
||||
/// <summary>最大执行时间。默认600秒,超过该时间则认为执行器故障,将会把该任务分配给其它执行器</summary>
|
||||
public static readonly Field MaxTime = FindByName(__.MaxTime);
|
||||
|
||||
/// <summary>保留。任务项保留天数,超过天数的任务项将被删除,默认3天</summary>
|
||||
public static readonly Field MaxRetain = FindByName(__.MaxRetain);
|
||||
|
||||
/// <summary>最大空闲时间。默认3600秒,超过该时间不更新则认为应用程序故障,系统触发告警</summary>
|
||||
public static readonly Field MaxIdle = FindByName(__.MaxIdle);
|
||||
|
||||
/// <summary>错误延迟。默认60秒,出错延迟后重新发放</summary>
|
||||
public static readonly Field ErrorDelay = FindByName(__.ErrorDelay);
|
||||
|
||||
/// <summary>总数</summary>
|
||||
public static readonly Field Total = FindByName(__.Total);
|
||||
|
||||
/// <summary>成功</summary>
|
||||
public static readonly Field Success = FindByName(__.Success);
|
||||
|
||||
/// <summary>错误</summary>
|
||||
public static readonly Field Error = FindByName(__.Error);
|
||||
|
||||
/// <summary>次数</summary>
|
||||
public static readonly Field Times = FindByName(__.Times);
|
||||
|
||||
/// <summary>速度</summary>
|
||||
public static readonly Field Speed = FindByName(__.Speed);
|
||||
|
||||
/// <summary>抽取速度</summary>
|
||||
public static readonly Field FetchSpeed = FindByName(__.FetchSpeed);
|
||||
|
||||
/// <summary>启用</summary>
|
||||
public static readonly Field Enable = FindByName(__.Enable);
|
||||
|
||||
/// <summary>内容</summary>
|
||||
public static readonly Field Description = FindByName(__.Description);
|
||||
|
||||
/// <summary>创建者</summary>
|
||||
public static readonly Field CreateUserID = FindByName(__.CreateUserID);
|
||||
|
||||
/// <summary>创建者</summary>
|
||||
public static readonly Field CreateUser = FindByName(__.CreateUser);
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
public static readonly Field CreateTime = FindByName(__.CreateTime);
|
||||
|
||||
/// <summary>创建地址</summary>
|
||||
public static readonly Field CreateIP = FindByName(__.CreateIP);
|
||||
|
||||
/// <summary>更新者</summary>
|
||||
public static readonly Field UpdateUserID = FindByName(__.UpdateUserID);
|
||||
|
||||
/// <summary>更新者</summary>
|
||||
public static readonly Field UpdateUser = FindByName(__.UpdateUser);
|
||||
|
||||
/// <summary>更新时间</summary>
|
||||
public static readonly Field UpdateTime = FindByName(__.UpdateTime);
|
||||
|
||||
/// <summary>更新地址</summary>
|
||||
public static readonly Field UpdateIP = FindByName(__.UpdateIP);
|
||||
|
||||
static Field FindByName(String name) { return Meta.Table.FindByName(name); }
|
||||
}
|
||||
|
||||
/// <summary>取得作业字段名称的快捷方式</summary>
|
||||
public partial class __
|
||||
{
|
||||
/// <summary>编号</summary>
|
||||
public const String ID = "ID";
|
||||
|
||||
/// <summary>应用</summary>
|
||||
public const String AppID = "AppID";
|
||||
|
||||
/// <summary>名称</summary>
|
||||
public const String Name = "Name";
|
||||
|
||||
/// <summary>显示名</summary>
|
||||
public const String DisplayName = "DisplayName";
|
||||
|
||||
/// <summary>调度模式</summary>
|
||||
public const String Mode = "Mode";
|
||||
|
||||
/// <summary>主题。消息调度时消费的主题</summary>
|
||||
public const String Topic = "Topic";
|
||||
|
||||
/// <summary>消息数</summary>
|
||||
public const String MessageCount = "MessageCount";
|
||||
|
||||
/// <summary>开始。大于等于</summary>
|
||||
public const String Start = "Start";
|
||||
|
||||
/// <summary>结束。小于,不等于</summary>
|
||||
public const String End = "End";
|
||||
|
||||
/// <summary>步进。最大区间大小,秒</summary>
|
||||
public const String Step = "Step";
|
||||
|
||||
/// <summary>最小步进。默认5秒</summary>
|
||||
public const String MinStep = "MinStep";
|
||||
|
||||
/// <summary>最大步进。默认3600秒</summary>
|
||||
public const String MaxStep = "MaxStep";
|
||||
|
||||
/// <summary>步进率。动态调节步进时,不能超过该比率,百分位,默认100%</summary>
|
||||
public const String StepRate = "StepRate";
|
||||
|
||||
/// <summary>批大小</summary>
|
||||
public const String BatchSize = "BatchSize";
|
||||
|
||||
/// <summary>偏移。距离实时时间的秒数,部分业务不能跑到实时,秒</summary>
|
||||
public const String Offset = "Offset";
|
||||
|
||||
/// <summary>并行。多任务并行处理</summary>
|
||||
public const String MaxTask = "MaxTask";
|
||||
|
||||
/// <summary>最大错误。连续错误达到最大错误数时停止</summary>
|
||||
public const String MaxError = "MaxError";
|
||||
|
||||
/// <summary>最大重试。默认10次,超过该次数后将不再重试</summary>
|
||||
public const String MaxRetry = "MaxRetry";
|
||||
|
||||
/// <summary>最大执行时间。默认600秒,超过该时间则认为执行器故障,将会把该任务分配给其它执行器</summary>
|
||||
public const String MaxTime = "MaxTime";
|
||||
|
||||
/// <summary>保留。任务项保留天数,超过天数的任务项将被删除,默认3天</summary>
|
||||
public const String MaxRetain = "MaxRetain";
|
||||
|
||||
/// <summary>最大空闲时间。默认3600秒,超过该时间不更新则认为应用程序故障,系统触发告警</summary>
|
||||
public const String MaxIdle = "MaxIdle";
|
||||
|
||||
/// <summary>错误延迟。默认60秒,出错延迟后重新发放</summary>
|
||||
public const String ErrorDelay = "ErrorDelay";
|
||||
|
||||
/// <summary>总数</summary>
|
||||
public const String Total = "Total";
|
||||
|
||||
/// <summary>成功</summary>
|
||||
public const String Success = "Success";
|
||||
|
||||
/// <summary>错误</summary>
|
||||
public const String Error = "Error";
|
||||
|
||||
/// <summary>次数</summary>
|
||||
public const String Times = "Times";
|
||||
|
||||
/// <summary>速度</summary>
|
||||
public const String Speed = "Speed";
|
||||
|
||||
/// <summary>抽取速度</summary>
|
||||
public const String FetchSpeed = "FetchSpeed";
|
||||
|
||||
/// <summary>启用</summary>
|
||||
public const String Enable = "Enable";
|
||||
|
||||
/// <summary>内容</summary>
|
||||
public const String Description = "Description";
|
||||
|
||||
/// <summary>创建者</summary>
|
||||
public const String CreateUserID = "CreateUserID";
|
||||
|
||||
/// <summary>创建者</summary>
|
||||
public const String CreateUser = "CreateUser";
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
public const String CreateTime = "CreateTime";
|
||||
|
||||
/// <summary>创建地址</summary>
|
||||
public const String CreateIP = "CreateIP";
|
||||
|
||||
/// <summary>更新者</summary>
|
||||
public const String UpdateUserID = "UpdateUserID";
|
||||
|
||||
/// <summary>更新者</summary>
|
||||
public const String UpdateUser = "UpdateUser";
|
||||
|
||||
/// <summary>更新时间</summary>
|
||||
public const String UpdateTime = "UpdateTime";
|
||||
|
||||
/// <summary>更新地址</summary>
|
||||
public const String UpdateIP = "UpdateIP";
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>作业接口</summary>
|
||||
public partial interface IJob
|
||||
{
|
||||
#region 属性
|
||||
/// <summary>编号</summary>
|
||||
Int32 ID { get; set; }
|
||||
|
||||
/// <summary>应用</summary>
|
||||
Int32 AppID { get; set; }
|
||||
|
||||
/// <summary>名称</summary>
|
||||
String Name { get; set; }
|
||||
|
||||
/// <summary>显示名</summary>
|
||||
String DisplayName { get; set; }
|
||||
|
||||
/// <summary>调度模式</summary>
|
||||
JobModes Mode { get; set; }
|
||||
|
||||
/// <summary>主题。消息调度时消费的主题</summary>
|
||||
String Topic { get; set; }
|
||||
|
||||
/// <summary>消息数</summary>
|
||||
Int32 MessageCount { get; set; }
|
||||
|
||||
/// <summary>开始。大于等于</summary>
|
||||
DateTime Start { get; set; }
|
||||
|
||||
/// <summary>结束。小于,不等于</summary>
|
||||
DateTime End { get; set; }
|
||||
|
||||
/// <summary>步进。最大区间大小,秒</summary>
|
||||
Int32 Step { get; set; }
|
||||
|
||||
/// <summary>最小步进。默认5秒</summary>
|
||||
Int32 MinStep { get; set; }
|
||||
|
||||
/// <summary>最大步进。默认3600秒</summary>
|
||||
Int32 MaxStep { get; set; }
|
||||
|
||||
/// <summary>步进率。动态调节步进时,不能超过该比率,百分位,默认100%</summary>
|
||||
Int32 StepRate { get; set; }
|
||||
|
||||
/// <summary>批大小</summary>
|
||||
Int32 BatchSize { get; set; }
|
||||
|
||||
/// <summary>偏移。距离实时时间的秒数,部分业务不能跑到实时,秒</summary>
|
||||
Int32 Offset { get; set; }
|
||||
|
||||
/// <summary>并行。多任务并行处理</summary>
|
||||
Int32 MaxTask { get; set; }
|
||||
|
||||
/// <summary>最大错误。连续错误达到最大错误数时停止</summary>
|
||||
Int32 MaxError { get; set; }
|
||||
|
||||
/// <summary>最大重试。默认10次,超过该次数后将不再重试</summary>
|
||||
Int32 MaxRetry { get; set; }
|
||||
|
||||
/// <summary>最大执行时间。默认600秒,超过该时间则认为执行器故障,将会把该任务分配给其它执行器</summary>
|
||||
Int32 MaxTime { get; set; }
|
||||
|
||||
/// <summary>保留。任务项保留天数,超过天数的任务项将被删除,默认3天</summary>
|
||||
Int32 MaxRetain { get; set; }
|
||||
|
||||
/// <summary>最大空闲时间。默认3600秒,超过该时间不更新则认为应用程序故障,系统触发告警</summary>
|
||||
Int32 MaxIdle { get; set; }
|
||||
|
||||
/// <summary>错误延迟。默认60秒,出错延迟后重新发放</summary>
|
||||
Int32 ErrorDelay { get; set; }
|
||||
|
||||
/// <summary>总数</summary>
|
||||
Int64 Total { get; set; }
|
||||
|
||||
/// <summary>成功</summary>
|
||||
Int64 Success { get; set; }
|
||||
|
||||
/// <summary>错误</summary>
|
||||
Int32 Error { get; set; }
|
||||
|
||||
/// <summary>次数</summary>
|
||||
Int32 Times { get; set; }
|
||||
|
||||
/// <summary>速度</summary>
|
||||
Int32 Speed { get; set; }
|
||||
|
||||
/// <summary>抽取速度</summary>
|
||||
Int32 FetchSpeed { get; set; }
|
||||
|
||||
/// <summary>启用</summary>
|
||||
Boolean Enable { get; set; }
|
||||
|
||||
/// <summary>内容</summary>
|
||||
String Description { get; set; }
|
||||
|
||||
/// <summary>创建者</summary>
|
||||
Int32 CreateUserID { get; set; }
|
||||
|
||||
/// <summary>创建者</summary>
|
||||
String CreateUser { get; set; }
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
DateTime CreateTime { get; set; }
|
||||
|
||||
/// <summary>创建地址</summary>
|
||||
String CreateIP { get; set; }
|
||||
|
||||
/// <summary>更新者</summary>
|
||||
Int32 UpdateUserID { get; set; }
|
||||
|
||||
/// <summary>更新者</summary>
|
||||
String UpdateUser { get; set; }
|
||||
|
||||
/// <summary>更新时间</summary>
|
||||
DateTime UpdateTime { get; set; }
|
||||
|
||||
/// <summary>更新地址</summary>
|
||||
String UpdateIP { get; set; }
|
||||
#endregion
|
||||
|
||||
#region 获取/设置 字段值
|
||||
/// <summary>获取/设置 字段值</summary>
|
||||
/// <param name="name">字段名</param>
|
||||
/// <returns></returns>
|
||||
Object this[String name] { get; set; }
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,173 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using System.Xml.Serialization;
|
||||
using NewLife;
|
||||
using NewLife.Data;
|
||||
using NewLife.Log;
|
||||
using NewLife.Model;
|
||||
using NewLife.Reflection;
|
||||
using NewLife.Threading;
|
||||
using NewLife.Web;
|
||||
using XCode;
|
||||
using XCode.Cache;
|
||||
using XCode.Configuration;
|
||||
using XCode.DataAccessLayer;
|
||||
using XCode.Membership;
|
||||
|
||||
namespace AntJob.Data.Entity
|
||||
{
|
||||
/// <summary>作业日志</summary>
|
||||
public partial class JobLog : EntityBase<JobLog>
|
||||
{
|
||||
#region 对象操作
|
||||
static JobLog()
|
||||
{
|
||||
// 累加字段
|
||||
//var df = Meta.Factory.AdditionalFields;
|
||||
//df.Add(__.AppID);
|
||||
|
||||
// 过滤器 UserModule、TimeModule、IPModule
|
||||
Meta.Modules.Add<TimeModule>();
|
||||
}
|
||||
|
||||
/// <summary>验证数据,通过抛出异常的方式提示验证失败。</summary>
|
||||
/// <param name="isNew">是否插入</param>
|
||||
public override void Valid(Boolean isNew)
|
||||
{
|
||||
// 如果没有脏数据,则不需要进行任何处理
|
||||
if (!HasDirty) return;
|
||||
|
||||
// 在新插入数据或者修改了指定字段时进行修正
|
||||
//if (isNew && !Dirtys[nameof(CreateTime)]) nameof(CreateTime) = DateTime.Now;
|
||||
//if (!Dirtys[nameof(UpdateTime)]) nameof(UpdateTime) = DateTime.Now;
|
||||
}
|
||||
|
||||
///// <summary>首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法</summary>
|
||||
//[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
//protected override void InitData()
|
||||
//{
|
||||
// // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用
|
||||
// if (Meta.Session.Count > 0) return;
|
||||
|
||||
// if (XTrace.Debug) XTrace.WriteLine("开始初始化JobLog[作业日志]数据……");
|
||||
|
||||
// var entity = new JobLog();
|
||||
// entity.ID = 0;
|
||||
// entity.AppID = 0;
|
||||
// entity.JobID = 0;
|
||||
// entity.LinkID = 0;
|
||||
// entity.Client = "abc";
|
||||
// entity.Start = DateTime.Now;
|
||||
// entity.End = DateTime.Now;
|
||||
// entity.Row = 0;
|
||||
// entity.Step = 0;
|
||||
// entity.BatchSize = 0;
|
||||
// entity.Offset = 0;
|
||||
// entity.Total = 0;
|
||||
// entity.Success = 0;
|
||||
// entity.Error = 0;
|
||||
// entity.Times = 0;
|
||||
// entity.Speed = 0;
|
||||
// entity.FetchSpeed = 0;
|
||||
// entity.Cost = 0;
|
||||
// entity.FullCost = 0;
|
||||
// entity.Status = 0;
|
||||
// entity.MsgCount = 0;
|
||||
// entity.Server = "abc";
|
||||
// entity.ProcessID = 0;
|
||||
// entity.ThreadID = 0;
|
||||
// entity.Key = "abc";
|
||||
// entity.Data = "abc";
|
||||
// entity.Message = "abc";
|
||||
// entity.CreateTime = DateTime.Now;
|
||||
// entity.UpdateTime = DateTime.Now;
|
||||
// entity.Insert();
|
||||
|
||||
// if (XTrace.Debug) XTrace.WriteLine("完成初始化JobLog[作业日志]数据!");
|
||||
//}
|
||||
|
||||
///// <summary>已重载。基类先调用Valid(true)验证数据,然后在事务保护内调用OnInsert</summary>
|
||||
///// <returns></returns>
|
||||
//public override Int32 Insert()
|
||||
//{
|
||||
// return base.Insert();
|
||||
//}
|
||||
|
||||
///// <summary>已重载。在事务保护范围内处理业务,位于Valid之后</summary>
|
||||
///// <returns></returns>
|
||||
//protected override Int32 OnDelete()
|
||||
//{
|
||||
// return base.OnDelete();
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region 扩展属性
|
||||
/// <summary>应用</summary>
|
||||
[XmlIgnore]
|
||||
//[ScriptIgnore]
|
||||
public App App { get { return Extends.Get(nameof(App), k => App.FindByID(AppID)); } }
|
||||
|
||||
/// <summary>应用</summary>
|
||||
[XmlIgnore]
|
||||
//[ScriptIgnore]
|
||||
[DisplayName("应用")]
|
||||
[Map(__.AppID, typeof(App), "ID")]
|
||||
public String AppName { get { return App?.Name; } }
|
||||
/// <summary>作业</summary>
|
||||
[XmlIgnore]
|
||||
//[ScriptIgnore]
|
||||
public Job Job { get { return Extends.Get(nameof(Job), k => Job.FindByID(JobID)); } }
|
||||
|
||||
/// <summary>作业</summary>
|
||||
[XmlIgnore]
|
||||
//[ScriptIgnore]
|
||||
[DisplayName("作业")]
|
||||
[Map(__.JobID, typeof(Job), "ID")]
|
||||
public String JobName { get { return Job?.Name; } }
|
||||
#endregion
|
||||
|
||||
#region 扩展查询
|
||||
/// <summary>根据编号查找</summary>
|
||||
/// <param name="id">编号</param>
|
||||
/// <returns>实体对象</returns>
|
||||
public static JobLog FindByID(Int32 id)
|
||||
{
|
||||
if (id <= 0) return null;
|
||||
|
||||
// 实体缓存
|
||||
if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.ID == id);
|
||||
|
||||
// 单对象缓存
|
||||
return Meta.SingleCache[id];
|
||||
|
||||
//return Find(_.ID == id);
|
||||
}
|
||||
|
||||
/// <summary>根据应用、客户端、状态查找</summary>
|
||||
/// <param name="appid">应用</param>
|
||||
/// <param name="client">客户端</param>
|
||||
/// <param name="status">状态</param>
|
||||
/// <returns>实体列表</returns>
|
||||
public static IList<JobLog> FindAllByAppIDAndClientAndStatus(Int32 appid, String client, Int32 status)
|
||||
{
|
||||
// 实体缓存
|
||||
if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.AppID == appid && e.Client == client && e.Status == status);
|
||||
|
||||
return FindAll(_.AppID == appid & _.Client == client & _.Status == status);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 高级查询
|
||||
#endregion
|
||||
|
||||
#region 业务操作
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,621 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using XCode;
|
||||
using XCode.Configuration;
|
||||
using XCode.DataAccessLayer;
|
||||
|
||||
namespace AntJob.Data.Entity
|
||||
{
|
||||
/// <summary>作业日志</summary>
|
||||
[Serializable]
|
||||
[DataObject]
|
||||
[Description("作业日志")]
|
||||
[BindIndex("IX_JobLog_JobID_Status_Start", false, "JobID,Status,Start")]
|
||||
[BindIndex("IX_JobLog_AppID_Client_Status", false, "AppID,Client,Status")]
|
||||
[BindIndex("IX_JobLog_JobID_CreateTime", false, "JobID,CreateTime")]
|
||||
[BindTable("JobLog", Description = "作业日志", ConnName = "Ant", DbType = DatabaseType.None)]
|
||||
public partial class JobLog : IJobLog
|
||||
{
|
||||
#region 属性
|
||||
private Int32 _ID;
|
||||
/// <summary>编号</summary>
|
||||
[DisplayName("编号")]
|
||||
[Description("编号")]
|
||||
[DataObjectField(true, true, false, 0)]
|
||||
[BindColumn("ID", "编号", "")]
|
||||
public Int32 ID { get { return _ID; } set { if (OnPropertyChanging(__.ID, value)) { _ID = value; OnPropertyChanged(__.ID); } } }
|
||||
|
||||
private Int32 _AppID;
|
||||
/// <summary>应用</summary>
|
||||
[DisplayName("应用")]
|
||||
[Description("应用")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("AppID", "应用", "")]
|
||||
public Int32 AppID { get { return _AppID; } set { if (OnPropertyChanging(__.AppID, value)) { _AppID = value; OnPropertyChanged(__.AppID); } } }
|
||||
|
||||
private Int32 _JobID;
|
||||
/// <summary>作业</summary>
|
||||
[DisplayName("作业")]
|
||||
[Description("作业")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("JobID", "作业", "")]
|
||||
public Int32 JobID { get { return _JobID; } set { if (OnPropertyChanging(__.JobID, value)) { _JobID = value; OnPropertyChanged(__.JobID); } } }
|
||||
|
||||
private Int32 _LinkID;
|
||||
/// <summary>关联任务。消息作业关联的生产任务</summary>
|
||||
[DisplayName("关联任务")]
|
||||
[Description("关联任务。消息作业关联的生产任务")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("LinkID", "关联任务。消息作业关联的生产任务", "")]
|
||||
public Int32 LinkID { get { return _LinkID; } set { if (OnPropertyChanging(__.LinkID, value)) { _LinkID = value; OnPropertyChanged(__.LinkID); } } }
|
||||
|
||||
private String _Client;
|
||||
/// <summary>客户端。IP加进程</summary>
|
||||
[DisplayName("客户端")]
|
||||
[Description("客户端。IP加进程")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("Client", "客户端。IP加进程", "")]
|
||||
public String Client { get { return _Client; } set { if (OnPropertyChanging(__.Client, value)) { _Client = value; OnPropertyChanged(__.Client); } } }
|
||||
|
||||
private DateTime _Start;
|
||||
/// <summary>开始。大于等于</summary>
|
||||
[DisplayName("开始")]
|
||||
[Description("开始。大于等于")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("Start", "开始。大于等于", "")]
|
||||
public DateTime Start { get { return _Start; } set { if (OnPropertyChanging(__.Start, value)) { _Start = value; OnPropertyChanged(__.Start); } } }
|
||||
|
||||
private DateTime _End;
|
||||
/// <summary>结束。小于,不等于</summary>
|
||||
[DisplayName("结束")]
|
||||
[Description("结束。小于,不等于")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("End", "结束。小于,不等于", "")]
|
||||
public DateTime End { get { return _End; } set { if (OnPropertyChanging(__.End, value)) { _End = value; OnPropertyChanged(__.End); } } }
|
||||
|
||||
private Int32 _Row;
|
||||
/// <summary>行。分页起始行</summary>
|
||||
[DisplayName("行")]
|
||||
[Description("行。分页起始行")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Row", "行。分页起始行", "")]
|
||||
public Int32 Row { get { return _Row; } set { if (OnPropertyChanging(__.Row, value)) { _Row = value; OnPropertyChanged(__.Row); } } }
|
||||
|
||||
private Int32 _Step;
|
||||
/// <summary>步进。最大区间大小,秒</summary>
|
||||
[DisplayName("步进")]
|
||||
[Description("步进。最大区间大小,秒")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Step", "步进。最大区间大小,秒", "")]
|
||||
public Int32 Step { get { return _Step; } set { if (OnPropertyChanging(__.Step, value)) { _Step = value; OnPropertyChanged(__.Step); } } }
|
||||
|
||||
private Int32 _BatchSize;
|
||||
/// <summary>批大小</summary>
|
||||
[DisplayName("批大小")]
|
||||
[Description("批大小")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("BatchSize", "批大小", "")]
|
||||
public Int32 BatchSize { get { return _BatchSize; } set { if (OnPropertyChanging(__.BatchSize, value)) { _BatchSize = value; OnPropertyChanged(__.BatchSize); } } }
|
||||
|
||||
private Int32 _Offset;
|
||||
/// <summary>偏移。距离实时时间的秒数,部分业务不能跑到实时,秒</summary>
|
||||
[DisplayName("偏移")]
|
||||
[Description("偏移。距离实时时间的秒数,部分业务不能跑到实时,秒")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Offset", "偏移。距离实时时间的秒数,部分业务不能跑到实时,秒", "")]
|
||||
public Int32 Offset { get { return _Offset; } set { if (OnPropertyChanging(__.Offset, value)) { _Offset = value; OnPropertyChanged(__.Offset); } } }
|
||||
|
||||
private Int32 _Total;
|
||||
/// <summary>总数</summary>
|
||||
[DisplayName("总数")]
|
||||
[Description("总数")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Total", "总数", "")]
|
||||
public Int32 Total { get { return _Total; } set { if (OnPropertyChanging(__.Total, value)) { _Total = value; OnPropertyChanged(__.Total); } } }
|
||||
|
||||
private Int32 _Success;
|
||||
/// <summary>成功</summary>
|
||||
[DisplayName("成功")]
|
||||
[Description("成功")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Success", "成功", "")]
|
||||
public Int32 Success { get { return _Success; } set { if (OnPropertyChanging(__.Success, value)) { _Success = value; OnPropertyChanged(__.Success); } } }
|
||||
|
||||
private Int32 _Error;
|
||||
/// <summary>错误</summary>
|
||||
[DisplayName("错误")]
|
||||
[Description("错误")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Error", "错误", "")]
|
||||
public Int32 Error { get { return _Error; } set { if (OnPropertyChanging(__.Error, value)) { _Error = value; OnPropertyChanged(__.Error); } } }
|
||||
|
||||
private Int32 _Times;
|
||||
/// <summary>次数</summary>
|
||||
[DisplayName("次数")]
|
||||
[Description("次数")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Times", "次数", "")]
|
||||
public Int32 Times { get { return _Times; } set { if (OnPropertyChanging(__.Times, value)) { _Times = value; OnPropertyChanged(__.Times); } } }
|
||||
|
||||
private Int32 _Speed;
|
||||
/// <summary>速度</summary>
|
||||
[DisplayName("速度")]
|
||||
[Description("速度")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Speed", "速度", "")]
|
||||
public Int32 Speed { get { return _Speed; } set { if (OnPropertyChanging(__.Speed, value)) { _Speed = value; OnPropertyChanged(__.Speed); } } }
|
||||
|
||||
private Int32 _FetchSpeed;
|
||||
/// <summary>抽取速度</summary>
|
||||
[DisplayName("抽取速度")]
|
||||
[Description("抽取速度")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("FetchSpeed", "抽取速度", "")]
|
||||
public Int32 FetchSpeed { get { return _FetchSpeed; } set { if (OnPropertyChanging(__.FetchSpeed, value)) { _FetchSpeed = value; OnPropertyChanged(__.FetchSpeed); } } }
|
||||
|
||||
private Int32 _Cost;
|
||||
/// <summary>耗时。秒</summary>
|
||||
[DisplayName("耗时")]
|
||||
[Description("耗时。秒")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Cost", "耗时。秒", "")]
|
||||
public Int32 Cost { get { return _Cost; } set { if (OnPropertyChanging(__.Cost, value)) { _Cost = value; OnPropertyChanged(__.Cost); } } }
|
||||
|
||||
private Int32 _FullCost;
|
||||
/// <summary>全部耗时。秒,从任务发放到执行完成的时间</summary>
|
||||
[DisplayName("全部耗时")]
|
||||
[Description("全部耗时。秒,从任务发放到执行完成的时间")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("FullCost", "全部耗时。秒,从任务发放到执行完成的时间", "")]
|
||||
public Int32 FullCost { get { return _FullCost; } set { if (OnPropertyChanging(__.FullCost, value)) { _FullCost = value; OnPropertyChanged(__.FullCost); } } }
|
||||
|
||||
private JobStatus _Status;
|
||||
/// <summary>状态</summary>
|
||||
[DisplayName("状态")]
|
||||
[Description("状态")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Status", "状态", "")]
|
||||
public JobStatus Status { get { return _Status; } set { if (OnPropertyChanging(__.Status, value)) { _Status = value; OnPropertyChanged(__.Status); } } }
|
||||
|
||||
private Int32 _MsgCount;
|
||||
/// <summary>消费消息数</summary>
|
||||
[DisplayName("消费消息数")]
|
||||
[Description("消费消息数")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("MsgCount", "消费消息数", "")]
|
||||
public Int32 MsgCount { get { return _MsgCount; } set { if (OnPropertyChanging(__.MsgCount, value)) { _MsgCount = value; OnPropertyChanged(__.MsgCount); } } }
|
||||
|
||||
private String _Server;
|
||||
/// <summary>服务器</summary>
|
||||
[DisplayName("服务器")]
|
||||
[Description("服务器")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("Server", "服务器", "")]
|
||||
public String Server { get { return _Server; } set { if (OnPropertyChanging(__.Server, value)) { _Server = value; OnPropertyChanged(__.Server); } } }
|
||||
|
||||
private Int32 _ProcessID;
|
||||
/// <summary>进程</summary>
|
||||
[DisplayName("进程")]
|
||||
[Description("进程")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("ProcessID", "进程", "")]
|
||||
public Int32 ProcessID { get { return _ProcessID; } set { if (OnPropertyChanging(__.ProcessID, value)) { _ProcessID = value; OnPropertyChanged(__.ProcessID); } } }
|
||||
|
||||
private Int32 _ThreadID;
|
||||
/// <summary>线程</summary>
|
||||
[DisplayName("线程")]
|
||||
[Description("线程")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("ThreadID", "线程", "")]
|
||||
public Int32 ThreadID { get { return _ThreadID; } set { if (OnPropertyChanging(__.ThreadID, value)) { _ThreadID = value; OnPropertyChanged(__.ThreadID); } } }
|
||||
|
||||
private String _Key;
|
||||
/// <summary>最后键</summary>
|
||||
[DisplayName("最后键")]
|
||||
[Description("最后键")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("Key", "最后键", "")]
|
||||
public String Key { get { return _Key; } set { if (OnPropertyChanging(__.Key, value)) { _Key = value; OnPropertyChanged(__.Key); } } }
|
||||
|
||||
private String _Data;
|
||||
/// <summary>数据。可以是Json数据,比如StatID</summary>
|
||||
[DisplayName("数据")]
|
||||
[Description("数据。可以是Json数据,比如StatID")]
|
||||
[DataObjectField(false, false, true, 8000)]
|
||||
[BindColumn("Data", "数据。可以是Json数据,比如StatID", "")]
|
||||
public String Data { get { return _Data; } set { if (OnPropertyChanging(__.Data, value)) { _Data = value; OnPropertyChanged(__.Data); } } }
|
||||
|
||||
private String _Message;
|
||||
/// <summary>备注</summary>
|
||||
[DisplayName("备注")]
|
||||
[Description("备注")]
|
||||
[DataObjectField(false, false, true, 2000)]
|
||||
[BindColumn("Message", "备注", "")]
|
||||
public String Message { get { return _Message; } set { if (OnPropertyChanging(__.Message, value)) { _Message = value; OnPropertyChanged(__.Message); } } }
|
||||
|
||||
private DateTime _CreateTime;
|
||||
/// <summary>创建时间</summary>
|
||||
[DisplayName("创建时间")]
|
||||
[Description("创建时间")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("CreateTime", "创建时间", "")]
|
||||
public DateTime CreateTime { get { return _CreateTime; } set { if (OnPropertyChanging(__.CreateTime, value)) { _CreateTime = value; OnPropertyChanged(__.CreateTime); } } }
|
||||
|
||||
private DateTime _UpdateTime;
|
||||
/// <summary>更新时间</summary>
|
||||
[DisplayName("更新时间")]
|
||||
[Description("更新时间")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("UpdateTime", "更新时间", "")]
|
||||
public DateTime UpdateTime { get { return _UpdateTime; } set { if (OnPropertyChanging(__.UpdateTime, value)) { _UpdateTime = value; OnPropertyChanged(__.UpdateTime); } } }
|
||||
#endregion
|
||||
|
||||
#region 获取/设置 字段值
|
||||
/// <summary>获取/设置 字段值</summary>
|
||||
/// <param name="name">字段名</param>
|
||||
/// <returns></returns>
|
||||
public override Object this[String name]
|
||||
{
|
||||
get
|
||||
{
|
||||
switch (name)
|
||||
{
|
||||
case __.ID : return _ID;
|
||||
case __.AppID : return _AppID;
|
||||
case __.JobID : return _JobID;
|
||||
case __.LinkID : return _LinkID;
|
||||
case __.Client : return _Client;
|
||||
case __.Start : return _Start;
|
||||
case __.End : return _End;
|
||||
case __.Row : return _Row;
|
||||
case __.Step : return _Step;
|
||||
case __.BatchSize : return _BatchSize;
|
||||
case __.Offset : return _Offset;
|
||||
case __.Total : return _Total;
|
||||
case __.Success : return _Success;
|
||||
case __.Error : return _Error;
|
||||
case __.Times : return _Times;
|
||||
case __.Speed : return _Speed;
|
||||
case __.FetchSpeed : return _FetchSpeed;
|
||||
case __.Cost : return _Cost;
|
||||
case __.FullCost : return _FullCost;
|
||||
case __.Status : return _Status;
|
||||
case __.MsgCount : return _MsgCount;
|
||||
case __.Server : return _Server;
|
||||
case __.ProcessID : return _ProcessID;
|
||||
case __.ThreadID : return _ThreadID;
|
||||
case __.Key : return _Key;
|
||||
case __.Data : return _Data;
|
||||
case __.Message : return _Message;
|
||||
case __.CreateTime : return _CreateTime;
|
||||
case __.UpdateTime : return _UpdateTime;
|
||||
default: return base[name];
|
||||
}
|
||||
}
|
||||
set
|
||||
{
|
||||
switch (name)
|
||||
{
|
||||
case __.ID : _ID = value.ToInt(); break;
|
||||
case __.AppID : _AppID = value.ToInt(); break;
|
||||
case __.JobID : _JobID = value.ToInt(); break;
|
||||
case __.LinkID : _LinkID = value.ToInt(); break;
|
||||
case __.Client : _Client = Convert.ToString(value); break;
|
||||
case __.Start : _Start = value.ToDateTime(); break;
|
||||
case __.End : _End = value.ToDateTime(); break;
|
||||
case __.Row : _Row = value.ToInt(); break;
|
||||
case __.Step : _Step = value.ToInt(); break;
|
||||
case __.BatchSize : _BatchSize = value.ToInt(); break;
|
||||
case __.Offset : _Offset = value.ToInt(); break;
|
||||
case __.Total : _Total = value.ToInt(); break;
|
||||
case __.Success : _Success = value.ToInt(); break;
|
||||
case __.Error : _Error = value.ToInt(); break;
|
||||
case __.Times : _Times = value.ToInt(); break;
|
||||
case __.Speed : _Speed = value.ToInt(); break;
|
||||
case __.FetchSpeed : _FetchSpeed = value.ToInt(); break;
|
||||
case __.Cost : _Cost = value.ToInt(); break;
|
||||
case __.FullCost : _FullCost = value.ToInt(); break;
|
||||
case __.Status : _Status = (JobStatus)value.ToInt(); break;
|
||||
case __.MsgCount : _MsgCount = value.ToInt(); break;
|
||||
case __.Server : _Server = Convert.ToString(value); break;
|
||||
case __.ProcessID : _ProcessID = value.ToInt(); break;
|
||||
case __.ThreadID : _ThreadID = value.ToInt(); break;
|
||||
case __.Key : _Key = Convert.ToString(value); break;
|
||||
case __.Data : _Data = Convert.ToString(value); break;
|
||||
case __.Message : _Message = Convert.ToString(value); break;
|
||||
case __.CreateTime : _CreateTime = value.ToDateTime(); break;
|
||||
case __.UpdateTime : _UpdateTime = value.ToDateTime(); break;
|
||||
default: base[name] = value; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 字段名
|
||||
/// <summary>取得作业日志字段信息的快捷方式</summary>
|
||||
public partial class _
|
||||
{
|
||||
/// <summary>编号</summary>
|
||||
public static readonly Field ID = FindByName(__.ID);
|
||||
|
||||
/// <summary>应用</summary>
|
||||
public static readonly Field AppID = FindByName(__.AppID);
|
||||
|
||||
/// <summary>作业</summary>
|
||||
public static readonly Field JobID = FindByName(__.JobID);
|
||||
|
||||
/// <summary>关联任务。消息作业关联的生产任务</summary>
|
||||
public static readonly Field LinkID = FindByName(__.LinkID);
|
||||
|
||||
/// <summary>客户端。IP加进程</summary>
|
||||
public static readonly Field Client = FindByName(__.Client);
|
||||
|
||||
/// <summary>开始。大于等于</summary>
|
||||
public static readonly Field Start = FindByName(__.Start);
|
||||
|
||||
/// <summary>结束。小于,不等于</summary>
|
||||
public static readonly Field End = FindByName(__.End);
|
||||
|
||||
/// <summary>行。分页起始行</summary>
|
||||
public static readonly Field Row = FindByName(__.Row);
|
||||
|
||||
/// <summary>步进。最大区间大小,秒</summary>
|
||||
public static readonly Field Step = FindByName(__.Step);
|
||||
|
||||
/// <summary>批大小</summary>
|
||||
public static readonly Field BatchSize = FindByName(__.BatchSize);
|
||||
|
||||
/// <summary>偏移。距离实时时间的秒数,部分业务不能跑到实时,秒</summary>
|
||||
public static readonly Field Offset = FindByName(__.Offset);
|
||||
|
||||
/// <summary>总数</summary>
|
||||
public static readonly Field Total = FindByName(__.Total);
|
||||
|
||||
/// <summary>成功</summary>
|
||||
public static readonly Field Success = FindByName(__.Success);
|
||||
|
||||
/// <summary>错误</summary>
|
||||
public static readonly Field Error = FindByName(__.Error);
|
||||
|
||||
/// <summary>次数</summary>
|
||||
public static readonly Field Times = FindByName(__.Times);
|
||||
|
||||
/// <summary>速度</summary>
|
||||
public static readonly Field Speed = FindByName(__.Speed);
|
||||
|
||||
/// <summary>抽取速度</summary>
|
||||
public static readonly Field FetchSpeed = FindByName(__.FetchSpeed);
|
||||
|
||||
/// <summary>耗时。秒</summary>
|
||||
public static readonly Field Cost = FindByName(__.Cost);
|
||||
|
||||
/// <summary>全部耗时。秒,从任务发放到执行完成的时间</summary>
|
||||
public static readonly Field FullCost = FindByName(__.FullCost);
|
||||
|
||||
/// <summary>状态</summary>
|
||||
public static readonly Field Status = FindByName(__.Status);
|
||||
|
||||
/// <summary>消费消息数</summary>
|
||||
public static readonly Field MsgCount = FindByName(__.MsgCount);
|
||||
|
||||
/// <summary>服务器</summary>
|
||||
public static readonly Field Server = FindByName(__.Server);
|
||||
|
||||
/// <summary>进程</summary>
|
||||
public static readonly Field ProcessID = FindByName(__.ProcessID);
|
||||
|
||||
/// <summary>线程</summary>
|
||||
public static readonly Field ThreadID = FindByName(__.ThreadID);
|
||||
|
||||
/// <summary>最后键</summary>
|
||||
public static readonly Field Key = FindByName(__.Key);
|
||||
|
||||
/// <summary>数据。可以是Json数据,比如StatID</summary>
|
||||
public static readonly Field Data = FindByName(__.Data);
|
||||
|
||||
/// <summary>备注</summary>
|
||||
public static readonly Field Message = FindByName(__.Message);
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
public static readonly Field CreateTime = FindByName(__.CreateTime);
|
||||
|
||||
/// <summary>更新时间</summary>
|
||||
public static readonly Field UpdateTime = FindByName(__.UpdateTime);
|
||||
|
||||
static Field FindByName(String name) { return Meta.Table.FindByName(name); }
|
||||
}
|
||||
|
||||
/// <summary>取得作业日志字段名称的快捷方式</summary>
|
||||
public partial class __
|
||||
{
|
||||
/// <summary>编号</summary>
|
||||
public const String ID = "ID";
|
||||
|
||||
/// <summary>应用</summary>
|
||||
public const String AppID = "AppID";
|
||||
|
||||
/// <summary>作业</summary>
|
||||
public const String JobID = "JobID";
|
||||
|
||||
/// <summary>关联任务。消息作业关联的生产任务</summary>
|
||||
public const String LinkID = "LinkID";
|
||||
|
||||
/// <summary>客户端。IP加进程</summary>
|
||||
public const String Client = "Client";
|
||||
|
||||
/// <summary>开始。大于等于</summary>
|
||||
public const String Start = "Start";
|
||||
|
||||
/// <summary>结束。小于,不等于</summary>
|
||||
public const String End = "End";
|
||||
|
||||
/// <summary>行。分页起始行</summary>
|
||||
public const String Row = "Row";
|
||||
|
||||
/// <summary>步进。最大区间大小,秒</summary>
|
||||
public const String Step = "Step";
|
||||
|
||||
/// <summary>批大小</summary>
|
||||
public const String BatchSize = "BatchSize";
|
||||
|
||||
/// <summary>偏移。距离实时时间的秒数,部分业务不能跑到实时,秒</summary>
|
||||
public const String Offset = "Offset";
|
||||
|
||||
/// <summary>总数</summary>
|
||||
public const String Total = "Total";
|
||||
|
||||
/// <summary>成功</summary>
|
||||
public const String Success = "Success";
|
||||
|
||||
/// <summary>错误</summary>
|
||||
public const String Error = "Error";
|
||||
|
||||
/// <summary>次数</summary>
|
||||
public const String Times = "Times";
|
||||
|
||||
/// <summary>速度</summary>
|
||||
public const String Speed = "Speed";
|
||||
|
||||
/// <summary>抽取速度</summary>
|
||||
public const String FetchSpeed = "FetchSpeed";
|
||||
|
||||
/// <summary>耗时。秒</summary>
|
||||
public const String Cost = "Cost";
|
||||
|
||||
/// <summary>全部耗时。秒,从任务发放到执行完成的时间</summary>
|
||||
public const String FullCost = "FullCost";
|
||||
|
||||
/// <summary>状态</summary>
|
||||
public const String Status = "Status";
|
||||
|
||||
/// <summary>消费消息数</summary>
|
||||
public const String MsgCount = "MsgCount";
|
||||
|
||||
/// <summary>服务器</summary>
|
||||
public const String Server = "Server";
|
||||
|
||||
/// <summary>进程</summary>
|
||||
public const String ProcessID = "ProcessID";
|
||||
|
||||
/// <summary>线程</summary>
|
||||
public const String ThreadID = "ThreadID";
|
||||
|
||||
/// <summary>最后键</summary>
|
||||
public const String Key = "Key";
|
||||
|
||||
/// <summary>数据。可以是Json数据,比如StatID</summary>
|
||||
public const String Data = "Data";
|
||||
|
||||
/// <summary>备注</summary>
|
||||
public const String Message = "Message";
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
public const String CreateTime = "CreateTime";
|
||||
|
||||
/// <summary>更新时间</summary>
|
||||
public const String UpdateTime = "UpdateTime";
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>作业日志接口</summary>
|
||||
public partial interface IJobLog
|
||||
{
|
||||
#region 属性
|
||||
/// <summary>编号</summary>
|
||||
Int32 ID { get; set; }
|
||||
|
||||
/// <summary>应用</summary>
|
||||
Int32 AppID { get; set; }
|
||||
|
||||
/// <summary>作业</summary>
|
||||
Int32 JobID { get; set; }
|
||||
|
||||
/// <summary>关联任务。消息作业关联的生产任务</summary>
|
||||
Int32 LinkID { get; set; }
|
||||
|
||||
/// <summary>客户端。IP加进程</summary>
|
||||
String Client { get; set; }
|
||||
|
||||
/// <summary>开始。大于等于</summary>
|
||||
DateTime Start { get; set; }
|
||||
|
||||
/// <summary>结束。小于,不等于</summary>
|
||||
DateTime End { get; set; }
|
||||
|
||||
/// <summary>行。分页起始行</summary>
|
||||
Int32 Row { get; set; }
|
||||
|
||||
/// <summary>步进。最大区间大小,秒</summary>
|
||||
Int32 Step { get; set; }
|
||||
|
||||
/// <summary>批大小</summary>
|
||||
Int32 BatchSize { get; set; }
|
||||
|
||||
/// <summary>偏移。距离实时时间的秒数,部分业务不能跑到实时,秒</summary>
|
||||
Int32 Offset { get; set; }
|
||||
|
||||
/// <summary>总数</summary>
|
||||
Int32 Total { get; set; }
|
||||
|
||||
/// <summary>成功</summary>
|
||||
Int32 Success { get; set; }
|
||||
|
||||
/// <summary>错误</summary>
|
||||
Int32 Error { get; set; }
|
||||
|
||||
/// <summary>次数</summary>
|
||||
Int32 Times { get; set; }
|
||||
|
||||
/// <summary>速度</summary>
|
||||
Int32 Speed { get; set; }
|
||||
|
||||
/// <summary>抽取速度</summary>
|
||||
Int32 FetchSpeed { get; set; }
|
||||
|
||||
/// <summary>耗时。秒</summary>
|
||||
Int32 Cost { get; set; }
|
||||
|
||||
/// <summary>全部耗时。秒,从任务发放到执行完成的时间</summary>
|
||||
Int32 FullCost { get; set; }
|
||||
|
||||
/// <summary>状态</summary>
|
||||
JobStatus Status { get; set; }
|
||||
|
||||
/// <summary>消费消息数</summary>
|
||||
Int32 MsgCount { get; set; }
|
||||
|
||||
/// <summary>服务器</summary>
|
||||
String Server { get; set; }
|
||||
|
||||
/// <summary>进程</summary>
|
||||
Int32 ProcessID { get; set; }
|
||||
|
||||
/// <summary>线程</summary>
|
||||
Int32 ThreadID { get; set; }
|
||||
|
||||
/// <summary>最后键</summary>
|
||||
String Key { get; set; }
|
||||
|
||||
/// <summary>数据。可以是Json数据,比如StatID</summary>
|
||||
String Data { get; set; }
|
||||
|
||||
/// <summary>备注</summary>
|
||||
String Message { get; set; }
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
DateTime CreateTime { get; set; }
|
||||
|
||||
/// <summary>更新时间</summary>
|
||||
DateTime UpdateTime { get; set; }
|
||||
#endregion
|
||||
|
||||
#region 获取/设置 字段值
|
||||
/// <summary>获取/设置 字段值</summary>
|
||||
/// <param name="name">字段名</param>
|
||||
/// <returns></returns>
|
||||
Object this[String name] { get; set; }
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,207 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using System.Xml.Serialization;
|
||||
using NewLife;
|
||||
using NewLife.Data;
|
||||
using NewLife.Log;
|
||||
using NewLife.Model;
|
||||
using NewLife.Reflection;
|
||||
using NewLife.Threading;
|
||||
using NewLife.Web;
|
||||
using XCode;
|
||||
using XCode.Cache;
|
||||
using XCode.Configuration;
|
||||
using XCode.DataAccessLayer;
|
||||
using XCode.Membership;
|
||||
|
||||
namespace AntJob.Data.Entity
|
||||
{
|
||||
/// <summary>作业错误</summary>
|
||||
public partial class JobError : EntityBase<JobError>
|
||||
{
|
||||
#region 对象操作
|
||||
static JobError()
|
||||
{
|
||||
// 累加字段
|
||||
//var df = Meta.Factory.AdditionalFields;
|
||||
//df.Add(__.AppID);
|
||||
|
||||
// 过滤器 UserModule、TimeModule、IPModule
|
||||
Meta.Modules.Add<TimeModule>();
|
||||
}
|
||||
|
||||
/// <summary>验证数据,通过抛出异常的方式提示验证失败。</summary>
|
||||
/// <param name="isNew">是否插入</param>
|
||||
public override void Valid(Boolean isNew)
|
||||
{
|
||||
// 如果没有脏数据,则不需要进行任何处理
|
||||
if (!HasDirty) return;
|
||||
|
||||
// 在新插入数据或者修改了指定字段时进行修正
|
||||
//if (isNew && !Dirtys[nameof(CreateTime)]) nameof(CreateTime) = DateTime.Now;
|
||||
//if (!Dirtys[nameof(UpdateTime)]) nameof(UpdateTime) = DateTime.Now;
|
||||
}
|
||||
|
||||
///// <summary>首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法</summary>
|
||||
//[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
//protected override void InitData()
|
||||
//{
|
||||
// // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用
|
||||
// if (Meta.Session.Count > 0) return;
|
||||
|
||||
// if (XTrace.Debug) XTrace.WriteLine("开始初始化JobError[作业错误]数据……");
|
||||
|
||||
// var entity = new JobError();
|
||||
// entity.ID = 0;
|
||||
// entity.AppID = 0;
|
||||
// entity.JobID = 0;
|
||||
// entity.JobLogID = 0;
|
||||
// entity.Client = "abc";
|
||||
// entity.Start = DateTime.Now;
|
||||
// entity.End = DateTime.Now;
|
||||
// entity.Row = 0;
|
||||
// entity.Step = 0;
|
||||
// entity.BatchSize = 0;
|
||||
// entity.Key = "abc";
|
||||
// entity.Data = "abc";
|
||||
// entity.Server = "abc";
|
||||
// entity.ProcessID = 0;
|
||||
// entity.ThreadID = 0;
|
||||
// entity.ErrorCode = "abc";
|
||||
// entity.Message = "abc";
|
||||
// entity.CreateTime = DateTime.Now;
|
||||
// entity.UpdateTime = DateTime.Now;
|
||||
// entity.Insert();
|
||||
|
||||
// if (XTrace.Debug) XTrace.WriteLine("完成初始化JobError[作业错误]数据!");
|
||||
//}
|
||||
|
||||
///// <summary>已重载。基类先调用Valid(true)验证数据,然后在事务保护内调用OnInsert</summary>
|
||||
///// <returns></returns>
|
||||
//public override Int32 Insert()
|
||||
//{
|
||||
// return base.Insert();
|
||||
//}
|
||||
|
||||
///// <summary>已重载。在事务保护范围内处理业务,位于Valid之后</summary>
|
||||
///// <returns></returns>
|
||||
//protected override Int32 OnDelete()
|
||||
//{
|
||||
// return base.OnDelete();
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region 扩展属性
|
||||
/// <summary>应用</summary>
|
||||
[XmlIgnore]
|
||||
//[ScriptIgnore]
|
||||
public App App { get { return Extends.Get(nameof(App), k => App.FindByID(AppID)); } }
|
||||
|
||||
/// <summary>应用</summary>
|
||||
[XmlIgnore]
|
||||
//[ScriptIgnore]
|
||||
[DisplayName("应用")]
|
||||
[Map(__.AppID, typeof(App), "ID")]
|
||||
public String AppName { get { return App?.Name; } }
|
||||
/// <summary>作业</summary>
|
||||
[XmlIgnore]
|
||||
//[ScriptIgnore]
|
||||
public Job Job { get { return Extends.Get(nameof(Job), k => Job.FindByID(JobID)); } }
|
||||
|
||||
/// <summary>作业</summary>
|
||||
[XmlIgnore]
|
||||
//[ScriptIgnore]
|
||||
[DisplayName("作业")]
|
||||
[Map(__.JobID, typeof(Job), "ID")]
|
||||
public String JobName { get { return Job?.Name; } }
|
||||
/// <summary>作业项</summary>
|
||||
[XmlIgnore]
|
||||
//[ScriptIgnore]
|
||||
public JobLog JobLog { get { return Extends.Get(nameof(JobLog), k => JobLog.FindByID(JobLogID)); } }
|
||||
|
||||
/// <summary>作业项</summary>
|
||||
[XmlIgnore]
|
||||
//[ScriptIgnore]
|
||||
[DisplayName("作业项")]
|
||||
[Map(__.JobLogID, typeof(JobLog), "ID")]
|
||||
public Int32 JobLogID { get { return JobLog != null ? JobLog.ID : 0; } }
|
||||
#endregion
|
||||
|
||||
#region 扩展查询
|
||||
/// <summary>根据编号查找</summary>
|
||||
/// <param name="id">编号</param>
|
||||
/// <returns>实体对象</returns>
|
||||
public static JobError FindByID(Int32 id)
|
||||
{
|
||||
if (id <= 0) return null;
|
||||
|
||||
// 实体缓存
|
||||
if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.ID == id);
|
||||
|
||||
// 单对象缓存
|
||||
return Meta.SingleCache[id];
|
||||
|
||||
//return Find(_.ID == id);
|
||||
}
|
||||
|
||||
/// <summary>根据编号、应用查找</summary>
|
||||
/// <param name="id">编号</param>
|
||||
/// <param name="appid">应用</param>
|
||||
/// <returns>实体列表</returns>
|
||||
public static IList<JobError> FindAllByIDAndAppID(Int32 id, Int32 appid)
|
||||
{
|
||||
// 实体缓存
|
||||
if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.ID == id && e.AppID == appid);
|
||||
|
||||
return FindAll(_.ID == id & _.AppID == appid);
|
||||
}
|
||||
|
||||
/// <summary>根据编号、作业查找</summary>
|
||||
/// <param name="id">编号</param>
|
||||
/// <param name="jobid">作业</param>
|
||||
/// <returns>实体列表</returns>
|
||||
public static IList<JobError> FindAllByIDAndJobID(Int32 id, Int32 jobid)
|
||||
{
|
||||
// 实体缓存
|
||||
if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.ID == id && e.JobID == jobid);
|
||||
|
||||
return FindAll(_.ID == id & _.JobID == jobid);
|
||||
}
|
||||
|
||||
/// <summary>根据数据键查找</summary>
|
||||
/// <param name="key">数据键</param>
|
||||
/// <returns>实体列表</returns>
|
||||
public static IList<JobError> FindAllByKey(String key)
|
||||
{
|
||||
// 实体缓存
|
||||
if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.Key == key);
|
||||
|
||||
return FindAll(_.Key == key);
|
||||
}
|
||||
|
||||
/// <summary>根据错误码查找</summary>
|
||||
/// <param name="errorcode">错误码</param>
|
||||
/// <returns>实体列表</returns>
|
||||
public static IList<JobError> FindAllByErrorCode(String errorcode)
|
||||
{
|
||||
// 实体缓存
|
||||
if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.ErrorCode == errorcode);
|
||||
|
||||
return FindAll(_.ErrorCode == errorcode);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 高级查询
|
||||
#endregion
|
||||
|
||||
#region 业务操作
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,432 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using XCode;
|
||||
using XCode.Configuration;
|
||||
using XCode.DataAccessLayer;
|
||||
|
||||
namespace AntJob.Data.Entity
|
||||
{
|
||||
/// <summary>作业错误</summary>
|
||||
[Serializable]
|
||||
[DataObject]
|
||||
[Description("作业错误")]
|
||||
[BindIndex("IX_JobError_AppID_ID", false, "AppID,ID")]
|
||||
[BindIndex("IX_JobError_JobID_ID", false, "JobID,ID")]
|
||||
[BindIndex("IX_JobError_Key", false, "Key")]
|
||||
[BindIndex("IX_JobError_ErrorCode", false, "ErrorCode")]
|
||||
[BindTable("JobError", Description = "作业错误", ConnName = "Ant", DbType = DatabaseType.None)]
|
||||
public partial class JobError : IJobError
|
||||
{
|
||||
#region 属性
|
||||
private Int32 _ID;
|
||||
/// <summary>编号</summary>
|
||||
[DisplayName("编号")]
|
||||
[Description("编号")]
|
||||
[DataObjectField(true, true, false, 0)]
|
||||
[BindColumn("ID", "编号", "")]
|
||||
public Int32 ID { get { return _ID; } set { if (OnPropertyChanging(__.ID, value)) { _ID = value; OnPropertyChanged(__.ID); } } }
|
||||
|
||||
private Int32 _AppID;
|
||||
/// <summary>应用</summary>
|
||||
[DisplayName("应用")]
|
||||
[Description("应用")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("AppID", "应用", "")]
|
||||
public Int32 AppID { get { return _AppID; } set { if (OnPropertyChanging(__.AppID, value)) { _AppID = value; OnPropertyChanged(__.AppID); } } }
|
||||
|
||||
private Int32 _JobID;
|
||||
/// <summary>作业</summary>
|
||||
[DisplayName("作业")]
|
||||
[Description("作业")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("JobID", "作业", "")]
|
||||
public Int32 JobID { get { return _JobID; } set { if (OnPropertyChanging(__.JobID, value)) { _JobID = value; OnPropertyChanged(__.JobID); } } }
|
||||
|
||||
private Int32 _JobLogID;
|
||||
/// <summary>作业项</summary>
|
||||
[DisplayName("作业项")]
|
||||
[Description("作业项")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("JobLogID", "作业项", "")]
|
||||
public Int32 JobLogID { get { return _JobLogID; } set { if (OnPropertyChanging(__.JobLogID, value)) { _JobLogID = value; OnPropertyChanged(__.JobLogID); } } }
|
||||
|
||||
private String _Client;
|
||||
/// <summary>客户端。IP加进程</summary>
|
||||
[DisplayName("客户端")]
|
||||
[Description("客户端。IP加进程")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("Client", "客户端。IP加进程", "")]
|
||||
public String Client { get { return _Client; } set { if (OnPropertyChanging(__.Client, value)) { _Client = value; OnPropertyChanged(__.Client); } } }
|
||||
|
||||
private DateTime _Start;
|
||||
/// <summary>开始。大于等于</summary>
|
||||
[DisplayName("开始")]
|
||||
[Description("开始。大于等于")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("Start", "开始。大于等于", "")]
|
||||
public DateTime Start { get { return _Start; } set { if (OnPropertyChanging(__.Start, value)) { _Start = value; OnPropertyChanged(__.Start); } } }
|
||||
|
||||
private DateTime _End;
|
||||
/// <summary>结束。小于,不等于</summary>
|
||||
[DisplayName("结束")]
|
||||
[Description("结束。小于,不等于")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("End", "结束。小于,不等于", "")]
|
||||
public DateTime End { get { return _End; } set { if (OnPropertyChanging(__.End, value)) { _End = value; OnPropertyChanged(__.End); } } }
|
||||
|
||||
private Int32 _Row;
|
||||
/// <summary>行。分页起始行</summary>
|
||||
[DisplayName("行")]
|
||||
[Description("行。分页起始行")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Row", "行。分页起始行", "")]
|
||||
public Int32 Row { get { return _Row; } set { if (OnPropertyChanging(__.Row, value)) { _Row = value; OnPropertyChanged(__.Row); } } }
|
||||
|
||||
private Int32 _Step;
|
||||
/// <summary>步进。最大区间大小,秒</summary>
|
||||
[DisplayName("步进")]
|
||||
[Description("步进。最大区间大小,秒")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Step", "步进。最大区间大小,秒", "")]
|
||||
public Int32 Step { get { return _Step; } set { if (OnPropertyChanging(__.Step, value)) { _Step = value; OnPropertyChanged(__.Step); } } }
|
||||
|
||||
private Int32 _BatchSize;
|
||||
/// <summary>批大小</summary>
|
||||
[DisplayName("批大小")]
|
||||
[Description("批大小")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("BatchSize", "批大小", "")]
|
||||
public Int32 BatchSize { get { return _BatchSize; } set { if (OnPropertyChanging(__.BatchSize, value)) { _BatchSize = value; OnPropertyChanged(__.BatchSize); } } }
|
||||
|
||||
private String _Key;
|
||||
/// <summary>数据键</summary>
|
||||
[DisplayName("数据键")]
|
||||
[Description("数据键")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("Key", "数据键", "")]
|
||||
public String Key { get { return _Key; } set { if (OnPropertyChanging(__.Key, value)) { _Key = value; OnPropertyChanged(__.Key); } } }
|
||||
|
||||
private String _Data;
|
||||
/// <summary>数据</summary>
|
||||
[DisplayName("数据")]
|
||||
[Description("数据")]
|
||||
[DataObjectField(false, false, true, 2000)]
|
||||
[BindColumn("Data", "数据", "")]
|
||||
public String Data { get { return _Data; } set { if (OnPropertyChanging(__.Data, value)) { _Data = value; OnPropertyChanged(__.Data); } } }
|
||||
|
||||
private String _Server;
|
||||
/// <summary>服务器</summary>
|
||||
[DisplayName("服务器")]
|
||||
[Description("服务器")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("Server", "服务器", "")]
|
||||
public String Server { get { return _Server; } set { if (OnPropertyChanging(__.Server, value)) { _Server = value; OnPropertyChanged(__.Server); } } }
|
||||
|
||||
private Int32 _ProcessID;
|
||||
/// <summary>进程</summary>
|
||||
[DisplayName("进程")]
|
||||
[Description("进程")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("ProcessID", "进程", "")]
|
||||
public Int32 ProcessID { get { return _ProcessID; } set { if (OnPropertyChanging(__.ProcessID, value)) { _ProcessID = value; OnPropertyChanged(__.ProcessID); } } }
|
||||
|
||||
private Int32 _ThreadID;
|
||||
/// <summary>线程</summary>
|
||||
[DisplayName("线程")]
|
||||
[Description("线程")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("ThreadID", "线程", "")]
|
||||
public Int32 ThreadID { get { return _ThreadID; } set { if (OnPropertyChanging(__.ThreadID, value)) { _ThreadID = value; OnPropertyChanged(__.ThreadID); } } }
|
||||
|
||||
private String _ErrorCode;
|
||||
/// <summary>错误码</summary>
|
||||
[DisplayName("错误码")]
|
||||
[Description("错误码")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("ErrorCode", "错误码", "")]
|
||||
public String ErrorCode { get { return _ErrorCode; } set { if (OnPropertyChanging(__.ErrorCode, value)) { _ErrorCode = value; OnPropertyChanged(__.ErrorCode); } } }
|
||||
|
||||
private String _Message;
|
||||
/// <summary>内容</summary>
|
||||
[DisplayName("内容")]
|
||||
[Description("内容")]
|
||||
[DataObjectField(false, false, true, 2000)]
|
||||
[BindColumn("Message", "内容", "")]
|
||||
public String Message { get { return _Message; } set { if (OnPropertyChanging(__.Message, value)) { _Message = value; OnPropertyChanged(__.Message); } } }
|
||||
|
||||
private DateTime _CreateTime;
|
||||
/// <summary>创建时间</summary>
|
||||
[DisplayName("创建时间")]
|
||||
[Description("创建时间")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("CreateTime", "创建时间", "")]
|
||||
public DateTime CreateTime { get { return _CreateTime; } set { if (OnPropertyChanging(__.CreateTime, value)) { _CreateTime = value; OnPropertyChanged(__.CreateTime); } } }
|
||||
|
||||
private DateTime _UpdateTime;
|
||||
/// <summary>更新时间</summary>
|
||||
[DisplayName("更新时间")]
|
||||
[Description("更新时间")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("UpdateTime", "更新时间", "")]
|
||||
public DateTime UpdateTime { get { return _UpdateTime; } set { if (OnPropertyChanging(__.UpdateTime, value)) { _UpdateTime = value; OnPropertyChanged(__.UpdateTime); } } }
|
||||
#endregion
|
||||
|
||||
#region 获取/设置 字段值
|
||||
/// <summary>获取/设置 字段值</summary>
|
||||
/// <param name="name">字段名</param>
|
||||
/// <returns></returns>
|
||||
public override Object this[String name]
|
||||
{
|
||||
get
|
||||
{
|
||||
switch (name)
|
||||
{
|
||||
case __.ID : return _ID;
|
||||
case __.AppID : return _AppID;
|
||||
case __.JobID : return _JobID;
|
||||
case __.JobLogID : return _JobLogID;
|
||||
case __.Client : return _Client;
|
||||
case __.Start : return _Start;
|
||||
case __.End : return _End;
|
||||
case __.Row : return _Row;
|
||||
case __.Step : return _Step;
|
||||
case __.BatchSize : return _BatchSize;
|
||||
case __.Key : return _Key;
|
||||
case __.Data : return _Data;
|
||||
case __.Server : return _Server;
|
||||
case __.ProcessID : return _ProcessID;
|
||||
case __.ThreadID : return _ThreadID;
|
||||
case __.ErrorCode : return _ErrorCode;
|
||||
case __.Message : return _Message;
|
||||
case __.CreateTime : return _CreateTime;
|
||||
case __.UpdateTime : return _UpdateTime;
|
||||
default: return base[name];
|
||||
}
|
||||
}
|
||||
set
|
||||
{
|
||||
switch (name)
|
||||
{
|
||||
case __.ID : _ID = value.ToInt(); break;
|
||||
case __.AppID : _AppID = value.ToInt(); break;
|
||||
case __.JobID : _JobID = value.ToInt(); break;
|
||||
case __.JobLogID : _JobLogID = value.ToInt(); break;
|
||||
case __.Client : _Client = Convert.ToString(value); break;
|
||||
case __.Start : _Start = value.ToDateTime(); break;
|
||||
case __.End : _End = value.ToDateTime(); break;
|
||||
case __.Row : _Row = value.ToInt(); break;
|
||||
case __.Step : _Step = value.ToInt(); break;
|
||||
case __.BatchSize : _BatchSize = value.ToInt(); break;
|
||||
case __.Key : _Key = Convert.ToString(value); break;
|
||||
case __.Data : _Data = Convert.ToString(value); break;
|
||||
case __.Server : _Server = Convert.ToString(value); break;
|
||||
case __.ProcessID : _ProcessID = value.ToInt(); break;
|
||||
case __.ThreadID : _ThreadID = value.ToInt(); break;
|
||||
case __.ErrorCode : _ErrorCode = Convert.ToString(value); break;
|
||||
case __.Message : _Message = Convert.ToString(value); break;
|
||||
case __.CreateTime : _CreateTime = value.ToDateTime(); break;
|
||||
case __.UpdateTime : _UpdateTime = value.ToDateTime(); break;
|
||||
default: base[name] = value; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 字段名
|
||||
/// <summary>取得作业错误字段信息的快捷方式</summary>
|
||||
public partial class _
|
||||
{
|
||||
/// <summary>编号</summary>
|
||||
public static readonly Field ID = FindByName(__.ID);
|
||||
|
||||
/// <summary>应用</summary>
|
||||
public static readonly Field AppID = FindByName(__.AppID);
|
||||
|
||||
/// <summary>作业</summary>
|
||||
public static readonly Field JobID = FindByName(__.JobID);
|
||||
|
||||
/// <summary>作业项</summary>
|
||||
public static readonly Field JobLogID = FindByName(__.JobLogID);
|
||||
|
||||
/// <summary>客户端。IP加进程</summary>
|
||||
public static readonly Field Client = FindByName(__.Client);
|
||||
|
||||
/// <summary>开始。大于等于</summary>
|
||||
public static readonly Field Start = FindByName(__.Start);
|
||||
|
||||
/// <summary>结束。小于,不等于</summary>
|
||||
public static readonly Field End = FindByName(__.End);
|
||||
|
||||
/// <summary>行。分页起始行</summary>
|
||||
public static readonly Field Row = FindByName(__.Row);
|
||||
|
||||
/// <summary>步进。最大区间大小,秒</summary>
|
||||
public static readonly Field Step = FindByName(__.Step);
|
||||
|
||||
/// <summary>批大小</summary>
|
||||
public static readonly Field BatchSize = FindByName(__.BatchSize);
|
||||
|
||||
/// <summary>数据键</summary>
|
||||
public static readonly Field Key = FindByName(__.Key);
|
||||
|
||||
/// <summary>数据</summary>
|
||||
public static readonly Field Data = FindByName(__.Data);
|
||||
|
||||
/// <summary>服务器</summary>
|
||||
public static readonly Field Server = FindByName(__.Server);
|
||||
|
||||
/// <summary>进程</summary>
|
||||
public static readonly Field ProcessID = FindByName(__.ProcessID);
|
||||
|
||||
/// <summary>线程</summary>
|
||||
public static readonly Field ThreadID = FindByName(__.ThreadID);
|
||||
|
||||
/// <summary>错误码</summary>
|
||||
public static readonly Field ErrorCode = FindByName(__.ErrorCode);
|
||||
|
||||
/// <summary>内容</summary>
|
||||
public static readonly Field Message = FindByName(__.Message);
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
public static readonly Field CreateTime = FindByName(__.CreateTime);
|
||||
|
||||
/// <summary>更新时间</summary>
|
||||
public static readonly Field UpdateTime = FindByName(__.UpdateTime);
|
||||
|
||||
static Field FindByName(String name) { return Meta.Table.FindByName(name); }
|
||||
}
|
||||
|
||||
/// <summary>取得作业错误字段名称的快捷方式</summary>
|
||||
public partial class __
|
||||
{
|
||||
/// <summary>编号</summary>
|
||||
public const String ID = "ID";
|
||||
|
||||
/// <summary>应用</summary>
|
||||
public const String AppID = "AppID";
|
||||
|
||||
/// <summary>作业</summary>
|
||||
public const String JobID = "JobID";
|
||||
|
||||
/// <summary>作业项</summary>
|
||||
public const String JobLogID = "JobLogID";
|
||||
|
||||
/// <summary>客户端。IP加进程</summary>
|
||||
public const String Client = "Client";
|
||||
|
||||
/// <summary>开始。大于等于</summary>
|
||||
public const String Start = "Start";
|
||||
|
||||
/// <summary>结束。小于,不等于</summary>
|
||||
public const String End = "End";
|
||||
|
||||
/// <summary>行。分页起始行</summary>
|
||||
public const String Row = "Row";
|
||||
|
||||
/// <summary>步进。最大区间大小,秒</summary>
|
||||
public const String Step = "Step";
|
||||
|
||||
/// <summary>批大小</summary>
|
||||
public const String BatchSize = "BatchSize";
|
||||
|
||||
/// <summary>数据键</summary>
|
||||
public const String Key = "Key";
|
||||
|
||||
/// <summary>数据</summary>
|
||||
public const String Data = "Data";
|
||||
|
||||
/// <summary>服务器</summary>
|
||||
public const String Server = "Server";
|
||||
|
||||
/// <summary>进程</summary>
|
||||
public const String ProcessID = "ProcessID";
|
||||
|
||||
/// <summary>线程</summary>
|
||||
public const String ThreadID = "ThreadID";
|
||||
|
||||
/// <summary>错误码</summary>
|
||||
public const String ErrorCode = "ErrorCode";
|
||||
|
||||
/// <summary>内容</summary>
|
||||
public const String Message = "Message";
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
public const String CreateTime = "CreateTime";
|
||||
|
||||
/// <summary>更新时间</summary>
|
||||
public const String UpdateTime = "UpdateTime";
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>作业错误接口</summary>
|
||||
public partial interface IJobError
|
||||
{
|
||||
#region 属性
|
||||
/// <summary>编号</summary>
|
||||
Int32 ID { get; set; }
|
||||
|
||||
/// <summary>应用</summary>
|
||||
Int32 AppID { get; set; }
|
||||
|
||||
/// <summary>作业</summary>
|
||||
Int32 JobID { get; set; }
|
||||
|
||||
/// <summary>作业项</summary>
|
||||
Int32 JobLogID { get; set; }
|
||||
|
||||
/// <summary>客户端。IP加进程</summary>
|
||||
String Client { get; set; }
|
||||
|
||||
/// <summary>开始。大于等于</summary>
|
||||
DateTime Start { get; set; }
|
||||
|
||||
/// <summary>结束。小于,不等于</summary>
|
||||
DateTime End { get; set; }
|
||||
|
||||
/// <summary>行。分页起始行</summary>
|
||||
Int32 Row { get; set; }
|
||||
|
||||
/// <summary>步进。最大区间大小,秒</summary>
|
||||
Int32 Step { get; set; }
|
||||
|
||||
/// <summary>批大小</summary>
|
||||
Int32 BatchSize { get; set; }
|
||||
|
||||
/// <summary>数据键</summary>
|
||||
String Key { get; set; }
|
||||
|
||||
/// <summary>数据</summary>
|
||||
String Data { get; set; }
|
||||
|
||||
/// <summary>服务器</summary>
|
||||
String Server { get; set; }
|
||||
|
||||
/// <summary>进程</summary>
|
||||
Int32 ProcessID { get; set; }
|
||||
|
||||
/// <summary>线程</summary>
|
||||
Int32 ThreadID { get; set; }
|
||||
|
||||
/// <summary>错误码</summary>
|
||||
String ErrorCode { get; set; }
|
||||
|
||||
/// <summary>内容</summary>
|
||||
String Message { get; set; }
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
DateTime CreateTime { get; set; }
|
||||
|
||||
/// <summary>更新时间</summary>
|
||||
DateTime UpdateTime { get; set; }
|
||||
#endregion
|
||||
|
||||
#region 获取/设置 字段值
|
||||
/// <summary>获取/设置 字段值</summary>
|
||||
/// <param name="name">字段名</param>
|
||||
/// <returns></returns>
|
||||
Object this[String name] { get; set; }
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,177 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using System.Xml.Serialization;
|
||||
using NewLife;
|
||||
using NewLife.Data;
|
||||
using NewLife.Log;
|
||||
using NewLife.Model;
|
||||
using NewLife.Reflection;
|
||||
using NewLife.Threading;
|
||||
using NewLife.Web;
|
||||
using XCode;
|
||||
using XCode.Cache;
|
||||
using XCode.Configuration;
|
||||
using XCode.DataAccessLayer;
|
||||
using XCode.Membership;
|
||||
|
||||
namespace AntJob.Data.Entity
|
||||
{
|
||||
/// <summary>应用在线。各应用多实例在线</summary>
|
||||
public partial class AppOnline : EntityBase<AppOnline>
|
||||
{
|
||||
#region 对象操作
|
||||
static AppOnline()
|
||||
{
|
||||
// 累加字段
|
||||
//var df = Meta.Factory.AdditionalFields;
|
||||
//df.Add(__.AppID);
|
||||
|
||||
// 过滤器 UserModule、TimeModule、IPModule
|
||||
Meta.Modules.Add<TimeModule>();
|
||||
Meta.Modules.Add<IPModule>();
|
||||
}
|
||||
|
||||
/// <summary>验证数据,通过抛出异常的方式提示验证失败。</summary>
|
||||
/// <param name="isNew">是否插入</param>
|
||||
public override void Valid(Boolean isNew)
|
||||
{
|
||||
// 如果没有脏数据,则不需要进行任何处理
|
||||
if (!HasDirty) return;
|
||||
|
||||
// 在新插入数据或者修改了指定字段时进行修正
|
||||
//if (isNew && !Dirtys[nameof(CreateTime)]) nameof(CreateTime) = DateTime.Now;
|
||||
//if (!Dirtys[nameof(UpdateTime)]) nameof(UpdateTime) = DateTime.Now;
|
||||
//if (isNew && !Dirtys[nameof(CreateIP)]) nameof(CreateIP) = ManageProvider.UserHost;
|
||||
//if (!Dirtys[nameof(UpdateIP)]) nameof(UpdateIP) = ManageProvider.UserHost;
|
||||
|
||||
// 检查唯一索引
|
||||
// CheckExist(isNew, __.Instance);
|
||||
}
|
||||
|
||||
///// <summary>首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法</summary>
|
||||
//[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
//protected override void InitData()
|
||||
//{
|
||||
// // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用
|
||||
// if (Meta.Session.Count > 0) return;
|
||||
|
||||
// if (XTrace.Debug) XTrace.WriteLine("开始初始化AppOnline[应用在线]数据……");
|
||||
|
||||
// var entity = new AppOnline();
|
||||
// entity.ID = 0;
|
||||
// entity.AppID = 0;
|
||||
// entity.Instance = "abc";
|
||||
// entity.Client = "abc";
|
||||
// entity.Name = "abc";
|
||||
// entity.Version = "abc";
|
||||
// entity.Server = "abc";
|
||||
// entity.Logs = 0;
|
||||
// entity.Total = 0;
|
||||
// entity.Success = 0;
|
||||
// entity.Error = 0;
|
||||
// entity.Cost = 0;
|
||||
// entity.Speed = 0;
|
||||
// entity.LastKey = "abc";
|
||||
// entity.CreateTime = DateTime.Now;
|
||||
// entity.CreateIP = "abc";
|
||||
// entity.UpdateTime = DateTime.Now;
|
||||
// entity.UpdateIP = "abc";
|
||||
// entity.Insert();
|
||||
|
||||
// if (XTrace.Debug) XTrace.WriteLine("完成初始化AppOnline[应用在线]数据!");
|
||||
//}
|
||||
|
||||
///// <summary>已重载。基类先调用Valid(true)验证数据,然后在事务保护内调用OnInsert</summary>
|
||||
///// <returns></returns>
|
||||
//public override Int32 Insert()
|
||||
//{
|
||||
// return base.Insert();
|
||||
//}
|
||||
|
||||
///// <summary>已重载。在事务保护范围内处理业务,位于Valid之后</summary>
|
||||
///// <returns></returns>
|
||||
//protected override Int32 OnDelete()
|
||||
//{
|
||||
// return base.OnDelete();
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region 扩展属性
|
||||
/// <summary>应用</summary>
|
||||
[XmlIgnore]
|
||||
//[ScriptIgnore]
|
||||
public App App { get { return Extends.Get(nameof(App), k => App.FindByID(AppID)); } }
|
||||
|
||||
/// <summary>应用</summary>
|
||||
[XmlIgnore]
|
||||
//[ScriptIgnore]
|
||||
[DisplayName("应用")]
|
||||
[Map(__.AppID, typeof(App), "ID")]
|
||||
public String AppName { get { return App?.Name; } }
|
||||
#endregion
|
||||
|
||||
#region 扩展查询
|
||||
/// <summary>根据编号查找</summary>
|
||||
/// <param name="id">编号</param>
|
||||
/// <returns>实体对象</returns>
|
||||
public static AppOnline FindByID(Int32 id)
|
||||
{
|
||||
if (id <= 0) return null;
|
||||
|
||||
// 实体缓存
|
||||
if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.ID == id);
|
||||
|
||||
// 单对象缓存
|
||||
return Meta.SingleCache[id];
|
||||
|
||||
//return Find(_.ID == id);
|
||||
}
|
||||
|
||||
/// <summary>根据实例查找</summary>
|
||||
/// <param name="instance">实例</param>
|
||||
/// <returns>实体对象</returns>
|
||||
public static AppOnline FindByInstance(String instance)
|
||||
{
|
||||
// 实体缓存
|
||||
if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Instance == instance);
|
||||
|
||||
return Find(_.Instance == instance);
|
||||
}
|
||||
|
||||
/// <summary>根据客户端查找</summary>
|
||||
/// <param name="client">客户端</param>
|
||||
/// <returns>实体列表</returns>
|
||||
public static IList<AppOnline> FindAllByClient(String client)
|
||||
{
|
||||
// 实体缓存
|
||||
if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.Client == client);
|
||||
|
||||
return FindAll(_.Client == client);
|
||||
}
|
||||
|
||||
/// <summary>根据应用查找</summary>
|
||||
/// <param name="appid">应用</param>
|
||||
/// <returns>实体列表</returns>
|
||||
public static IList<AppOnline> FindAllByAppID(Int32 appid)
|
||||
{
|
||||
// 实体缓存
|
||||
if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.AppID == appid);
|
||||
|
||||
return FindAll(_.AppID == appid);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 高级查询
|
||||
#endregion
|
||||
|
||||
#region 业务操作
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,412 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using XCode;
|
||||
using XCode.Configuration;
|
||||
using XCode.DataAccessLayer;
|
||||
|
||||
namespace AntJob.Data.Entity
|
||||
{
|
||||
/// <summary>应用在线。各应用多实例在线</summary>
|
||||
[Serializable]
|
||||
[DataObject]
|
||||
[Description("应用在线。各应用多实例在线")]
|
||||
[BindIndex("IU_AppOnline_Instance", true, "Instance")]
|
||||
[BindIndex("IX_AppOnline_Client", false, "Client")]
|
||||
[BindIndex("IX_AppOnline_AppID", false, "AppID")]
|
||||
[BindTable("AppOnline", Description = "应用在线。各应用多实例在线", ConnName = "Ant", DbType = DatabaseType.None)]
|
||||
public partial class AppOnline : IAppOnline
|
||||
{
|
||||
#region 属性
|
||||
private Int32 _ID;
|
||||
/// <summary>编号</summary>
|
||||
[DisplayName("编号")]
|
||||
[Description("编号")]
|
||||
[DataObjectField(true, true, false, 0)]
|
||||
[BindColumn("ID", "编号", "")]
|
||||
public Int32 ID { get { return _ID; } set { if (OnPropertyChanging(__.ID, value)) { _ID = value; OnPropertyChanged(__.ID); } } }
|
||||
|
||||
private Int32 _AppID;
|
||||
/// <summary>应用</summary>
|
||||
[DisplayName("应用")]
|
||||
[Description("应用")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("AppID", "应用", "")]
|
||||
public Int32 AppID { get { return _AppID; } set { if (OnPropertyChanging(__.AppID, value)) { _AppID = value; OnPropertyChanged(__.AppID); } } }
|
||||
|
||||
private String _Instance;
|
||||
/// <summary>实例。IP加端口</summary>
|
||||
[DisplayName("实例")]
|
||||
[Description("实例。IP加端口")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("Instance", "实例。IP加端口", "")]
|
||||
public String Instance { get { return _Instance; } set { if (OnPropertyChanging(__.Instance, value)) { _Instance = value; OnPropertyChanged(__.Instance); } } }
|
||||
|
||||
private String _Client;
|
||||
/// <summary>客户端。IP加进程</summary>
|
||||
[DisplayName("客户端")]
|
||||
[Description("客户端。IP加进程")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("Client", "客户端。IP加进程", "")]
|
||||
public String Client { get { return _Client; } set { if (OnPropertyChanging(__.Client, value)) { _Client = value; OnPropertyChanged(__.Client); } } }
|
||||
|
||||
private String _Name;
|
||||
/// <summary>名称。机器名称</summary>
|
||||
[DisplayName("名称")]
|
||||
[Description("名称。机器名称")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("Name", "名称。机器名称", "", Master = true)]
|
||||
public String Name { get { return _Name; } set { if (OnPropertyChanging(__.Name, value)) { _Name = value; OnPropertyChanged(__.Name); } } }
|
||||
|
||||
private String _Version;
|
||||
/// <summary>版本。客户端</summary>
|
||||
[DisplayName("版本")]
|
||||
[Description("版本。客户端")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("Version", "版本。客户端", "")]
|
||||
public String Version { get { return _Version; } set { if (OnPropertyChanging(__.Version, value)) { _Version = value; OnPropertyChanged(__.Version); } } }
|
||||
|
||||
private String _Server;
|
||||
/// <summary>服务端。客户端登录到哪个服务端,IP加端口</summary>
|
||||
[DisplayName("服务端")]
|
||||
[Description("服务端。客户端登录到哪个服务端,IP加端口")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("Server", "服务端。客户端登录到哪个服务端,IP加端口", "")]
|
||||
public String Server { get { return _Server; } set { if (OnPropertyChanging(__.Server, value)) { _Server = value; OnPropertyChanged(__.Server); } } }
|
||||
|
||||
private Int32 _Logs;
|
||||
/// <summary>任务数</summary>
|
||||
[DisplayName("任务数")]
|
||||
[Description("任务数")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Logs", "任务数", "")]
|
||||
public Int32 Logs { get { return _Logs; } set { if (OnPropertyChanging(__.Logs, value)) { _Logs = value; OnPropertyChanged(__.Logs); } } }
|
||||
|
||||
private Int64 _Total;
|
||||
/// <summary>总数</summary>
|
||||
[DisplayName("总数")]
|
||||
[Description("总数")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Total", "总数", "")]
|
||||
public Int64 Total { get { return _Total; } set { if (OnPropertyChanging(__.Total, value)) { _Total = value; OnPropertyChanged(__.Total); } } }
|
||||
|
||||
private Int64 _Success;
|
||||
/// <summary>成功</summary>
|
||||
[DisplayName("成功")]
|
||||
[Description("成功")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Success", "成功", "")]
|
||||
public Int64 Success { get { return _Success; } set { if (OnPropertyChanging(__.Success, value)) { _Success = value; OnPropertyChanged(__.Success); } } }
|
||||
|
||||
private Int64 _Error;
|
||||
/// <summary>错误</summary>
|
||||
[DisplayName("错误")]
|
||||
[Description("错误")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Error", "错误", "")]
|
||||
public Int64 Error { get { return _Error; } set { if (OnPropertyChanging(__.Error, value)) { _Error = value; OnPropertyChanged(__.Error); } } }
|
||||
|
||||
private Int64 _Cost;
|
||||
/// <summary>耗时。总耗时,秒</summary>
|
||||
[DisplayName("耗时")]
|
||||
[Description("耗时。总耗时,秒")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Cost", "耗时。总耗时,秒", "")]
|
||||
public Int64 Cost { get { return _Cost; } set { if (OnPropertyChanging(__.Cost, value)) { _Cost = value; OnPropertyChanged(__.Cost); } } }
|
||||
|
||||
private Int64 _Speed;
|
||||
/// <summary>速度。每秒处理数</summary>
|
||||
[DisplayName("速度")]
|
||||
[Description("速度。每秒处理数")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Speed", "速度。每秒处理数", "")]
|
||||
public Int64 Speed { get { return _Speed; } set { if (OnPropertyChanging(__.Speed, value)) { _Speed = value; OnPropertyChanged(__.Speed); } } }
|
||||
|
||||
private String _LastKey;
|
||||
/// <summary>最后键</summary>
|
||||
[DisplayName("最后键")]
|
||||
[Description("最后键")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("LastKey", "最后键", "")]
|
||||
public String LastKey { get { return _LastKey; } set { if (OnPropertyChanging(__.LastKey, value)) { _LastKey = value; OnPropertyChanged(__.LastKey); } } }
|
||||
|
||||
private DateTime _CreateTime;
|
||||
/// <summary>创建时间</summary>
|
||||
[DisplayName("创建时间")]
|
||||
[Description("创建时间")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("CreateTime", "创建时间", "")]
|
||||
public DateTime CreateTime { get { return _CreateTime; } set { if (OnPropertyChanging(__.CreateTime, value)) { _CreateTime = value; OnPropertyChanged(__.CreateTime); } } }
|
||||
|
||||
private String _CreateIP;
|
||||
/// <summary>创建地址</summary>
|
||||
[DisplayName("创建地址")]
|
||||
[Description("创建地址")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("CreateIP", "创建地址", "")]
|
||||
public String CreateIP { get { return _CreateIP; } set { if (OnPropertyChanging(__.CreateIP, value)) { _CreateIP = value; OnPropertyChanged(__.CreateIP); } } }
|
||||
|
||||
private DateTime _UpdateTime;
|
||||
/// <summary>更新时间</summary>
|
||||
[DisplayName("更新时间")]
|
||||
[Description("更新时间")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("UpdateTime", "更新时间", "")]
|
||||
public DateTime UpdateTime { get { return _UpdateTime; } set { if (OnPropertyChanging(__.UpdateTime, value)) { _UpdateTime = value; OnPropertyChanged(__.UpdateTime); } } }
|
||||
|
||||
private String _UpdateIP;
|
||||
/// <summary>更新地址</summary>
|
||||
[DisplayName("更新地址")]
|
||||
[Description("更新地址")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("UpdateIP", "更新地址", "")]
|
||||
public String UpdateIP { get { return _UpdateIP; } set { if (OnPropertyChanging(__.UpdateIP, value)) { _UpdateIP = value; OnPropertyChanged(__.UpdateIP); } } }
|
||||
#endregion
|
||||
|
||||
#region 获取/设置 字段值
|
||||
/// <summary>获取/设置 字段值</summary>
|
||||
/// <param name="name">字段名</param>
|
||||
/// <returns></returns>
|
||||
public override Object this[String name]
|
||||
{
|
||||
get
|
||||
{
|
||||
switch (name)
|
||||
{
|
||||
case __.ID : return _ID;
|
||||
case __.AppID : return _AppID;
|
||||
case __.Instance : return _Instance;
|
||||
case __.Client : return _Client;
|
||||
case __.Name : return _Name;
|
||||
case __.Version : return _Version;
|
||||
case __.Server : return _Server;
|
||||
case __.Logs : return _Logs;
|
||||
case __.Total : return _Total;
|
||||
case __.Success : return _Success;
|
||||
case __.Error : return _Error;
|
||||
case __.Cost : return _Cost;
|
||||
case __.Speed : return _Speed;
|
||||
case __.LastKey : return _LastKey;
|
||||
case __.CreateTime : return _CreateTime;
|
||||
case __.CreateIP : return _CreateIP;
|
||||
case __.UpdateTime : return _UpdateTime;
|
||||
case __.UpdateIP : return _UpdateIP;
|
||||
default: return base[name];
|
||||
}
|
||||
}
|
||||
set
|
||||
{
|
||||
switch (name)
|
||||
{
|
||||
case __.ID : _ID = value.ToInt(); break;
|
||||
case __.AppID : _AppID = value.ToInt(); break;
|
||||
case __.Instance : _Instance = Convert.ToString(value); break;
|
||||
case __.Client : _Client = Convert.ToString(value); break;
|
||||
case __.Name : _Name = Convert.ToString(value); break;
|
||||
case __.Version : _Version = Convert.ToString(value); break;
|
||||
case __.Server : _Server = Convert.ToString(value); break;
|
||||
case __.Logs : _Logs = value.ToInt(); break;
|
||||
case __.Total : _Total = value.ToLong(); break;
|
||||
case __.Success : _Success = value.ToLong(); break;
|
||||
case __.Error : _Error = value.ToLong(); break;
|
||||
case __.Cost : _Cost = value.ToLong(); break;
|
||||
case __.Speed : _Speed = value.ToLong(); break;
|
||||
case __.LastKey : _LastKey = Convert.ToString(value); break;
|
||||
case __.CreateTime : _CreateTime = value.ToDateTime(); break;
|
||||
case __.CreateIP : _CreateIP = Convert.ToString(value); break;
|
||||
case __.UpdateTime : _UpdateTime = value.ToDateTime(); break;
|
||||
case __.UpdateIP : _UpdateIP = Convert.ToString(value); break;
|
||||
default: base[name] = value; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 字段名
|
||||
/// <summary>取得应用在线字段信息的快捷方式</summary>
|
||||
public partial class _
|
||||
{
|
||||
/// <summary>编号</summary>
|
||||
public static readonly Field ID = FindByName(__.ID);
|
||||
|
||||
/// <summary>应用</summary>
|
||||
public static readonly Field AppID = FindByName(__.AppID);
|
||||
|
||||
/// <summary>实例。IP加端口</summary>
|
||||
public static readonly Field Instance = FindByName(__.Instance);
|
||||
|
||||
/// <summary>客户端。IP加进程</summary>
|
||||
public static readonly Field Client = FindByName(__.Client);
|
||||
|
||||
/// <summary>名称。机器名称</summary>
|
||||
public static readonly Field Name = FindByName(__.Name);
|
||||
|
||||
/// <summary>版本。客户端</summary>
|
||||
public static readonly Field Version = FindByName(__.Version);
|
||||
|
||||
/// <summary>服务端。客户端登录到哪个服务端,IP加端口</summary>
|
||||
public static readonly Field Server = FindByName(__.Server);
|
||||
|
||||
/// <summary>任务数</summary>
|
||||
public static readonly Field Logs = FindByName(__.Logs);
|
||||
|
||||
/// <summary>总数</summary>
|
||||
public static readonly Field Total = FindByName(__.Total);
|
||||
|
||||
/// <summary>成功</summary>
|
||||
public static readonly Field Success = FindByName(__.Success);
|
||||
|
||||
/// <summary>错误</summary>
|
||||
public static readonly Field Error = FindByName(__.Error);
|
||||
|
||||
/// <summary>耗时。总耗时,秒</summary>
|
||||
public static readonly Field Cost = FindByName(__.Cost);
|
||||
|
||||
/// <summary>速度。每秒处理数</summary>
|
||||
public static readonly Field Speed = FindByName(__.Speed);
|
||||
|
||||
/// <summary>最后键</summary>
|
||||
public static readonly Field LastKey = FindByName(__.LastKey);
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
public static readonly Field CreateTime = FindByName(__.CreateTime);
|
||||
|
||||
/// <summary>创建地址</summary>
|
||||
public static readonly Field CreateIP = FindByName(__.CreateIP);
|
||||
|
||||
/// <summary>更新时间</summary>
|
||||
public static readonly Field UpdateTime = FindByName(__.UpdateTime);
|
||||
|
||||
/// <summary>更新地址</summary>
|
||||
public static readonly Field UpdateIP = FindByName(__.UpdateIP);
|
||||
|
||||
static Field FindByName(String name) { return Meta.Table.FindByName(name); }
|
||||
}
|
||||
|
||||
/// <summary>取得应用在线字段名称的快捷方式</summary>
|
||||
public partial class __
|
||||
{
|
||||
/// <summary>编号</summary>
|
||||
public const String ID = "ID";
|
||||
|
||||
/// <summary>应用</summary>
|
||||
public const String AppID = "AppID";
|
||||
|
||||
/// <summary>实例。IP加端口</summary>
|
||||
public const String Instance = "Instance";
|
||||
|
||||
/// <summary>客户端。IP加进程</summary>
|
||||
public const String Client = "Client";
|
||||
|
||||
/// <summary>名称。机器名称</summary>
|
||||
public const String Name = "Name";
|
||||
|
||||
/// <summary>版本。客户端</summary>
|
||||
public const String Version = "Version";
|
||||
|
||||
/// <summary>服务端。客户端登录到哪个服务端,IP加端口</summary>
|
||||
public const String Server = "Server";
|
||||
|
||||
/// <summary>任务数</summary>
|
||||
public const String Logs = "Logs";
|
||||
|
||||
/// <summary>总数</summary>
|
||||
public const String Total = "Total";
|
||||
|
||||
/// <summary>成功</summary>
|
||||
public const String Success = "Success";
|
||||
|
||||
/// <summary>错误</summary>
|
||||
public const String Error = "Error";
|
||||
|
||||
/// <summary>耗时。总耗时,秒</summary>
|
||||
public const String Cost = "Cost";
|
||||
|
||||
/// <summary>速度。每秒处理数</summary>
|
||||
public const String Speed = "Speed";
|
||||
|
||||
/// <summary>最后键</summary>
|
||||
public const String LastKey = "LastKey";
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
public const String CreateTime = "CreateTime";
|
||||
|
||||
/// <summary>创建地址</summary>
|
||||
public const String CreateIP = "CreateIP";
|
||||
|
||||
/// <summary>更新时间</summary>
|
||||
public const String UpdateTime = "UpdateTime";
|
||||
|
||||
/// <summary>更新地址</summary>
|
||||
public const String UpdateIP = "UpdateIP";
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>应用在线。各应用多实例在线接口</summary>
|
||||
public partial interface IAppOnline
|
||||
{
|
||||
#region 属性
|
||||
/// <summary>编号</summary>
|
||||
Int32 ID { get; set; }
|
||||
|
||||
/// <summary>应用</summary>
|
||||
Int32 AppID { get; set; }
|
||||
|
||||
/// <summary>实例。IP加端口</summary>
|
||||
String Instance { get; set; }
|
||||
|
||||
/// <summary>客户端。IP加进程</summary>
|
||||
String Client { get; set; }
|
||||
|
||||
/// <summary>名称。机器名称</summary>
|
||||
String Name { get; set; }
|
||||
|
||||
/// <summary>版本。客户端</summary>
|
||||
String Version { get; set; }
|
||||
|
||||
/// <summary>服务端。客户端登录到哪个服务端,IP加端口</summary>
|
||||
String Server { get; set; }
|
||||
|
||||
/// <summary>任务数</summary>
|
||||
Int32 Logs { get; set; }
|
||||
|
||||
/// <summary>总数</summary>
|
||||
Int64 Total { get; set; }
|
||||
|
||||
/// <summary>成功</summary>
|
||||
Int64 Success { get; set; }
|
||||
|
||||
/// <summary>错误</summary>
|
||||
Int64 Error { get; set; }
|
||||
|
||||
/// <summary>耗时。总耗时,秒</summary>
|
||||
Int64 Cost { get; set; }
|
||||
|
||||
/// <summary>速度。每秒处理数</summary>
|
||||
Int64 Speed { get; set; }
|
||||
|
||||
/// <summary>最后键</summary>
|
||||
String LastKey { get; set; }
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
DateTime CreateTime { get; set; }
|
||||
|
||||
/// <summary>创建地址</summary>
|
||||
String CreateIP { get; set; }
|
||||
|
||||
/// <summary>更新时间</summary>
|
||||
DateTime UpdateTime { get; set; }
|
||||
|
||||
/// <summary>更新地址</summary>
|
||||
String UpdateIP { get; set; }
|
||||
#endregion
|
||||
|
||||
#region 获取/设置 字段值
|
||||
/// <summary>获取/设置 字段值</summary>
|
||||
/// <param name="name">字段名</param>
|
||||
/// <returns></returns>
|
||||
Object this[String name] { get; set; }
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,138 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using System.Xml.Serialization;
|
||||
using NewLife;
|
||||
using NewLife.Data;
|
||||
using NewLife.Log;
|
||||
using NewLife.Model;
|
||||
using NewLife.Reflection;
|
||||
using NewLife.Threading;
|
||||
using NewLife.Web;
|
||||
using XCode;
|
||||
using XCode.Cache;
|
||||
using XCode.Configuration;
|
||||
using XCode.DataAccessLayer;
|
||||
using XCode.Membership;
|
||||
|
||||
namespace AntJob.Data.Entity
|
||||
{
|
||||
/// <summary>应用消息。消息调度,某些作业负责生产消息,供其它作业进行消费处理</summary>
|
||||
public partial class AppMessage : EntityBase<AppMessage>
|
||||
{
|
||||
#region 对象操作
|
||||
static AppMessage()
|
||||
{
|
||||
// 累加字段
|
||||
//var df = Meta.Factory.AdditionalFields;
|
||||
//df.Add(__.AppID);
|
||||
|
||||
// 过滤器 UserModule、TimeModule、IPModule
|
||||
Meta.Modules.Add<TimeModule>();
|
||||
}
|
||||
|
||||
/// <summary>验证数据,通过抛出异常的方式提示验证失败。</summary>
|
||||
/// <param name="isNew">是否插入</param>
|
||||
public override void Valid(Boolean isNew)
|
||||
{
|
||||
// 如果没有脏数据,则不需要进行任何处理
|
||||
if (!HasDirty) return;
|
||||
|
||||
// 在新插入数据或者修改了指定字段时进行修正
|
||||
//if (isNew && !Dirtys[nameof(CreateTime)]) nameof(CreateTime) = DateTime.Now;
|
||||
//if (!Dirtys[nameof(UpdateTime)]) nameof(UpdateTime) = DateTime.Now;
|
||||
}
|
||||
|
||||
///// <summary>首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法</summary>
|
||||
//[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
//protected override void InitData()
|
||||
//{
|
||||
// // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用
|
||||
// if (Meta.Session.Count > 0) return;
|
||||
|
||||
// if (XTrace.Debug) XTrace.WriteLine("开始初始化AppMessage[应用消息]数据……");
|
||||
|
||||
// var entity = new AppMessage();
|
||||
// entity.ID = 0;
|
||||
// entity.AppID = 0;
|
||||
// entity.JobID = 0;
|
||||
// entity.Topic = "abc";
|
||||
// entity.Data = "abc";
|
||||
// entity.CreateTime = DateTime.Now;
|
||||
// entity.UpdateTime = DateTime.Now;
|
||||
// entity.Insert();
|
||||
|
||||
// if (XTrace.Debug) XTrace.WriteLine("完成初始化AppMessage[应用消息]数据!");
|
||||
//}
|
||||
|
||||
///// <summary>已重载。基类先调用Valid(true)验证数据,然后在事务保护内调用OnInsert</summary>
|
||||
///// <returns></returns>
|
||||
//public override Int32 Insert()
|
||||
//{
|
||||
// return base.Insert();
|
||||
//}
|
||||
|
||||
///// <summary>已重载。在事务保护范围内处理业务,位于Valid之后</summary>
|
||||
///// <returns></returns>
|
||||
//protected override Int32 OnDelete()
|
||||
//{
|
||||
// return base.OnDelete();
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region 扩展属性
|
||||
/// <summary>应用</summary>
|
||||
[XmlIgnore]
|
||||
//[ScriptIgnore]
|
||||
public App App { get { return Extends.Get(nameof(App), k => App.FindByID(AppID)); } }
|
||||
|
||||
/// <summary>应用</summary>
|
||||
[XmlIgnore]
|
||||
//[ScriptIgnore]
|
||||
[DisplayName("应用")]
|
||||
[Map(__.AppID, typeof(App), "ID")]
|
||||
public String AppName { get { return App?.Name; } }
|
||||
/// <summary>作业</summary>
|
||||
[XmlIgnore]
|
||||
//[ScriptIgnore]
|
||||
public Job Job { get { return Extends.Get(nameof(Job), k => Job.FindByID(JobID)); } }
|
||||
|
||||
/// <summary>作业</summary>
|
||||
[XmlIgnore]
|
||||
//[ScriptIgnore]
|
||||
[DisplayName("作业")]
|
||||
[Map(__.JobID, typeof(Job), "ID")]
|
||||
public String JobName { get { return Job?.Name; } }
|
||||
#endregion
|
||||
|
||||
#region 扩展查询
|
||||
/// <summary>根据编号查找</summary>
|
||||
/// <param name="id">编号</param>
|
||||
/// <returns>实体对象</returns>
|
||||
public static AppMessage FindByID(Int32 id)
|
||||
{
|
||||
if (id <= 0) return null;
|
||||
|
||||
// 实体缓存
|
||||
if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.ID == id);
|
||||
|
||||
// 单对象缓存
|
||||
return Meta.SingleCache[id];
|
||||
|
||||
//return Find(_.ID == id);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 高级查询
|
||||
#endregion
|
||||
|
||||
#region 业务操作
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,202 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using XCode;
|
||||
using XCode.Configuration;
|
||||
using XCode.DataAccessLayer;
|
||||
|
||||
namespace AntJob.Data.Entity
|
||||
{
|
||||
/// <summary>应用消息。消息调度,某些作业负责生产消息,供其它作业进行消费处理</summary>
|
||||
[Serializable]
|
||||
[DataObject]
|
||||
[Description("应用消息。消息调度,某些作业负责生产消息,供其它作业进行消费处理")]
|
||||
[BindIndex("IX_AppMessage_AppID_Topic_UpdateTime", false, "AppID,Topic,UpdateTime")]
|
||||
[BindIndex("IX_AppMessage_UpdateTime", false, "UpdateTime")]
|
||||
[BindTable("AppMessage", Description = "应用消息。消息调度,某些作业负责生产消息,供其它作业进行消费处理", ConnName = "Ant", DbType = DatabaseType.None)]
|
||||
public partial class AppMessage : IAppMessage
|
||||
{
|
||||
#region 属性
|
||||
private Int32 _ID;
|
||||
/// <summary>编号</summary>
|
||||
[DisplayName("编号")]
|
||||
[Description("编号")]
|
||||
[DataObjectField(true, true, false, 0)]
|
||||
[BindColumn("ID", "编号", "")]
|
||||
public Int32 ID { get { return _ID; } set { if (OnPropertyChanging(__.ID, value)) { _ID = value; OnPropertyChanged(__.ID); } } }
|
||||
|
||||
private Int32 _AppID;
|
||||
/// <summary>应用</summary>
|
||||
[DisplayName("应用")]
|
||||
[Description("应用")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("AppID", "应用", "")]
|
||||
public Int32 AppID { get { return _AppID; } set { if (OnPropertyChanging(__.AppID, value)) { _AppID = value; OnPropertyChanged(__.AppID); } } }
|
||||
|
||||
private Int32 _JobID;
|
||||
/// <summary>作业。生产消息的作业</summary>
|
||||
[DisplayName("作业")]
|
||||
[Description("作业。生产消息的作业")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("JobID", "作业。生产消息的作业", "")]
|
||||
public Int32 JobID { get { return _JobID; } set { if (OnPropertyChanging(__.JobID, value)) { _JobID = value; OnPropertyChanged(__.JobID); } } }
|
||||
|
||||
private String _Topic;
|
||||
/// <summary>主题。区分作业下多种消息</summary>
|
||||
[DisplayName("主题")]
|
||||
[Description("主题。区分作业下多种消息")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("Topic", "主题。区分作业下多种消息", "")]
|
||||
public String Topic { get { return _Topic; } set { if (OnPropertyChanging(__.Topic, value)) { _Topic = value; OnPropertyChanged(__.Topic); } } }
|
||||
|
||||
private String _Data;
|
||||
/// <summary>数据。可以是Json数据,比如StatID</summary>
|
||||
[DisplayName("数据")]
|
||||
[Description("数据。可以是Json数据,比如StatID")]
|
||||
[DataObjectField(false, false, true, 2000)]
|
||||
[BindColumn("Data", "数据。可以是Json数据,比如StatID", "")]
|
||||
public String Data { get { return _Data; } set { if (OnPropertyChanging(__.Data, value)) { _Data = value; OnPropertyChanged(__.Data); } } }
|
||||
|
||||
private DateTime _CreateTime;
|
||||
/// <summary>创建时间</summary>
|
||||
[DisplayName("创建时间")]
|
||||
[Description("创建时间")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("CreateTime", "创建时间", "")]
|
||||
public DateTime CreateTime { get { return _CreateTime; } set { if (OnPropertyChanging(__.CreateTime, value)) { _CreateTime = value; OnPropertyChanged(__.CreateTime); } } }
|
||||
|
||||
private DateTime _UpdateTime;
|
||||
/// <summary>更新时间</summary>
|
||||
[DisplayName("更新时间")]
|
||||
[Description("更新时间")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("UpdateTime", "更新时间", "")]
|
||||
public DateTime UpdateTime { get { return _UpdateTime; } set { if (OnPropertyChanging(__.UpdateTime, value)) { _UpdateTime = value; OnPropertyChanged(__.UpdateTime); } } }
|
||||
#endregion
|
||||
|
||||
#region 获取/设置 字段值
|
||||
/// <summary>获取/设置 字段值</summary>
|
||||
/// <param name="name">字段名</param>
|
||||
/// <returns></returns>
|
||||
public override Object this[String name]
|
||||
{
|
||||
get
|
||||
{
|
||||
switch (name)
|
||||
{
|
||||
case __.ID : return _ID;
|
||||
case __.AppID : return _AppID;
|
||||
case __.JobID : return _JobID;
|
||||
case __.Topic : return _Topic;
|
||||
case __.Data : return _Data;
|
||||
case __.CreateTime : return _CreateTime;
|
||||
case __.UpdateTime : return _UpdateTime;
|
||||
default: return base[name];
|
||||
}
|
||||
}
|
||||
set
|
||||
{
|
||||
switch (name)
|
||||
{
|
||||
case __.ID : _ID = value.ToInt(); break;
|
||||
case __.AppID : _AppID = value.ToInt(); break;
|
||||
case __.JobID : _JobID = value.ToInt(); break;
|
||||
case __.Topic : _Topic = Convert.ToString(value); break;
|
||||
case __.Data : _Data = Convert.ToString(value); break;
|
||||
case __.CreateTime : _CreateTime = value.ToDateTime(); break;
|
||||
case __.UpdateTime : _UpdateTime = value.ToDateTime(); break;
|
||||
default: base[name] = value; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 字段名
|
||||
/// <summary>取得应用消息字段信息的快捷方式</summary>
|
||||
public partial class _
|
||||
{
|
||||
/// <summary>编号</summary>
|
||||
public static readonly Field ID = FindByName(__.ID);
|
||||
|
||||
/// <summary>应用</summary>
|
||||
public static readonly Field AppID = FindByName(__.AppID);
|
||||
|
||||
/// <summary>作业。生产消息的作业</summary>
|
||||
public static readonly Field JobID = FindByName(__.JobID);
|
||||
|
||||
/// <summary>主题。区分作业下多种消息</summary>
|
||||
public static readonly Field Topic = FindByName(__.Topic);
|
||||
|
||||
/// <summary>数据。可以是Json数据,比如StatID</summary>
|
||||
public static readonly Field Data = FindByName(__.Data);
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
public static readonly Field CreateTime = FindByName(__.CreateTime);
|
||||
|
||||
/// <summary>更新时间</summary>
|
||||
public static readonly Field UpdateTime = FindByName(__.UpdateTime);
|
||||
|
||||
static Field FindByName(String name) { return Meta.Table.FindByName(name); }
|
||||
}
|
||||
|
||||
/// <summary>取得应用消息字段名称的快捷方式</summary>
|
||||
public partial class __
|
||||
{
|
||||
/// <summary>编号</summary>
|
||||
public const String ID = "ID";
|
||||
|
||||
/// <summary>应用</summary>
|
||||
public const String AppID = "AppID";
|
||||
|
||||
/// <summary>作业。生产消息的作业</summary>
|
||||
public const String JobID = "JobID";
|
||||
|
||||
/// <summary>主题。区分作业下多种消息</summary>
|
||||
public const String Topic = "Topic";
|
||||
|
||||
/// <summary>数据。可以是Json数据,比如StatID</summary>
|
||||
public const String Data = "Data";
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
public const String CreateTime = "CreateTime";
|
||||
|
||||
/// <summary>更新时间</summary>
|
||||
public const String UpdateTime = "UpdateTime";
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>应用消息。消息调度,某些作业负责生产消息,供其它作业进行消费处理接口</summary>
|
||||
public partial interface IAppMessage
|
||||
{
|
||||
#region 属性
|
||||
/// <summary>编号</summary>
|
||||
Int32 ID { get; set; }
|
||||
|
||||
/// <summary>应用</summary>
|
||||
Int32 AppID { get; set; }
|
||||
|
||||
/// <summary>作业。生产消息的作业</summary>
|
||||
Int32 JobID { get; set; }
|
||||
|
||||
/// <summary>主题。区分作业下多种消息</summary>
|
||||
String Topic { get; set; }
|
||||
|
||||
/// <summary>数据。可以是Json数据,比如StatID</summary>
|
||||
String Data { get; set; }
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
DateTime CreateTime { get; set; }
|
||||
|
||||
/// <summary>更新时间</summary>
|
||||
DateTime UpdateTime { get; set; }
|
||||
#endregion
|
||||
|
||||
#region 获取/设置 字段值
|
||||
/// <summary>获取/设置 字段值</summary>
|
||||
/// <param name="name">字段名</param>
|
||||
/// <returns></returns>
|
||||
Object this[String name] { get; set; }
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,163 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using System.Xml.Serialization;
|
||||
using NewLife;
|
||||
using NewLife.Data;
|
||||
using NewLife.Log;
|
||||
using NewLife.Model;
|
||||
using NewLife.Reflection;
|
||||
using NewLife.Threading;
|
||||
using NewLife.Web;
|
||||
using XCode;
|
||||
using XCode.Cache;
|
||||
using XCode.Configuration;
|
||||
using XCode.DataAccessLayer;
|
||||
using XCode.Membership;
|
||||
|
||||
namespace AntJob.Data.Entity
|
||||
{
|
||||
/// <summary>应用系统。数据作业隶属于某个应用</summary>
|
||||
public partial class App : EntityBase<App>
|
||||
{
|
||||
#region 对象操作
|
||||
static App()
|
||||
{
|
||||
// 累加字段
|
||||
//var df = Meta.Factory.AdditionalFields;
|
||||
//df.Add(__.JobCount);
|
||||
|
||||
// 过滤器 UserModule、TimeModule、IPModule
|
||||
Meta.Modules.Add<UserModule>();
|
||||
Meta.Modules.Add<TimeModule>();
|
||||
Meta.Modules.Add<IPModule>();
|
||||
|
||||
// 单对象缓存
|
||||
var sc = Meta.SingleCache;
|
||||
sc.FindSlaveKeyMethod = k => Find(__.Name, k);
|
||||
sc.GetSlaveKeyMethod = e => e.Name;
|
||||
}
|
||||
|
||||
/// <summary>验证数据,通过抛出异常的方式提示验证失败。</summary>
|
||||
/// <param name="isNew">是否插入</param>
|
||||
public override void Valid(Boolean isNew)
|
||||
{
|
||||
// 如果没有脏数据,则不需要进行任何处理
|
||||
if (!HasDirty) return;
|
||||
|
||||
// 这里验证参数范围,建议抛出参数异常,指定参数名,前端用户界面可以捕获参数异常并聚焦到对应的参数输入框
|
||||
if (Name.IsNullOrEmpty()) throw new ArgumentNullException(nameof(Name), "名称不能为空!");
|
||||
|
||||
// 在新插入数据或者修改了指定字段时进行修正
|
||||
// 处理当前已登录用户信息,可以由UserModule过滤器代劳
|
||||
/*var user = ManageProvider.User;
|
||||
if (user != null)
|
||||
{
|
||||
if (isNew && !Dirtys[nameof(CreateUserID)) nameof(CreateUserID) = user.ID;
|
||||
if (!Dirtys[nameof(UpdateUserID)]) nameof(UpdateUserID) = user.ID;
|
||||
}*/
|
||||
//if (isNew && !Dirtys[nameof(CreateTime)]) nameof(CreateTime) = DateTime.Now;
|
||||
//if (!Dirtys[nameof(UpdateTime)]) nameof(UpdateTime) = DateTime.Now;
|
||||
//if (isNew && !Dirtys[nameof(CreateIP)]) nameof(CreateIP) = ManageProvider.UserHost;
|
||||
//if (!Dirtys[nameof(UpdateIP)]) nameof(UpdateIP) = ManageProvider.UserHost;
|
||||
|
||||
// 检查唯一索引
|
||||
// CheckExist(isNew, __.Name);
|
||||
}
|
||||
|
||||
///// <summary>首次连接数据库时初始化数据,仅用于实体类重载,用户不应该调用该方法</summary>
|
||||
//[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
//protected override void InitData()
|
||||
//{
|
||||
// // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用
|
||||
// if (Meta.Session.Count > 0) return;
|
||||
|
||||
// if (XTrace.Debug) XTrace.WriteLine("开始初始化App[应用系统]数据……");
|
||||
|
||||
// var entity = new App();
|
||||
// entity.ID = 0;
|
||||
// entity.Name = "abc";
|
||||
// entity.DisplayName = "abc";
|
||||
// entity.Secret = "abc";
|
||||
// entity.Category = "abc";
|
||||
// entity.Version = "abc";
|
||||
// entity.Enable = true;
|
||||
// entity.JobCount = 0;
|
||||
// entity.MessageCount = 0;
|
||||
// entity.Remark = "abc";
|
||||
// entity.CreateUserID = 0;
|
||||
// entity.CreateUser = "abc";
|
||||
// entity.CreateTime = DateTime.Now;
|
||||
// entity.CreateIP = "abc";
|
||||
// entity.UpdateUserID = 0;
|
||||
// entity.UpdateUser = "abc";
|
||||
// entity.UpdateTime = DateTime.Now;
|
||||
// entity.UpdateIP = "abc";
|
||||
// entity.Insert();
|
||||
|
||||
// if (XTrace.Debug) XTrace.WriteLine("完成初始化App[应用系统]数据!");
|
||||
//}
|
||||
|
||||
///// <summary>已重载。基类先调用Valid(true)验证数据,然后在事务保护内调用OnInsert</summary>
|
||||
///// <returns></returns>
|
||||
//public override Int32 Insert()
|
||||
//{
|
||||
// return base.Insert();
|
||||
//}
|
||||
|
||||
///// <summary>已重载。在事务保护范围内处理业务,位于Valid之后</summary>
|
||||
///// <returns></returns>
|
||||
//protected override Int32 OnDelete()
|
||||
//{
|
||||
// return base.OnDelete();
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region 扩展属性
|
||||
#endregion
|
||||
|
||||
#region 扩展查询
|
||||
/// <summary>根据编号查找</summary>
|
||||
/// <param name="id">编号</param>
|
||||
/// <returns>实体对象</returns>
|
||||
public static App FindByID(Int32 id)
|
||||
{
|
||||
if (id <= 0) return null;
|
||||
|
||||
// 实体缓存
|
||||
if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.ID == id);
|
||||
|
||||
// 单对象缓存
|
||||
return Meta.SingleCache[id];
|
||||
|
||||
//return Find(_.ID == id);
|
||||
}
|
||||
|
||||
/// <summary>根据名称查找</summary>
|
||||
/// <param name="name">名称</param>
|
||||
/// <returns>实体对象</returns>
|
||||
public static App FindByName(String name)
|
||||
{
|
||||
// 实体缓存
|
||||
if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Name == name);
|
||||
|
||||
// 单对象缓存
|
||||
//return Meta.SingleCache.GetItemWithSlaveKey(name) as App;
|
||||
|
||||
return Find(_.Name == name);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 高级查询
|
||||
#endregion
|
||||
|
||||
#region 业务操作
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,410 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using XCode;
|
||||
using XCode.Configuration;
|
||||
using XCode.DataAccessLayer;
|
||||
|
||||
namespace AntJob.Data.Entity
|
||||
{
|
||||
/// <summary>应用系统。数据作业隶属于某个应用</summary>
|
||||
[Serializable]
|
||||
[DataObject]
|
||||
[Description("应用系统。数据作业隶属于某个应用")]
|
||||
[BindIndex("IU_App_Name", true, "Name")]
|
||||
[BindTable("App", Description = "应用系统。数据作业隶属于某个应用", ConnName = "Ant", DbType = DatabaseType.None)]
|
||||
public partial class App : IApp
|
||||
{
|
||||
#region 属性
|
||||
private Int32 _ID;
|
||||
/// <summary>编号</summary>
|
||||
[DisplayName("编号")]
|
||||
[Description("编号")]
|
||||
[DataObjectField(true, true, false, 0)]
|
||||
[BindColumn("ID", "编号", "")]
|
||||
public Int32 ID { get { return _ID; } set { if (OnPropertyChanging(__.ID, value)) { _ID = value; OnPropertyChanged(__.ID); } } }
|
||||
|
||||
private String _Name;
|
||||
/// <summary>名称</summary>
|
||||
[DisplayName("名称")]
|
||||
[Description("名称")]
|
||||
[DataObjectField(false, false, false, 50)]
|
||||
[BindColumn("Name", "名称", "", Master = true)]
|
||||
public String Name { get { return _Name; } set { if (OnPropertyChanging(__.Name, value)) { _Name = value; OnPropertyChanged(__.Name); } } }
|
||||
|
||||
private String _DisplayName;
|
||||
/// <summary>显示名</summary>
|
||||
[DisplayName("显示名")]
|
||||
[Description("显示名")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("DisplayName", "显示名", "")]
|
||||
public String DisplayName { get { return _DisplayName; } set { if (OnPropertyChanging(__.DisplayName, value)) { _DisplayName = value; OnPropertyChanged(__.DisplayName); } } }
|
||||
|
||||
private String _Secret;
|
||||
/// <summary>密钥</summary>
|
||||
[DisplayName("密钥")]
|
||||
[Description("密钥")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("Secret", "密钥", "")]
|
||||
public String Secret { get { return _Secret; } set { if (OnPropertyChanging(__.Secret, value)) { _Secret = value; OnPropertyChanged(__.Secret); } } }
|
||||
|
||||
private String _Category;
|
||||
/// <summary>类别</summary>
|
||||
[DisplayName("类别")]
|
||||
[Description("类别")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("Category", "类别", "")]
|
||||
public String Category { get { return _Category; } set { if (OnPropertyChanging(__.Category, value)) { _Category = value; OnPropertyChanged(__.Category); } } }
|
||||
|
||||
private String _Version;
|
||||
/// <summary>版本</summary>
|
||||
[DisplayName("版本")]
|
||||
[Description("版本")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("Version", "版本", "")]
|
||||
public String Version { get { return _Version; } set { if (OnPropertyChanging(__.Version, value)) { _Version = value; OnPropertyChanged(__.Version); } } }
|
||||
|
||||
private Boolean _Enable;
|
||||
/// <summary>启用</summary>
|
||||
[DisplayName("启用")]
|
||||
[Description("启用")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("Enable", "启用", "")]
|
||||
public Boolean Enable { get { return _Enable; } set { if (OnPropertyChanging(__.Enable, value)) { _Enable = value; OnPropertyChanged(__.Enable); } } }
|
||||
|
||||
private Int32 _JobCount;
|
||||
/// <summary>作业数</summary>
|
||||
[DisplayName("作业数")]
|
||||
[Description("作业数")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("JobCount", "作业数", "")]
|
||||
public Int32 JobCount { get { return _JobCount; } set { if (OnPropertyChanging(__.JobCount, value)) { _JobCount = value; OnPropertyChanged(__.JobCount); } } }
|
||||
|
||||
private Int32 _MessageCount;
|
||||
/// <summary>消息数</summary>
|
||||
[DisplayName("消息数")]
|
||||
[Description("消息数")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("MessageCount", "消息数", "")]
|
||||
public Int32 MessageCount { get { return _MessageCount; } set { if (OnPropertyChanging(__.MessageCount, value)) { _MessageCount = value; OnPropertyChanged(__.MessageCount); } } }
|
||||
|
||||
private String _Remark;
|
||||
/// <summary>内容</summary>
|
||||
[DisplayName("内容")]
|
||||
[Description("内容")]
|
||||
[DataObjectField(false, false, true, 500)]
|
||||
[BindColumn("Remark", "内容", "")]
|
||||
public String Remark { get { return _Remark; } set { if (OnPropertyChanging(__.Remark, value)) { _Remark = value; OnPropertyChanged(__.Remark); } } }
|
||||
|
||||
private Int32 _CreateUserID;
|
||||
/// <summary>创建者</summary>
|
||||
[DisplayName("创建者")]
|
||||
[Description("创建者")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("CreateUserID", "创建者", "")]
|
||||
public Int32 CreateUserID { get { return _CreateUserID; } set { if (OnPropertyChanging(__.CreateUserID, value)) { _CreateUserID = value; OnPropertyChanged(__.CreateUserID); } } }
|
||||
|
||||
private String _CreateUser;
|
||||
/// <summary>创建者</summary>
|
||||
[DisplayName("创建者")]
|
||||
[Description("创建者")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("CreateUser", "创建者", "")]
|
||||
public String CreateUser { get { return _CreateUser; } set { if (OnPropertyChanging(__.CreateUser, value)) { _CreateUser = value; OnPropertyChanged(__.CreateUser); } } }
|
||||
|
||||
private DateTime _CreateTime;
|
||||
/// <summary>创建时间</summary>
|
||||
[DisplayName("创建时间")]
|
||||
[Description("创建时间")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("CreateTime", "创建时间", "")]
|
||||
public DateTime CreateTime { get { return _CreateTime; } set { if (OnPropertyChanging(__.CreateTime, value)) { _CreateTime = value; OnPropertyChanged(__.CreateTime); } } }
|
||||
|
||||
private String _CreateIP;
|
||||
/// <summary>创建地址</summary>
|
||||
[DisplayName("创建地址")]
|
||||
[Description("创建地址")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("CreateIP", "创建地址", "")]
|
||||
public String CreateIP { get { return _CreateIP; } set { if (OnPropertyChanging(__.CreateIP, value)) { _CreateIP = value; OnPropertyChanged(__.CreateIP); } } }
|
||||
|
||||
private Int32 _UpdateUserID;
|
||||
/// <summary>更新者</summary>
|
||||
[DisplayName("更新者")]
|
||||
[Description("更新者")]
|
||||
[DataObjectField(false, false, false, 0)]
|
||||
[BindColumn("UpdateUserID", "更新者", "")]
|
||||
public Int32 UpdateUserID { get { return _UpdateUserID; } set { if (OnPropertyChanging(__.UpdateUserID, value)) { _UpdateUserID = value; OnPropertyChanged(__.UpdateUserID); } } }
|
||||
|
||||
private String _UpdateUser;
|
||||
/// <summary>更新者</summary>
|
||||
[DisplayName("更新者")]
|
||||
[Description("更新者")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("UpdateUser", "更新者", "")]
|
||||
public String UpdateUser { get { return _UpdateUser; } set { if (OnPropertyChanging(__.UpdateUser, value)) { _UpdateUser = value; OnPropertyChanged(__.UpdateUser); } } }
|
||||
|
||||
private DateTime _UpdateTime;
|
||||
/// <summary>更新时间</summary>
|
||||
[DisplayName("更新时间")]
|
||||
[Description("更新时间")]
|
||||
[DataObjectField(false, false, true, 0)]
|
||||
[BindColumn("UpdateTime", "更新时间", "")]
|
||||
public DateTime UpdateTime { get { return _UpdateTime; } set { if (OnPropertyChanging(__.UpdateTime, value)) { _UpdateTime = value; OnPropertyChanged(__.UpdateTime); } } }
|
||||
|
||||
private String _UpdateIP;
|
||||
/// <summary>更新地址</summary>
|
||||
[DisplayName("更新地址")]
|
||||
[Description("更新地址")]
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
[BindColumn("UpdateIP", "更新地址", "")]
|
||||
public String UpdateIP { get { return _UpdateIP; } set { if (OnPropertyChanging(__.UpdateIP, value)) { _UpdateIP = value; OnPropertyChanged(__.UpdateIP); } } }
|
||||
#endregion
|
||||
|
||||
#region 获取/设置 字段值
|
||||
/// <summary>获取/设置 字段值</summary>
|
||||
/// <param name="name">字段名</param>
|
||||
/// <returns></returns>
|
||||
public override Object this[String name]
|
||||
{
|
||||
get
|
||||
{
|
||||
switch (name)
|
||||
{
|
||||
case __.ID : return _ID;
|
||||
case __.Name : return _Name;
|
||||
case __.DisplayName : return _DisplayName;
|
||||
case __.Secret : return _Secret;
|
||||
case __.Category : return _Category;
|
||||
case __.Version : return _Version;
|
||||
case __.Enable : return _Enable;
|
||||
case __.JobCount : return _JobCount;
|
||||
case __.MessageCount : return _MessageCount;
|
||||
case __.Remark : return _Remark;
|
||||
case __.CreateUserID : return _CreateUserID;
|
||||
case __.CreateUser : return _CreateUser;
|
||||
case __.CreateTime : return _CreateTime;
|
||||
case __.CreateIP : return _CreateIP;
|
||||
case __.UpdateUserID : return _UpdateUserID;
|
||||
case __.UpdateUser : return _UpdateUser;
|
||||
case __.UpdateTime : return _UpdateTime;
|
||||
case __.UpdateIP : return _UpdateIP;
|
||||
default: return base[name];
|
||||
}
|
||||
}
|
||||
set
|
||||
{
|
||||
switch (name)
|
||||
{
|
||||
case __.ID : _ID = value.ToInt(); break;
|
||||
case __.Name : _Name = Convert.ToString(value); break;
|
||||
case __.DisplayName : _DisplayName = Convert.ToString(value); break;
|
||||
case __.Secret : _Secret = Convert.ToString(value); break;
|
||||
case __.Category : _Category = Convert.ToString(value); break;
|
||||
case __.Version : _Version = Convert.ToString(value); break;
|
||||
case __.Enable : _Enable = value.ToBoolean(); break;
|
||||
case __.JobCount : _JobCount = value.ToInt(); break;
|
||||
case __.MessageCount : _MessageCount = value.ToInt(); break;
|
||||
case __.Remark : _Remark = Convert.ToString(value); break;
|
||||
case __.CreateUserID : _CreateUserID = value.ToInt(); break;
|
||||
case __.CreateUser : _CreateUser = Convert.ToString(value); break;
|
||||
case __.CreateTime : _CreateTime = value.ToDateTime(); break;
|
||||
case __.CreateIP : _CreateIP = Convert.ToString(value); break;
|
||||
case __.UpdateUserID : _UpdateUserID = value.ToInt(); break;
|
||||
case __.UpdateUser : _UpdateUser = Convert.ToString(value); break;
|
||||
case __.UpdateTime : _UpdateTime = value.ToDateTime(); break;
|
||||
case __.UpdateIP : _UpdateIP = Convert.ToString(value); break;
|
||||
default: base[name] = value; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 字段名
|
||||
/// <summary>取得应用系统字段信息的快捷方式</summary>
|
||||
public partial class _
|
||||
{
|
||||
/// <summary>编号</summary>
|
||||
public static readonly Field ID = FindByName(__.ID);
|
||||
|
||||
/// <summary>名称</summary>
|
||||
public static readonly Field Name = FindByName(__.Name);
|
||||
|
||||
/// <summary>显示名</summary>
|
||||
public static readonly Field DisplayName = FindByName(__.DisplayName);
|
||||
|
||||
/// <summary>密钥</summary>
|
||||
public static readonly Field Secret = FindByName(__.Secret);
|
||||
|
||||
/// <summary>类别</summary>
|
||||
public static readonly Field Category = FindByName(__.Category);
|
||||
|
||||
/// <summary>版本</summary>
|
||||
public static readonly Field Version = FindByName(__.Version);
|
||||
|
||||
/// <summary>启用</summary>
|
||||
public static readonly Field Enable = FindByName(__.Enable);
|
||||
|
||||
/// <summary>作业数</summary>
|
||||
public static readonly Field JobCount = FindByName(__.JobCount);
|
||||
|
||||
/// <summary>消息数</summary>
|
||||
public static readonly Field MessageCount = FindByName(__.MessageCount);
|
||||
|
||||
/// <summary>内容</summary>
|
||||
public static readonly Field Remark = FindByName(__.Remark);
|
||||
|
||||
/// <summary>创建者</summary>
|
||||
public static readonly Field CreateUserID = FindByName(__.CreateUserID);
|
||||
|
||||
/// <summary>创建者</summary>
|
||||
public static readonly Field CreateUser = FindByName(__.CreateUser);
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
public static readonly Field CreateTime = FindByName(__.CreateTime);
|
||||
|
||||
/// <summary>创建地址</summary>
|
||||
public static readonly Field CreateIP = FindByName(__.CreateIP);
|
||||
|
||||
/// <summary>更新者</summary>
|
||||
public static readonly Field UpdateUserID = FindByName(__.UpdateUserID);
|
||||
|
||||
/// <summary>更新者</summary>
|
||||
public static readonly Field UpdateUser = FindByName(__.UpdateUser);
|
||||
|
||||
/// <summary>更新时间</summary>
|
||||
public static readonly Field UpdateTime = FindByName(__.UpdateTime);
|
||||
|
||||
/// <summary>更新地址</summary>
|
||||
public static readonly Field UpdateIP = FindByName(__.UpdateIP);
|
||||
|
||||
static Field FindByName(String name) { return Meta.Table.FindByName(name); }
|
||||
}
|
||||
|
||||
/// <summary>取得应用系统字段名称的快捷方式</summary>
|
||||
public partial class __
|
||||
{
|
||||
/// <summary>编号</summary>
|
||||
public const String ID = "ID";
|
||||
|
||||
/// <summary>名称</summary>
|
||||
public const String Name = "Name";
|
||||
|
||||
/// <summary>显示名</summary>
|
||||
public const String DisplayName = "DisplayName";
|
||||
|
||||
/// <summary>密钥</summary>
|
||||
public const String Secret = "Secret";
|
||||
|
||||
/// <summary>类别</summary>
|
||||
public const String Category = "Category";
|
||||
|
||||
/// <summary>版本</summary>
|
||||
public const String Version = "Version";
|
||||
|
||||
/// <summary>启用</summary>
|
||||
public const String Enable = "Enable";
|
||||
|
||||
/// <summary>作业数</summary>
|
||||
public const String JobCount = "JobCount";
|
||||
|
||||
/// <summary>消息数</summary>
|
||||
public const String MessageCount = "MessageCount";
|
||||
|
||||
/// <summary>内容</summary>
|
||||
public const String Remark = "Remark";
|
||||
|
||||
/// <summary>创建者</summary>
|
||||
public const String CreateUserID = "CreateUserID";
|
||||
|
||||
/// <summary>创建者</summary>
|
||||
public const String CreateUser = "CreateUser";
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
public const String CreateTime = "CreateTime";
|
||||
|
||||
/// <summary>创建地址</summary>
|
||||
public const String CreateIP = "CreateIP";
|
||||
|
||||
/// <summary>更新者</summary>
|
||||
public const String UpdateUserID = "UpdateUserID";
|
||||
|
||||
/// <summary>更新者</summary>
|
||||
public const String UpdateUser = "UpdateUser";
|
||||
|
||||
/// <summary>更新时间</summary>
|
||||
public const String UpdateTime = "UpdateTime";
|
||||
|
||||
/// <summary>更新地址</summary>
|
||||
public const String UpdateIP = "UpdateIP";
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>应用系统。数据作业隶属于某个应用接口</summary>
|
||||
public partial interface IApp
|
||||
{
|
||||
#region 属性
|
||||
/// <summary>编号</summary>
|
||||
Int32 ID { get; set; }
|
||||
|
||||
/// <summary>名称</summary>
|
||||
String Name { get; set; }
|
||||
|
||||
/// <summary>显示名</summary>
|
||||
String DisplayName { get; set; }
|
||||
|
||||
/// <summary>密钥</summary>
|
||||
String Secret { get; set; }
|
||||
|
||||
/// <summary>类别</summary>
|
||||
String Category { get; set; }
|
||||
|
||||
/// <summary>版本</summary>
|
||||
String Version { get; set; }
|
||||
|
||||
/// <summary>启用</summary>
|
||||
Boolean Enable { get; set; }
|
||||
|
||||
/// <summary>作业数</summary>
|
||||
Int32 JobCount { get; set; }
|
||||
|
||||
/// <summary>消息数</summary>
|
||||
Int32 MessageCount { get; set; }
|
||||
|
||||
/// <summary>内容</summary>
|
||||
String Remark { get; set; }
|
||||
|
||||
/// <summary>创建者</summary>
|
||||
Int32 CreateUserID { get; set; }
|
||||
|
||||
/// <summary>创建者</summary>
|
||||
String CreateUser { get; set; }
|
||||
|
||||
/// <summary>创建时间</summary>
|
||||
DateTime CreateTime { get; set; }
|
||||
|
||||
/// <summary>创建地址</summary>
|
||||
String CreateIP { get; set; }
|
||||
|
||||
/// <summary>更新者</summary>
|
||||
Int32 UpdateUserID { get; set; }
|
||||
|
||||
/// <summary>更新者</summary>
|
||||
String UpdateUser { get; set; }
|
||||
|
||||
/// <summary>更新时间</summary>
|
||||
DateTime UpdateTime { get; set; }
|
||||
|
||||
/// <summary>更新地址</summary>
|
||||
String UpdateIP { get; set; }
|
||||
#endregion
|
||||
|
||||
#region 获取/设置 字段值
|
||||
/// <summary>获取/设置 字段值</summary>
|
||||
/// <param name="name">字段名</param>
|
||||
/// <returns></returns>
|
||||
Object this[String name] { get; set; }
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
namespace AntJob.Data
|
||||
{
|
||||
/// <summary>作业状态</summary>
|
||||
public enum JobStatus
|
||||
{
|
||||
/// <summary>就绪</summary>
|
||||
就绪 = 0,
|
||||
|
||||
/// <summary>抽取中</summary>
|
||||
抽取中 = 1,
|
||||
|
||||
/// <summary>处理中</summary>
|
||||
处理中 = 2,
|
||||
|
||||
/// <summary>错误</summary>
|
||||
错误 = 3,
|
||||
|
||||
/// <summary>已完成</summary>
|
||||
完成 = 4,
|
||||
|
||||
/// <summary>已取消</summary>
|
||||
取消 = 5,
|
||||
}
|
||||
}
|
|
@ -0,0 +1,182 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Tables Version="9.11.7018.41220" Output="Entity" NameSpace="AntJob.Data.Entity" ConnName="Ant" BaseClass="EntityBase">
|
||||
<Table Name="App" Description="应用系统。数据作业隶属于某个应用">
|
||||
<Columns>
|
||||
<Column Name="ID" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
|
||||
<Column Name="Name" DataType="String" Master="True" Nullable="False" Description="名称" />
|
||||
<Column Name="DisplayName" DataType="String" Description="显示名" />
|
||||
<Column Name="Secret" DataType="String" Description="密钥" />
|
||||
<Column Name="Category" DataType="String" Description="类别" />
|
||||
<Column Name="Version" DataType="String" Description="版本" />
|
||||
<Column Name="Enable" DataType="Boolean" Description="启用" />
|
||||
<Column Name="JobCount" DataType="Int32" Description="作业数" />
|
||||
<Column Name="MessageCount" DataType="Int32" Description="消息数" />
|
||||
<Column Name="Remark" DataType="String" Length="500" Description="内容" />
|
||||
<Column Name="CreateUserID" DataType="Int32" Description="创建者" />
|
||||
<Column Name="CreateUser" DataType="String" Description="创建者" />
|
||||
<Column Name="CreateTime" DataType="DateTime" Description="创建时间" />
|
||||
<Column Name="CreateIP" DataType="String" Description="创建地址" />
|
||||
<Column Name="UpdateUserID" DataType="Int32" Description="更新者" />
|
||||
<Column Name="UpdateUser" DataType="String" Description="更新者" />
|
||||
<Column Name="UpdateTime" DataType="DateTime" Description="更新时间" />
|
||||
<Column Name="UpdateIP" DataType="String" Description="更新地址" />
|
||||
</Columns>
|
||||
<Indexes>
|
||||
<Index Columns="Name" Unique="True" />
|
||||
</Indexes>
|
||||
</Table>
|
||||
<Table Name="AppOnline" Description="应用在线。各应用多实例在线">
|
||||
<Columns>
|
||||
<Column Name="ID" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
|
||||
<Column Name="AppID" DataType="Int32" Description="应用" />
|
||||
<Column Name="Instance" DataType="String" Description="实例。IP加端口" />
|
||||
<Column Name="Client" DataType="String" Description="客户端。IP加进程" />
|
||||
<Column Name="Name" DataType="String" Master="True" Description="名称。机器名称" />
|
||||
<Column Name="Version" DataType="String" Description="版本。客户端" />
|
||||
<Column Name="Server" DataType="String" Description="服务端。客户端登录到哪个服务端,IP加端口" />
|
||||
<Column Name="Logs" DataType="Int32" Description="任务数" />
|
||||
<Column Name="Total" DataType="Int64" Description="总数" />
|
||||
<Column Name="Success" DataType="Int64" Description="成功" />
|
||||
<Column Name="Error" DataType="Int64" Description="错误" />
|
||||
<Column Name="Cost" DataType="Int64" Description="耗时。总耗时,秒" />
|
||||
<Column Name="Speed" DataType="Int64" Description="速度。每秒处理数" />
|
||||
<Column Name="LastKey" DataType="String" Description="最后键" />
|
||||
<Column Name="CreateTime" DataType="DateTime" Description="创建时间" />
|
||||
<Column Name="CreateIP" DataType="String" Description="创建地址" />
|
||||
<Column Name="UpdateTime" DataType="DateTime" Description="更新时间" />
|
||||
<Column Name="UpdateIP" DataType="String" Description="更新地址" />
|
||||
</Columns>
|
||||
<Indexes>
|
||||
<Index Columns="Instance" Unique="True" />
|
||||
<Index Columns="Client" />
|
||||
<Index Columns="AppID" />
|
||||
</Indexes>
|
||||
</Table>
|
||||
<Table Name="Job" Description="作业">
|
||||
<Columns>
|
||||
<Column Name="ID" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
|
||||
<Column Name="AppID" DataType="Int32" Description="应用" />
|
||||
<Column Name="Name" DataType="String" Master="True" Description="名称" />
|
||||
<Column Name="DisplayName" DataType="String" Description="显示名" />
|
||||
<Column Name="Mode" DataType="Int32" Description="调度模式" Type="JobModes" />
|
||||
<Column Name="Topic" DataType="String" Description="主题。消息调度时消费的主题" />
|
||||
<Column Name="MessageCount" DataType="Int32" Description="消息数" />
|
||||
<Column Name="Start" DataType="DateTime" Description="开始。大于等于" />
|
||||
<Column Name="End" DataType="DateTime" Description="结束。小于,不等于" />
|
||||
<Column Name="Step" DataType="Int32" Description="步进。最大区间大小,秒" />
|
||||
<Column Name="MinStep" DataType="Int32" Description="最小步进。默认5秒" />
|
||||
<Column Name="MaxStep" DataType="Int32" Description="最大步进。默认3600秒" />
|
||||
<Column Name="StepRate" DataType="Int32" Description="步进率。动态调节步进时,不能超过该比率,百分位,默认100%" />
|
||||
<Column Name="BatchSize" DataType="Int32" Description="批大小" />
|
||||
<Column Name="Offset" DataType="Int32" Description="偏移。距离实时时间的秒数,部分业务不能跑到实时,秒" />
|
||||
<Column Name="MaxTask" DataType="Int32" Description="并行。多任务并行处理" />
|
||||
<Column Name="MaxError" DataType="Int32" Description="最大错误。连续错误达到最大错误数时停止" />
|
||||
<Column Name="MaxRetry" DataType="Int32" Description="最大重试。默认10次,超过该次数后将不再重试" />
|
||||
<Column Name="MaxTime" DataType="Int32" Description="最大执行时间。默认600秒,超过该时间则认为执行器故障,将会把该任务分配给其它执行器" />
|
||||
<Column Name="MaxRetain" DataType="Int32" Description="保留。任务项保留天数,超过天数的任务项将被删除,默认3天" />
|
||||
<Column Name="MaxIdle" DataType="Int32" Description="最大空闲时间。默认3600秒,超过该时间不更新则认为应用程序故障,系统触发告警" />
|
||||
<Column Name="ErrorDelay" DataType="Int32" Description="错误延迟。默认60秒,出错延迟后重新发放" />
|
||||
<Column Name="Total" DataType="Int64" Description="总数" />
|
||||
<Column Name="Success" DataType="Int64" Description="成功" />
|
||||
<Column Name="Error" DataType="Int32" Description="错误" />
|
||||
<Column Name="Times" DataType="Int32" Description="次数" />
|
||||
<Column Name="Speed" DataType="Int32" Description="速度" />
|
||||
<Column Name="FetchSpeed" DataType="Int32" Description="抽取速度" />
|
||||
<Column Name="Enable" DataType="Boolean" Description="启用" />
|
||||
<Column Name="Description" ColumnName="Message" DataType="String" Length="2000" Description="内容" />
|
||||
<Column Name="CreateUserID" DataType="Int32" Description="创建者" />
|
||||
<Column Name="CreateUser" DataType="String" Description="创建者" />
|
||||
<Column Name="CreateTime" DataType="DateTime" Description="创建时间" />
|
||||
<Column Name="CreateIP" DataType="String" Description="创建地址" />
|
||||
<Column Name="UpdateUserID" DataType="Int32" Description="更新者" />
|
||||
<Column Name="UpdateUser" DataType="String" Description="更新者" />
|
||||
<Column Name="UpdateTime" DataType="DateTime" Description="更新时间" />
|
||||
<Column Name="UpdateIP" DataType="String" Description="更新地址" />
|
||||
</Columns>
|
||||
<Indexes>
|
||||
<Index Columns="AppID,Name" Unique="True" />
|
||||
</Indexes>
|
||||
</Table>
|
||||
<Table Name="JobLog" Description="作业日志">
|
||||
<Columns>
|
||||
<Column Name="ID" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
|
||||
<Column Name="AppID" DataType="Int32" Description="应用" />
|
||||
<Column Name="JobID" DataType="Int32" Description="作业" />
|
||||
<Column Name="LinkID" DataType="Int32" Description="关联任务。消息作业关联的生产任务" />
|
||||
<Column Name="Client" DataType="String" Description="客户端。IP加进程" />
|
||||
<Column Name="Start" DataType="DateTime" Description="开始。大于等于" />
|
||||
<Column Name="End" DataType="DateTime" Description="结束。小于,不等于" />
|
||||
<Column Name="Row" DataType="Int32" Description="行。分页起始行" />
|
||||
<Column Name="Step" DataType="Int32" Description="步进。最大区间大小,秒" />
|
||||
<Column Name="BatchSize" DataType="Int32" Description="批大小" />
|
||||
<Column Name="Offset" DataType="Int32" Description="偏移。距离实时时间的秒数,部分业务不能跑到实时,秒" />
|
||||
<Column Name="Total" DataType="Int32" Description="总数" />
|
||||
<Column Name="Success" DataType="Int32" Description="成功" />
|
||||
<Column Name="Error" DataType="Int32" Description="错误" />
|
||||
<Column Name="Times" DataType="Int32" Description="次数" />
|
||||
<Column Name="Speed" DataType="Int32" Description="速度" />
|
||||
<Column Name="FetchSpeed" DataType="Int32" Description="抽取速度" />
|
||||
<Column Name="Cost" DataType="Int32" Description="耗时。秒" />
|
||||
<Column Name="FullCost" DataType="Int32" Description="全部耗时。秒,从任务发放到执行完成的时间" />
|
||||
<Column Name="Status" DataType="Int32" Description="状态" Type="JobStatus" />
|
||||
<Column Name="MsgCount" DataType="Int32" Description="消费消息数" />
|
||||
<Column Name="Server" DataType="String" Description="服务器" />
|
||||
<Column Name="ProcessID" DataType="Int32" Description="进程" />
|
||||
<Column Name="ThreadID" DataType="Int32" Description="线程" />
|
||||
<Column Name="Key" DataType="String" Description="最后键" />
|
||||
<Column Name="Data" DataType="String" Length="8000" Description="数据。可以是Json数据,比如StatID" />
|
||||
<Column Name="Message" DataType="String" Length="2000" Description="备注" />
|
||||
<Column Name="CreateTime" DataType="DateTime" Description="创建时间" />
|
||||
<Column Name="UpdateTime" DataType="DateTime" Description="更新时间" />
|
||||
</Columns>
|
||||
<Indexes>
|
||||
<Index Columns="JobID,Status,Start" />
|
||||
<Index Columns="AppID,Client,Status" />
|
||||
<Index Columns="JobID,CreateTime" />
|
||||
</Indexes>
|
||||
</Table>
|
||||
<Table Name="JobError" Description="作业错误">
|
||||
<Columns>
|
||||
<Column Name="ID" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
|
||||
<Column Name="AppID" DataType="Int32" Description="应用" />
|
||||
<Column Name="JobID" DataType="Int32" Description="作业" />
|
||||
<Column Name="JobLogID" DataType="Int32" Description="作业项" />
|
||||
<Column Name="Client" DataType="String" Description="客户端。IP加进程" />
|
||||
<Column Name="Start" DataType="DateTime" Description="开始。大于等于" />
|
||||
<Column Name="End" DataType="DateTime" Description="结束。小于,不等于" />
|
||||
<Column Name="Row" DataType="Int32" Description="行。分页起始行" />
|
||||
<Column Name="Step" DataType="Int32" Description="步进。最大区间大小,秒" />
|
||||
<Column Name="BatchSize" DataType="Int32" Description="批大小" />
|
||||
<Column Name="Key" DataType="String" Description="数据键" />
|
||||
<Column Name="Data" DataType="String" Length="2000" Description="数据" />
|
||||
<Column Name="Server" DataType="String" Description="服务器" />
|
||||
<Column Name="ProcessID" DataType="Int32" Description="进程" />
|
||||
<Column Name="ThreadID" DataType="Int32" Description="线程" />
|
||||
<Column Name="ErrorCode" DataType="String" Description="错误码" />
|
||||
<Column Name="Message" DataType="String" Length="2000" Description="内容" />
|
||||
<Column Name="CreateTime" DataType="DateTime" Description="创建时间" />
|
||||
<Column Name="UpdateTime" DataType="DateTime" Description="更新时间" />
|
||||
</Columns>
|
||||
<Indexes>
|
||||
<Index Columns="AppID,ID" />
|
||||
<Index Columns="JobID,ID" />
|
||||
<Index Columns="Key" />
|
||||
<Index Columns="ErrorCode" />
|
||||
</Indexes>
|
||||
</Table>
|
||||
<Table Name="AppMessage" Description="应用消息。消息调度,某些作业负责生产消息,供其它作业进行消费处理">
|
||||
<Columns>
|
||||
<Column Name="ID" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
|
||||
<Column Name="AppID" DataType="Int32" Description="应用" />
|
||||
<Column Name="JobID" DataType="Int32" Description="作业。生产消息的作业" />
|
||||
<Column Name="Topic" DataType="String" Description="主题。区分作业下多种消息" />
|
||||
<Column Name="Data" DataType="String" Length="2000" Description="数据。可以是Json数据,比如StatID" />
|
||||
<Column Name="CreateTime" DataType="DateTime" Description="创建时间" />
|
||||
<Column Name="UpdateTime" DataType="DateTime" Description="更新时间" />
|
||||
</Columns>
|
||||
<Indexes>
|
||||
<Index Columns="AppID,Topic,UpdateTime" />
|
||||
<Index Columns="UpdateTime" />
|
||||
</Indexes>
|
||||
</Table>
|
||||
</Tables>
|
Loading…
Reference in New Issue