开源框架YiShaAdmin如何使用任务计划
1.在Startup添加 new JobCenter().Start();(红色字体,下同)
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (!string.IsNullOrEmpty(GlobalContext.SystemConfig.VirtualDirectory))
{
app.UsePathBase(new PathString(GlobalContext.SystemConfig.VirtualDirectory)); // 让 Pathbase 中间件成为第一个处理请求的中间件, 才能正确的模拟虚拟路径
}
if (WebHostEnvironment.IsDevelopment())
{
GlobalContext.SystemConfig.Debug = true;
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
} string resource = Path.Combine(env.ContentRootPath, "Resource");
FileHelper.CreateDirectory(resource); app.UseStaticFiles(new StaticFileOptions
{
OnPrepareResponse = GlobalContext.SetCacheControl
});
app.UseStaticFiles(new StaticFileOptions
{
RequestPath = "/Resource",
FileProvider = new PhysicalFileProvider(resource),
OnPrepareResponse = GlobalContext.SetCacheControl
});
app.UseSession();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute("areas", "{area:exists}/{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
GlobalContext.ServiceProvider = app.ApplicationServices;
new JobCenter().Start(); }
2.在YiSha.Business.AutoJob的Job文件夹新建TestConsoleJob.cs
using System.Threading.Tasks;
using YiSha.Util.Model; namespace YiSha.Business.AutoJob
{
internal class TestConsoleJob : IJobTask
{
public async Task<TData> Start()
{
TData obj = new TData();
obj.Tag = 1;
obj.Message = "测试调用成功";
return obj;
}
}
}
3.在JobExecute中加入新添加的任务
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Quartz;
using Quartz.Impl.Triggers;
using YiSha.Entity.SystemManage;
using YiSha.Enum;
using YiSha.Service.SystemManage;
using YiSha.Util;
using YiSha.Util.Extension;
using YiSha.Util.Model; namespace YiSha.Business.AutoJob
{
public class JobExecute : IJob
{
private AutoJobService autoJobService = new AutoJobService();
private AutoJobLogService autoJobLogService = new AutoJobLogService(); public Task Execute(IJobExecutionContext context)
{
return Task.Run(async () =>
{
TData obj = new TData();
long jobId = 0;
JobDataMap jobData = null;
AutoJobEntity dbJobEntity = null;
try
{
jobData = context.JobDetail.JobDataMap;
jobId = jobData["Id"].ParseToLong();
// 获取数据库中的任务
dbJobEntity = await autoJobService.GetEntity(jobId);
if (dbJobEntity != null)
{
if (dbJobEntity.JobStatus == StatusEnum.Yes.ParseToInt())
{
CronTriggerImpl trigger = context.Trigger as CronTriggerImpl;
if (trigger != null)
{
if (trigger.CronExpressionString != dbJobEntity.CronExpression)
{
// 更新任务周期
trigger.CronExpressionString = dbJobEntity.CronExpression;
await JobScheduler.GetScheduler().RescheduleJob(trigger.Key, trigger);
} #region 执行任务
switch (context.JobDetail.Key.Name)
{
case "数据库备份":
obj = await new DatabasesBackupJob().Start();
break;
case "测试任务计划":
obj = await new TestConsoleJob().Start();
break;
}
#endregion
}
}
}
}
catch (Exception ex)
{
obj.Message = ex.GetOriginalException().Message;
LogHelper.Error(ex);
} try
{
if (dbJobEntity != null)
{
if (dbJobEntity.JobStatus == StatusEnum.Yes.ParseToInt())
{
#region 更新下次运行时间
await autoJobService.SaveForm(new AutoJobEntity
{
Id = dbJobEntity.Id,
NextStartTime = context.NextFireTimeUtc.Value.DateTime.AddHours(8)
});
#endregion #region 记录执行状态
await autoJobLogService.SaveForm(new AutoJobLogEntity
{
JobGroupName = context.JobDetail.Key.Group,
JobName = context.JobDetail.Key.Name,
LogStatus = obj.Tag,
Remark = obj.Message
});
#endregion
}
}
}
catch (Exception ex)
{
obj.Message = ex.GetOriginalException().Message;
LogHelper.Error(ex);
}
});
}
}
}
4.添加任务计划,测试


开源框架YiShaAdmin如何使用任务计划的更多相关文章
- Pyhton开源框架(加强版)
info:Djangourl:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 ...
- Python开源框架
info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...
- Scut游戏服务器免费开源框架-3
Scut游戏服务器免费开源框架--快速开发(3) Scut快速开发(3) 1 开发环境 需要安装的软件 a) 消息队列 b) 数据库,Sql2005以上版本 ...
- 值得学习的C/C++开源框架(转)
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...
- .Net开源框架列表
API 框架 NancyFx:轻量.用于构建 HTTP 基础服务的非正式(low-ceremony)框架,基于.Net 及 Mono 平台.官网 ASP.NET WebAPI:快捷创建 HTTP 服务 ...
- 值得推荐的C/C++开源框架和库
值得推荐的C/C++开源框架和库 转自:http://www.cnblogs.com/lidabo/p/5514155.html - 1. Webbench Webbench是一个在Linux下 ...
- C++的一些不错开源框架,可以学习和借鉴
from https://www.cnblogs.com/charlesblc/p/5703557.html [本文系外部转贴,原文地址:http://coolshell.info/c/c++/201 ...
- 关于Farseer.net轻量级ORM开源框架 V1.0 概念版本开发的消息
V0.2版的开源距离今天(05年03月)已有近3年的时间.可以说这个版本已经有点落伍的感觉了,呵呵. V0.2版至今一直处于BUG的修复及一些细小功能的增加,所以版本号上一直没有变化. 其实在这1.2 ...
- Android开源框架ViewPageIndicator和ViewPager实现Tab导航
前言: 关于使用ViewPageIndicator和ViewPager实现Tab导航,在开发社区里已经有一堆的博客对其进行了介绍,假设我还在这里写怎样去实现.那简直就是老生常谈,毫无新奇感,并且.我也 ...
随机推荐
- loj536「LibreOJ Round #6」花札(二分图博弈)
loj536「LibreOJ Round #6」花札(二分图博弈) loj 题解时间 很明显是二分图博弈. 以某个点为起点,先手必胜的充要条件是起点一定在最大匹配中. 判断方法是看起点到该点的边有流量 ...
- python3 爬虫--Chrome以及 Chromedriver安装配置
1终端 将下载源加入到列表 sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/sources.list.d/ ...
- 中国软件杯---电力客户行为分析---图表联动echarts-demo(flask)
中国软件杯---电力客户行为分析---图表联动echarts-demo(flask) 题目链接(可下载原始CSV数据集):http://www.cnsoftbei.com/plus/view.php? ...
- (转载)linux下Yum的$releasever和$basearch的取值
https://blog.csdn.net/whatday/article/details/51097456
- 在JAVA中如何跳出当前的多重嵌套循环?
在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句,即可跳出外层循环.
- 什么是 spring bean?
它们是构成用户应用程序主干的对象. Bean 由 Spring IoC 容器管理. 它们由 Spring IoC 容器实例化,配置,装配和管理. Bean 是基于用户提供给容器的配置元数据创建.
- 全网最硬核 Java 新内存模型解析与实验单篇版(不断更新QA中)
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...
- css3中user-select的用法详解
css3中user-select的用法详解 user-select属性是css3新增的属性,用于设置用户是否能够选中文本.可用于除替换元素外的所有元素,以下是user-select的主要用法和注意事项 ...
- 介绍一项让 React 可以与 Vue 抗衡的技术
好吧,我承认我是标题党.React 明明如日中天,把它与 Vue 倒过来,给 Vue 加点东西或可与 React 抗衡.不过,这两年 Vue 干的正是这事,不断加东西,不断优化,按它现有发展速度超越 ...
- 前端每日实战:96# 视频演示如何用纯 CSS 和 D3 创作一艘遨游太空的宇宙飞船
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/oMqNmv 可交互视频 此视频是可 ...