# 场景描述

task1

  • 新增一个待办,需要将上个节点的待办更改为已办,给另外新增待办的人,进行信息推送

  • 因为其他原因结束待办事项,或者不想给用户看到已办记录,需要通过接口改为已办

外部系统在生成一个代办消息时,通过此接口实时地将数据抛给统一网办系统,然后在一站式系统的待办栏目上即可显示接收到的代办消息。

对于已经存在的流程,先不更新推送,进入下一个节点的时候,或者新发起,再通过接口审批推送过来即可

# 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
}  

效果展示

task2

# 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" }
    ] 
}