1. 概述编辑
1.1 版本
FineDataLink 版本 | JAR包时间 | 开放平台-FineDataLink接口插件 |
---|---|---|
4.0.28 | Build#persist-2023.08.25.13.49.26.482 | 1.0.1 |
1.2 应用场景
用户希望能够按需触发\执行定时任务,以提高数据时效性,场景如下所示:
业务人员在 FR 填报页面录入数据后,数据需要经 FDL 的定时任务计算形成结果数据,期望能够及时看到最新的数据。
业务人员期望能够在报表上看到实时的数据,或者有个按钮能够触发数据更新。
企业自建或采购的业务系统,期望能够在某些动作完成后触发定时任务执行,使数据的更新时效性更高。
业务人员在简道云录入数据后,数据需要经 FDL 的定时任务做同步或处理,期望能够及时看到最新的数据。
1.3 功能简介
使用「开放平台-FineDataLink接口」插件,可提供 FineDataLink 相关接口,满足用户按需触发/执行定时任务的需求。
2. 插件介绍编辑
注:API 管理更多介绍请参见文档:开放平台插件
2.1 安装插件
1)用户需要先注册 功能点,才能正常使用该插件。
2)需要先安装「开放平台」插件,再安装「开放平台-FineDataLink接口」插件。
注:FineReport11.0 中已内置「开放平台」插件,只需安装「开放平台-FineDataLink接口」插件即可。
点击下载插件:开放平台插件、
安装插件方法请参见:服务器插件管理
2.2 安装成功后界面介绍
2.2.1 任务id
插件安装成功后,「数据开发」处展示的定时任务新增「任务ID」信息,且支持复制。如下图所示:
2.2.2 运行记录ID
点击「管理系统>任务运维>运行记录」,可查看记录ID,鼠标悬停支持复制。如下图所示:
3. 接口介绍编辑
注:实例ID即为运行记录ID,运行记录ID在「任务运维>定时任务>运行记录」中查看。
3.1 根据任务ID查询实例列表
基本信息:
接口URL:http://localhost:8080/webroot/decision/sp/client/api/fdl/workId/records
Content-Type:application/json
请求类型:POST
请求参数:
1)Header 请求参数
参数名 | 参数值 | 是否必填 | 参数类型 | 描述说明 |
---|---|---|---|---|
client_id | {{CLIENT_ID}} | 是 | String | 接口鉴权使用的client_id参数,此处使用AkSk认证,可根据应用鉴权方式灵活替换 |
secret | {{SECRET}} | 是 | String | 接口鉴权使用的secret参数,此处使用AkSk认证,可根据应用鉴权方式灵活替换 |
2)body请求参数:
{
"workId": "e10f1f1a-d567-4058-98bb-b71204154f8b",
"latest": false, //【非必填】仅查询最近一次:是、否 /*不填则为否*/
"startTime": "", //【非必填】开始时间 /*不填则为无限*/
"finishTime": "", //【非必填】结束时间 /*不填则为无限*/
"taskStatus": "SUCCESS", //【非必填】运行状态:成功、失败、中断、运行中 /*不填则返回所有*/ 枚举值: INITIAL SUCCESS FAIL RUNNING DUPLICATE INVALID ERROR INTERRUPT
"triggerMethod": "MANUAL" //【非必填】触发方式:手动、定时 /*不填则返回所有*/ 枚举:MANUAL FIX_TIME
}
参数名 | 参数值 | 是否必填 | 参数类型 | 描述说明 |
---|---|---|---|---|
latest | false | 否 | Boolean | 【非必填】仅查询最近一次:是、否,不填则为否 |
startTime | 否 | String | 【非必填】开始时间 ,不填则为无限 | |
finishTime | 否 | String | 【非必填】结束时间,不填则为无限 | |
taskStatus | 否 | String | 【非必填】运行状态:成功、失败、中断、运行中,不填则返回所有,枚举值: INITIAL SUCCESS FAIL RUNNING DUPLICATE INVALID ERROR INTERRUPT | |
triggerMethod | MANUAL | 否 | String | 【非必填】触发方式:手动、定时,不填则返回所有,枚举:MANUAL FIX_TIME |
响应示例:
成功
{
"status": 200,
"data": {
"executeIds": [
"7d5a4b14-f0de-47b8-91ad-a8777b76236c",
"0d20a589-e66f-4b47-8256-e40e0252eea2",
"24c6d78a-2d4f-40b5-b9fb-08eef1133612",
"9fa0d375-89f4-425f-8e39-0c6de623637a",
]
}
}
参数名 | 参数值 | 参数类型 | 描述说明 |
---|---|---|---|
status | 200 | Integer | |
data | Object | ||
data.executeIds | 7d5a4b14-f0de-47b8-91ad-a8777b76236c | Array | 实例ID列表 实例ID即为运行记录ID |
3.2 根据任务名查询实例列表
基本信息:
接口URL:http://localhost:8080/webroot/decision/sp/client/api/fdl/workName/records
Content-Type:application/json
请求类型:POST
请求参数:
1)Header 请求参数
参数名 | 参数值 | 是否必填 | 参数类型 | 描述说明 |
---|---|---|---|---|
client_id | {{CLIENT_ID}} | 是 | String | 接口鉴权使用的client_id参数,此处使用AkSk认证,可根据应用鉴权方式灵活替换 |
secret | {{SECRET}} | 是 | String | 接口鉴权使用的secret参数,此处使用AkSk认证,可根据应用鉴权方式灵活替换 |
2)body请求参数:
{
"workName": "fdlDemo", //【必填】任务名称
"latest": true, //【非必填】仅查询最近一次:是、否 /*不填则为否*/
"startTime": "", //【非必填】开始时间 /*不填则为无限*/
"finishTime": "", //【非必填】结束时间 /*不填则为无限*/
"taskStatus": "SUCCESS", //【非必填】运行状态:成功、失败、中断、运行中 /*不填则返回所有*/ 枚举值: INITIAL SUCCESS FAIL RUNNING DUPLICATE INVALID ERROR INTERRUPT
"triggerMethod": "FIX_TIME" //【非必填】触发方式:手动、定时 /*不填则返回所有*/ 枚举:MANUAL FIX_TIME
}
参数名 | 参数值 | 是否必填 | 参数类型 | 描述说明 |
---|---|---|---|---|
workName | fdlDemo | 是 | String | 【必填】任务名称 |
latest | true | 否 | Boolean | 【非必填】仅查询最近一次:是、否,不填则为否 |
startTime | 否 | String | 【非必填】开始时间,不填则为无限 | |
finishTime | 否 | String | 【非必填】结束时间,不填则为无限 | |
taskStatus | SUCCESS | 否 | String | 【非必填】运行状态:成功、失败、中断、运行中,不填则返回所有,枚举值: INITIAL SUCCESS FAIL RUNNING DUPLICATE INVALID ERROR INTERRUPT |
triggerMethod | FIX_TIME | 否 | String | 【非必填】触发方式:手动、定时,不填则返回所有,枚举:MANUAL FIX_TIME |
响应示例:
1)成功
注:无查询结果时返回空值。
{
"status": 200,
"data": {
"executeIds": [
"40fc80c6-ac03-4943-b6d7-e79ff5cca581"
]
}
}
参数名 | 参数值 | 参数类型 | 描述说明 |
---|---|---|---|
status | 200 | Integer | |
data | Object | ||
data.executeIds | 40fc80c6-ac03-4943-b6d7-e79ff5cca581 | Array | 实例ID列表 |
2)失败
{
"status": 200,
"errorCode": "E8130031",
"errorMsg": "任务不存在,无法获取文件"
}
参数名 | 参数值 | 参数类型 | 描述说明 |
---|---|---|---|
status | 200 | Integer | |
errorCode | E8130031 | String | |
errorMsg | 任务不存在,无法获取文件 | String |
3.3 根据实例ID查询实例信息
基本信息:
接口URL:http://localhost:8080/webroot/decision/sp/client/api/fdl/record/info?recordId=
请求类型:GET
请求参数:
Query 请求参数:
参数名 | 参数值 | 是否必填 | 参数类型 | 描述说明 |
---|---|---|---|---|
recordId | 16f7f568-767f-4786-bb2c-5dbc64cfbcad | 是 | String |
响应示例:
1)成功:
{
"status": 200, //【非必填】运行状态:成功、失败、中断、运行中 /*不填则返回所有*/
"data": {
"recordId": "16f7f568-767f-4786-bb2c-5dbc64cfbcad", //实例ID
"taskId": "868478d9-a36d-481f-b42d-6074310c2829", //任务ID
"taskName": "fdlDemo", //任务名称
"taskPath": "任务列表/一级目录/fdlDemo", //任务目录
"status": "INTERRUPT", //实例运行状态
"startTime": 1690786927020, //实例运行开始时间
"finishTime": 1690786944299, //实例运行结束时间
"triggerMethod": "MANUAL", //实例触发方式
"triggerBy": "root" //实例触发人
}
}
参数名 | 参数值 | 参数类型 | 描述说明 |
---|---|---|---|
status | 200 | Integer | 【非必填】运行状态:成功、失败、中断、运行中,不填则返回所有 |
data | Object | ||
data.recordId | 16f7f568-767f-4786-bb2c-5dbc64cfbcad | String | 实例ID 实例ID即为运行记录ID |
data.taskId | 868478d9-a36d-481f-b42d-6074310c2829 | String | 任务ID |
data.taskName | fdlDemo | String | 任务名称 |
data.taskPath | 任务列表/一级目录/fdlDemo | String | 任务目录 |
data.status | INTERRUPT | String | 实例运行状态 |
data.startTime | 1690786927020 | Integer | 实例运行开始时间 |
data.finishTime | 1690786944299 | Integer | 实例运行结束时间 |
data.triggerMethod | MANUAL | String | 实例触发方式 |
data.triggerBy | root | String | 实例触发人 |
2)失败
{
"status": 200,
"errorCode": "E8130012",
"errorMsg": "can not find record by recordId"
}
参数名 | 参数值 | 参数类型 | 描述说明 |
---|---|---|---|
status | 200 | Integer | |
errorCode | E8130011 | String | |
errorMsg | can not find record by recordId | String |
3)无权限
{
"status": 200,
"errorCode": "E8130011",
"errorMsg": "用户没有权限"
}
参数名 | 参数值 | 是否必填 | 参数类型 | 描述说明 |
---|---|---|---|---|
status | 200 | 是 | Integer | |
errorCode | E8130011 | 是 | String | |
errorMsg | 用户没有权限 | 是 | String |
3.4 基于任务ID运行任务
基本信息:
接口URL:http://localhost:8080/webroot/decision/sp/client/api/fdl/workId/execute
Content-Type:application/json
请求类型:POST
请求参数:
1)Header 请求参数
参数名 | 参数值 | 是否必填 | 参数类型 | 描述说明 |
---|---|---|---|---|
client_id | {{CLIENT_ID}} | 是 | String | 接口鉴权使用的client_id参数,此处使用AkSk认证,可根据应用鉴权方式灵活替换 |
secret | {{SECRET}} | 是 | String | 接口鉴权使用的secret参数,此处使用AkSk认证,可根据应用鉴权方式灵活替换 |
2)body请求参数:
{
"workId": "e10f1f1a-d567-4058-98bb-b71204154f8b",
"params": {
"paramName": "paramValue"
},
"waitForResponse": false,
"waitTime": 10000
}
参数名 | 参数值 | 是否必填 | 参数类型 | 描述说明 |
---|---|---|---|---|
workId | e10f1f1a-d567-4058-98bb-b71204154f8b | 是 | String | 【必填】任务ID |
params | 否 | Object | 【非必填】执行参数 | |
params.paramName | paramValue | 否 | String | 【非必填】执行参数 |
waitForResponse | true | 否 | String | 【非必填】等待任务运行完成再返回内容,是、否 ,不填则为否,为否时直接返回实例ID或请求的结果,不返回运行结果 |
waitTime | 10000 | 否 | String | 【非必填】等待时间 单位毫秒 缺省值 60000毫秒 |
响应示例:
1)成功
{
"status": 200,
"data": {
"recordId": "70aa0661-c626-4c55-bbba-e392624945fa", //运行实例ID
"status": "SUCCESS" //运行实例状态
}
}
参数名 | 参数值 | 参数类型 | 描述说明 |
---|---|---|---|
status | 200 | Integer | |
data | Object | ||
data.recordId | 70aa0661-c626-4c55-bbba-e392624945fa | String | 运行实例ID 实例ID即为运行记录ID |
data.status | SUCCESS | String | 实例运行结果,成功、失败、中断,仅当请求参数【等待任务运行完成再返回内容】为【是】时返回此内容 |
2)失败
{
"status": 200,
"errorCode": "E8130051",
"errorMsg": "任务不存在,无法获取文件"
}
参数名 | 参数值 | 参数类型 | 描述说明 |
---|---|---|---|
status | 200 | Integer | |
errorCode | E8130051 | String | |
errorMsg | 任务不存在,无法获取文件 | String |
3)必填为空
{
"status": 200,
"errorCode": "E8130052",
"errorMsg": "workId can not be null!"
}
参数名 | 参数值 | 参数类型 |
---|---|---|
status | 200 | Integer |
errorCode | E8130052 | String |
errorMsg | workId can not be null! | String |
4)没有权限操作
{
"status": 200,
"errorCode": "E8130059",
"errorMsg": "用户没有权限"
}
参数名 | 参数值 | 参数类型 |
---|---|---|
status | 200 | Integer |
errorCode | E8130059 | String |
errorMsg | 用户没有权限 | String |
3.5 基于任务名运行任务
基本信息:
接口URL:http://localhost:8080/webroot/decision/sp/client/api/fdl/workName/execute
Content-Type:application/json
请求类型:POST
请求参数:
1)Header 请求参数
参数名 | 参数值 | 是否必填 | 参数类型 | 描述说明 |
---|---|---|---|---|
client_id | {{CLIENT_ID}} | 是 | String | 接口鉴权使用的client_id参数,此处使用AkSk认证,可根据应用鉴权方式灵活替换 |
secret | {{SECRET}} | 是 | String | 接口鉴权使用的secret参数,此处使用AkSk认证,可根据应用鉴权方式灵活替换 |
2)body请求参数:
{
"workName": "fdlDemo", //【必填】任务名称
"params": {
"paramName": "paramValue" //【非必填】执行参数
}, //【非必填】执行参数
"waitForResponse": "true", //【非必填】等待任务运行完成再返回内容
"waitTime": 10000
}
参数名 | 参数值 | 是否必填 | 参数类型 | 描述说明 |
---|---|---|---|---|
workName | fdlDemo | 是 | String | 【必填】任务名称 |
params | 否 | Object | 【非必填】执行参数 | |
params.paramName | paramValue | 否 | String | 【非必填】执行参数 |
waitForResponse | true | 否 | String | 【非必填】等待任务运行完成再返回结果,是、否 ,不填则为否,为否时直接返回实例ID或请求的结果,不返回运行结果 |
timeout | 10000 | 否 | String | 【非必填】等待时间 单位毫秒 缺省值 60000毫秒 |
响应示例:
1)成功
{
"status": 200,
"data": {
"recordId": "e14169b9-328c-4b62-8a75-abc546f61d38",
"status": "SUCCESS"
}
}
参数名 | 参数值 | 参数类型 | 描述说明 |
---|---|---|---|
status | 200 | Integer | |
data | Object | ||
data.recordId | e14169b9-328c-4b62-8a75-abc546f61d38 | String | 运行实例ID |
data.status | SUCCESS | String | 实例运行结果,成功、失败、中断,仅当请求参数【等待任务运行完成再返回内容】为【是】时返回此内容 |
2)失败
{
"status": 200,
"errorCode": "E8130061",
"errorMsg": "任务不存在,无法获取文件"
}
参数名 | 参数值 | 参数类型 | 描述说明 |
---|---|---|---|
status | 200 | Integer | |
errorCode | E8130061 | String | |
errorMsg | 任务不存在,无法获取文件 | String |
3)必填为空
{
"status": 200,
"errorCode": "E8130061",
"errorMsg": "workName can not be null!"
}
参数名 | 参数值 | 参数类型 |
---|---|---|
status | 200 | Integer |
errorCode | E8130061 | String |
errorMsg | workName can not be null! | String |
4)没有权限操作
{
"status": 200,
"errorCode": "E8130069",
"errorMsg": "用户没有权限"
}
参数名 | 参数值 | 参数类型 |
---|---|---|
status | 200 | Integer |
errorCode | E8130069 | String |
errorMsg | 用户没有权限 | String |
3.6 基于任务ID终止运行中实例
不会检查实例是否处于运行状态,因此终止实例,会把等待运行的实例也终止掉。
请求成功不代表终止成功,终止有一定的延迟。
基本信息:
接口URL:http://localhost:8080/webroot/decision/sp/client/api/fdl/workId/terminate?workId=e10f1f1a-d567-4058-98bb-b71204154f8b
请求类型:POST
请求参数:
1)Header 请求参数
参数名 | 参数值 | 是否必填 | 参数类型 | 描述说明 |
---|---|---|---|---|
client_id | {{CLIENT_ID}} | 是 | String | 接口鉴权使用的client_id参数,此处使用AkSk认证,可根据应用鉴权方式灵活替换 |
secret | {{SECRET}} | 是 | String | 接口鉴权使用的secret参数,此处使用AkSk认证,可根据应用鉴权方式灵活替换 |
2)Query 请求参数:
参数名 | 参数值 | 是否必填 | 参数类型 | 描述说明 |
---|---|---|---|---|
workId | 868478d9-a36d-481f-b42d-6074310c2829 | 是 | String | 【必填】任务ID |
响应示例:
成功
{
"code": "200",
"message": "success"
}
参数名 | 参数值 | 参数类型 | 描述说明 |
---|---|---|---|
code | 200 | String | |
message | success | String |
3.7 基于任务名终止运行中实例
不会检查实例是否处于运行状态,因此终止实例,会把等待运行的实例也终止掉。
请求成功不代表终止成功,终止有一定的延迟。
基本信息:
接口URL:http://localhost:8080/webroot/decision/sp/client/api/fdl/workName/terminate?workName=01数据同步
请求类型:POST
请求参数:
1)Header 请求参数
参数名 | 参数值 | 是否必填 | 参数类型 | 描述说明 |
---|---|---|---|---|
client_id | {{CLIENT_ID}} | 是 | String | 接口鉴权使用的client_id参数,此处使用AkSk认证,可根据应用鉴权方式灵活替换 |
secret | {{SECRET}} | 是 | String | 接口鉴权使用的secret参数,此处使用AkSk认证,可根据应用鉴权方式灵活替换 |
2)Query 请求参数:
参数名 | 参数值 | 是否必填 | 参数类型 | 描述说明 |
---|---|---|---|---|
workName | 01数据同步 | 是 | String | 【必填】任务名称 |
响应示例:
1)成功
{
"code": "200",
"message": "success"
}
参数名 | 参数值 | 参数类型 | 描述说明 |
---|---|---|---|
code | 200 | String | |
message | success | String |
2)失败
{
"status": 200,
"errorCode": "E8130089",
"errorMsg": "任务不存在,无法获取文件"
}
参数名 | 参数值 | 参数类型 | 描述说明 |
---|---|---|---|
status | 200 | Integer | |
errorCode | E8130089 | String | |
errorMsg | 任务不存在,无法获取文件 | String |
3.8 基于实例ID终止运行中实例
不会检查实例是否处于运行状态,因此终止实例,会把等待运行的实例也终止掉。
请求成功不代表终止成功,终止有一定的延迟。
基本信息:
接口URL:http://localhost:8080/webroot/decision/sp/client/api/fdl/records/terminate
Content-Type:application/json
请求类型:POST
请求参数:
1)Header 请求参数
参数名 | 参数值 | 是否必填 | 参数类型 | 描述说明 |
---|---|---|---|---|
client_id | {{CLIENT_ID}} | 是 | String | 接口鉴权使用的client_id参数,此处使用AkSk认证,可根据应用鉴权方式灵活替换 |
secret | {{SECRET}} | 是 | String | 接口鉴权使用的secret参数,此处使用AkSk认证,可根据应用鉴权方式灵活替换 |
2)Body 请求参数:
{
"executeIds": [
"16f7f568-767f-4786-bb2c-5dbc64cfbcad222"
] //【必填】运行实例ID
}
参数名 | 参数值 | 是否必填 | 参数类型 | 描述说明 |
---|---|---|---|---|
executeIds | 16f7f568-767f-4786-bb2c-5dbc64cfbcad | 是 | Array | 【必填】运行实例ID |
响应示例:
1)成功
{
"status": 200,
"data": "success"
}
参数名 | 参数值 | 参数类型 |
---|---|---|
status | 200 | Integer |
data | success | String |
2)失败
{
"status": 200,
"errorCode": "E8130042",
"errorMsg": "executeIds can not be null!"
}
参数名 | 参数值 | 参数类型 |
---|---|---|
status | 200 | Integer |
errorCode | E8130042 | String |
errorMsg | executeIds can not be null! | String |