@steedos-labs/plugin-workflow 3.0.0-beta.30 → 3.0.0-beta.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/main/default/client/instance.client.js +2 -2
- package/main/default/manager/push_manager.js +14 -6
- package/main/default/methods/trace_approve_cc.js +2 -2
- package/main/default/objects/flows/buttons/newexport.button.yml +1 -1
- package/main/default/objects/flows/flows.object.yml +1 -0
- package/main/default/objects/instances/buttons/instance_distribute.button.yml +3 -2
- package/main/default/objects/instances/buttons/instance_forward.button.yml +1 -1
- package/main/default/objects/instances/buttons/instance_reassign.button.yml +1 -16
- package/main/default/objects/instances/buttons/instance_relocate.button.yml +1 -1
- package/main/default/objects/instances/buttons/instance_retrieve.button.yml +106 -2
- package/main/default/pages/instance_tasks_list.page.amis.json +6 -99
- package/main/default/pages/instances_list.page.amis.json +6 -100
- package/main/default/routes/api_flow_permission.router.js +7 -2
- package/main/default/routes/api_workflow_instance_return.router.js +11 -5
- package/main/default/routes/api_workflow_reassign.router.js +200 -196
- package/main/default/routes/api_workflow_relocate.router.js +1 -1
- package/main/default/routes/api_workflow_retrieve.router.js +246 -237
- package/main/default/routes/export.router.js +5 -4
- package/main/default/routes/import.router.js +6 -7
- package/package.json +3 -2
- package/package.service.js +20 -6
- package/src/webhook_queue.js +283 -0
- package/main/default/manager/index.js +0 -11
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* @Author: sunhaolin@hotoa.com
|
|
3
3
|
* @Date: 2022-12-24 14:38:27
|
|
4
|
-
* @LastEditors:
|
|
5
|
-
* @LastEditTime:
|
|
4
|
+
* @LastEditors: 孙浩林 sunhaolin@steedos.com
|
|
5
|
+
* @LastEditTime: 2025-10-08 14:50:07
|
|
6
6
|
* @Description:
|
|
7
7
|
*/
|
|
8
8
|
'use strict';
|
|
@@ -11,7 +11,6 @@ const express = require('express');
|
|
|
11
11
|
const router = express.Router();
|
|
12
12
|
const { requireAuthentication } = require("@steedos/auth");
|
|
13
13
|
const _ = require('underscore');
|
|
14
|
-
const Fiber = function(fun){console.log('TODO Fiber...')}
|
|
15
14
|
const {
|
|
16
15
|
remove_many_instance_tasks,
|
|
17
16
|
insert_many_instance_tasks,
|
|
@@ -19,6 +18,7 @@ const {
|
|
|
19
18
|
const PermissionManager = require('../manager/permission_manager');
|
|
20
19
|
const UUFlowManager = require('../manager/uuflow_manager');
|
|
21
20
|
const pushManager = require('../manager/push_manager');
|
|
21
|
+
const { getCollection, _makeNewID } = require('../utils/collection');
|
|
22
22
|
/**
|
|
23
23
|
@api {post} /api/workflow/reassign 接口说明
|
|
24
24
|
@apiVersion 0.0.0
|
|
@@ -38,209 +38,213 @@ const pushManager = require('../manager/push_manager');
|
|
|
38
38
|
router.post('/api/workflow/reassign', requireAuthentication, async function (req, res) {
|
|
39
39
|
try {
|
|
40
40
|
let userSession = req.user;
|
|
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
|
-
|
|
41
|
+
var current_user, current_user_info, hashData;
|
|
42
|
+
current_user_info = Object.assign({}, userSession, { _id: userSession.userId })
|
|
43
|
+
current_user = current_user_info._id;
|
|
44
|
+
const { is_space_admin } = userSession;
|
|
45
|
+
hashData = req.body;
|
|
46
|
+
|
|
47
|
+
const instancesCollection = await getCollection('instances');
|
|
48
|
+
const usersCollection = await getCollection('users');
|
|
49
|
+
const spaceUsersCollection = await getCollection('space_users');
|
|
50
|
+
const organizationsCollection = await getCollection('organizations');
|
|
51
|
+
|
|
52
|
+
for (const instance_from_client of hashData['Instances']) {
|
|
53
|
+
var _users, approve_users_handlers, assignee_appr, current_space_user, current_user_organization, i, inbox_users, inbox_users_from_client, ins, instance, instance_id, last_trace, last_trace_from_client, new_inbox_users, not_in_inbox_users, now, permissions, r, reassign_reason, setObj, space, space_id;
|
|
54
|
+
instance_id = instance_from_client['_id'];
|
|
55
|
+
instance = await UUFlowManager.getInstance(instance_id);
|
|
56
|
+
space_id = instance.space;
|
|
57
|
+
// 验证instance为审核中状态
|
|
58
|
+
await UUFlowManager.isInstancePending(instance);
|
|
59
|
+
// 验证当前执行转签核的trace未结束
|
|
60
|
+
last_trace_from_client = _.last(instance["traces"]);
|
|
61
|
+
last_trace = _.find(instance.traces, function (t) {
|
|
62
|
+
return t._id === last_trace_from_client["_id"];
|
|
63
|
+
});
|
|
64
|
+
if (last_trace.is_finished === true) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
// 验证login user_id对该流程有管理申请单的权限
|
|
68
|
+
permissions = await PermissionManager.getFlowPermissions(instance.flow, current_user);
|
|
69
|
+
|
|
70
|
+
if ((!permissions.includes("admin")) && !is_space_admin) {
|
|
71
|
+
throw new Error("用户没有对当前流程的管理权限");
|
|
72
|
+
}
|
|
73
|
+
inbox_users = instance.inbox_users;
|
|
74
|
+
inbox_users_from_client = instance_from_client["inbox_users"];
|
|
75
|
+
reassign_reason = instance_from_client["reassign_reason"];
|
|
76
|
+
not_in_inbox_users = _.difference(inbox_users, inbox_users_from_client);
|
|
77
|
+
new_inbox_users = _.difference(inbox_users_from_client, inbox_users);
|
|
78
|
+
// 若assignee=原inbox_users,说明不需要执行转签核,系统什么都不做
|
|
79
|
+
if (not_in_inbox_users.length === 0 && new_inbox_users.length === 0) {
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
setObj = new Object;
|
|
83
|
+
now = new Date;
|
|
84
|
+
const finishedApproveIds = []
|
|
85
|
+
const newApproveIds = []
|
|
86
|
+
i = 0;
|
|
87
|
+
approve_users_handlers = [];
|
|
88
|
+
while (i < last_trace.approves.length) {
|
|
89
|
+
if (not_in_inbox_users.includes(last_trace.approves[i].handler)) {
|
|
90
|
+
if (last_trace.approves[i].is_finished === false && last_trace.approves[i].type !== "cc" && last_trace.approves[i].type !== "distribute") {
|
|
91
|
+
last_trace.approves[i].is_finished = true;
|
|
92
|
+
last_trace.approves[i].finish_date = now;
|
|
93
|
+
last_trace.approves[i].judge = "terminated";
|
|
94
|
+
last_trace.approves[i].description = "";
|
|
95
|
+
last_trace.approves[i].cost_time = last_trace.approves[i].finish_date - last_trace.approves[i].start_date;
|
|
96
|
+
approve_users_handlers.push(last_trace.approves[i].user);
|
|
97
|
+
approve_users_handlers.push(last_trace.approves[i].handler);
|
|
98
|
+
finishedApproveIds.push(last_trace.approves[i]._id)
|
|
73
99
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
100
|
+
}
|
|
101
|
+
i++;
|
|
102
|
+
}
|
|
103
|
+
// 在同一trace下插入转签核操作者的approve记录
|
|
104
|
+
current_space_user = await UUFlowManager.getSpaceUser(space_id, current_user);
|
|
105
|
+
|
|
106
|
+
current_user_organization = await organizationsCollection.findOne({ _id: current_space_user.organization }, {
|
|
107
|
+
projection: {
|
|
108
|
+
name: 1,
|
|
109
|
+
fullname: 1
|
|
110
|
+
}
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
assignee_appr = new Object;
|
|
114
|
+
assignee_appr._id = _makeNewID();
|
|
115
|
+
assignee_appr.instance = last_trace.instance;
|
|
116
|
+
assignee_appr.trace = last_trace._id;
|
|
117
|
+
assignee_appr.is_finished = true;
|
|
118
|
+
assignee_appr.user = current_user;
|
|
119
|
+
assignee_appr.user_name = current_user_info.name;
|
|
120
|
+
assignee_appr.handler = current_user;
|
|
121
|
+
assignee_appr.handler_name = current_user_info.name;
|
|
122
|
+
assignee_appr.handler_organization = current_space_user.organization;
|
|
123
|
+
assignee_appr.handler_organization_name = current_user_organization.name;
|
|
124
|
+
assignee_appr.handler_organization_fullname = current_user_organization.fullname;
|
|
125
|
+
assignee_appr.start_date = now;
|
|
126
|
+
assignee_appr.finish_date = now;
|
|
127
|
+
assignee_appr.due_date = last_trace.due_date;
|
|
128
|
+
assignee_appr.read_date = now;
|
|
129
|
+
assignee_appr.judge = "reassigned";
|
|
130
|
+
assignee_appr.is_read = true;
|
|
131
|
+
assignee_appr.description = reassign_reason;
|
|
132
|
+
assignee_appr.is_error = false;
|
|
133
|
+
assignee_appr.values = new Object;
|
|
134
|
+
assignee_appr.cost_time = assignee_appr.finish_date - assignee_appr.start_date;
|
|
135
|
+
last_trace.approves.push(assignee_appr);
|
|
136
|
+
// 对新增的每位待审核人,各增加一条新的approve
|
|
137
|
+
for (const user_id of new_inbox_users) {
|
|
138
|
+
var agent, handler_id, handler_info, new_appr, new_user, space_user, user_organization;
|
|
139
|
+
|
|
140
|
+
new_user = await usersCollection.findOne({ _id: user_id }, {
|
|
141
|
+
projection: {
|
|
142
|
+
name: 1
|
|
82
143
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (last_trace.approves[i].is_finished === false && last_trace.approves[i].type !== "cc" && last_trace.approves[i].type !== "distribute") {
|
|
92
|
-
last_trace.approves[i].is_finished = true;
|
|
93
|
-
last_trace.approves[i].finish_date = now;
|
|
94
|
-
last_trace.approves[i].judge = "terminated";
|
|
95
|
-
last_trace.approves[i].description = "";
|
|
96
|
-
last_trace.approves[i].cost_time = last_trace.approves[i].finish_date - last_trace.approves[i].start_date;
|
|
97
|
-
approve_users_handlers.push(last_trace.approves[i].user);
|
|
98
|
-
approve_users_handlers.push(last_trace.approves[i].handler);
|
|
99
|
-
finishedApproveIds.push(last_trace.approves[i]._id)
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
i++;
|
|
144
|
+
})
|
|
145
|
+
|
|
146
|
+
space_user = await UUFlowManager.getSpaceUser(space_id, user_id);
|
|
147
|
+
|
|
148
|
+
user_organization = await organizationsCollection.findOne({ _id: space_user.organization }, {
|
|
149
|
+
projection: {
|
|
150
|
+
name: 1,
|
|
151
|
+
fullname: 1
|
|
103
152
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
assignee_appr.handler_organization = current_space_user.organization;
|
|
124
|
-
assignee_appr.handler_organization_name = current_user_organization.name;
|
|
125
|
-
assignee_appr.handler_organization_fullname = current_user_organization.fullname;
|
|
126
|
-
assignee_appr.start_date = now;
|
|
127
|
-
assignee_appr.finish_date = now;
|
|
128
|
-
assignee_appr.due_date = last_trace.due_date;
|
|
129
|
-
assignee_appr.read_date = now;
|
|
130
|
-
assignee_appr.judge = "reassigned";
|
|
131
|
-
assignee_appr.is_read = true;
|
|
132
|
-
assignee_appr.description = reassign_reason;
|
|
133
|
-
assignee_appr.is_error = false;
|
|
134
|
-
assignee_appr.values = new Object;
|
|
135
|
-
assignee_appr.cost_time = assignee_appr.finish_date - assignee_appr.start_date;
|
|
136
|
-
last_trace.approves.push(assignee_appr);
|
|
137
|
-
// 对新增的每位待审核人,各增加一条新的approve
|
|
138
|
-
_.each(new_inbox_users, function (user_id) {
|
|
139
|
-
var agent, handler_id, handler_info, new_appr, new_user, space_user, user_organization;
|
|
140
|
-
new_user = db.users.findOne(user_id, {
|
|
141
|
-
fields: {
|
|
142
|
-
name: 1
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
space_user = UUFlowManager.getSpaceUser(space_id, user_id);
|
|
146
|
-
user_organization = db.organizations.findOne(space_user.organization, {
|
|
147
|
-
fields: {
|
|
148
|
-
name: 1,
|
|
149
|
-
fullname: 1
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
new_appr = new Object;
|
|
153
|
-
new_appr._id = _makeNewID();
|
|
154
|
-
new_appr.instance = last_trace.instance;
|
|
155
|
-
new_appr.trace = last_trace._id;
|
|
156
|
-
new_appr.is_finished = false;
|
|
157
|
-
new_appr.user = user_id;
|
|
158
|
-
new_appr.user_name = new_user.name;
|
|
159
|
-
handler_id = user_id;
|
|
160
|
-
handler_info = new_user;
|
|
161
|
-
agent = UUFlowManager.getAgent(space_id, user_id);
|
|
162
|
-
if (agent) {
|
|
163
|
-
inbox_users_from_client[inbox_users_from_client.indexOf(user_id)] = agent;
|
|
164
|
-
handler_id = agent;
|
|
165
|
-
handler_info = db.users.findOne({
|
|
166
|
-
_id: agent
|
|
167
|
-
}, {
|
|
168
|
-
fields: {
|
|
169
|
-
name: 1
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
new_appr.agent = agent;
|
|
153
|
+
})
|
|
154
|
+
|
|
155
|
+
new_appr = new Object;
|
|
156
|
+
new_appr._id = _makeNewID();
|
|
157
|
+
new_appr.instance = last_trace.instance;
|
|
158
|
+
new_appr.trace = last_trace._id;
|
|
159
|
+
new_appr.is_finished = false;
|
|
160
|
+
new_appr.user = user_id;
|
|
161
|
+
new_appr.user_name = new_user.name;
|
|
162
|
+
handler_id = user_id;
|
|
163
|
+
handler_info = new_user;
|
|
164
|
+
agent = await UUFlowManager.getAgent(space_id, user_id);
|
|
165
|
+
if (agent) {
|
|
166
|
+
inbox_users_from_client[inbox_users_from_client.indexOf(user_id)] = agent;
|
|
167
|
+
handler_id = agent;
|
|
168
|
+
|
|
169
|
+
handler_info = await usersCollection.findOne({ _id: agent }, {
|
|
170
|
+
projection: {
|
|
171
|
+
name: 1
|
|
173
172
|
}
|
|
174
|
-
|
|
175
|
-
new_appr.handler_name = handler_info.name;
|
|
176
|
-
new_appr.handler_organization = space_user.organization;
|
|
177
|
-
new_appr.handler_organization_name = user_organization.name;
|
|
178
|
-
new_appr.handler_organization_fullname = user_organization.fullname;
|
|
179
|
-
new_appr.from_user = current_user;
|
|
180
|
-
new_appr.from_user_name = current_user_info.name;
|
|
181
|
-
new_appr.type = "reassign";
|
|
182
|
-
new_appr.start_date = now;
|
|
183
|
-
new_appr.due_date = last_trace.due_date;
|
|
184
|
-
new_appr.is_read = false;
|
|
185
|
-
new_appr.is_error = false;
|
|
186
|
-
new_appr.values = new Object;
|
|
187
|
-
UUFlowManager.setRemindInfo(instance.values, new_appr);
|
|
188
|
-
last_trace.approves.push(new_appr);
|
|
189
|
-
newApproveIds.push(new_appr._id)
|
|
190
|
-
});
|
|
191
|
-
instance.outbox_users.push(current_user);
|
|
192
|
-
instance.outbox_users = instance.outbox_users.concat(approve_users_handlers);
|
|
193
|
-
setObj.outbox_users = _.uniq(instance.outbox_users);
|
|
194
|
-
setObj.inbox_users = inbox_users_from_client;
|
|
195
|
-
setObj.modified = now;
|
|
196
|
-
setObj.modified_by = current_user;
|
|
197
|
-
setObj["traces.$.approves"] = last_trace.approves;
|
|
198
|
-
r = db.instances.update({
|
|
199
|
-
_id: instance_id,
|
|
200
|
-
"traces._id": last_trace._id
|
|
201
|
-
}, {
|
|
202
|
-
$set: setObj
|
|
203
|
-
});
|
|
173
|
+
})
|
|
204
174
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
175
|
+
new_appr.agent = agent;
|
|
176
|
+
}
|
|
177
|
+
new_appr.handler = handler_id;
|
|
178
|
+
new_appr.handler_name = handler_info.name;
|
|
179
|
+
new_appr.handler_organization = space_user.organization;
|
|
180
|
+
new_appr.handler_organization_name = user_organization.name;
|
|
181
|
+
new_appr.handler_organization_fullname = user_organization.fullname;
|
|
182
|
+
new_appr.from_user = current_user;
|
|
183
|
+
new_appr.from_user_name = current_user_info.name;
|
|
184
|
+
new_appr.type = "reassign";
|
|
185
|
+
new_appr.start_date = now;
|
|
186
|
+
new_appr.due_date = last_trace.due_date;
|
|
187
|
+
new_appr.is_read = false;
|
|
188
|
+
new_appr.is_error = false;
|
|
189
|
+
new_appr.values = new Object;
|
|
190
|
+
await UUFlowManager.setRemindInfo(instance.values, new_appr);
|
|
191
|
+
last_trace.approves.push(new_appr);
|
|
192
|
+
newApproveIds.push(new_appr._id)
|
|
193
|
+
};
|
|
194
|
+
instance.outbox_users.push(current_user);
|
|
195
|
+
instance.outbox_users = instance.outbox_users.concat(approve_users_handlers);
|
|
196
|
+
setObj.outbox_users = _.uniq(instance.outbox_users);
|
|
197
|
+
setObj.inbox_users = inbox_users_from_client;
|
|
198
|
+
setObj.modified = now;
|
|
199
|
+
setObj.modified_by = current_user;
|
|
200
|
+
setObj["traces.$.approves"] = last_trace.approves;
|
|
209
201
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
pushManager.
|
|
229
|
-
// 如果已经配置webhook并已激活则触发
|
|
230
|
-
return pushManager.triggerWebhook(ins.flow, ins, {}, 'reassign', current_user, ins.inbox_users);
|
|
202
|
+
r = await instancesCollection.updateOne({
|
|
203
|
+
_id: instance_id,
|
|
204
|
+
"traces._id": last_trace._id
|
|
205
|
+
}, {
|
|
206
|
+
$set: setObj,
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
// 删除当前结束的approve
|
|
210
|
+
await remove_many_instance_tasks(finishedApproveIds)
|
|
211
|
+
// 生成新待审核的approve
|
|
212
|
+
await insert_many_instance_tasks(instance_id, last_trace._id, newApproveIds)
|
|
213
|
+
|
|
214
|
+
if (r) {
|
|
215
|
+
ins = await UUFlowManager.getInstance(instance_id);
|
|
216
|
+
// 给被删除的inbox_users 和 当前用户 发送push
|
|
217
|
+
await pushManager.send_message_current_user(current_user_info);
|
|
218
|
+
for (const user_id of not_in_inbox_users) {
|
|
219
|
+
if (user_id !== current_user) {
|
|
220
|
+
await pushManager.send_message_to_specifyUser("current_user", user_id);
|
|
231
221
|
}
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
222
|
+
};
|
|
223
|
+
// 提取instances.outbox_users数组和填单人、申请人
|
|
224
|
+
_users = new Array;
|
|
225
|
+
_users.push(ins.applicant);
|
|
226
|
+
_users.push(ins.submitter);
|
|
227
|
+
_users = _.uniq(_users.concat(ins.outbox_users));
|
|
228
|
+
for (const user_id of _users) {
|
|
229
|
+
await pushManager.send_message_to_specifyUser("current_user", user_id);
|
|
230
|
+
};
|
|
231
|
+
// 给新加入的inbox_users发送push message
|
|
232
|
+
await pushManager.send_instance_notification("reassign_new_inbox_users", ins, reassign_reason, current_user_info);
|
|
233
|
+
// 如果已经配置webhook并已激活则触发
|
|
234
|
+
await pushManager.triggerWebhook(ins.flow, ins, {}, 'reassign', current_user, ins.inbox_users);
|
|
239
235
|
}
|
|
240
|
-
}
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
res.status(200).send({
|
|
239
|
+
status: 0,
|
|
240
|
+
data: {}
|
|
241
|
+
});
|
|
241
242
|
} catch (e) {
|
|
243
|
+
console.log(e);
|
|
242
244
|
res.status(200).send({
|
|
243
|
-
|
|
245
|
+
status: -1,
|
|
246
|
+
msg: e.message,
|
|
247
|
+
data: {}
|
|
244
248
|
});
|
|
245
249
|
}
|
|
246
250
|
});
|
|
@@ -44,7 +44,7 @@ router.post('/api/workflow/relocate', requireAuthentication, async function (req
|
|
|
44
44
|
await excuteTriggers({ when: 'beforeEnd', userId, flowId, insId });
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
UUFlowManager.relocate(instance_from_client, userSession)
|
|
47
|
+
await UUFlowManager.relocate(instance_from_client, userSession)
|
|
48
48
|
// afterEnd
|
|
49
49
|
if (next_step_type === 'end') {
|
|
50
50
|
await excuteTriggers({ when: 'afterEnd', userId, flowId, insId });
|