# 场景描述
新增一个待办,需要将上个节点的待办更改为已办,给另外新增待办的人,进行信息推送
因为其他原因结束待办事项,或者不想给用户看到已办记录,需要通过接口改为已办
外部系统在生成一个代办消息时,通过此接口实时地将数据抛给统一网办系统,然后在一站式系统的待办栏目上即可显示接收到的代办消息。
对于已经存在的流程,先不更新推送,进入下一个节点的时候,或者新发起,再通过接口审批推送过来即可
# 1.获取请求授权
# 1.1对接说明
能力接入的请求接口,都需要添加请求头 api-token api-token获取方式如下:
# 1.2Token获取接口
1.2.1调用地址
http://ip:port/api/apicenter/token
1.2.2请求头
Content-Type:application/json;charset=UTF-8
1.2.3请求体(json body)
参数名 | 描述 | 类型 | 为空 | 备注 |
---|---|---|---|---|
appKey | 分配的应用key(内部分配) | String | 必填 | |
timestamp | 时间戳字符串(yyyyMMddHHmmss | String | 必填 | 认证系统分配 |
sign | 签名算法生成(参见下文签名算法) | String | 必填 |
1.2.4参数示例
{
"sign":"c9cc8dc82c8207627db6e18fbbc4c854aae31080",
"appKey":"78ecca9cf93e42438c0eb5181221316d",
"timestamp":"20210906143804"
}
1.2.5签名算法示例
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.CharsetUtils;
import org.apache.http.util.EntityUtils;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
public class SignTest {
private final static String APP_KEY = "78ecca9cf93e42438c0eb5181221316d";
private final static String APP_SECRET = "79ea2c207fe048f585442320018f2880";
private final static String HOST = "http://ip.port";
public static String getToken(String host, String appKey, String appSecret) {
String path = "/api/apicenter/token";
String url = host + path;
String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
// 签名算法(将appKey,appSecret的,时间戳按顺序拼接,使用sha1算法转16进制字符串)
String text = String.format("%s%s%s", appKey, appSecret, timestamp);
String sign = DigestUtils.sha1Hex(text);
System.out.println("sign is :" + token);
Map<String, Object> body = new HashMap<>();
body.put("appKey", appKey);
body.put("sign", sign);
body.put("timestamp", timestamp);
String json = JSON.toJSONString(body);
String responseBody = httpPost(url, json);
JSONObject responseJson = JSON.parseObject(responseBody);
return (String) responseJson.get("token");
}
public static void main(String[] args) {
String token = getToken(HOST, APP_KEY, APP_SECRET);
System.out.println("token is :" + token);
}
}
1.2.6请求示例
curl -H "Content-Type:application/json;charset=UTF-8" -X POST -d '{"sign":"c9cc8dc82c8207627db6e18fbbc4c854aae31080","appKey":"78ecca9cf93e42438c0eb5181221316d","timestamp":"20210906143804"}' https://ygu.edu.cn/api/apicenter/token
1.2.7返回示例
{
"token":"53774b0a-ea96-459d-93c6-3ab9dd784d5b",
"expireIn":86400
}
# 1.3事务中心数据接入
# 1.3.1新增待办
调用地址(POST)
http://ip:port/api/apicenter/api/approval/todo/add
请求参数
参数名 | 描述 | 类型 | 为空 | 备注 |
---|---|---|---|---|
taskName | 审批节点名称 | String | 必填 | --- |
approvalUrl | 审批模块详情页地址 | String | 第三方应用需要与认证应用填写的回调地址对应 | |
procDefName | 流程名称 | String | 必填 | --- |
assignee | 待办人工号 | String | 必填 | |
createTime | 发起时间 | Date | 必填 | yyyy-MM-dd HH:mm:ss |
processInstanceId | 流程实例唯一id | String | 必填 | 保证全系统唯一,建议使用UUID |
endTime | 结束时间 | Date | yyyy-MM-dd HH:mm:ss | |
startUserName | 流程发起人工号 | String | 必填 | |
approvalTerminal | 审批终端 | String | 必填 | 填pc或者mobile,多个逗号用隔开,默认值:pc,mobile |
mobileApprovalUrl | 手机端待办地址 | String | ||
mobileModuleUrl | 手机端模块地址 | String | ||
approvalListUrl | 审批模块列表地址 | String |
请求示例(json body)
{
"taskName": "管理员审批",
"approvalUrl": "http://192.168.0.135:8101/pcldata-auth/auth/casCallback?menuPath=/DataDevelop/DataSourceManage",
"procDefName": "测试流程",
"assignee": "admin",
"createTime": "2023-05-03 12:32:12",
"processInstanceId": ”f6e6fa4d-21e5-466b-9d9f-3ebd3228378e“,
"endTime": "2023-05-04 12:32:12",
"startUserName": "admin",
"mobileApprovalUrl": "http://192.168.0.135:8101/pcldata-auth/auth/casCallback?menuPath=/DataDevelop/DataSourceManage",
"mobileModuleUrl": "http://192.168.0.135:8101/pcldata-auth/auth/casCallback?menuPath=/DataDevelop/DataSourceManage",
"approvalTerminal": "pc,mobile",
"approvalListUrl": "http://192.168.0.135:8101/pcldata-auth/auth/casCallback?menuPath=/DataDevelop/DataSourceManage"
}
返回值
参数名 | 描述 |
---|---|
code | 返回标识(0.正常 500.错误) |
msg | 操作信息 |
data | messageId(后续更新或删除时使用) |
返回示例
{
"code": 0,
"msg": "操作成功",
"data": 101
}
效果展示
# 1.3.2更新待办
调用地址(POST)
http://ip:port/api/apicenter/api/approval/todo/update
请求参数
参数名 | 描述 | 类型 | 为空 | 备注 |
---|---|---|---|---|
messageId | 消息id | Long | 必填 | |
taskName | 审批节点名称 | String | ||
approvalUrl | 审批模块详情页地址 | String | 第三方应用需要与认证应用填写的回调地址对应 | |
procDefName | 流程名称 | String | ||
assignee | 待办人工号 | String | ||
createTime | 发起时间 | Date | yyyy-MM-dd HH:mm:ss | |
processInstanceId | 流程实例唯一id | String | 保证全系统唯一,建议使用UUID | |
endTime | 结束时间 | Date | yyyy-MM-dd HH:mm:ss | |
startUserName | 流程发起人工号 | String | 必填 | |
approvalTerminal | 审批终端 | String | 必填 | 填pc或者mobile,多个逗号用隔开,默认值:pc,mobile |
mobileApprovalUrl | 手机端待办地址 | String | ||
mobileModuleUrl | 手机端模块地址 | String | ||
approvalListUrl | 审批模块列表地址 | String |
请求示例(json body)
{
"messageId": 101,
"taskName": "管理员审批",
"approvalUrl": "http://192.168.0.135:8101/pcldata-auth/auth/casCallback?menuPath=/DataDevelop/DataSourceManage",
"procDefName": "测试流程",
"assignee": "admin",
"createTime": "2023-05-03 12:32:12",
"processInstanceId": ”f6e6fa4d-21e5-466b-9d9f-3ebd3228378e“,
"endTime": "2023-05-04 12:32:12",
"startUserName": "admin",
"approvalTerminal": "pc,mobile",
"mobileApprovalUrl": "http://192.168.0.135:8101/pcldata-auth/auth/casCallback?menuPath=/DataDevelop/DataSourceManage",
"mobileModuleUrl": "http://192.168.0.135:8101/pcldata-auth/auth/casCallback?menuPath=/DataDevelop/DataSourceManage",
"approvalListUrl": "http://192.168.0.135:8101/pcldata-auth/auth/casCallback?menuPath=/DataDevelop/DataSourceManage"
}
返回值
参数名 | 描述 |
---|---|
code | 返回标识(0.正常 500.错误) |
msg | 操作信息 |
data | 返回数据 |
返回示例
{
"code": 0,
"msg": "操作成功",
"data": null
}
# 1.3.3删除待办
调用地址(GET)
http://ip:port/api/apicenter/api/approval/todo/remove
请求参数
参数名 | 描述 | 类型 | 为空 | 备注 |
---|---|---|---|---|
messageId | 消息id | Long | 必填 |
请求示例 (Query)
?messageId=101
返回值
参数名 | 描述 |
---|---|
code | 返回标识(0.正常 500.错误) |
msg | 操作信息 |
data | 返回数据 |
返回示例
{
"code": 0,
"msg": "操作成功",
"data": null
}
# 1.3.4新增或更新流程实例
调用地址(POST)
http://ip:port/api/apicenter/api/approval/todo/processUpdate
请求参数
参数名 | 描述 | 类型 | 为空 | 备注 |
---|---|---|---|---|
processInstanceId | 流程实例id | String | 必填 | |
status | 状态 | Integer | 0.未办结 1. 通过 2. 拒绝 | |
endTime | 结束时间 Date | yyyy-MM-dd HH:mm:ss | ||
startUserName | 发起人工号 | String | ||
delFlag | 删除标识 | Integer | -1. 删除 0. 正常(删除后无法再进行修改) |
请求示例(json body)
{
"processInstanceId": ”f6e6fa4d-21e5-466b-9d9f-3ebd3228378e“,
"status": 2,
"endTime": "2023-05-04 12:32:12",
"startUserName": "admin",
"delFlag": 0
}
返回值
参数名 | 描述 |
---|---|
code | 返回标识(0.正常 500.错误) |
msg | 操作信息 |
data | 返回数据 |
返回示例
{
"code": 0,
"msg": "操作成功",
"data": null
}
# 1.3.5查询应用或者用户推送待办数量
调用地址(POST)
http://ip:port/api/apicenter/api/approval/process/appApproval
请求参数
参数名 | 描述 | 类型 | 为空 | 备注 |
---|---|---|---|---|
userName | 工号 | String | 查询该工号推送的数据 | |
nickName | 昵称 | String | 查询该昵称推送的数据 |
请求示例(json body)
{
"userName": "1",
"nickName": "2"
}
返回参数
参数名 | 描述 |
---|---|
code | 返回标识(0.正常 500.错误) |
msg | 操作信息 |
data | 返回数据 |
返回示例
{
"code": 0,
"msg": "请求成功",
"requestId": "rqxyx6Xd-nF3WEqADFUwE",
"data": [
{
"messageId": 5361,
"processInstanceId": "72fe0b64a55c11ee8d7fa6ae4f5b0e22",
"isEnd": 0,//是否办结,0进行中,1办结
"taskName": "审批节点1",
"assignee": "admin",
"endTime": null,
"createTime": "2023-12-28 16:38:18"
}
]
}
# 1.3.6查询流程状态(进行中,结束)
调用地址(POST)
http://ip:port/api/apicenter/api/approval/process/approvalState
请求参数
参数名 | 描述 | 类型 | 为空 | 备注 |
---|---|---|---|---|
messageId | 新增待办返回的唯一标识 | array | ||
processInstanceId | 状新增待办的唯一id态 | array | ||
isEnd | 结束或者进行中 | Integer | 查询进行中0或者结束1。 | |
userName | 工号 | String | 查询该用户的数据 |
请求示例(json body)
{
"userName": "123",
}
返回参数
参数名 | 描述 |
---|---|
code | 返回标识(0.正常 500.错误) |
msg | 操作信息 |
data | 返回数据 |
返回示例
{ "code": 0,
"msg": "请求成功",
"requestId": "xlCQC_5hAw6IpKhGP322L",
"data": [
{ "messageId": 6161,
"processInstanceId": "afedd434af6911ee8b8eb2c5828ef087",
"isEnd": 0,
"taskName": "审批节点",
"assignee": "admin",
"endTime": null,
"createTime": "2024-01-10 11:38:15" }
]
}