增强数据时间Time的概念,替代旧版的Start

This commit is contained in:
智能大石头 2024-04-22 22:49:44 +08:00
parent fd3ec697fb
commit 1b1797b054
26 changed files with 100 additions and 127 deletions

View File

@ -900,7 +900,7 @@
<tr>
<td>Start</td>
<td>开始</td>
<td>数据时间</td>
<td>DateTime</td>
<td></td>
<td></td>
@ -1302,7 +1302,7 @@
<tr>
<td>Start</td>
<td>开始</td>
<td>数据时间</td>
<td>DateTime</td>
<td></td>
<td></td>
@ -1616,7 +1616,7 @@
<tr>
<td>Start</td>
<td>开始</td>
<td>数据时间</td>
<td>DateTime</td>
<td></td>
<td></td>

View File

@ -212,7 +212,7 @@ public partial class Job : EntityBase<Job>
{
case JobModes.Data:
case JobModes.Time:
return Start.Year > 2000 && Step > 0;
return Time.Year > 2000 && Step > 0;
case JobModes.Message:
return Topic.IsNullOrEmpty();
default:
@ -230,14 +230,14 @@ public partial class Job : EntityBase<Job>
{
if (days < 0)
{
Start = DateTime.MinValue;
Time = DateTime.MinValue;
if (stime > DateTime.MinValue)
Start = stime;
Time = stime;
End = etime;
}
else
Start = DateTime.Now.Date.AddDays(-days);
Time = DateTime.Now.Date.AddDays(-days);
Save();
}
@ -276,7 +276,7 @@ public partial class Job : EntityBase<Job>
{
// 如果禁用,仅返回最简单的字段
// 缺少开始时间赋值会导致客户端启动校验失败Job没有启用的状态下服务器报错无法正常启动
if (!Enable) return new JobModel { Name = Name, Enable = Enable, Start = Start };
if (!Enable) return new JobModel { Name = Name, Enable = Enable, Time = Time };
return new JobModel
{
@ -284,7 +284,7 @@ public partial class Job : EntityBase<Job>
ClassName = ClassName,
Enable = Enable,
Start = Start,
Time = Time,
End = End,
Cron = Cron,
Topic = Topic,

View File

@ -94,13 +94,13 @@ public partial class Job
[BindColumn("MessageCount", "消息数", "")]
public Int32 MessageCount { get => _MessageCount; set { if (OnPropertyChanging("MessageCount", value)) { _MessageCount = value; OnPropertyChanged("MessageCount"); } } }
private DateTime _Start;
/// <summary>开始。从该时间开始调度作业任务,默认不设置时从当前时间开始</summary>
[DisplayName("开始")]
[Description("开始。从该时间开始调度作业任务,默认不设置时从当前时间开始")]
private DateTime _Time;
/// <summary>数据时间。从该时间开始调度作业任务,默认不设置时从当前时间开始</summary>
[DisplayName("数据时间")]
[Description("数据时间。从该时间开始调度作业任务,默认不设置时从当前时间开始")]
[DataObjectField(false, false, true, 0)]
[BindColumn("Start", "开始。从该时间开始调度作业任务,默认不设置时从当前时间开始", "")]
public DateTime Start { get => _Start; set { if (OnPropertyChanging("Start", value)) { _Start = value; OnPropertyChanged("Start"); } } }
[BindColumn("Start", "数据时间。从该时间开始调度作业任务,默认不设置时从当前时间开始", "")]
public DateTime Time { get => _Time; set { if (OnPropertyChanging("Time", value)) { _Time = value; OnPropertyChanged("Time"); } } }
private DateTime _End;
/// <summary>结束。到该时间停止调度作业,默认不设置时永不停止</summary>
@ -369,7 +369,7 @@ public partial class Job
"Cron" => _Cron,
"Topic" => _Topic,
"MessageCount" => _MessageCount,
"Start" => _Start,
"Time" => _Time,
"End" => _End,
"Step" => _Step,
"BatchSize" => _BatchSize,
@ -415,7 +415,7 @@ public partial class Job
case "Cron": _Cron = Convert.ToString(value); break;
case "Topic": _Topic = Convert.ToString(value); break;
case "MessageCount": _MessageCount = value.ToInt(); break;
case "Start": _Start = value.ToDateTime(); break;
case "Time": _Time = value.ToDateTime(); break;
case "End": _End = value.ToDateTime(); break;
case "Step": _Step = value.ToInt(); break;
case "BatchSize": _BatchSize = value.ToInt(); break;
@ -494,8 +494,8 @@ public partial class Job
/// <summary>消息数</summary>
public static readonly Field MessageCount = FindByName("MessageCount");
/// <summary>开始。从该时间开始调度作业任务,默认不设置时从当前时间开始</summary>
public static readonly Field Start = FindByName("Start");
/// <summary>数据时间。从该时间开始调度作业任务,默认不设置时从当前时间开始</summary>
public static readonly Field Time = FindByName("Time");
/// <summary>结束。到该时间停止调度作业,默认不设置时永不停止</summary>
public static readonly Field End = FindByName("End");
@ -620,8 +620,8 @@ public partial class Job
/// <summary>消息数</summary>
public const String MessageCount = "MessageCount";
/// <summary>开始。从该时间开始调度作业任务,默认不设置时从当前时间开始</summary>
public const String Start = "Start";
/// <summary>数据时间。从该时间开始调度作业任务,默认不设置时从当前时间开始</summary>
public const String Time = "Time";
/// <summary>结束。到该时间停止调度作业,默认不设置时永不停止</summary>
public const String End = "End";

View File

@ -92,19 +92,6 @@ public partial class JobTask : EntityBase<JobTask>
return FindAll(_.JobID == jobid & _.CreateTime < createTime, _.CreateTime.Desc(), null, 0, 1).FirstOrDefault();
}
/// <summary>根据作业、状态、开始查找</summary>
/// <param name="jobId">作业</param>
/// <param name="status">状态</param>
/// <param name="start">开始</param>
/// <returns>实体列表</returns>
public static IList<JobTask> FindAllByJobIDAndStatusAndStart(Int32 jobId, JobStatus status, DateTime start)
{
// 实体缓存
if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.JobID == jobId && e.Status == status && e.Start == start);
return FindAll(_.JobID == jobId & _.Status == status & _.Start == start);
}
/// <summary>根据应用、客户端、状态查找</summary>
/// <param name="appId">应用</param>
/// <param name="client">客户端</param>
@ -117,6 +104,19 @@ public partial class JobTask : EntityBase<JobTask>
return FindAll(_.AppID == appId & _.Client == client & _.Status == status);
}
/// <summary>根据作业、状态、数据时间查找</summary>
/// <param name="jobId">作业</param>
/// <param name="status">状态</param>
/// <param name="time">数据时间</param>
/// <returns>实体列表</returns>
public static IList<JobTask> FindAllByJobIDAndStatusAndTime(Int32 jobId, JobStatus status, DateTime time)
{
// 实体缓存
if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.JobID == jobId && e.Status == status && e.Time == time);
return FindAll(_.JobID == jobId & _.Status == status & _.Time == time);
}
#endregion
#region
@ -141,7 +141,7 @@ public partial class JobTask : EntityBase<JobTask>
if (status >= JobStatus.) exp &= _.Status == status;
if (!client.IsNullOrEmpty()) exp &= _.Client == client;
if (!key.IsNullOrEmpty()) exp &= _.Data.Contains(key) | _.Message.Contains(key) | _.Key == key;
exp &= _.Start.Between(start, end);
exp &= _.Time.Between(start, end);
return FindAll(exp, p);
}
@ -199,8 +199,7 @@ public partial class JobTask : EntityBase<JobTask>
{
ID = ID,
Time = Start,
Start = Start,
Time = Time,
End = End,
//Offset = Offset,
//Step = Step,

View File

@ -56,13 +56,13 @@ public partial class JobTask
[BindColumn("Client", "客户端。IP加进程", "")]
public String Client { get => _Client; set { if (OnPropertyChanging("Client", value)) { _Client = value; OnPropertyChanged("Client"); } } }
private DateTime _Start;
/// <summary>开始。大于等于,定时调度到达该时间点后触发(可能有偏移量),消息调度不适用</summary>
[DisplayName("开始")]
[Description("开始。大于等于,定时调度到达该时间点后触发(可能有偏移量),消息调度不适用")]
private DateTime _Time;
/// <summary>数据时间。大于等于,定时调度到达该时间点后触发(可能有偏移量),消息调度不适用</summary>
[DisplayName("数据时间")]
[Description("数据时间。大于等于,定时调度到达该时间点后触发(可能有偏移量),消息调度不适用")]
[DataObjectField(false, false, true, 0)]
[BindColumn("Start", "开始。大于等于,定时调度到达该时间点后触发(可能有偏移量),消息调度不适用", "", Master = true)]
public DateTime Start { get => _Start; set { if (OnPropertyChanging("Start", value)) { _Start = value; OnPropertyChanged("Start"); } } }
[BindColumn("Start", "数据时间。大于等于,定时调度到达该时间点后触发(可能有偏移量),消息调度不适用", "", Master = true)]
public DateTime Time { get => _Time; set { if (OnPropertyChanging("Time", value)) { _Time = value; OnPropertyChanged("Time"); } } }
private DateTime _End;
/// <summary>结束。小于不等于,数据调度到达该时间点后触发(可能有偏移量),消息调度不适用</summary>
@ -250,7 +250,7 @@ public partial class JobTask
"AppID" => _AppID,
"JobID" => _JobID,
"Client" => _Client,
"Start" => _Start,
"Time" => _Time,
"End" => _End,
"BatchSize" => _BatchSize,
"Total" => _Total,
@ -282,7 +282,7 @@ public partial class JobTask
case "AppID": _AppID = value.ToInt(); break;
case "JobID": _JobID = value.ToInt(); break;
case "Client": _Client = Convert.ToString(value); break;
case "Start": _Start = value.ToDateTime(); break;
case "Time": _Time = value.ToDateTime(); break;
case "End": _End = value.ToDateTime(); break;
case "BatchSize": _BatchSize = value.ToInt(); break;
case "Total": _Total = value.ToInt(); break;
@ -345,8 +345,8 @@ public partial class JobTask
/// <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 Time = FindByName("Time");
/// <summary>结束。小于不等于,数据调度到达该时间点后触发(可能有偏移量),消息调度不适用</summary>
public static readonly Field End = FindByName("End");
@ -429,8 +429,8 @@ public partial class JobTask
/// <summary>客户端。IP加进程</summary>
public const String Client = "Client";
/// <summary>开始。大于等于,定时调度到达该时间点后触发(可能有偏移量),消息调度不适用</summary>
public const String Start = "Start";
/// <summary>数据时间。大于等于,定时调度到达该时间点后触发(可能有偏移量),消息调度不适用</summary>
public const String Time = "Time";
/// <summary>结束。小于不等于,数据调度到达该时间点后触发(可能有偏移量),消息调度不适用</summary>
public const String End = "End";

View File

@ -116,7 +116,7 @@ public partial class JobError : EntityBase<JobError>
if (jobid > 0) exp &= _.JobID == jobid;
if (!client.IsNullOrEmpty()) exp &= _.Client == client;
if (!key.IsNullOrEmpty()) exp &= _.Message.Contains(key);
exp &= _.Start.Between(start, end);
exp &= _.Time.Between(start, end);
return FindAll(exp, p);
}

View File

@ -63,13 +63,13 @@ public partial class JobError
[BindColumn("Client", "客户端。IP加进程", "")]
public String Client { get => _Client; set { if (OnPropertyChanging("Client", value)) { _Client = value; OnPropertyChanged("Client"); } } }
private DateTime _Start;
/// <summary>开始。大于等于</summary>
[DisplayName("开始")]
[Description("开始。大于等于")]
private DateTime _Time;
/// <summary>数据时间。大于等于</summary>
[DisplayName("数据时间")]
[Description("数据时间。大于等于")]
[DataObjectField(false, false, true, 0)]
[BindColumn("Start", "开始。大于等于", "")]
public DateTime Start { get => _Start; set { if (OnPropertyChanging("Start", value)) { _Start = value; OnPropertyChanged("Start"); } } }
[BindColumn("Start", "数据时间。大于等于", "")]
public DateTime Time { get => _Time; set { if (OnPropertyChanging("Time", value)) { _Time = value; OnPropertyChanged("Time"); } } }
private DateTime _End;
/// <summary>结束。小于,不等于</summary>
@ -170,7 +170,7 @@ public partial class JobError
"JobID" => _JobID,
"TaskID" => _TaskID,
"Client" => _Client,
"Start" => _Start,
"Time" => _Time,
"End" => _End,
"Data" => _Data,
"Server" => _Server,
@ -192,7 +192,7 @@ public partial class JobError
case "JobID": _JobID = value.ToInt(); break;
case "TaskID": _TaskID = value.ToInt(); break;
case "Client": _Client = Convert.ToString(value); break;
case "Start": _Start = value.ToDateTime(); break;
case "Time": _Time = value.ToDateTime(); break;
case "End": _End = value.ToDateTime(); break;
case "Data": _Data = Convert.ToString(value); break;
case "Server": _Server = Convert.ToString(value); break;
@ -232,7 +232,7 @@ public partial class JobError
/// <summary>作业项</summary>
[Map(nameof(TaskID), typeof(JobTask), "ID")]
public String TaskStart => Task?.ToString();
public String TaskTime => Task?.ToString();
#endregion
@ -255,8 +255,8 @@ public partial class JobError
/// <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 Time = FindByName("Time");
/// <summary>结束。小于,不等于</summary>
public static readonly Field End = FindByName("End");
@ -309,8 +309,8 @@ public partial class JobError
/// <summary>客户端。IP加进程</summary>
public const String Client = "Client";
/// <summary>开始。大于等于</summary>
public const String Start = "Start";
/// <summary>数据时间。大于等于</summary>
public const String Time = "Time";
/// <summary>结束。小于,不等于</summary>
public const String End = "End";

View File

@ -143,7 +143,7 @@
<Column Name="Cron" DataType="String" Description="执行频次。定时调度的Cron表达式" />
<Column Name="Topic" DataType="String" Description="主题。消息调度时消费的主题" />
<Column Name="MessageCount" DataType="Int32" Description="消息数" />
<Column Name="Start" DataType="DateTime" Description="开始。从该时间开始调度作业任务,默认不设置时从当前时间开始" />
<Column Name="Time" ColumnName="Start" DataType="DateTime" Description="数据时间。从该时间开始调度作业任务,默认不设置时从当前时间开始" />
<Column Name="End" DataType="DateTime" Description="结束。到该时间停止调度作业,默认不设置时永不停止" />
<Column Name="Step" DataType="Int32" Description="步进。切分任务的时间区间,秒" />
<Column Name="BatchSize" DataType="Int32" Description="批大小。数据调度每次抽取数据的分页大小,或消息调度每次处理的消息数,定时调度不适用" />
@ -185,7 +185,7 @@
<Column Name="AppID" DataType="Int32" Map="App@ID@$" Description="应用" />
<Column Name="JobID" DataType="Int32" Map="Job@ID@$" Description="作业" />
<Column Name="Client" DataType="String" Description="客户端。IP加进程" />
<Column Name="Start" DataType="DateTime" Master="True" Description="开始。大于等于,定时调度到达该时间点后触发(可能有偏移量),消息调度不适用" />
<Column Name="Time" ColumnName="Start" DataType="DateTime" Master="True" Description="数据时间。大于等于,定时调度到达该时间点后触发(可能有偏移量),消息调度不适用" />
<Column Name="End" DataType="DateTime" Description="结束。小于不等于,数据调度到达该时间点后触发(可能有偏移量),消息调度不适用" />
<Column Name="BatchSize" DataType="Int32" Description="批大小。数据调度每次抽取数据的分页大小,或消息调度每次处理的消息数,定时调度不适用" />
<Column Name="Total" DataType="Int32" Description="总数。任务处理的总数据例如数据调度抽取得到的总行数定时调度默认1" />
@ -221,7 +221,7 @@
<Column Name="JobID" DataType="Int32" Map="Job@ID@$" Description="作业" />
<Column Name="TaskID" DataType="Int32" Map="JobTask@ID@$" Description="作业项" />
<Column Name="Client" DataType="String" Description="客户端。IP加进程" />
<Column Name="Start" DataType="DateTime" Description="开始。大于等于" />
<Column Name="Time" ColumnName="Start" DataType="DateTime" Description="数据时间。大于等于" />
<Column Name="End" DataType="DateTime" Description="结束。小于,不等于" />
<Column Name="Data" DataType="String" Length="2000" Description="数据" />
<Column Name="Server" DataType="String" Description="服务器" />

View File

@ -89,7 +89,7 @@ public abstract class DataHandler : Handler
if (job.Step == 0) job.Step = 30;
// 获取最小时间
if (job.Start.Year < 2000) throw new InvalidOperationException("数据任务必须设置开始时间");
if (job.Time.Year < 2000) throw new InvalidOperationException("数据任务必须设置开始时间");
return base.Start();
}

View File

@ -50,7 +50,7 @@ public class JobService
AppID = app.ID,
Name = item.Name,
Enable = item.Enable,
Start = item.Start,
Time = item.Time,
End = item.End,
Offset = item.Offset,
Step = item.Step,
@ -92,6 +92,7 @@ public class JobService
// 应用停止发放作业
app = App.FindByID(app.ID) ?? app;
if (!app.Enable) return [];
var job = app.Jobs.FirstOrDefault(e => e.Name == jobName);
// 全局锁,确保单个作业只有一个线程在分配作业
@ -104,7 +105,7 @@ public class JobService
job = Job.FindByAppIDAndName(app.ID, jobName);
if (job == null) throw new XException($"应用[{app.ID}/{app.Name}]下未找到作业[{jobName}]");
if (job.Step == 0 || job.Start.Year <= 2000) throw new XException("作业[{0}/{1}]未设置开始时间或步进", job.ID, job.Name);
if (job.Step == 0 || job.Time.Year <= 2000) throw new XException("作业[{0}/{1}]未设置开始时间或步进", job.ID, job.Name);
var online = _appService.GetOnline(app, ip);
@ -133,7 +134,7 @@ public class JobService
default:
{
// 如果能够切片,则查询数据库后进入,避免缓存导致重复
if (TrySplit(job, job.Start, job.Step, out var end))
if (TrySplit(job, job.Time, job.Step, out var end))
{
// 申请任务前,不能再查数据库,那样子会导致多线程脏读,从而出现多客户端分到相同任务的情况
//jb = Job.FindByKey(jb.ID);
@ -366,7 +367,7 @@ public class JobService
AppID = job.AppID,
JobID = job.ID,
TaskID = task.ID,
Start = task.Start,
Time = task.Time,
End = task.End,
Data = task.Data,
@ -426,7 +427,7 @@ public class JobService
//using var ck = cache.AcquireLock($"Job:{ID}", 5_000);
using var ts = Job.Meta.CreateTrans();
var start = job.Start;
var start = job.Time;
for (var i = 0; i < count; i++)
{
if (!TrySplit(job, start, step, out var end)) break;
@ -436,7 +437,7 @@ public class JobService
{
AppID = job.AppID,
JobID = job.ID,
Start = start,
Time = start,
End = end,
BatchSize = job.BatchSize,
@ -467,7 +468,7 @@ public class JobService
}
// 更新任务
job.Start = end;
job.Time = end;
start = end;
}

View File

@ -94,7 +94,7 @@ public class AppController : EntityController<App>
var jobs = Job.FindAllByAppID2(appid);
foreach (var job in jobs)
{
job.Start = new DateTime(now.Year, now.Month, 1);
job.Time = new DateTime(now.Year, now.Month, 1);
job.ResetOther();
}

View File

@ -28,7 +28,7 @@
{
<th class="text-center"><a href="@Html.Raw(page.GetSortUrl("AppName"))">应用</a></th>
}
<th class="text-center"><a href="@Html.Raw(page.GetSortUrl("Start"))" title="@Job._.Start.Description">开始时间</a></th>
<th class="text-center"><a href="@Html.Raw(page.GetSortUrl("Start"))" title="@Job._.Time.Description">开始时间</a></th>
<th class="text-center"><a href="@Html.Raw(page.GetSortUrl("End"))" title="@Job._.End.Description">结束</a></th>
<th class="text-center"><a href="@Html.Raw(page.GetSortUrl("Step"))" title="@Job._.Step.Description">步进</a></th>
<th class="text-center"><a href="@Html.Raw(page.GetSortUrl("BatchSize"))" title="@Job._.BatchSize.Description">批大小</a></th>
@ -54,8 +54,8 @@
<tbody>
@foreach (var entity in Model)
{
var st = entity.Start.ToFullString("");
if (entity.Start.Date == DateTime.Now.Date) { st = entity.Start.ToString("HH:mm:ss"); }
var st = entity.Time.ToFullString("");
if (entity.Time.Date == DateTime.Now.Date) { st = entity.Time.ToString("HH:mm:ss"); }
if (entity.Mode == JobModes.Message) { st = $"{entity.Topic}/{entity.MessageCount}"; }
var ut = entity.UpdateTime.ToFullString("");

View File

@ -23,7 +23,7 @@
}
<th class="text-center hidden-md hidden-sm hidden-xs"><a href="@Html.Raw(page.GetSortUrl("ID"))">编号</a></th>
<th class="text-center"><a href="@Html.Raw(page.GetSortUrl("TaskID"))">任务</a></th>
<th class="text-center"><a href="@Html.Raw(page.GetSortUrl("Start"))" title="@JobTask._.Start.Description">开始</a></th>
<th class="text-center"><a href="@Html.Raw(page.GetSortUrl("Time"))" title="@JobTask._.Time.Description">开始</a></th>
<th class="text-center"><a href="@Html.Raw(page.GetSortUrl("End"))" title="@JobTask._.End.Description">结束</a></th>
<th class="text-center"><a href="@Html.Raw(page.GetSortUrl("Client"))" title="@JobTask._.Client.Description">客户端</a></th>
<th class="text-center"><a href="@Html.Raw(page.GetSortUrl("BatchSize"))" title="@JobTask._.BatchSize.Description">批大小</a></th>
@ -77,7 +77,7 @@
}
<td class="text-center hidden-md hidden-sm hidden-xs">@entity.ID</td>
<td class="text-center"><a href="Job?ID=@entity.JobID">@entity.JobName</a></td>
<td>@entity.Start.ToFullString("")</td>
<td>@entity.Time.ToFullString("")</td>
<td>@entity.End.ToString("HH:mm:ss")</td>
<td>@entity.Client</td>
<td class="text-right">@entity.BatchSize.ToString("n0")</td>

View File

@ -14,8 +14,8 @@ public interface IJob
/// <summary>是否启用</summary>
Boolean Enable { get; set; }
/// <summary>开始。大于等于该时间,定时作业和数据作业使用</summary>
DateTime Start { get; set; }
/// <summary>数据时间。定时调度的执行时间点,或者数据调度的开始时间</summary>
DateTime Time { get; set; }
/// <summary>结束。小于该时间,数据作业使用</summary>
DateTime End { get; set; }

View File

@ -19,9 +19,9 @@ public partial class JobModel
[XmlAttribute]
public Boolean Enable { get; set; }
/// <summary>开始。大于等于</summary>
/// <summary>数据时间。定时调度的执行时间点,或者数据调度的开始时间</summary>
[XmlAttribute]
public DateTime Start { get; set; }
public DateTime Time { get; set; }
/// <summary>结束。小于</summary>
[XmlAttribute]

View File

@ -10,9 +10,6 @@ public partial class TaskModel : ITask
/// <summary>数据时间。定时调度的执行时间点,或者数据调度的开始时间</summary>
public DateTime Time { get; set; }
/// <summary>开始。大于等于</summary>
public DateTime Start { get; set; }
/// <summary>结束。小于,不等于</summary>
public DateTime End { get; set; }

View File

@ -61,7 +61,7 @@ public abstract class Handler : IExtend, ITracerFeature, ILogFeature
var now = DateTime.Now;
var job = new JobModel
{
Start = new DateTime(now.Year, now.Month, 1),
Time = new DateTime(now.Year, now.Month, 1),
Step = 30,
Offset = 15,
Mode = JobModes.Time,
@ -84,7 +84,7 @@ public abstract class Handler : IExtend, ITracerFeature, ILogFeature
var msg = "开始工作";
var job = Job;
if (job != null) msg += $" {job.Enable} 区间({job.Start.ToFullString("")}, {job.End.ToFullString("")} Offset={job.Offset} Step={job.Step} MaxTask={job.MaxTask}";
if (job != null) msg += $" {job.Enable} 区间({job.Time.ToFullString("")}, {job.End.ToFullString("")} Offset={job.Offset} Step={job.Step} MaxTask={job.MaxTask}";
using var span = Tracer?.NewSpan($"job:{Name}:Start", msg);
WriteLog(msg);

View File

@ -1,4 +1,5 @@
using NewLife;
using AntJob.Data;
using NewLife;
namespace AntJob.Handlers;
@ -15,7 +16,7 @@ public class CSharpHandler : Handler
/// <summary>实例化</summary>
public CSharpHandler()
{
//Mode = JobModes.CSharp;
Mode = JobModes.CSharp;
var job = Job;
job.BatchSize = 8;

View File

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishProtocol>FileSystem</PublishProtocol>
<Configuration>Release</Configuration>
<Platform>Any CPU</Platform>
<TargetFramework>net45</TargetFramework>
<PublishDir>..\Bin\</PublishDir>
</PropertyGroup>
</Project>

View File

@ -4,7 +4,6 @@ using System.Reflection;
using AntJob.Data;
using AntJob.Models;
using NewLife;
using NewLife.Log;
using NewLife.Net;
using NewLife.Reflection;
using NewLife.Remoting;
@ -33,15 +32,7 @@ public class AntClient : ApiClient
/// <summary>实例化</summary>
public AntClient()
{
//Log = XTrace.Log;
//StatPeriod = 60;
ShowError = true;
#if DEBUG
EncoderLog = Log;
StatPeriod = 10;
#endif
}
/// <summary>实例化</summary>

View File

@ -43,7 +43,7 @@ public class FileJobProvider : JobProvider
var df = job?.Job;
if (df != null) model.Copy(df);
if (model.Start.Year <= 2000) model.Start = DateTime.Now.Date;
if (model.Time.Year <= 2000) model.Time = DateTime.Now.Date;
if (model.Step <= 0) model.Step = 30;
if (model.BatchSize <= 0) model.BatchSize = 10000;
if (model.MaxTask <= 0) model.MaxTask = Environment.ProcessorCount;
@ -108,7 +108,7 @@ public class FileJobProvider : JobProvider
var step = job.Step;
if (step <= 0) step = 30;
var start = job.Start;
var start = job.Time;
for (var i = 0; i < count; i++)
{
// 开始时间和结束时间是否越界
@ -128,7 +128,7 @@ public class FileJobProvider : JobProvider
if (start >= end) break;
// 切分新任务
var set = new TaskModel
var task = new TaskModel
{
Time = start,
End = end,
@ -138,10 +138,10 @@ public class FileJobProvider : JobProvider
};
// 更新任务
job.Start = end;
job.Time = end;
start = end;
list.Add(set);
list.Add(task);
}
if (list.Count > 0)

View File

@ -158,9 +158,6 @@ public class NetworkJobProvider : JobProvider
#endregion
#region
//private static readonly String _MachineName = Environment.MachineName;
//private static readonly Int32 _ProcessID = Process.GetCurrentProcess().Id;
/// <summary>报告进度,每个任务多次调用</summary>
/// <param name="ctx">上下文</param>
public override void Report(JobContext ctx)

View File

@ -24,7 +24,7 @@
v4版本是对v3版本的重构主要是为了解决v3版本的一些问题以及提供更多的功能。
v4版本亮点
1. []新增Http接入由AntWeb提供调度服务无需部署AntServer满足轻量级项目需要。进行中等NewLife.Remoting提供WebsocketClient
2. []增强定时调度支持指定Cron表达式逐步替代Start+Step的恒定间隔定时调度
2. [x]增强定时调度支持指定Cron表达式逐步替代Start+Step的恒定间隔定时调度
3. []提前生成任务,提前下发给执行器,到时间后马上执行,提高任务执行时间精度
4. []支持任务主动延迟,任务在执行中发现数据条件未满足时,可以向调度中心请求延迟一段时间后再执行,增加执行次数但不增加错误次数
5. []扩充调度模式常态化部署AntAgent正式把Sql调度和C#调度加入主线,将来增加数据抽取和数据推送等多种调度模式
@ -107,14 +107,14 @@ namespace HisAgent
{
// 今天零点开始每10秒一次
var job = Job;
job.Start = DateTime.Today;
job.Time = DateTime.Today;
job.Step = 10;
}
protected override Int32 Execute(JobContext ctx)
{
// 当前任务时间
var time = ctx.Task.Start;
var time = ctx.Task.Time;
WriteLog("新生命蚂蚁调度系统!当前任务时间:{0}", time);
// 成功处理数据量

View File

@ -15,7 +15,7 @@ namespace HisAgent
public BuildPatient()
{
var job = Job;
job.Start = DateTime.Today;
job.Time = DateTime.Today;
job.Step = 15;
}

View File

@ -15,7 +15,7 @@ namespace HisAgent
public BuildWill()
{
var job = Job;
job.Start = DateTime.Today;
job.Time = DateTime.Today;
job.Step = 30;
}

View File

@ -12,7 +12,7 @@ internal class HelloJob : Handler
{
// 今天零点开始每10秒一次
var job = Job;
job.Start = DateTime.Today;
job.Time = DateTime.Today;
job.Step = 10;
}