事务中台提供接口,由业务方将数据推送到事务中台;接口包含待办创建、办理、终止、撤回等操作;待办的状态流转由业务方调用接口实现。
# 事务中心设计结构
描述:
事务创建前置条件:第三方申请注册事务办理接口(可选)
事务办理中心过程:
1.发起者创建实例,第三方通过任务发起接口(接口API
实例发起),产生包括:实例记录主表,任务记录表,办理者规则表;
2.办理者可以通过办理者规则,追寻到任务,包括 待办、已办、发起、传阅等;
3.办理者通过办理、查阅接口进行内容访问,访问形式包括有:流程表单访问,第三方表单,第三方事务等(以流程表单事务为第一视角);
4.办理者办理业务,第三方通过任务办理接口(接口API
实例改变),改变原任务状态,并根据参数判定是否产生新的任务;
实例创建 - 任务发起
任务变更
# POA对接
所有“time”结尾参数,都是时间类型,请准确 yyyy-MM-dd HH:mm:ss
注意修改域名为实际学校环境域名
# 事务中心对接
直接调用事务中心api
所有接口都要带请求头 X-FORWARD-ID-TOKEN,请求头值,请参阅。https://poa-docsify.dev2.supwisdom.com/#/consumer/index
(可选 2无法完成情况下必选)固定请求头(setHeader)参数值 formflowUserName 请求值为poa userid(若未接入poa,传递执行者学/工号即可)
# 接口响应值说明
# POST 创建实例与任务
请求参数名称:json (字段类型:JsonObject.toString())
请求参数方式:post
下列参数中,除keys属于分配外,无任何固定值.
assignee、candidate、groupId三种办理人指定参数取其一,请勿指定多种类型。
地址:/v1/poa/instance
参数名 | 类型 | 是否必填 | 说明 | ||
---|---|---|---|---|---|
keys | string (64) | 是 | 事务中心分配,第三方接入凭证 | ||
TtcInfoList | array | 是 | 实例数据集合 | ||
createTime | datetime | 是 | 创建时间 格式 yyyy-MM-dd HH:mm:ss | ||
createName | string(128) | 是 | 创建人姓名 | ||
creator | string (64) | 是 | 创建人 (学工号/ID,根据userPoaFlag传参决定) | ||
name | string (255) | 是 | 实例名称 | ||
serialNumber | string(12) | 是 | 流水号 | ||
userPoaFlag | string | 是 | 0/1 0标识传递学工号 1标识为ID | ||
processRoleName | string( 64) | 否 | 事务所属分类(预留) | ||
TtcDetailList | array | 是 | 明细数据集合(任务) | ||
id | string | 否 | 为了避免重复的可能性,第三方接入不需填写 | ||
appId | string( 64) | 是 | 应用服务id(也是服务id或流程id,由第三方提供,与代理的应用服务相关联) | ||
taskId | string( 64) | 是 | 任务id | ||
taskName | string( 255) | 是 | 任务名称 | ||
transName | string( 255) | 是 | 事务名称 | ||
transTypeName | string( 255) | 否 | 事务类型名称,为空会取transName作为类型名称 | ||
transResource | string( 255) | 是 | 事务来源 | ||
serialNumber | string( 12) | 是 | 流水号 (业务字段) | ||
applyTime | datetime | 是 | 申请时间 格式 yyyy-MM-dd HH:mm:ss | ||
assignee | string( 64) | 否 | 办理人-用户(学工号/ID,根据userPoaFlag传参决定) (候选/用户/用户组 三选一 ) | ||
candidate | array | 否 | 办理人-候选(学工号/ID,根据userPoaFlag传参决定) | ||
groupId | string( 64) | 否 | 办理人-用户组 (该组id是属于用户中心的组id,第三方未接入勿用) | ||
createTime | datetime | 是 | 创建时间 格式 yyyy-MM-dd HH:mm:ss | ||
formUrl | string( 2000) | 是 | 查阅地址,这个地址会在界面打开并传递jwt token | ||
mobileUrl | string( 2000) | 是 | 移动端查阅地址,这个地址会在界面打开并传递jwt token | ||
handleUrl | string( 2000) | 是 | 处理地址,这个地址会在界面打开并传递jwt token | ||
mobileHandleUrl | string( 2000) | 是 | 移动端处理地址,这个地址会在界面打开并传递jwt token | ||
handleUrl | string( 2000) | 是 | 处理地址,这个地址会在界面打开并传递jwt token | ||
organization | string( 255) | 否 | 发起人机构名称 | ||
userId | string( 64) | 是 | 发起人 (学工号/ID,根据userPoaFlag传参决定) | ||
userName | string( 64) | 是 | 发起人姓名 | ||
timeout | number | 否 | 超过x小时时间计为超时(单位:小时,默认未空或0,) | ||
canDelegate | number | 否 | 是否允许被代理(被代理的操作为事务中心操作 0/1) | ||
f1url | string | 否 | 接口地址1(一般第1个我们设置为催办,按需,非必填) | ||
f1method | string | 否 | 接口1方式 post/get ,非必填 | ||
f1task_name | string | 否 | 接口1显示的名称 ,非必填 | ||
f2url | string | 否 | 接口地址2(一般第2个我们设置为撤回,按需) ,非必填 | ||
f2method | string | 否 | 接口2方式 post/get ,非必填 | ||
f2task_name | string | 否 | 接口3显示的名称 ,非必填 | ||
f3url | string | 否 | 接口地址3(一般第3个我们设置为终止,按需) ,非必填 | ||
f3method | string | 否 | 接口3方式 post/get ,非必填 | ||
f3task_name | string | 否 | 接口3显示的名称 ,非必填 | ||
funclist | array | 否 | 方法集合 ,非必填 | ||
operation | 否 | 办理名称(显示的接口名称) ,非必填 | |||
url | 否 | 接口地址 ,非必填 | |||
method | 否 | 接口请求方式 post/get/。。。 ,非必填 | |||
flag | 否 | 标记 ,非必填 | |||
actions | array | 否 | 自定义操作按钮 ,非必填 | ||
name | 否 | 按钮名称 ,非必填 | |||
url | 否 | 请求地址 ,非必填 | |||
method | 否 | 接口请求方式 post/get/。。。 ,非必填 | |||
type | 否 | 类型, HANDLE办理、BREAK_UP终止、REVOKE撤回、HANG_UP挂起、ACTIVE激活、CIRCULARIZE传阅、TRANSFER转办、PROMOTER发起人操作、HANDLEDR待办人操作、DEAL待办人操作、ALL所有人操作;对应的类型有对应的发送消息机制、以及后续的事务处理机制。可以参考下方操作接口,非必填 | |||
allowMerge | 否 | 是否允许批量,默认0; 允许批量的按钮,在点击批量操作时,展示出来,任务下没有可批量按钮,该任务不可进行批量操作 ,非必填 | |||
nextNodeKey | 否 | 导致节点变动的操作,需要传下一个节点关键词,点击按钮时,需要将该参数传过去 ,非必填 | |||
optType | 否 | 操作类型: 1:page页面 0:api接口(表示快速处理) |
{
"keys": "xxxxxxxxxxxxxxxxxxxxxxxxxxx",
"TtcInfoList":
[
{
"createTime":"2020-05-18 15:28:31",
"createName":"智慧校园管理员",
"creator":"smartadmin",
"name":"实例名称",
"serialNumber":"123456",
"userPoaFlag":"0",
"TtcDetailList":
[
{
"id": "2",
"appId":"11111111",
"applyTime": "2020-05-18 15:28:31",
"assignee":"smartadmin",
"candidate":["2008010074","2009010030","1995000088"],
"groupId":"123456789",
"createTime":"2020-05-18 15:28:31",
"formUrl":"http://www.baidu.com",
"handleUrl":"http://www.baidu.com",
"mobileUrl":"http://www.baidu.com",
"mobileHandleUrl":"http://www.baidu.com",
"organization":"",
"processRoleName":"业务组名称-如无可不填",
"taskId":"123456789",
"taskName":"任务名称-如xxx-请假管理",
"timeout":"1",
"transName":"事务名称-如请假管理",
"transTypeName":"事务类型名称",
"transResource":"事务来源",
"userId":"smartadmin",
"userName":"智慧校园管理员",
"serialNumber":"XX1000001",
"f1url": "http://www.baidu.com",
"f1method": "post",
"f1task_name": "催办",
"f2url": "http://www.baidu.com",
"f2method": "post",
"f2task_name": "撤回",
"f3url": "http://www.baidu.com",
"f3method": "post",
"f3task_name": "终止",
"funclist":[
{
"operation": "操作方法名称",
"url": "http://www.baidu.com",
"method": "post",
"flag":"(1办理,2查看,3终止,4撤回,5挂起,6激活,7催办,8其他)"
}
],
"actions":[
{
"name": "",
"url": "",
"allowMerge": 1,
"type": "",
"optType": 0,
"method": "post",
"nextNodeKey": ""
}
]
}
]
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# POST 任务办理
请求参数名称:json (字段类型:JsonObject.toString())
请求参数方式:post
下列参数中,除keys属于分配外,无任何固定值. assignee、candidate、groupId三种办理人指定参数取其一,请勿指定多种类型。
地址:/v1/poa/task
{
"keys": "xxxxxxxxxxxxxxxxxxxxxxxx", (必填)
"TtcDetailList": [
{
"userPoaFlag": "0/1” , (必填。参数值0或1。0传工号,1传用户id)
"sign": "0/1 ",(必填,是否会签,0否,1是且非最后一签)
"oldTaskId": "被办理的任务id号", (必填)
"handlerId": "办理人id", (必填。根据userPoaFlag传值决定)
"handlerName": "办理人姓名", (必填)
"handlerTime": "办理时间", yyyy-MM-dd HH:mm:ss(必填)
"handleStatus": "SUCCESS", 办理状态
"final_time": "办结时间", yyyy-MM-dd HH:mm:ss(非必填。但当lastFlag传入为 1时,需要此参数)
"lastFlag": "0/1" (必填。 是否最终办理节点,0否/1是,1是代表不再产生后续任务,新任务参数可不再填")
"id": "2", (非必填)
"appId": "应用id,用于标识所属哪个应用", (必填。标识应用的id)
"applyTime": "申请时间", yyyy-MM-dd HH:mm:ss(必填,申请时间)
"assignee": "下个办理人", (必填。但此参数与candidate、group 选择一个必填即可。根据userPoaFlag传值决定)
"candidate": [
"候选办理2008010074",
"候选办理2009010030",
"候选办理1995000088"
], (候选办理人,数组形式。遵照assignee字段解释。)
"groupId": "办理用户组", (用户组id。遵照assignee字段解释)
"createTime": "任务创建时间", yyyy-MM-dd HH:mm:ss(必填,任务创建时间)
"formUrl": "查阅表单地址 如:http://www.baidu.com", (必填,查看表单地址)
"handleUrl": "待办表单地址 如:http://www.baidu.com", (必填,办理表单地址)
"mobileUrl":"移动端查阅表单地址 如:http://www.baidu.com", (必填,移动端查看表单地址)
"mobileHandleUrl":"移动段待办表单地址 如:http://www.baidu.com", (必填,移动端办理表单地址)
"organization": "申请人组织机构描述", (非必填)
"processRoleName": "业务组名称-如无可不填", (非必填)
"taskId": "任务id", (必填。任务id)
"taskName": "任务名称-如胡卫-请假管理", (必填,任务名称)
"timeout": "1", (非必填,超时标志)
"transName": "事务名称-如请假管理", (必填)
"transResource": "事务来源", (必填。比如:OA系统)
"userId": "1", (必填。发起人的id或工号。根据userPoaFlag传入值决定)
"serialNumber": "XX1000001", (必填,流水号。同一个实例的流水号不变)
"userName": "", (必填。发起人姓名)
"f1url": "http://www.baidu.com", (非必填)
"f1method": "post", (非必填)
"f1task_name": "催办", (非必填)
"f2url": "http://www.baidu.com", (非必填)
"f2method": "post", (非必填)
"f2task_name": "撤回", (非必填)
"f3url": "http://www.baidu.com", (非必填)
"f3method": "post", (非必填)
"f3task_name": "终止", (非必填)
"funclist": [
{
"operation": "操作方法名称",
"url": "http://www.baidu.com",
"method": "post",
"flag": "(1办理,2查看,3终止,4撤回,5挂起,6激活,7催办,8其他)"
}
], (非必填)
"actions":[ // 下一条待办自定义操作按钮
{
"name": "", // 按钮名称
"url": "", // 请求地址
"allowMerge": 1, // 是否允许批量,默认0; 允许批量的按钮,在点击批量操作时,展示出来,任务下没有可批量按钮,该任务不可进行批量操作
"type": "",// 类型, HANDLE办理、BREAK_UP终止、REVOKE撤回、HANG_UP挂起、ACTIVE激活、CIRCULARIZE传阅、TRANSFER转办、PROMOTER发起人操作、HANDLEDR待办人操作、DEAL待办人操作、ALL所有人操作;对应的类型有对应的发送消息机制、以及后续的事务处理机制。可以参考下方操作接口
"optType": 0, // 操作类型: 1:page页面 0:api接口(表示快速处理)
"method": "post", // 请求方式 ,optType为api 必填,get 、 post 、 put
"nextNodeKey": "", // 导致节点变动的操作,需要传下一个节点关键词,点击按钮时,需要将该参数传过去
}
],(非必填)
"oldActions":[ // 当前办理待办自定义操作按钮
{
"name": "", // 按钮名称
"url": "", // 请求地址
"allowMerge": 1, // 是否允许批量,默认0; 允许批量的按钮,在点击批量操作时,展示出来,任务下没有可批量按钮,该任务不可进行批量操作
"type": "",// 类型, HANDLE办理、BREAK_UP终止、REVOKE撤回、HANG_UP挂起、ACTIVE激活、CIRCULARIZE传阅、TRANSFER转办、PROMOTER发起人操作、HANDLEDR待办人操作、DEAL待办人操作、ALL所有人操作;对应的类型有对应的发送消息机制、以及后续的事务处理机制。可以参考下方操作接口
"optType": 0, // 操作类型: 1:page页面 0:api接口(表示快速处理)
"method": "post", // 请求方式 ,optType为api 必填,get 、 post 、 put
"nextNodeKey": "", // 导致节点变动的操作,需要传下一个节点关键词,点击按钮时,需要将该参数传过去
"times": 1, // 按钮执行次数,null不限制次数
}
],(非必填)
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# POST 传阅事务
请求参数名称:json (字段类型:JsonObject.toString())
请求参数方式:post
下列参数中,除keys属于分配外,无任何固定值.
地址:/v1/poa/read
{
"keys": "MLSEexyO9521yfp78bDgO-UWlK6PwOyAE ", (必填)
"TtcDetailList": [
{
"taskId": "任务id", (必填。任务id)
"createTime": "传阅时间", yyyy-MM-dd HH:mm:ss (必填。传阅时间)
"createBy": "创建人id", (必填。传阅人id)
"creatorName": "创建人姓名", (必填。传阅人姓名)
"creatorOrg": "创建人部门", (必填。传阅人部门)
"creatorAcc": "创建人工号、学号", (必填。传阅人工号或学号)
"userId": "被传阅人id", (必填。被传阅人id)
"userName": "被传阅人姓名", (必填。被传阅人姓名)
"userOrg": "被传阅人部门", (必填。被传阅人部门)
"userAcc": "被传阅人工号、学号" (必填。被传阅人工号)
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# POST 催办事务
请求参数名称:json (字段类型:JsonObject.toString())
请求参数方式:post
下列参数中,除keys属于分配外,无任何固定值.
地址:/v1/poa/urged
{
"keys": "MLSEexyO9521yfp78bDgO-UWlK6PwOyAE ", (必填)
"TtcDetailList": [
{
"taskId": "任务id", (必填。任务id)
"appId": "应用id", (必填。应用id)
"urgentcCreator": "催办人id", (必填。催办人id)
"massage": "催办消息" (必填。催办消息语)
}
]
}
2
3
4
5
6
7
8
9
10
11
# POST 转办事务
请求参数名称:json (字段类型:JsonObject.toString())
请求参数方式:post
下列参数中,除keys属于分配外,无任何固定值.
地址:/v1/poa/turn
{
"keys": "MLSEexyO9521yfp78bDgO-UWlK6PwOyAE ", (必填)
"TtcDetailList": [
{
"taskId": "任务id", (必填。任务id)
"appId": "应用id", (必填。应用id)
"handlerId": "转办人id", (必填。操作人或转办人id)
"handlerName": "转办人姓名", (必填。操作人或转办人姓名)
"handlerTime": "转办时间", yyyy-MM-dd HH:mm:ss (必填。转办时间)
"assignee": "被转办人id", (必填。被转办人的id)
"candidate": "被转办候选人id", (非必填,)
"groupId": "被转办组id" (非必填)
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# POST 改变已读
请求参数名称:json (字段类型:JsonObject.toString())
请求参数方式:post
下列参数中,除keys属于分配外,无任何固定值.
地址:/v1/poa/changeR
{
"keys": "MLSEexyO9521yfp78bDgO-UWlK6PwOyAE ", (必填)
"TtcDetailList": [
{
"id": "ids - 传阅的id值 -传阅给我的 trid" (必填。传阅的id)
}
]
}
2
3
4
5
6
7
8
# POST 转阅已读事务
请求参数名称:json (字段类型:JsonObject.toString())
请求参数方式:post
下列参数中,除keys属于分配外,无任何固定值.
地址:/v1/poa/changeR
{
"keys": "MLSEexyO9521yfp78bDgO-UWlK6PwOyAE ", (必填)
"TtcDetailList": [
{
"id": "传阅事务的id" (必填。传阅的id)
}
]
}
2
3
4
5
6
7
8
# POST 挂起事务
请求参数名称:json (字段类型:JsonObject.toString())
请求参数方式:post
下列参数中,除keys属于分配外,无任何固定值.
地址:/v1/poa/hang
{
"keys": "MLSEexyO9521yfp78bDgO-UWlK6PwOyAE ", (必填)
"TtcDetailList": [
{
"taskId": "任务id", (必填。任务id)
"appId": "应用id", (必填。应用id)
"createTime": "挂起事务时间", yyyy-MM-dd HH:mm:ss(必填。操作时间)
"creator": "挂起事务操作人id" (必填。操作人id)
}
]
}
2
3
4
5
6
7
8
9
10
11
# POST 激活事务(撤销挂起)
请求参数名称:json (字段类型:JsonObject.toString())
请求参数方式:post
下列参数中,除keys属于分配外,无任何固定值.
地址:/v1/poa/disHang
{
"keys": "MLSEexyO9521yfp78bDgO-UWlK6PwOyAE ", (必填)
"TtcDetailList": [
{
"taskId": "任务id", (必填。任务id)
"appId": "应用id", (必填。应用id)
"endTime": "撤销挂起事务时间/激活时间" yyyy-MM-dd HH:mm:ss(必填。操作时间)
}
]
}
2
3
4
5
6
7
8
9
10
# POST 终止事务
请求参数名称:json (字段类型:JsonObject.toString())
请求参数方式:post
下列参数中,除keys属于分配外,无任何固定值.
地址:/v1/poa/finals
{
"keys": "MLSEexyO9521yfp78bDgO-UWlK6PwOyAE ", (必填)
"TtcDetailList": [
{
"taskId": "任务id", (必填。任务id)
"appId": "应用id" (必填。应用id)
}
]
}
2
3
4
5
6
7
8
9
# POST 撤回事务
请求参数名称:json (字段类型:JsonObject.toString())
请求参数方式:post
下列参数中,除keys属于分配外,无任何固定值.
撤回逻辑:
撤回逻辑有两种,一种为撤回后产生新的待办,一种为撤回后,实例被终结
地址:/v1/poa/finals
第一种
{
"keys": "MLSEexyO9521yfp78bDgO-UWlK6PwOyAE ", (必填)
"TtcDetailList": [
{
"oldTaskId": "任务id", (必填。老任务id)
"appId": "应用id", (必填。应用id)
"newInstance": "0--是否新的情况,0为不产生新的任务,1或空为新任务,参照第二种情况数据" (必填)
}
]
}
第二种
{
"keys": "MLSEexyO9521yfp78bDgO-UWlK6PwOyAE ", (必填)
"TtcDetailList": [
{
"oldTaskId": "任务id", (必填。老任务id)
"appId": "", (必填。应用id)
"newInstance": "1--1或空为新任务,新任务参照第二种情况数据", (必填)
"taskId": "", (必填。新任务id)
"applyTime": "yyyy-MM-dd HH:mm:ss", (必填。发起时间)
"assignee": "用户id", (必填。办理人id。与candidate group 择一)
"candidate": "用户id",
"groupId": "用户组id",
"formUrl": "", (必填。查看表单地址)
"handleUrl": "", (必填。办理表单地址)
"createTime": "yyyy-MM-dd HH:mm:ss", (必填。任务创建时间)
"organization": "行政机构", (非必填,发起人所在组织机构中文名称)
"processRoleName": "", (非必填)
"taskName": "", (必填。任务名称)
"timeout": "超过x小时时间计为超时(单位:小时,默认未空或0,)", (非必填)
"transName": "", (必填。应用名称,如:请假申请)
"userId": "", (必填。发起人id)
"canDelegate": "是否允许被代理(被代理的操作为事务中心操作 0/1)", (非必填)
"actions":[ // 自定义操作按钮
{
"name": "", // 按钮名称
"url": "", // 请求地址
"allowMerge": 1, // 是否允许批量,默认0; 允许批量的按钮,在点击批量操作时,展示出来,任务下没有可批量按钮,该任务不可进行批量操作
"type": "",// 类型, HANDLE办理、BREAK_UP终止、REVOKE撤回、HANG_UP挂起、ACTIVE激活、CIRCULARIZE传阅、TRANSFER转办、PROMOTER发起人操作、HANDLEDR待办人操作、DEAL待办人操作、ALL所有人操作;对应的类型有对应的发送消息机制、以及后续的事务处理机制。可以参考下方操作接口
"optType": 0, // 操作类型:1:page页面 0:api接口(表示快速处理)
"method": "post", // 请求方式 ,optType为api 必填,get 、 post 、 put
"nextNodeKey": "", // 导致节点变动的操作,需要传下一个节点关键词,点击按钮时,需要将该参数传过去
}
](非必填)
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# POST 删除事务
请求参数名称:json (字段类型:JsonObject.toString())
请求参数方式:post
下列参数中,除keys属于分配外,无任何固定值.
说明:事务删除后,待办人无此条待办任务。以及相关办理过的流程审核人员,在我的办结也查不到此条记录。发起人在我的发起中,也看不到此条记录
地址: /v1/poa/delete
{
"keys": "MLSEexyO9521yfp78bDgO-UWlK6PwOyAE ", (必填)
"TtcDetailList": [
{
"taskId":"任务ID", (任务ID)
"appId":"888" (必填)
}
]
}
2
3
4
5
6
7
8
9
# POST 恢复事务
请求参数名称:json (字段类型:JsonObject.toString())
请求参数方式:post
下列参数中,除keys属于分配外,无任何固定值.
说明:事务恢复后,流程任务会自动回到原待办人节点。相关办理,发起也可查询到此条数据
地址:/v1/poa/recover
{
"keys": "MLSEexyO9521yfp78bDgO-UWlK6PwOyAE ", (必填)
"TtcDetailList": [
{
"taskId":"任务ID", (任务ID)
"appId":"888" (必填)
}
]
}
2
3
4
5
6
7
8
9