新增日终任务

  1. 1. 查询tb_job_group 确认执行器id
  2. 2. 确定任务在日终任务当中位置。触发任务,依赖任务,子任务。
  3. 3. 插入tb_job_task
  4. * id 字段 主键id 由系统名+分组+排序组成,后面必须是数据字结尾
  5. * JOB_GROUP 字段 对应执行器id
  6. * executor_handler 字段,与调度任务注解@JobHandler(value="demo3JobHandler") 值相同。
  7. * job_cron 字段值默认 0/1 * * * * ? * 意思是 1秒触发;Linux|014|cron表达式详解
  8. * child_jobid 字段, 触发任务id,多个任务用英文 逗号隔开“,”
  9. * dependency_id 字段,依赖任务,多个任务用英文 逗号隔开“,”。当父任务执行完后,触发子任务时,检查依赖任务是否执行成功。所有依赖执行成功才能执行当前任务。
  1. insert into tb_job_task (ID, JOB_GROUP, JOB_CRON, JOB_DESC, ADD_TIME, UPDATE_TIME, AUTHOR, ALARM_EMAIL, EXECUTOR_ROUTE_STRATEGY, EXECUTOR_HANDLER, EXECUTOR_PARAM, EXECUTOR_BLOCK_STRATEGY, EXECUTOR_TIMEOUT, EXECUTOR_FAIL_RETRY_COUNT, GLUE_TYPE, GLUE_SOURCE, GLUE_REMARK, GLUE_UPDATETIME, CHILD_JOBID, TRIGGER_STATUS, TRIGGER_LAST_TIME, TRIGGER_NEXT_TIME, JOB_CODE, UUID, STEP_ID, DEPENDENCY_ID, PARALLEL_TYPE, FIELD_01, FIELD_02, FIELD_03, STATUS, FIRST_FLAG)values ('Aplus030220', 1002, '0/1 * * * * ? *', '贴现每日摊销', to_date('03-06-2020 21:20:29', 'dd-mm-yyyy hh24:mi:ss'), to_date('03-06-2020 21:20:29', 'dd-mm-yyyy hh24:mi:ss'), 'Aplus', null, 'ROUND', 'dMDiscItrAdjJobHandler', null, 'SERIAL_EXECUTION', 0, 0, 'BEAN', '<CLOB>', 'GLUE代码初始化', to_date('19-01-2020 22:23:59', 'dd-mm-yyyy hh24:mi:ss'), 'Aplus030240', 0, 0, 0, '57', null, null, null, 'F', null, null, null, 0, null);
  1. 4. 更新tb_job_task 父任务child_jobid子节点
  2. update tb_job_task t set t.child_jobid = t.child_jobid || ',' || '新任务id' where t.id = '父人id';

特殊情况:

若新增任务是需要放在第一个任务触发。

  1. 5. 查询根任务
  2. select * from tb_job_task t where t.first_flag = '1';

将新增任务first_flag 跟新为 1,旧任务first_flag 更新为空 null。

检查是否添加成功

  1. --检查树形结构是否完成select jt.id,jt.child_jobid,jt.dependency_id,jt.*
  2. from tb_job_task jt
  3. start with jt.id in (select t.id from tb_job_task t where t.first_flag = '1')
  4. connect by prior jt.child_jobid like '%'||jt.id||'%';