# TaskJobManage
**Repository Path**: qintaie/TaskJobManage
## Basic Information
- **Project Name**: TaskJobManage
- **Description**: 对Quartz提供基础页面管理
- **Primary Language**: Unknown
- **License**: GPL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 0
- **Created**: 2021-09-19
- **Last Updated**: 2023-05-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: quartz
## README
# Quartz基础管理页,支持传如动态参数手动触发任务
项目结构
- webapidemo: sample_webapi
- 后端:TaskJobManage
- 前端:TaskJobUI
本地联调时,注意后端接口的 9950 ,需要与前端项目的 代理 一致才可正常联调
```
```
## 1.配置
```
public void ConfigureServices(IServiceCollection services)
{
services.AddTaskJobMiddleware(a=>
{
// Route 主页地址,默认是 /TaskJobUI
// LoadAssemblyName job所在的程序集名称,默认在当前web启动程序集
// SelfTurnOn 程序启动运行任务
});
}
public void Configure(IApplicationBuilder app, IHostApplicationLifetime lifetime)
{
lifetime.ApplicationStarted.Register(() => app.ApplicationServices.StartTaskJob());// 定时任务在程序启动后自动运行
app.UseTaskJobMiddleware(); // 要在 app.UseRouting(); 之前
}
```
## 2. 新建类,Job1
```
public class Job1 : TaskModel, IJob
{
public override void Config()
{
status = 0;
taskName = "测试任务a";
groupName = "分组a";
describe = "每10秒执行一次";
cron = "0/10 * * * * ? ";
Job = typeof(Job1);
}
public override TriggerBuilder ConfigTrigger(TriggerBuilder triggerbuilder)
{
return triggerbuilder;
}
public Task Execute(IJobExecutionContext context)
{
JobDataMap dataMap = context.JobDetail.JobDataMap;
Console.WriteLine(dataMap.GetString("parms") ?? "");
string json = context.Trigger.JobDataMap.GetString("parms") ?? "";
Console.WriteLine("动态传参数是:" + json);
return Task.Run(() =>
{
//int p = 0;
//var a = 12 / p;
ConsoleExcept.WriteLine("Hello-" + DateTime.Now.ToString("HH:mm:ss"), ConsoleColor.Red);
});
//return Task.CompletedTask;
}
}
```
## 3.进入管理页面。进入点击启动
正在运行中的任务:http://localhost:xxx/TaskJobUI/


## 4.作业执行日志分页列表,请实现 IJobExecutionLogs
```
public class JobExecutionLog : IJobExecutionLogs
{
public Task GetJobExecutionLog(TaskModel parms, int pageIndex, int pageSize)
{
List list = new List();
list.Add(new TaskModel()
{
status = 0,
taskName = "测试任务a",
groupName = "分组a",
describe = "每10秒执行一次",
cron = "0/10 * * * * ? "
});
if (!string.IsNullOrWhiteSpace(parms.taskName))
{
list = list.Where(a=>a.taskName == parms.taskName).ToList();
}
if (!string.IsNullOrWhiteSpace(parms.groupName))
{
list = list.Where(a => a.groupName == parms.groupName).ToList();
}
return Task.FromResult(new ResultMsg
{
msg = $"pageIndex={pageIndex},pageSize={pageSize},taskName={parms.taskName},groupName={parms.groupName}",
status = true,
data = new TableList()
{
Count = list.Count(),
TableData = list.Skip(pageIndex == 1 ? 0 : 1).Take(pageSize)
}
});
}
}
```
## 5.说明
- 有运行任务日志采集,需要自己实现 WorkingLogProvider ,重写 GetLogger()
- 其他功能,还在继续优化中,暂不支持数据持久化到 DB,但是支持实现灵活接口,复用
## 6.前端初始化:
npm install
npm i element-ui -S
npm install babel-plugin-component -D
npm install axios
运行:npm run dev <