73 lines
2.4 KiB
C#
73 lines
2.4 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using Furion.Schedule;
|
||
using Furion.TimeCrontab;
|
||
using Yi.Framework.Infrastructure.Ddd.Services;
|
||
|
||
namespace Yi.Furion.Application.Rbac.Services.Impl
|
||
{
|
||
public class TaskService : ApplicationService, ITaskService, IDynamicApiController, ITransient
|
||
{
|
||
private readonly ISchedulerFactory _schedulerFactory;
|
||
public TaskService(ISchedulerFactory schedulerFactory)
|
||
{
|
||
_schedulerFactory = schedulerFactory;
|
||
}
|
||
public object GetById(string jobId)
|
||
{
|
||
var result = _schedulerFactory.TryGetJob(jobId, out var scheduler);
|
||
return scheduler.GetModel();
|
||
}
|
||
public object Get()
|
||
{
|
||
return _schedulerFactory.GetJobsOfModels();
|
||
}
|
||
public object Create()
|
||
{
|
||
//jobBuilder
|
||
var jobBuilder = JobBuilder.Create("YourProject", "YourProject.MyJob");
|
||
|
||
//triggerBuilder
|
||
//毫秒
|
||
var triggerBuilder = Triggers.Period(5000);
|
||
//cron
|
||
var triggerBuilder2 = Triggers.Cron("* * * * *", CronStringFormat.Default);
|
||
|
||
//作业计划,单个jobBuilder与多个triggerBuilder组合
|
||
var schedulerBuilder = SchedulerBuilder.Create(jobBuilder, triggerBuilder, triggerBuilder2);
|
||
|
||
|
||
//调度中心工厂,使用作业计划管理job,返回调度中心单个
|
||
var result = _schedulerFactory.TryAddJob(schedulerBuilder, out var scheduler);
|
||
|
||
return result;
|
||
}
|
||
public object Remove(string jobId)
|
||
{
|
||
var res = _schedulerFactory.TryRemoveJob(jobId, out var scheduler);
|
||
return res;
|
||
}
|
||
public object Update()
|
||
{
|
||
//jobBuilder
|
||
var jobBuilder = JobBuilder.Create("YourProject", "YourProject.MyJob");
|
||
|
||
//triggerBuilder
|
||
//毫秒
|
||
var triggerBuilder = Triggers.Period(5000);
|
||
//cron
|
||
var triggerBuilder2 = Triggers.Cron("* * * * *", CronStringFormat.Default);
|
||
|
||
//作业计划,单个jobBuilder与多个triggerBuilder组合
|
||
var schedulerBuilder = SchedulerBuilder.Create(jobBuilder, triggerBuilder, triggerBuilder2);
|
||
|
||
|
||
var result = _schedulerFactory.TryUpdateJob(schedulerBuilder, out var scheduler);
|
||
return result;
|
||
}
|
||
}
|
||
}
|