Sfoglia il codice sorgente

添加任务调度

wudla 4 anni fa
parent
commit
5c6948cd84
6 ha cambiato i file con 451 aggiunte e 1 eliminazioni
  1. 12 1
      docs/.vuepress/config.js
  2. 102 0
      docs/dpt/dpt_.md
  3. 226 0
      docs/dpt/dpt_api.md
  4. 37 0
      docs/dpt/dpt_ddl_sql.md
  5. 66 0
      docs/dpt/dpt_design.md
  6. 8 0
      docs/dpt/index.md

+ 12 - 1
docs/.vuepress/config.js

@@ -8,7 +8,8 @@ module.exports = {
             { text: '通用查询接口', link: '/utils/query' },
             { text: '物理世界', link: '/rwd/' },
             { text: '人员组织权限', link: '/org/' },
-            { text: '数据标准化', link: '/dic/'}
+            { text: '数据标准化', link: '/dic/'},
+            { text: '任务调度', link: '/dpt/' }
             ],
 
         sidebarDepth: 1,
@@ -33,6 +34,16 @@ module.exports = {
                     ]
                 }
             ],
+            '/dpt': [
+                {
+                    title: '数据标准化',
+                    collapsable: false,
+                    children: [
+                        {title: '接口文档', path: '/dpt/dpt_api'},
+                        {title: '数据结构设计', path: '/dpt/dpt_design'}
+                    ]
+                }
+            ],
             '/dic': [
                 {
                     title: '数据标准化',

+ 102 - 0
docs/dpt/dpt_.md

@@ -0,0 +1,102 @@
+### 数据模型
+
+***
+
+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.保存执行记录(更新)
+

+ 226 - 0
docs/dpt/dpt_api.md

@@ -0,0 +1,226 @@
+# 任务调度接口文档
+
+## 系统接口
+
+#### 查询
+
+[通用查询](http://git.sagacloud.cn/persagy/persagy-dmp-doc/src/master/api_document/通用查询.md)
+
+### 任务配置
+
+#### 新增
+
+请求方法:POST
+
+请求路径:/task/cfg/create?userId=用户id&groupCode=集团编码&projectId=项目Id&appId=应用id
+
+请求参数:
+
+```json
+{
+    "groupCode": "1",
+    "appCode": "2",
+    "projectId": "123",
+    "code": "456",
+    "name": "QKZZ",
+    "type": "JMS",
+    "config": {
+        "queue": "",
+        "exchange": "",
+        "routing": ""
+    },
+    "params": {
+        "test":"123"
+    },
+    "timeRule": {
+      "triggerStartTime":"任务通知的开始日期,格式:时间戳,当cron为空时,必须存在",
+      "triggerEndTime":"任务通知的结束日期,格式:时间戳",
+      "intervalTime":"数值型,任务上下两次通知的间隔时间,单位:秒",
+      "repeatCount":"数值型,任务通知次数(不包含任务启动的那一次)当其大于0时,intervalTime也必须大于0",
+      "cron":"cron表达式",
+      "alarmEmail":"报警邮箱"
+    },
+    "startTime": "1600167750640",
+    "endTime": "1600167750640",
+    "responseTime": 500,
+    "level": "10",
+    "remark": "测试"
+}
+```
+
+返回结果:
+
+正确JSON示例
+
+```json
+{
+    "result": "success",
+    "message": null,
+    "data": {
+        "id": "123456"
+    }
+}
+```
+
+错误JSON示例
+
+```json
+{
+    "result": "fail",
+    "message": "错误信息,如果接口发生错误会返回该字段"
+}
+```
+
+#### 更新(全量更新)
+
+请求方法:POST
+
+请求路径:/task/cfg/update?userId=用户id&groupCode=集团编码&projectId=项目Id&appId=应用id
+
+请求参数:
+
+```json
+{
+    "id":"123456",
+    "groupCode": "1",
+    "appCode": "2",
+    "projectId": "123",
+    "code": "456",
+    "name": "QKZZ",
+    "type": "JMS",
+    "config": {
+        "queue": "",
+        "exchange": "",
+        "routing": ""
+    },
+    "params": {
+        "test":"123"
+    },
+    "timeRule": {
+      "triggerStartTime":"任务通知的开始日期,格式:时间戳,当cron为空时,必须存在",
+      "triggerEndTime":"任务通知的结束日期,格式:时间戳",
+      "intervalTime":"数值型,任务上下两次通知的间隔时间,单位:秒",
+      "repeatCount":"数值型,任务通知次数(不包含任务启动的那一次)当其大于0时,intervalTime也必须大于0",
+      "cron":"cron表达式",
+      "alarmEmail":"报警邮箱"
+    },
+    "startTime": "1600167750640",
+    "endTime": "1600167750640",
+    "responseTime": 500,
+    "level": "10",
+    "remark": "测试"
+}
+```
+
+返回结果:
+
+正确JSON示例
+
+```json
+{
+    "result": "success",
+    "message": null,
+    "data": {
+        "id": "c51a599e-e833-4088-911a-8b535bddfe0b"
+    }
+}
+```
+
+错误JSON示例
+
+```json
+{
+    "result": "fail",
+    "message": ""
+}
+```
+
+#### 删除
+
+请求方法:POST
+
+请求路径:/task/cfg/delete?userId=用户id&groupCode=集团编码&projectId=项目Id&appId=应用id
+
+请求参数:
+
+```json
+{
+    "id":"123456"
+}
+```
+
+返回结果:
+
+正确JSON示例
+
+```json
+{
+    "result": "success",
+    "message": null,
+    "data": {
+        "id": "c51a599e-e833-4088-911a-8b535bddfe0b"
+    }
+}
+```
+
+错误JSON示例
+
+```json
+{
+    "result": "fail",
+    "message": ""
+}
+```
+
+#### 回调接口
+
+请求方法:POST
+
+请求路径:/task/cfg/receive?userId=用户id&groupCode=集团编码&projectId=项目Id&appId=应用id
+
+请求参数:
+
+```json
+["1","2"]
+```
+
+返回结果:
+
+正确JSON示例
+
+```json
+{
+    "result": "success",
+    "message": null,
+    "data": null
+}
+```
+
+错误JSON示例
+
+```json
+{
+    "result": "fail",
+    "message": ""
+}
+```
+
+## 任务记录
+
+请求方法:POST
+
+请求路径:/task/record/query
+
+请求参数:
+
+```json
+查询字段:
+{
+  "id": "1",
+  "taskId": "t1",
+  "startTime": 1602802722000,
+  "endTime": 1602802725000,
+  "success": 1
+}
+```
+

+ 37 - 0
docs/dpt/dpt_ddl_sql.md

@@ -0,0 +1,37 @@
+# 任务调度系统数据表
+
+## 任务配置
+
+DROP TABLE IF EXISTS `dpt_task_cfg`;
+
+CREATE TABLE dpt_task_cfg (
+    id varchar(40) NOT NULL PRIMARY KEY,
+    group_code varchar(20) NULL COMMENT '集团编码',
+    app_code varchar(40) NULL COMMENT '应用编码',
+    project_id varchar(40) NULL COMMENT '项目ID',
+    code varchar(20) NOT NULL COMMENT '任务编码',
+    name varchar(40) NOT NULL COMMENT '任务名称',
+    type varchar(20) NOT NULL COMMENT '执行方式:http、jms',
+    config json NOT NULL COMMENT '执行方式配置参数',
+    params json NOT NULL COMMENT '调起参数',
+    time_rule json NOT NULL COMMENT '调起频率',
+    start_time timestamp NULL COMMENT '开始时间',
+    end_time timestamp NULL COMMENT '结束时间',
+    response_time int NOT NULL COMMENT '任务接口的处理时长,用于任务启停消峰控制',
+    level varchar(20) NOT NULL COMMENT '优先级,用于任务启停消峰控制',
+    status int NOT NULL COMMENT '状态',
+    remark varchar(200) COMMENT '备注'
+) COMMENT '任务配置';
+
+## 任务执行记录
+
+DROP TABLE IF EXISTS `dpt_task_record`;
+
+CREATE TABLE dpt_task_record (
+    id varchar(40) NOT NULL PRIMARY KEY,
+    task_id varchar(40) NOT NULL COMMENT '任务配置ID',
+    start_time timestamp NULL COMMENT '开始时间',
+    end_time timestamp NULL COMMENT '结束时间',
+    success int NOT NULL COMMENT '1是,0否,否表示发生了异常',
+    error_info json NOT NULL COMMENT '错误信息'
+) COMMENT '任务执行记录';

+ 66 - 0
docs/dpt/dpt_design.md

@@ -0,0 +1,66 @@
+# 任务调度
+
+## 数据结构
+
+### 数据结构
+
+| 任务调度配置 |          |      |                                          |        |                                          |
+| ------------ | -------- | ---- | ---------------------------------------- | ------ | ---------------------------------------- |
+| 参数名       | 类型     | 必填 | 描述                                     | 默认值 | 备注                                     |
+| id           | String   | Y    |                                          | UUID   | 新建时如果为空,则默认为UUID             |
+| groupCode    | String   |      | 所属集团编码                             |        |                                          |
+| appCode      | String   |      | 应用编码                                 |        |                                          |
+| projectId    | String   |      | 项目ID                                   |        |                                          |
+| code         | String   | Y    | 任务编码                                 |        |                                          |
+| name         | String   | Y    | 任务名称                                 |        |                                          |
+| type         | String   | Y    | 执行方式                                 |        | http 或者 jms                            |
+| config       | Json     | Y    | 执行方式配置参数                         |        |                                          |
+| params       | Json     | Y    | 调起参数                                 |        |                                          |
+| timeRule     | Json     | Y    | 调起频率                                 |        |                                          |
+| startTime    | datetime |      | 开始时间                                 |        |                                          |
+| endTime      | datetime |      | 结束时间                                 |        |                                          |
+| responseTime | datetime | Y    | 任务接口的处理时长,用于任务启停消峰控制 |        | 任务接口的处理时长,用于任务启停消峰控制 |
+| level        | String   | Y    | 优先级                                   |        | 用于任务启停消峰控制                     |
+| remark       | String   |      | 备注                                     |        |                                          |
+
+##### 字段保存格式规则说明
+
+```json
+time_rule:cron表达式,和triggerStartTime必须存在其一
+{
+  "triggerStartTime":"任务通知的开始日期,格式:时间戳,当cron为空时,必须存在",
+  "triggerEndTime":"任务通知的结束日期,格式:时间戳",
+  "intervalTime":"数值型,任务上下两次通知的间隔时间,单位:秒",
+  "repeatCount":"数值型,任务通知次数(不包含任务启动的那一次)当其大于0时,intervalTime也必须大于0",
+  "cron":"cron表达式",
+  "alarmEmail":"报警邮箱"
+}
+
+config:
+{
+  "queue": "",
+  "exchange": "",
+  "routing": ""
+}
+
+params
+{
+  "": ""
+}
+```
+
+
+
+
+
+| 任务执行记录 |              |             |      |                            |
+| ------------ | ------------ | ----------- | ---- | -------------------------- |
+| 字段         | 字段名称     | 类型        | 非空 | 备注                       |
+| 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    |                            |
+|              |              |             |      |                            |
+

+ 8 - 0
docs/dpt/index.md

@@ -0,0 +1,8 @@
+## 数据标准化
+
+#### [接口文档](/dpt/dpt_api.md)
+
+#### [数据结构设计](/dpt/dpt_design.md)
+
+
+