@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.
@@ -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
- const workflow = await approval.getWorkflow({
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 (context, next) => {
179
- if (!context.action) {
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
- } = context.action;
200
+ } = ctx.action;
187
201
  if (beforeWorkflows) {
188
- this.collectionTriggerAction(context, beforeWorkflows);
202
+ this.collectionTriggerAction(ctx, beforeWorkflows);
189
203
  }
190
204
  if (resourceName === "workflows" && actionName === "trigger") {
191
- return this.workflowTriggerAction(context, next);
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(context, triggerWorkflows);
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(context, next) {
206
- const { triggerWorkflows, values } = context.action.params;
219
+ async workflowTriggerAction(ctx, next) {
220
+ const { triggerWorkflows, values } = ctx.action.params;
207
221
  if (!triggerWorkflows) {
208
- return context.throw(400);
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
- context.status = 202;
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(context, workflowList) {
258
- const dataSourceHeader = context.get("x-data-source") || "main";
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 } = context;
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 = context.app.dataSourceManager.dataSources.get(dataSourceName).collectionManager.getCollection(collectionName);
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: context.state.currentRole,
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: context.app
329
+ app: ctx.app
316
330
  })
317
331
  },
318
- context
332
+ context: ctx
319
333
  });
320
334
  });
321
335
  }
@@ -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(context: any, workflowId: any): Promise<any>;
3
- export declare function getWorkflowByKey(context: any, workflowKey: any): Promise<any>;
2
+ export declare function getWorkflow(ctx: any, workflowId: any): Promise<any>;
3
+ export declare function getWorkflowByKey(ctx: any, workflowKey: any): Promise<any>;
@@ -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(context, workflowId) {
38
+ async function getWorkflow(ctx, workflowId) {
39
39
  if (workflowId) {
40
- return await context.db.getRepository("workflows").findOne({
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(context, workflowKey) {
46
+ async function getWorkflowByKey(ctx, workflowKey) {
47
47
  if (workflowKey) {
48
- return await context.db.getRepository("workflows").findOne({
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.0",
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": "^5.6.1",
13
- "@tachybase/schema": "1.3.52",
14
- "@tachybase/test": "1.3.52",
15
- "@tego/client": "1.3.52",
16
- "@tego/server": "1.3.52",
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/client": "1.6.0",
31
- "@tachybase/module-workflow": "1.6.0",
32
- "@tachybase/module-ui-schema": "1.6.0"
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": "审批"