新增定时任务
- 在
Jobs
文件夹下面新增一个以Job
结尾的文件,如TestJob.cs
,内容格式如下:
cs
using Mom.Core.Application.Dto;
using Mom.Core.Application.Service.IService;
using Mom.Core.Infrastructure;
using Quartz;
namespace Mom.Core.Job
{
[DisallowConcurrentExecution]
public class SyncSapWorkOrderJob : JobBase, IJob
{
private readonly ISysJobService _sysJobService;
public SyncSapWorkOrderJob(ISysJobService sysJobService)
{
_sysJobService = sysJobService;
}
public async Task Execute(IJobExecutionContext context)
{
await base.ExecuteJobAsync(context, async (now) => await Run(context), SuccessCallback);
}
/// <summary>
/// 测试同步Sap工单
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
private async Task Run(IJobExecutionContext context)
{
var jobKey = context.JobDetail.Key;
var jobId = jobKey.Name.ObjToInt();
JobDataMap data = context.JobDetail.JobDataMap;
SapWorkOrderParam input = new SapWorkOrderParam();
var sapResult = await SapHelper.InvokeRfcFuncAsync<Sap_WorkOrder_Result>("ZFATP_MES_003", input, AddLog);
// 业务处理
// ...
}
}
}
using Mom.Core.Application.Dto;
using Mom.Core.Application.Service.IService;
using Mom.Core.Infrastructure;
using Quartz;
namespace Mom.Core.Job
{
[DisallowConcurrentExecution]
public class SyncSapWorkOrderJob : JobBase, IJob
{
private readonly ISysJobService _sysJobService;
public SyncSapWorkOrderJob(ISysJobService sysJobService)
{
_sysJobService = sysJobService;
}
public async Task Execute(IJobExecutionContext context)
{
await base.ExecuteJobAsync(context, async (now) => await Run(context), SuccessCallback);
}
/// <summary>
/// 测试同步Sap工单
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
private async Task Run(IJobExecutionContext context)
{
var jobKey = context.JobDetail.Key;
var jobId = jobKey.Name.ObjToInt();
JobDataMap data = context.JobDetail.JobDataMap;
SapWorkOrderParam input = new SapWorkOrderParam();
var sapResult = await SapHelper.InvokeRfcFuncAsync<Sap_WorkOrder_Result>("ZFATP_MES_003", input, AddLog);
// 业务处理
// ...
}
}
}
注意点:
- 命名空间必须为
Mom.Core.Job
, 否则不会执行 DisallowConcurrentExecution
:防止并发执行JobBase
:必须继承JobBase
类,实现ExecuteJobAsync
方法,内部包含了日志记录、异常处理、执行时间记录等SuccessCallback
:执行成功后的回调方法,可以在这里更新下次执行参数等AddLog
:日志记录方法,可以在这里记录执行日志
其他信息
cs
var jobKey = context.JobDetail.Key;
var jobId = jobKey.Name.ObjToInt(); // 获取定时任务表的id
JobDataMap data = context.JobDetail.JobDataMap; // 获取本次任务执行参数, 也可以通过数据库配置,获取传递过来的参数
var jobKey = context.JobDetail.Key;
var jobId = jobKey.Name.ObjToInt(); // 获取定时任务表的id
JobDataMap data = context.JobDetail.JobDataMap; // 获取本次任务执行参数, 也可以通过数据库配置,获取传递过来的参数