任务管理

背景

系统存在定时任务的执行。如:第三方系统数据获取、系统初始化、数据转储等。任务管理至少具备下面能力

  • 灵活的执行策略(周期、定时等)
  • 页面配置执行策略
  • 手动页面触发
  • 能够查看任务执行的详细信息

设计

配置文件加载原子任务,数据库存储任务执行的状态信息。由Quartz实现任务的执行策略,可同步或异步并发执行任务

  • 配置文件
名称 描述 备注
taskName 任务名称 -
exeClass 执行实体类 实现任务的包名类名
nextTask 后置任务 链式执行时,下个任务的名称
preTask 前置任务 树状任务,父亲任务名称
  • DB
名称 描述 备注
taskName 任务名称 -
status 执行状态 -
strategy 执行策略 -
exeTime 最后一次执行时间 -
exeResult 最后一次执行结果 -
  • 关键类设计
    1.SysJob.java
    由quartz拉起的job方法定义
    2.AtomTask.java(implements Runnable)(abstract)
private String taskName;
private String exeClass;
private String nextTask;
private String preTask;
private String description;
private StatusEnum taskStatus;
private String strategy;
//可新起线程异步执行
public void run()
{
  execute()
 }
//同步任务执行时,调用该方法
public abstract boolean execute();
//钩子方法,可用来做通用记录日志。若具体任务有特殊需求,可覆盖实现该类
public void recordLog()
{}

3.TaskMgt
单例实现

private Map taskMap;
private Map> treeTask;
public boolean exeTaskByName(taskName, isSyn=true);  //单个任务执行
public boolean exeTaskChain(startTaskName, isSyn=true); //链式任务执行
public boolean exeTaskTree(rootTaskName, isSyn=true); //树状任务执行
  • 任务分类
    1.数据同步
    2.数据汇聚(按天打点、临时数据产生等)

你可能感兴趣的:(任务管理)