# 任务调度Api

## 接口简介

任务调度系统的CRUD与回调接口

## 接口详情

### 数据结构

| 任务调度配置 |          |      |                                          |        |                                          |
| ------------ | -------- | ---- | ---------------------------------------- | ------ | ---------------------------------------- |
| 参数名       | 类型     | 必填 | 描述                                     | 默认值 | 备注                                     |
| 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
{
  "": ""
}
```

### 查询

[通用查询](http://git.sagacloud.cn/persagy/persagy-dmp-doc/src/master/api_document/通用查询.md)

### 新增

##### 请求方法：POST

##### 请求路径：/task/cfg/create

##### 请求参数：

```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": "123456"
    }
}
```

错误JSON示例

```json
{
    "result": "success",
    "message": "错误信息,如果接口发生错误会返回该字段"
}
```

### 更新

##### 请求方法：POST

##### 请求路径：/task/cfg/update

##### 请求参数：

```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
{
    "timestamp": "2020-09-28T14:17:08.274+0000",
    "status": 500,
    "error": "",
    "message": "",
    "path": "/task/cfg/update"
}
```

### 删除

##### 请求方法：POST

##### 请求路径：/task/cfg/delete

##### 请求参数：

```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": null
}
```

错误JSON示例

```json
{
    "timestamp": "2020-09-28T14:16:24.900+0000",
    "status": 500,
    "error": "Internal Server Error",
    "message": "No class com.persagy.dmp.dpt.entity.TaskCfg entity with id 1234567 exists!",
    "path": "/task/cfg/delete"
}
```

### 回调接口

##### 请求方法：POST

##### 请求路径：/task/cfg/receive

##### 请求参数：

```json
["1","2"]
```

##### 返回结果：

正确JSON示例

```json
{
    "result": "success",
    "message": null,
    "data": null
}
```

错误JSON示例

```json
{
    "timestamp": "2020-09-28T14:16:24.900+0000",
    "status": 500,
    "error": "Internal Server Error",
    "message": "No class com.persagy.dmp.dpt.entity.TaskCfg entity with id 1234567 exists!",
    "path": "/task/cfg/delete"
}
```

### 备注说明

无

### 修改日志

见git提交记录