@tachybase/plugin-workflow-approval 1.6.0 → 1.6.3
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/dist/client/base/ApprovalPane.schema.d.ts +9 -3
- package/dist/client/common/tools/cleanAssociationIds.d.ts +9 -0
- package/dist/client/index.js +29 -65
- package/dist/externalVersion.js +7 -7
- package/dist/locale/en-US.json +2 -1
- package/dist/locale/zh-CN.json +2 -1
- package/dist/server/actions/approvalCarbonCopy.d.ts +1 -1
- package/dist/server/actions/approvalCarbonCopy.js +7 -7
- package/dist/server/actions/approvalRecords.d.ts +2 -2
- package/dist/server/actions/approvalRecords.js +19 -19
- package/dist/server/actions/approvals.d.ts +6 -6
- package/dist/server/actions/approvals.js +61 -82
- package/dist/server/actions/index.js +1 -1
- package/dist/server/actions/workflows.d.ts +1 -1
- package/dist/server/actions/workflows.js +3 -3
- package/dist/server/plugin.js +0 -3
- package/dist/server/triggers/Approval.d.ts +3 -3
- package/dist/server/triggers/Approval.js +35 -21
- package/dist/server/utils.d.ts +2 -2
- package/dist/server/utils.js +4 -4
- package/package.json +9 -9
|
@@ -32,15 +32,29 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
32
32
|
super(workflow);
|
|
33
33
|
this.sync = false;
|
|
34
34
|
this.triggerHandler = async (approval, { transaction }) => {
|
|
35
|
-
|
|
35
|
+
let workflow = await approval.getWorkflow({
|
|
36
36
|
where: {
|
|
37
37
|
id: approval.get("workflowId"),
|
|
38
|
-
type: _ApprovalTrigger.TYPE,
|
|
39
38
|
enabled: true,
|
|
39
|
+
type: _ApprovalTrigger.TYPE,
|
|
40
40
|
"config.collection": approval.collectionName
|
|
41
41
|
},
|
|
42
42
|
transaction
|
|
43
43
|
});
|
|
44
|
+
if (!workflow && approval.get("workflowKey")) {
|
|
45
|
+
workflow = await this.workflow.db.getRepository("workflows").findOne({
|
|
46
|
+
filter: {
|
|
47
|
+
key: approval.get("workflowKey"),
|
|
48
|
+
enabled: true,
|
|
49
|
+
type: _ApprovalTrigger.TYPE,
|
|
50
|
+
"config.collection": approval.collectionName
|
|
51
|
+
},
|
|
52
|
+
transaction
|
|
53
|
+
});
|
|
54
|
+
if (workflow) {
|
|
55
|
+
await approval.update({ workflowId: workflow.id }, { transaction, hooks: false });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
44
58
|
const isChangedStatus = approval.changed("status");
|
|
45
59
|
const isAllowStatusList = [import_status.APPROVAL_STATUS.DRAFT, import_status.APPROVAL_STATUS.SUBMITTED, import_status.APPROVAL_STATUS.RESUBMIT].includes(
|
|
46
60
|
approval.status
|
|
@@ -175,26 +189,26 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
175
189
|
await approval.update({ status }, { transaction });
|
|
176
190
|
await approvalExecution.update({ status: execution.status }, { transaction });
|
|
177
191
|
};
|
|
178
|
-
this.middleware = async (
|
|
179
|
-
if (!
|
|
192
|
+
this.middleware = async (ctx, next) => {
|
|
193
|
+
if (!ctx.action) {
|
|
180
194
|
return;
|
|
181
195
|
}
|
|
182
196
|
const {
|
|
183
197
|
resourceName,
|
|
184
198
|
actionName,
|
|
185
199
|
params: { triggerWorkflows, beforeWorkflows }
|
|
186
|
-
} =
|
|
200
|
+
} = ctx.action;
|
|
187
201
|
if (beforeWorkflows) {
|
|
188
|
-
this.collectionTriggerAction(
|
|
202
|
+
this.collectionTriggerAction(ctx, beforeWorkflows);
|
|
189
203
|
}
|
|
190
204
|
if (resourceName === "workflows" && actionName === "trigger") {
|
|
191
|
-
return this.workflowTriggerAction(
|
|
205
|
+
return this.workflowTriggerAction(ctx, next);
|
|
192
206
|
}
|
|
193
207
|
await next();
|
|
194
208
|
if (!triggerWorkflows || !["create", "update"].includes(actionName)) {
|
|
195
209
|
return;
|
|
196
210
|
}
|
|
197
|
-
this.collectionTriggerAction(
|
|
211
|
+
this.collectionTriggerAction(ctx, triggerWorkflows);
|
|
198
212
|
};
|
|
199
213
|
const { db } = workflow.app;
|
|
200
214
|
db.on("approvals.afterSave", this.triggerHandler);
|
|
@@ -202,10 +216,10 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
202
216
|
db.on("executions.afterUpdate", this.onExecutionUpdate);
|
|
203
217
|
workflow.app.use(this.middleware, { tag: "workflow-trigger", after: "dataSource" });
|
|
204
218
|
}
|
|
205
|
-
async workflowTriggerAction(
|
|
206
|
-
const { triggerWorkflows, values } =
|
|
219
|
+
async workflowTriggerAction(ctx, next) {
|
|
220
|
+
const { triggerWorkflows, values } = ctx.action.params;
|
|
207
221
|
if (!triggerWorkflows) {
|
|
208
|
-
return
|
|
222
|
+
return ctx.throw(400);
|
|
209
223
|
}
|
|
210
224
|
const triggers = triggerWorkflows.split(",").map((trigger) => trigger.split("!"));
|
|
211
225
|
const workflowRepo = this.workflow.db.getRepository("workflows");
|
|
@@ -217,7 +231,7 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
217
231
|
enabled: true
|
|
218
232
|
}
|
|
219
233
|
});
|
|
220
|
-
|
|
234
|
+
ctx.status = 202;
|
|
221
235
|
await next();
|
|
222
236
|
workflows.forEach(async (workflow) => {
|
|
223
237
|
const trigger = triggers.find((trigger2) => trigger2[0] === workflow.key);
|
|
@@ -229,7 +243,7 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
229
243
|
// createdBy: currentUser.id,
|
|
230
244
|
// updatedById: currentUser.id,
|
|
231
245
|
},
|
|
232
|
-
context
|
|
246
|
+
context: ctx
|
|
233
247
|
});
|
|
234
248
|
const approvalRepo = this.workflow.db.getRepository("approvals");
|
|
235
249
|
await approvalRepo.create({
|
|
@@ -250,12 +264,12 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
250
264
|
app: this.workflow.app
|
|
251
265
|
})
|
|
252
266
|
},
|
|
253
|
-
context
|
|
267
|
+
context: ctx
|
|
254
268
|
});
|
|
255
269
|
});
|
|
256
270
|
}
|
|
257
|
-
async collectionTriggerAction(
|
|
258
|
-
const dataSourceHeader =
|
|
271
|
+
async collectionTriggerAction(ctx, workflowList) {
|
|
272
|
+
const dataSourceHeader = ctx.get("x-data-source") || "main";
|
|
259
273
|
const approvalRepo = this.workflow.db.getRepository("approvals");
|
|
260
274
|
const triggers = workflowList.split(",").map((trigger) => trigger.split("!"));
|
|
261
275
|
const triggersKeysMap = new Map(triggers);
|
|
@@ -265,7 +279,7 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
265
279
|
for (const workflow of workflows) {
|
|
266
280
|
const [dataSourceName, collectionName] = (0, import_server.parseCollectionName)(workflow.config.collection);
|
|
267
281
|
const trigger = triggers.find((trigger2) => trigger2[0] === workflow.key);
|
|
268
|
-
const { body: data } =
|
|
282
|
+
const { body: data } = ctx;
|
|
269
283
|
if (!data) {
|
|
270
284
|
return;
|
|
271
285
|
}
|
|
@@ -293,7 +307,7 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
293
307
|
}
|
|
294
308
|
}
|
|
295
309
|
}
|
|
296
|
-
const collection =
|
|
310
|
+
const collection = ctx.tego.dataSourceManager.dataSources.get(dataSourceName).collectionManager.getCollection(collectionName);
|
|
297
311
|
if (!collection || collection.model !== payload.constructor) {
|
|
298
312
|
return;
|
|
299
313
|
}
|
|
@@ -307,15 +321,15 @@ const _ApprovalTrigger = class _ApprovalTrigger extends import_module_workflow.T
|
|
|
307
321
|
// updatedBy: currentUser.id,
|
|
308
322
|
workflowId: workflow.id,
|
|
309
323
|
workflowKey: workflow.key,
|
|
310
|
-
applicantRoleName:
|
|
324
|
+
applicantRoleName: ctx.state.currentRole,
|
|
311
325
|
summary: (0, import_tools.getSummary)({
|
|
312
326
|
summaryConfig: workflow.config.summary,
|
|
313
327
|
data: dataCurrent,
|
|
314
328
|
collection,
|
|
315
|
-
app:
|
|
329
|
+
app: ctx.app
|
|
316
330
|
})
|
|
317
331
|
},
|
|
318
|
-
context
|
|
332
|
+
context: ctx
|
|
319
333
|
});
|
|
320
334
|
});
|
|
321
335
|
}
|
package/dist/server/utils.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare function findUniqueObjects(sourceArray: any[], uniqueByArray: string[], compareByKey?: string, compareByFunc?: (a: any, b: any) => number): any[];
|
|
2
|
-
export declare function getWorkflow(
|
|
3
|
-
export declare function getWorkflowByKey(
|
|
2
|
+
export declare function getWorkflow(ctx: any, workflowId: any): Promise<any>;
|
|
3
|
+
export declare function getWorkflowByKey(ctx: any, workflowKey: any): Promise<any>;
|
package/dist/server/utils.js
CHANGED
|
@@ -35,17 +35,17 @@ function findUniqueObjects(sourceArray = [], uniqueByArray, compareByKey = "", c
|
|
|
35
35
|
result = Object.values(uniqueMap);
|
|
36
36
|
return result;
|
|
37
37
|
}
|
|
38
|
-
async function getWorkflow(
|
|
38
|
+
async function getWorkflow(ctx, workflowId) {
|
|
39
39
|
if (workflowId) {
|
|
40
|
-
return await
|
|
40
|
+
return await ctx.db.getRepository("workflows").findOne({
|
|
41
41
|
filterByTk: workflowId
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
return null;
|
|
45
45
|
}
|
|
46
|
-
async function getWorkflowByKey(
|
|
46
|
+
async function getWorkflowByKey(ctx, workflowKey) {
|
|
47
47
|
if (workflowKey) {
|
|
48
|
-
return await
|
|
48
|
+
return await ctx.db.getRepository("workflows").findOne({
|
|
49
49
|
filter: {
|
|
50
50
|
key: workflowKey,
|
|
51
51
|
enabled: true
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tachybase/plugin-workflow-approval",
|
|
3
3
|
"displayName": "Approval",
|
|
4
|
-
"version": "1.6.
|
|
4
|
+
"version": "1.6.3",
|
|
5
5
|
"description": "Approval base in Workflow",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"Approval",
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
],
|
|
10
10
|
"main": "dist/server/index.js",
|
|
11
11
|
"devDependencies": {
|
|
12
|
-
"@ant-design/icons": "^
|
|
13
|
-
"@tachybase/schema": "1.
|
|
14
|
-
"@tachybase/test": "1.
|
|
15
|
-
"@tego/client": "1.
|
|
16
|
-
"@tego/server": "1.
|
|
12
|
+
"@ant-design/icons": "^6.1.0",
|
|
13
|
+
"@tachybase/schema": "1.6.1",
|
|
14
|
+
"@tachybase/test": "1.6.1",
|
|
15
|
+
"@tego/client": "1.6.1",
|
|
16
|
+
"@tego/server": "1.6.1",
|
|
17
17
|
"@types/file-saver": "^2.0.7",
|
|
18
18
|
"@types/lodash": "^4.17.20",
|
|
19
19
|
"ahooks": "^3.9.0",
|
|
@@ -27,9 +27,9 @@
|
|
|
27
27
|
"react-i18next": "16.2.1",
|
|
28
28
|
"react-router-dom": "6.28.1",
|
|
29
29
|
"sequelize": "6.37.5",
|
|
30
|
-
"@tachybase/
|
|
31
|
-
"@tachybase/module-
|
|
32
|
-
"@tachybase/
|
|
30
|
+
"@tachybase/module-workflow": "1.6.3",
|
|
31
|
+
"@tachybase/module-ui-schema": "1.6.3",
|
|
32
|
+
"@tachybase/client": "1.6.3"
|
|
33
33
|
},
|
|
34
34
|
"description.zh-CN": "审批系统是一个强大的BPM工具,为业务流程自动化提供基础支持,同时具备高度灵活性和可扩展性,确保审批流程的效率和合规性,助力企业释放创新潜力。",
|
|
35
35
|
"displayName.zh-CN": "审批"
|