主题
自闭环处理任务【可选】
创建待办任务及申请任务时,可同时将操作字段同步至待办中心,用于在门户中可直接审批任务,无需进入业务系统进行办理;
门户表象
在任务列表或任务详情(前提需满足自闭环查看任务详情)中通过业务系统传入的操作内容进行编辑,点击后通过回调同步任务状态;
若没有对接自闭环查看任务详情场景,也可推送操作按钮,可以在任务列表中快速办理;
待办任务列表无法在列表中统一处理;



流程动作
创建任务时,需将对应操作内容推送过来,包括提交操作时需填写的表单内容;
如果任务的操作按钮发生变化(例如:申请人刚刚发起申请时可以撤回,当第一个审批人审核完成后,发起人的撤回按钮将消失),更新任务时可传入相关字段进行更新或清空。
涉及接口
请求体
说明
请求体中省略内容详见创建/更新任务中请求体介绍
| 字段名 | 参数名 | 必填 | 类型 | 描述 |
|---|---|---|---|---|
| insertModel | *M | List<InsertModel> | 新增信息(任务和申请),与updateModel至少填一个 | |
| updateModel | *M | UpdateModel | 更新信息 (任务和申请),与insertModel至少填一个 |
InsertModel(返回)
| 字段名 | 参数名 | 必填 | 类型 | 描述 |
|---|---|---|---|---|
| operateList | O | List<Operate> | 任务操作列表 | |
| applicationModel | O | ApplicationModel | 任务关联的申请信息 | |
| ... | ... | ... | ... | ... |
UpdateModel(返回)
| 字段名 | 参数名 | 必填 | 类型 | 描述 |
|---|---|---|---|---|
| taskModels | *M | List<TaskModel> | 需要更新的任务信息,与applyModels至少填一个 | |
| applyModels | *M | List<ApplyModel> | 需要更新申请信息,与taskModels至少填一个 |
ApplicationModel(返回)
| 字段名 | 参数名 | 必填 | 类型 | 描述 |
|---|---|---|---|---|
| 申请操作列表 | operateList | O | List<Operate> | 申请操作列表 |
| ... | ... | ... | ... | ... |
TaskModel(返回)
| 字段名 | 参数名 | 必填 | 类型 | 描述 |
|---|---|---|---|---|
| 任务详情操作字段 | operateList | O | List<Operate> | 操作字段信息,传入[]则清空数据 |
| ... | ... | ... | ... | ... |
ApplyModel(返回)
| 字段名 | 参数名 | 必填 | 类型 | 描述 |
|---|---|---|---|---|
| 任务详情操作字段 | operateList | O | List<Operate> | 操作字段信息,传入[]则清空数据 |
| ... | ... | ... | ... | ... |
| 字段名 | 参数名 | 必填 | 类型 | 描述 |
|---|---|---|---|---|
| 操作id | operateId | M | String(64) | 操作id |
| 操作名称 | operateName | M | String(100) | 操作名称 |
| 操作回调地址 | operateUrl | M | String(512) | 操作地址,点击按钮后回调的第三方地址 |
| operateColumns | O | List<ColumnInfo> | 提交操作时需要填写的表单内容 | |
| 是否催办 | isUrge | O | integer | 1:是 0:否(默认) 当按钮类型为催办时传入1 |
ColumnInfo(返回)
| 字段名 | 参数名 | 必填 | 类型 | 描述 |
|---|---|---|---|---|
| 字段id | columnId | M | String(64) | 字段id |
| 字段名称 | columnName | M | String(30) | 字段名称 |
| 字段类型 | columnType | M | integer | 1:单选 2:多选 3:文本 9:手写签名(3.6.1.SP6+) |
| 字段值 | columnValue | O | Object | 字段值 |
| 字段默认值 | defaultValue | O | Object | 字段默认值 (与columnValue格式一致) |
| dict | O | List<ItemValue> | 字段枚举值(当字段类型为单选或多选时使用) | |
| 动态枚举值回调地址 | dictUrl | O | String(512) | 当字段枚举值为动态获取时,获取枚举值的url |
| 文本输入框长度 | textSize | O | integer | 当字段类型为文本时,文本输入框长度 |
| 是否必填 | isMust | O | integer | 1:是 0:否(默认) |
ItemValue(返回)
| 字段名 | 参数名 | 必填 | 类型 | 描述 |
|---|---|---|---|---|
| 字典id | id | M | String(64) | 字典id |
| 字典值 | name | M | String(30) | 字典值 |
当字段类型为文本、手写签名、其它时,传入格式:
{
"columnId": "column1",
"columnName": "字段1",
"columnType": 3, // 3、6、8、9(手写签名无需传coumnValue)
"columnValue": "text"
}1
2
3
4
5
6
2
3
4
5
6
当字段类型为单选时,传入格式:
{
"columnId": "column1",
"columnName": "字段1",
"columnType": 1,
"columnValue": "id1",
"dict":[{"id":"id1","name":"name1"},{"id":"id2","name":"name2"}]
}1
2
3
4
5
6
7
2
3
4
5
6
7
当字段类型为多选时,传入格式:
{
"columnId": "column1",
"columnName": "字段1",
"columnType": 2,
"columnValue": ["id1","id2"],
"dict":[{"id":"id1","name":"name1"},{"id":"id2","name":"name2"}]
}1
2
3
4
5
6
7
2
3
4
5
6
7
请求示例
{
"insertModel": [{
"operateList": [
{
"operateId": "pass",
"operateName": "通过",
"operateUrl": "http://callbackurl.wisedu.com",
"operateColumns": [
{
"columnId": "comment",
"columnName": "意见",
"columnType": 3,
"defaultValue": "",
"isMust": 0
}
]
},
{
"operateId": "reject",
"operateName": "退回",
"operateUrl": "http://callbackurl.wisedu.com",
"operateColumns": [
{
"columnId": "comment",
"columnName": "意见",
"columnType": 3,
"defaultValue": "",
"isMust": 1
}
]
}
],
"applicationModel": {
"operateList": [
{
"operateId": "recall",
"operateName": "撤回",
"operateUrl": "http://callbackurl.wisedu.com"
}
],
...
},
...
}]
}1
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
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
Demo
待办通知场景
java
// 创建客户端
Client client = new DefaultClient(BASE_URL, APP_ID, APP_SECRET);
// 创建请求对象
SimpleTaskAddRequest request = new SimpleTaskAddRequest();
SimpleTaskAddRequest.SimpleTaskAddModel model = new SimpleTaskAddRequest.SimpleTaskAddModel();
model.setTaskId("20240808");
model.setSceneCode("testCode1");
model.setSubject("test20240808");
model.setInitiatorId("xxx");
model.setServiceId("");
model.setServiceName("");
model.setProcessors(Arrays.asList(new Processor("user01")));
model.setPcViewUrl("http://www.pc.url");
model.setH5ViewUrl("http://www.h5.url");
Operate operate = new Operate();
operate.setOperateId("operate");
operate.setOperateName("操作");
operate.setOperateUrl("http://callback.url");
RadioColumn radio = new RadioColumn();
radio.setColumnId("radio");
radio.setColumnName("单选");
radio.setDefaultValue("1");
radio.setDict(Arrays.asList(new ItemValue("1", "选项一"), new ItemValue("2", "选项二")));
List<BaseOperateColumn> operateColumnList = new ArrayList<BaseOperateColumn>();
operateColumnList.add(radio);
operate.setOperateColumns(operateColumnList);
model.setOperateList(Collections.singletonList(operate));
request.setSimpleTaskAddModelList(Arrays.asList(model));
BaseResponse response = client.execute(request);
//调用成功,则处理业务逻辑
if (response.isSuccess()) {
//.....
}1
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
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
待办审批场景
java
// 创建客户端
Client client = new DefaultClient(BASE_URL, APP_ID, APP_SECRET);
// 创建请求对象
SaveOrUpdateRequest request = new SaveOrUpdateRequest();
// 发起任务
InsertModel insertModel = new InsertModel();
insertModel.setTaskId("2024080801");
insertModel.setSceneCode("testCode1");
insertModel.setInitiatorId("user");
insertModel.setInitiatorType(ProcessorType.USER_ACCOUNT);
insertModel.setSubject("test主题");
insertModel.setProcessors(Arrays.asList(new Processor("user03"), new Processor("user04")));
insertModel.setServiceId("xxx");
insertModel.setServiceName("xxx");
insertModel.setNodeId("002");
insertModel.setNodeName("002");
insertModel.setPcViewUrl("http://www.pc.url");
insertModel.setH5ViewUrl("http://www.h5.url");
insertModel.setProcessInstanceImgUrl("");
insertModel.setProcessInstanceRecordUrl("");
insertModel.setPrevProcessor("user02");
Operate passOperate = new Operate();
passOperate.setOperateId("pass");
passOperate.setOperateName("通过");
passOperate.setOperateUrl("http://callback.pass.url");
TextOperateColumn comment = new TextOperateColumn();
comment.setColumnId("comment");
comment.setColumnName("意见");
comment.setIsMust(1);
comment.setTextSize(500);
CheckboxColumn nextAuditor = new CheckboxColumn();
nextAuditor.setColumnId("nextAuditor");
nextAuditor.setColumnName("下一步审核人");
nextAuditor.setDefaultValue(Arrays.asList("user01", "user02"));
nextAuditor.setDictUrl("http://callback.nextAuditor.url");
passOperate.setOperateColumns(Arrays.asList(comment, nextAuditor));
Operate rejectOperate = new Operate();
rejectOperate.setOperateId("reject");
rejectOperate.setOperateName("退回");
rejectOperate.setOperateUrl("http://callback.reject.url");
SignatureColumn sign = new SignatureColumn();
sign.setColumnId("sign");
sign.setColumnName("签名");
rejectOperate.setOperateColumns(Arrays.asList(comment, sign));
insertModel.setOperateList(Arrays.asList(passOperate, rejectOperate));
// 任务关联的申请信息
ApplicationModel applicationModel = new ApplicationModel();
applicationModel.setProcessInstanceId("2024080801");
applicationModel.setSubject("申请主题");
applicationModel.setProcessInstanceStatus(ProcessInstanceStatusType.RUNNING);
applicationModel.setProcessors(Arrays.asList(new Processor("user03"), new Processor("user04")));
applicationModel.setPcViewUrl("http://www.pc.url");
applicationModel.setH5ViewUrl("http://www.h5.url");
applicationModel.setNodeId("001");
applicationModel.setNodeName("001");
applicationModel.setNodeList(Arrays.asList(new ApplicationModel.Node("001", "001")
, new ApplicationModel.Node("002", "002"), new ApplicationModel.Node("003", "003")));
Operate recallOperate = new Operate();
recallOperate.setOperateId("recall");
recallOperate.setOperateName("撤回");
recallOperate.setOperateUrl("http://www.recall.url");
Operate urgeOperate = new Operate();
urgeOperate.setOperateId("urge");
urgeOperate.setOperateName("催办");
urgeOperate.setIsUrge(1);
urgeOperate.setOperateUrl("http://www.urge.url");
applicationModel.setOperateList(Arrays.asList(recallOperate, urgeOperate));
insertModel.setApplicationModel(applicationModel);
request.setInsertModel(Collections.singletonList(insertModel));
BaseResponse response = client.execute(request);
//调用成功,则处理业务逻辑
if (response.isSuccess()) {
//.....
}1
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
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

