Skip to content

job dev

qifeng dai edited this page May 23, 2017 · 2 revisions

当前我们支持的任务类型有 任务描述,后面要支持新的类型,需要自行开发。

当前我们所有的任务都放在 com.baifendian.swordfish.execserver.job 包下面,这里主要介绍如何开发一个任务。

Job 接口

说明:描述了一个具体的任务接口。

public interface Job {
  /**
   * 作业前处理
   */
  void before() throws Exception;

  /**
   * 作业处理
   */
  void process() throws Exception;

  /**
   * 作业后处理
   */
  void after() throws Exception;

  /**
   * 取消执行
   */
  void cancel() throws Exception;

  /**
   * 作业是否已经启动
   *
   * @return
   */
  boolean isStarted();

  /**
   * 作业是否执行完成
   *
   * @return 是否已完成
   */
  boolean isCompleted();

  /**
   * 获取返回码
   *
   * @return 0 表示成功,其他值表示失败
   */
  int getExitCode();

  ......
}

大部分任务都可以使用 AbstractProcessJob 的功能,这个类主要实现了一个 process 接口,这个接口会得到任务的一个 shell 命令,然后自己生成相关的语句,以 shell 脚本方式执行。当前,大部分的任务都直接继承了该接口。

BaseParam

说明:描述任务的参数信息,每个任务都有自己的参数。

当前任务相关的参数在 com.baifendian.swordfish.common.job.struct 包中。

该类提供的主要方法如下:

public abstract class BaseParam {

  /**
   * 校验参数是否合法 (需要校验的子类 @Override 该方法)
   *
   * @return 是否合法
   */
  public boolean checkValid() {
    return true;
  }

  ......
}
Clone this wiki locally