namespace Admin.NET.Core.Service; /// /// 作业持久化(数据库) /// public class DbJobPersistence : IJobPersistence { private readonly IServiceProvider _serviceProvider; public DbJobPersistence(IServiceProvider serviceProvider) { _serviceProvider = serviceProvider; } /// /// 作业计划Scheduler的JobDetail变化时 /// /// public void OnChanged(PersistenceContext context) { using var serviceScope = _serviceProvider.CreateScope(); var db = serviceScope.ServiceProvider.GetService(); var sql = context.ConvertToSQL(db.EntityMaintenance.GetEntityInfo().DbTableName, NamingConventions.Pascal); db.Ado.ExecuteCommand(sql); } /// /// 作业计划Scheduler的触发器Trigger变化时 /// /// public void OnTriggerChanged(PersistenceTriggerContext context) { using var serviceScope = _serviceProvider.CreateScope(); var db = serviceScope.ServiceProvider.GetService(); var sql = context.ConvertToSQL(db.EntityMaintenance.GetEntityInfo().DbTableName, NamingConventions.Pascal); db.Ado.ExecuteCommand(sql); } /// /// 作业调度器服务启动时(通常用来同步持久化数据到内存中) /// /// /// /// public SchedulerBuilder Preload(string jobId, SchedulerBuilder builder) { // 如果是更新操作,则 return builder.Updated(); // 如果是新增操作,则 return builder.Appended(); // 如果是删除操作,则 return builder.Removed(); return builder.Updated(); } }