### 数据模型 *** 1. 任务配置,用于描述一个具体的任务配置信息 1. 执行记录,用于描述一个任务的具体的一次执行过程 ### 系统说明 *** 1. 任务调度的最小时间间隔是5秒,暂不支持频率要求快于5秒的场景 1. 任务配置完成后,满足以下条件的任务会被触发: 1. 状态为待执行且达到下次执行时间的 1. 状态为执行中且达到上次执行的过期时间的 1. 任务触发后更新任务的下次执行时间、本次任务的过期时间,然后生成执行记录 1. 根据执行方式的配置来调起相关的服务,同时会将集团编码、应用编码、项目ID、任务编码、调起参数,执行记录ID~~等~~作为参数 1. 被调度方根据执行结果和执行记录ID来更新执行记录 执行方式说明及对应的约束和配置参数说明: http方式的约束条件 ```text 被调度方需保证url对应接口在200毫秒内执行完毕 若不能保证,需要被调用方做异步处理,待异步执行完成后根据执行记录id更新执行记录结果 ``` http方式的配置参数说明 ```json { "url": "被调度方提供的访问地址,POST方式,参数会放在requestbody里面" } ``` jms方式说明 ```text 根据配置信息,将参数封装为消息对象采用topic方式发送到rabitmq 被调度方监听配置的rabitmq队列 ``` jms方式的配置参数说明 ```json { "exchange": "", "routingKey": "" } ``` ### 数据结构 *** | 任务配置 | | | | | | ----------- | ----------- | ------------ | --- | ---------------------- | | 字段 | 字段名称 | 类型 | 非空 | 备注 | | id | ID | varchar(40) | Y | 全局唯一 | | group_code | 所属集团编码 | varchar(20) | | | | app_code | 应用编码 | varchar(40) | | | | project_id | 项目ID | varchar(40) | | | | code | 任务编码 | varchar(20) | Y | | | name | 任务名称 | varchar(40) | Y | | | remark | 备注 | varchar(200) | | | | status | 状态 | bit | Y | 任务状态:0停用,1待执行,2执行中,3暂停 | | type | 执行方式 | varchar(20) | Y | 调起方式:http,jms | | config | 执行方式配置参数 | json | Y | | | params | 调起参数 | json | Y | | | cron | cron表达式 | varchar(40) | Y | | | next_time | 下次执行时间 | datetime | Y | | | time_out | 超时时间(秒) | int | Y | | | expire_time | 上次执行任务的过期时间 | datetime | | | | | | | | | | 任务执行记录 | | | | | | ---------- | ------ | ----------- | --- | -------------- | | 字段 | 字段名称 | 类型 | 非空 | 备注 | | id | ID | varchar(40) | Y | 全局唯一 | | task_id | 任务ID | varchar(40) | Y | | | start_time | 开始时间 | datetime | | | | end_time | 结束时间 | datetime | | | | success | 是否正常结束 | bit | Y | 1是,0否,否表示发生了异常 | | error_info | 错误信息 | json | Y | | | | | | | | ### 接口清单 1.保存任务配置(创建、更新) 2.保存执行记录(更新)