美文网首页
任务管理

任务管理

作者: 地里蒜头 | 来源:发表于2017-05-24 15:45 被阅读0次

    背景

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

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

    设计

    配置文件加载原子任务,数据库存储任务执行的状态信息。由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<String, AtomTask> taskMap;
    private Map<String, List<AtomTask>> treeTask;
    public boolean exeTaskByName(taskName, isSyn=true);  //单个任务执行
    public boolean exeTaskChain(startTaskName, isSyn=true); //链式任务执行
    public boolean exeTaskTree(rootTaskName, isSyn=true); //树状任务执行
    
    • 任务分类
      1.数据同步
      2.数据汇聚(按天打点、临时数据产生等)

    相关文章

      网友评论

          本文标题:任务管理

          本文链接:https://www.haomeiwen.com/subject/rcqoxxtx.html