@nocobase/plugin-workflow 1.6.0-alpha.2 → 1.6.0-alpha.21

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.
Files changed (50) hide show
  1. package/dist/client/4147131201cde30c.js +10 -0
  2. package/dist/client/4a2b78cd09ce676a.js +10 -0
  3. package/dist/client/FlowContext.d.ts +2 -0
  4. package/dist/client/WorkflowTasks.d.ts +17 -0
  5. package/dist/client/e73d2e9169520d3e.js +10 -0
  6. package/dist/client/index.d.ts +3 -0
  7. package/dist/client/index.js +1 -1
  8. package/dist/client/nodes/calculation.d.ts +3 -2
  9. package/dist/client/nodes/condition.d.ts +1 -0
  10. package/dist/client/nodes/create.d.ts +3 -2
  11. package/dist/client/nodes/destroy.d.ts +2 -0
  12. package/dist/client/nodes/end.d.ts +2 -0
  13. package/dist/client/nodes/index.d.ts +1 -0
  14. package/dist/client/nodes/output.d.ts +31 -0
  15. package/dist/client/nodes/query.d.ts +5 -4
  16. package/dist/client/nodes/update.d.ts +3 -2
  17. package/dist/client/triggers/schedule/ScheduleModes.d.ts +5 -2
  18. package/dist/client/triggers/schedule/index.d.ts +2 -0
  19. package/dist/client/variable.d.ts +17 -6
  20. package/dist/externalVersion.js +11 -11
  21. package/dist/locale/en-US.json +3 -1
  22. package/dist/locale/zh-CN.json +11 -7
  23. package/dist/node_modules/cron-parser/package.json +1 -1
  24. package/dist/node_modules/lru-cache/package.json +1 -1
  25. package/dist/server/Plugin.d.ts +9 -6
  26. package/dist/server/Plugin.js +116 -45
  27. package/dist/server/Processor.d.ts +5 -0
  28. package/dist/server/Processor.js +15 -6
  29. package/dist/server/actions/workflows.js +5 -2
  30. package/dist/server/collections/executions.js +9 -0
  31. package/dist/server/collections/flow_nodes.js +1 -0
  32. package/dist/server/collections/jobs.js +1 -0
  33. package/dist/server/collections/workflows.js +1 -0
  34. package/dist/server/instructions/CreateInstruction.js +1 -1
  35. package/dist/server/instructions/DestroyInstruction.js +1 -1
  36. package/dist/server/instructions/UpdateInstruction.js +1 -1
  37. package/dist/server/triggers/CollectionTrigger.d.ts +6 -6
  38. package/dist/server/triggers/CollectionTrigger.js +51 -31
  39. package/dist/server/triggers/ScheduleTrigger/DateFieldScheduleTrigger.d.ts +5 -1
  40. package/dist/server/triggers/ScheduleTrigger/DateFieldScheduleTrigger.js +53 -14
  41. package/dist/server/triggers/ScheduleTrigger/StaticScheduleTrigger.d.ts +1 -0
  42. package/dist/server/triggers/ScheduleTrigger/StaticScheduleTrigger.js +3 -0
  43. package/dist/server/triggers/ScheduleTrigger/index.d.ts +2 -2
  44. package/dist/server/triggers/ScheduleTrigger/index.js +21 -3
  45. package/dist/server/triggers/index.d.ts +4 -1
  46. package/package.json +3 -3
  47. package/dist/client/923.index.js +0 -10
  48. package/dist/client/929.index.js +0 -10
  49. package/dist/client/999.index.js +0 -10
  50. /package/dist/client/{383.index.js → 739d458621edf81f.js} +0 -0
@@ -43,6 +43,7 @@ var import_database = require("@nocobase/database");
43
43
  var import_cron_parser = __toESM(require("cron-parser"));
44
44
  var import_utils = require("./utils");
45
45
  var import_data_source_manager = require("@nocobase/data-source-manager");
46
+ var import_lodash = require("lodash");
46
47
  function getOnTimestampWithOffset({ field, offset = 0, unit = 1e3 }, now) {
47
48
  if (!field) {
48
49
  return null;
@@ -64,7 +65,7 @@ function getDataOptionTime(record, on, dir = 1) {
64
65
  if (!field || !record.get(field)) {
65
66
  return null;
66
67
  }
67
- const second = new Date(record.get(field).getTime());
68
+ const second = new Date(record.get(field));
68
69
  second.setMilliseconds(0);
69
70
  return second.getTime() + offset * unit * dir;
70
71
  }
@@ -131,6 +132,7 @@ class DateFieldScheduleTrigger {
131
132
  const now = /* @__PURE__ */ new Date();
132
133
  workflows.forEach(async (workflow) => {
133
134
  const records = await this.loadRecordsToSchedule(workflow, now);
135
+ this.workflow.getLogger(workflow.id).info(`[Schedule on date field] ${records.length} records to schedule`);
134
136
  records.forEach((record) => {
135
137
  const nextTime = this.getRecordNextTime(workflow, record);
136
138
  this.schedule(workflow, record, nextTime, Boolean(nextTime));
@@ -144,17 +146,20 @@ class DateFieldScheduleTrigger {
144
146
  // b. repeat in range (number or cron):
145
147
  // i. endsOn after now -> yes
146
148
  // ii. endsOn before now -> no
147
- async loadRecordsToSchedule({ config: { collection, limit, startsOn, repeat, endsOn }, allExecuted }, currentDate) {
149
+ async loadRecordsToSchedule({ id, config: { collection, limit, startsOn, repeat, endsOn }, allExecuted }, currentDate) {
148
150
  const { dataSourceManager } = this.workflow.app;
149
151
  if (limit && allExecuted >= limit) {
152
+ this.workflow.getLogger(id).warn(`[Schedule on date field] limit reached (all executed ${allExecuted})`);
150
153
  return [];
151
154
  }
152
155
  if (!startsOn) {
156
+ this.workflow.getLogger(id).warn(`[Schedule on date field] "startsOn" is not configured`);
153
157
  return [];
154
158
  }
155
159
  const timestamp = currentDate.getTime();
156
160
  const startTimestamp = getOnTimestampWithOffset(startsOn, currentDate);
157
161
  if (!startTimestamp) {
162
+ this.workflow.getLogger(id).warn(`[Schedule on date field] "startsOn.field" is not configured`);
158
163
  return [];
159
164
  }
160
165
  const [dataSourceName, collectionName] = (0, import_data_source_manager.parseCollectionName)(collection);
@@ -181,7 +186,7 @@ class DateFieldScheduleTrigger {
181
186
  const modExp = (0, import_database.fn)(
182
187
  "MOD",
183
188
  (0, import_database.literal)(
184
- `${Math.round(timestamp / 1e3)} - ${db.sequelize.getQueryInterface().quoteIdentifiers(tsFn(field))}`
189
+ `${Math.round(timestamp / 1e3)} - ${tsFn(db.sequelize.getQueryInterface().quoteIdentifiers(field))}`
185
190
  ),
186
191
  Math.round(repeat / 1e3)
187
192
  );
@@ -193,21 +198,21 @@ class DateFieldScheduleTrigger {
193
198
  }
194
199
  }
195
200
  if (endsOn) {
196
- const now = /* @__PURE__ */ new Date();
197
- const endTimestamp = getOnTimestampWithOffset(endsOn, now);
198
- if (!endTimestamp) {
199
- return [];
200
- }
201
201
  if (typeof endsOn === "string") {
202
- if (endTimestamp <= timestamp) {
202
+ if ((0, import_utils.parseDateWithoutMs)(endsOn) <= timestamp) {
203
203
  return [];
204
204
  }
205
205
  } else {
206
- conditions.push({
207
- [endsOn.field]: {
208
- [import_database.Op.gte]: new Date(endTimestamp)
209
- }
210
- });
206
+ const endTimestamp = getOnTimestampWithOffset(endsOn, currentDate);
207
+ if (endTimestamp) {
208
+ conditions.push({
209
+ [endsOn.field]: {
210
+ [import_database.Op.gte]: new Date(endTimestamp)
211
+ }
212
+ });
213
+ } else {
214
+ this.workflow.getLogger(id).warn(`[Schedule on date field] "endsOn.field" is not configured`);
215
+ }
211
216
  }
212
217
  }
213
218
  } else {
@@ -217,6 +222,7 @@ class DateFieldScheduleTrigger {
217
222
  }
218
223
  });
219
224
  }
225
+ this.workflow.getLogger(id).debug(`[Schedule on date field] conditions: `, { conditions });
220
226
  return model.findAll({
221
227
  where: {
222
228
  [import_database.Op.and]: conditions
@@ -363,4 +369,37 @@ class DateFieldScheduleTrigger {
363
369
  this.events.delete(name);
364
370
  }
365
371
  }
372
+ async execute(workflow, values, options) {
373
+ var _a;
374
+ const [dataSourceName, collectionName] = (0, import_data_source_manager.parseCollectionName)(workflow.config.collection);
375
+ const { collectionManager } = this.workflow.app.dataSourceManager.dataSources.get(dataSourceName);
376
+ const { filterTargetKey, repository } = collectionManager.getCollection(collectionName);
377
+ let { data } = values;
378
+ let filterByTk;
379
+ let loadNeeded = false;
380
+ if (data && typeof data === "object") {
381
+ filterByTk = Array.isArray(filterTargetKey) ? (0, import_lodash.pick)(
382
+ data,
383
+ filterTargetKey.sort((a, b) => a.localeCompare(b))
384
+ ) : data[filterTargetKey];
385
+ } else {
386
+ filterByTk = data;
387
+ loadNeeded = true;
388
+ }
389
+ if (loadNeeded || ((_a = workflow.config.appends) == null ? void 0 : _a.length)) {
390
+ data = await repository.findOne({
391
+ filterByTk,
392
+ appends: workflow.config.appends
393
+ });
394
+ }
395
+ return this.workflow.trigger(workflow, { ...values, data, date: (values == null ? void 0 : values.date) ?? /* @__PURE__ */ new Date() }, options);
396
+ }
397
+ validateContext(values) {
398
+ if (!(values == null ? void 0 : values.data)) {
399
+ return {
400
+ data: "Data is required"
401
+ };
402
+ }
403
+ return null;
404
+ }
366
405
  }
@@ -18,4 +18,5 @@ export default class StaticScheduleTrigger {
18
18
  trigger(workflow: WorkflowModel, time: number): Promise<void>;
19
19
  on(workflow: any): void;
20
20
  off(workflow: any): void;
21
+ execute(workflow: any, values: any, options: any): void | Promise<import("../..").Processor>;
21
22
  }
@@ -149,4 +149,7 @@ class StaticScheduleTrigger {
149
149
  off(workflow) {
150
150
  this.schedule(workflow, null, false);
151
151
  }
152
+ execute(workflow, values, options) {
153
+ return this.workflow.trigger(workflow, { ...values, date: (values == null ? void 0 : values.date) ?? /* @__PURE__ */ new Date() }, options);
154
+ }
152
155
  }
@@ -6,7 +6,6 @@
6
6
  * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
- import { Context } from '@nocobase/actions';
10
9
  import Trigger from '..';
11
10
  import type Plugin from '../../Plugin';
12
11
  export default class ScheduleTrigger extends Trigger {
@@ -16,5 +15,6 @@ export default class ScheduleTrigger extends Trigger {
16
15
  private getTrigger;
17
16
  on(workflow: any): void;
18
17
  off(workflow: any): void;
19
- execute(workflow: any, context: Context, options: any): Promise<void | import("../..").Processor>;
18
+ execute(workflow: any, values: any, options: any): Promise<any>;
19
+ validateContext(values: any): any;
20
20
  }
@@ -68,9 +68,12 @@ class ScheduleTrigger extends import__.default {
68
68
  trigger.off(workflow);
69
69
  }
70
70
  }
71
- async execute(workflow, context, options) {
72
- const { values } = context.action.params;
73
- return this.workflow.trigger(workflow, { ...values, date: (values == null ? void 0 : values.date) ?? /* @__PURE__ */ new Date() }, options);
71
+ async execute(workflow, values, options) {
72
+ const mode = workflow.config.mode;
73
+ const trigger = this.getTrigger(mode);
74
+ if (trigger) {
75
+ return trigger.execute(workflow, values, options);
76
+ }
74
77
  }
75
78
  // async validateEvent(workflow: WorkflowModel, context: any, options: Transactionable): Promise<boolean> {
76
79
  // if (!context.date) {
@@ -85,4 +88,19 @@ class ScheduleTrigger extends import__.default {
85
88
  // });
86
89
  // return !existed.length;
87
90
  // }
91
+ validateContext(values) {
92
+ var _a;
93
+ if (!(values == null ? void 0 : values.mode)) {
94
+ return {
95
+ mode: "Mode is required"
96
+ };
97
+ }
98
+ const trigger = this.getTrigger(values.mode);
99
+ if (!trigger) {
100
+ return {
101
+ mode: "Mode in invalid"
102
+ };
103
+ }
104
+ return (_a = trigger.validateContext) == null ? void 0 : _a.call(trigger, values);
105
+ }
88
106
  }
@@ -17,7 +17,10 @@ export declare abstract class Trigger {
17
17
  off(workflow: WorkflowModel): void;
18
18
  validateEvent(workflow: WorkflowModel, context: any, options: Transactionable): boolean | Promise<boolean>;
19
19
  duplicateConfig?(workflow: WorkflowModel, options: Transactionable): object | Promise<object>;
20
+ validateContext?(values: any): null | void | {
21
+ [key: string]: string;
22
+ };
20
23
  sync?: boolean;
21
- execute?(workflow: WorkflowModel, context: any, options: Transactionable): void | Processor | Promise<void | Processor>;
24
+ execute?(workflow: WorkflowModel, values: any, options: Transactionable): void | Processor | Promise<void | Processor>;
22
25
  }
23
26
  export default Trigger;
package/package.json CHANGED
@@ -4,13 +4,13 @@
4
4
  "displayName.zh-CN": "工作流",
5
5
  "description": "A powerful BPM tool that provides foundational support for business automation, with the capability to extend unlimited triggers and nodes.",
6
6
  "description.zh-CN": "一个强大的 BPM 工具,为业务自动化提供基础支持,并且可任意扩展更多的触发器和节点。",
7
- "version": "1.6.0-alpha.2",
7
+ "version": "1.6.0-alpha.21",
8
8
  "license": "AGPL-3.0",
9
9
  "main": "./dist/server/index.js",
10
10
  "homepage": "https://docs.nocobase.com/handbook/workflow",
11
11
  "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/workflow",
12
12
  "dependencies": {
13
- "@nocobase/plugin-workflow-test": "1.6.0-alpha.2"
13
+ "@nocobase/plugin-workflow-test": "1.6.0-alpha.21"
14
14
  },
15
15
  "devDependencies": {
16
16
  "@ant-design/icons": "5.x",
@@ -44,7 +44,7 @@
44
44
  "@nocobase/test": "1.x",
45
45
  "@nocobase/utils": "1.x"
46
46
  },
47
- "gitHead": "08bbc34c21727fc0ad0880f397a42bf7741091ee",
47
+ "gitHead": "873cbaec9554e684781b8dc6cfd4386bb5cfa5b0",
48
48
  "keywords": [
49
49
  "Workflow"
50
50
  ]
@@ -1,10 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- "use strict";(self.webpackChunk_nocobase_plugin_workflow=self.webpackChunk_nocobase_plugin_workflow||[]).push([["923"],{1837:function(e,t,o){o.r(t),o.d(t,{WorkflowPane:function(){return V}});var n,r,c=o("8156"),i=o.n(c),l=o("2721"),a=o("8563"),p=o("3505"),s=o("3772"),u=o("8958");function m(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{},n=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(o).filter(function(e){return Object.getOwnPropertyDescriptor(o,e).enumerable}))),n.forEach(function(t){var n,r,c;n=e,r=t,c=o[t],r in n?Object.defineProperty(n,r,{value:c,enumerable:!0,configurable:!0,writable:!0}):n[r]=c})}return e}function d(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);o.push.apply(o,n)}return o})(Object(t)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(t,o))}),e}var y=function(e){var t,o=e.request,n=(e.filter,function(e,t){if(null==e)return{};var o,n,r=function(e,t){if(null==e)return{};var o,n,r={},c=Object.keys(e);for(n=0;n<c.length;n++)o=c[n],!(t.indexOf(o)>=0)&&(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n<c.length;n++){if(o=c[n],!(t.indexOf(o)>=0))Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}}return r}(e,["request","filter"])),r=(0,s.useRecord)(),c=d(m({},n),{request:d(m({},o),{params:d(m({},null==o?void 0:o.params),{filter:d(m({},null==o?void 0:null===(t=o.params)||void 0===t?void 0:t.filter),{key:r.key})})})});return i().createElement(s.ResourceActionProvider,c)},f=o("3238"),b=o("6128"),x=o("7893"),v=function(){var e=(0,f.useTranslation)().t,t=(0,s.useRecord)().id,o=(0,s.useActionContext)().setVisible,n=(0,s.useGetAriaLabelOfAction)("Configure").getAriaLabel;return i().createElement(b.Link,{"aria-label":n(),to:(0,x.SI)(t),onClick:function(){return o(!1)}},e("Configure"))};function O(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,n=Array(t);o<t;o++)n[o]=e[o];return n}function g(e){var t,o,n,r,l=e.component,a=e.children,u=function(e,t){if(null==e)return{};var o,n,r=function(e,t){if(null==e)return{};var o,n,r={},c=Object.keys(e);for(n=0;n<c.length;n++)o=c[n],!(t.indexOf(o)>=0)&&(r[o]=e[o]);return r}(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(n=0;n<c.length;n++){if(o=c[n],!(t.indexOf(o)>=0))Object.prototype.propertyIsEnumerable.call(e,o)&&(r[o]=e[o])}}return r}(e,["component","children"]);var m=(t=(0,c.useState)(!1),o=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var o,n,r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var c=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(o=r.next()).done)&&(c.push(o.value),!t||c.length!==t);i=!0);}catch(e){l=!0,n=e}finally{try{!i&&null!=r.return&&r.return()}finally{if(l)throw n}}return c}}(t,2)||function(e,t){if(e){if("string"==typeof e)return O(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);if("Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o)return Array.from(o);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return O(e,t)}}(t,o)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),d=m[0],y=m[1],f=(0,p.useFieldSchema)();return i().createElement(s.ActionContextProvider,{value:{visible:d,setVisible:y,fieldSchema:f}},i().createElement(void 0===l?"div":l,(n=function(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{},n=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(o).filter(function(e){return Object.getOwnPropertyDescriptor(o,e).enumerable}))),n.forEach(function(t){var n,r,c;n=e,r=t,c=o[t],r in n?Object.defineProperty(n,r,{value:c,enumerable:!0,configurable:!0,writable:!0}):n[r]=c})}return e}({},u),r=(r={onClick:function(){y(!0)}},r),Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):(function(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);o.push.apply(o,n)}return o})(Object(r)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}),n),a),i().createElement(s.SchemaComponent,{schema:f,onlyRenderProperties:!0}))}var h=o("573"),w=o("2659");function A(e,t,o,n,r,c,i){try{var l=e[c](i),a=l.value}catch(e){o(e);return}l.done?t(a):Promise.resolve(a).then(n,r)}function S(e){return function(){var t=this,o=arguments;return new Promise(function(n,r){var c=e.apply(t,o);function i(e){A(c,n,r,i,l,"next",e)}function l(e){A(c,n,r,i,l,"throw",e)}i(void 0)})}}function P(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function j(e,t){var o,n,r,c,i={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return c={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(c[Symbol.iterator]=function(){return this}),c;function l(c){return function(l){return function(c){if(o)throw TypeError("Generator is already executing.");for(;i;)try{if(o=1,n&&(r=2&c[0]?n.return:c[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,c[1])).done)return r;switch(n=0,r&&(c=[2&c[0],r.value]),c[0]){case 0:case 1:r=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,n=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(r=(r=i.trys).length>0&&r[r.length-1])&&(6===c[0]||2===c[0])){i=0;continue}if(3===c[0]&&(!r||c[1]>r[0]&&c[1]<r[3])){i.label=c[1];break}if(6===c[0]&&i.label<r[1]){i.label=r[1],r=c;break}if(r&&i.label<r[2]){i.label=r[2],i.ops.push(c);break}r[2]&&i.ops.pop(),i.trys.pop();continue}c=t.call(e,i)}catch(e){c=[6,e],n=0}finally{o=r=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,l])}}}var C={name:"workflows",fields:[{type:"string",name:"title",interface:"input",uiSchema:{title:'{{t("Name")}}',type:"string","x-component":"Input",required:!0}},{type:"string",name:"type",interface:"select",uiSchema:{title:'{{t("Trigger type", { ns: "'.concat(h.A7,'" })}}'),type:"string","x-decorator":"FormItem","x-component":"Select",enum:"{{useTriggersOptions()}}","x-component-props":{optionRender:function(e){var t=e.data,o=t.label,n=t.color,r=t.options,c=(0,s.useCompile)();return i().createElement(l.Space,{direction:"vertical"},i().createElement(l.Tag,{color:n},c(o)),i().createElement(l.Typography.Text,{type:"secondary",style:{whiteSpace:"normal"}},c(r.description)))},popupMatchSelectWidth:!0,listHeight:300},required:!0}},{type:"boolean",name:"sync",interface:"select",uiSchema:{title:'{{t("Mode", { ns: "'.concat(h.A7,'" })}}'),type:"boolean","x-decorator":"FormItem","x-component":"Select",enum:[{label:'{{ t("Asynchronously", { ns: "'.concat(h.A7,'" }) }}'),value:!1,color:"cyan"},{label:'{{ t("Synchronously", { ns: "'.concat(h.A7,'" }) }}'),value:!0,color:"orange"}],required:!0}},{type:"string",name:"description",interface:"textarea",uiSchema:{title:'{{t("Description")}}',type:"string","x-component":"Input.TextArea"}},{type:"boolean",name:"enabled",interface:"radioGroup",uiSchema:{title:'{{t("Status", { ns: "'.concat(h.A7,'" })}}'),type:"string",enum:[{label:'{{t("On", { ns: "'.concat(h.A7,'" })}}'),value:!0,color:"#52c41a"},{label:'{{t("Off", { ns: "'.concat(h.A7,'" })}}'),value:!1}],"x-component":"Radio.Group","x-decorator":"FormItem",default:!1}},{type:"number",name:"allExecuted",interface:"integer",uiSchema:{title:'{{t("Executed", { ns: "'.concat(h.A7,'" })}}'),type:"number","x-component":"InputNumber","x-decorator":"FormItem"}},{type:"object",name:"options"}]},k={title:{"x-component":"CollectionField","x-decorator":"FormItem"},type:{"x-component":"CollectionField","x-decorator":"FormItem"},sync:{type:"boolean",title:'{{ t("Execute mode", { ns: "'.concat(h.A7,'" }) }}'),description:'{{ t("Execute workflow asynchronously or synchronously based on trigger type, and could not be changed after created.", { ns: "'.concat(h.A7,'" }) }}'),"x-decorator":"FormItem","x-component":"SyncOptionSelect","x-component-props":{options:[{label:'{{ t("Asynchronously", { ns: "'.concat(h.A7,'" }) }}'),value:!1,tooltip:'{{ t("Will be executed in the background as a queued task.", { ns: "'.concat(h.A7,'" }) }}')},{label:'{{ t("Synchronously", { ns: "'.concat(h.A7,'" }) }}'),value:!0,tooltip:'{{ t("For user actions that require immediate feedback. Can not use asynchronous nodes in such mode, and it is not recommended to perform time-consuming operations under synchronous mode.", { ns: "'.concat(h.A7,'" }) }}')}]}},enabled:{"x-component":"CollectionField","x-decorator":"FormItem"},description:{"x-component":"CollectionField","x-decorator":"FormItem"},options:{type:"object","x-component":"fieldset",properties:{deleteExecutionOnStatus:{type:"array",title:'{{ t("Auto delete history when execution is on end status", { ns: "'.concat(h.A7,'" }) }}'),"x-decorator":"FormItem","x-component":"ExecutionStatusSelect","x-component-props":{multiple:!0}}}}},E=P({name:"workflow",type:"void"},"properties",P({},"provider",P({type:"void","x-decorator":"ResourceActionProvider","x-decorator-props":{collection:C,resourceName:"workflows",request:{resource:"workflows",action:"list",params:{filter:{current:!0},sort:["-createdAt"],except:["config"]}}},"x-component":"CollectionProvider_deprecated","x-component-props":{collection:C}},"properties",P({actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{filter:{type:"void",title:'{{ t("Filter") }}',default:{$and:[{title:{$includes:""}}]},"x-action":"filter","x-component":"Filter.Action","x-use-component-props":"cm.useFilterActionProps","x-component-props":{icon:"FilterOutlined"},"x-align":"left"},refresher:{type:"void",title:'{{ t("Refresh") }}',"x-component":"Action","x-use-component-props":"useRefreshActionProps","x-component-props":{icon:"ReloadOutlined"}},sync:{type:"void",title:'{{t("Sync", { ns: "'.concat(h.A7,'" })}}'),"x-decorator":"Tooltip","x-decorator-props":{title:'{{ t("Sync enabled status of all workflows from database", { ns: "'.concat(h.A7,'" }) }}')},"x-component":"Action","x-component-props":{icon:"SyncOutlined",useAction:function(){var e=(0,f.useTranslation)().t,t=(0,s.useResourceContext)().resource,o=(0,s.useResourceActionContext)();return{run:function(){return S(function(){return j(this,function(n){switch(n.label){case 0:return[4,t.sync()];case 1:return n.sent(),[4,null==o?void 0:o.refresh()];case 2:return n.sent(),l.message.success(e("Operation succeeded")),[2]}})})()}}}},"x-reactions":["{{useWorkflowSyncAction}}"]},delete:{type:"void",title:'{{t("Delete")}}',"x-component":"Action","x-component-props":{icon:"DeleteOutlined",useAction:"{{ cm.useBulkDestroyAction }}",confirm:{title:"{{t('Delete record')}}",content:"{{t('Are you sure you want to delete it?')}}"}}},create:{type:"void",title:'{{t("Add new")}}',"x-component":"Action","x-component-props":{type:"primary",icon:"PlusOutlined"},properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{initialValue:{current:!0}},title:'{{t("Add new")}}',properties:{title:k.title,type:k.type,sync:k.sync,description:k.description,options:k.options,footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{ t("Cancel") }}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{ t("Submit") }}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ cm.useCreateAction }}"}}}}}}}}}}},"table",P({type:"void","x-component":"Table.Void","x-component-props":{rowKey:"id",rowSelection:{type:"checkbox"},useDataSource:"{{ cm.useDataSourceFromRAC }}"}},"properties",P({title:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{title:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},type:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{type:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},sync:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{sync:{type:"boolean","x-component":"CollectionField","x-read-pretty":!0}}},enabled:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{enabled:{type:"boolean","x-component":"CollectionField","x-read-pretty":!0,default:!1}}},allExecuted:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{allExecuted:{type:"number","x-decorator":"OpenDrawer","x-decorator-props":{component:function(e){var t=(0,s.useRecord)();return i().createElement("a",function(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{},n=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(o).filter(function(e){return Object.getOwnPropertyDescriptor(o,e).enumerable}))),n.forEach(function(t){P(e,t,o[t])})}return e}({"aria-label":"executed-".concat(t.title)},e))}},"x-component":"CollectionField","x-read-pretty":!0,properties:{drawer:w.V}}}}},"actions",P({type:"void",title:'{{ t("Actions") }}',"x-component":"Table.Column"},"properties",P({},"actions",P({type:"void","x-component":"Space","x-component-props":{split:"|"}},"properties",(P(r={configure:{type:"void","x-component":"WorkflowLink"},update:{type:"void",title:'{{ t("Edit") }}',"x-component":"Action.Link","x-component-props":{type:"primary"},properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues:"{{ cm.useValuesFromRecord }}"},title:'{{ t("Edit") }}',properties:{title:k.title,enabled:k.enabled,sync:k.sync,description:k.description,options:k.options,footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{ t("Cancel") }}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{ t("Submit") }}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ cm.useUpdateAction }}"}}}}}}}}},"revision",P({type:"void",title:'{{t("Duplicate", { ns: "'.concat(h.A7,'" })}}'),"x-component":"Action.Link","x-component-props":{openSize:"small"}},"properties",P({},"modal",P({type:"void",title:'{{t("Duplicate to new workflow", { ns: "'.concat(h.A7,'" })}}'),"x-decorator":"FormV2","x-component":"Action.Modal"},"properties",P({title:{type:"string",title:'{{t("Title")}}',"x-decorator":"FormItem","x-component":"Input"}},"footer",P({type:"void","x-component":"Action.Modal.Footer"},"properties",(P(n={},"submit",P({type:"void",title:'{{t("Submit")}}',"x-component":"Action"},"x-component-props",P({type:"primary"},"useAction",function(){var e=(0,f.useTranslation)().t,t=(0,s.useResourceActionContext)().refresh,o=(0,s.useResourceContext)(),n=o.resource,r=o.targetKey,c=(0,s.useActionContext)().setVisible,i=(0,s.useRecord)()[r],a=(0,p.useForm)().values;return{run:function(){return S(function(){return j(this,function(o){switch(o.label){case 0:return[4,n.revision({filterByTk:i,values:a})];case 1:return o.sent(),l.message.success(e("Operation succeeded")),t(),c(!1),[2]}})})()}}}))),P(n,"cancel",{type:"void",title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}}),n))))))),P(r,"delete",{type:"void",title:'{{ t("Delete") }}',"x-component":"Action.Link","x-component-props":{confirm:{title:"{{t('Delete record')}}",content:"{{t('Are you sure you want to delete it?')}}"},useAction:"{{ cm.useDestroyActionAndRefreshCM }}"}}),r)))))))))),F=o("2266"),D=o("5019"),T=o("8327");function I(e){var t=(0,p.useField)(),o=(0,s.useRecord)(),n=(0,s.usePlugin)(D.default);return(0,p.useFormEffects)(function(e){(0,a.onFieldChange)("type",function(e){var r=o.id||!e.value;if(e.value){var c=n.triggers.get(e.value);null!=c.sync?(r=!0,t.setValue(c.sync)):t.setInitialValue(!1)}t.setPattern(r?"disabled":"editable")})}),(0,c.useEffect)(function(){if(o.id){t.setPattern("disabled");var e=n.triggers.get(o.type);null!=e.sync?t.setValue(e.sync):t.setInitialValue(!1)}},[o.id,t,n.triggers]),i().createElement(D.RadioWithTooltip,e)}function R(e){var t=(0,s.useApp)();e.visible=!!((0,s.usePlugin)("multi-app-share-collection")||"main"!==t.name)}function V(){var e,t,o=(0,c.useContext)(s.SchemaComponentContext),n=(0,s.usePlugin)(D.default).useTriggersOptions;return i().createElement(l.Card,{bordered:!1},i().createElement(s.SchemaComponentContext.Provider,{value:(e=function(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{},n=Object.keys(o);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(o).filter(function(e){return Object.getOwnPropertyDescriptor(o,e).enumerable}))),n.forEach(function(t){var n,r,c;n=e,r=t,c=o[t],r in n?Object.defineProperty(n,r,{value:c,enumerable:!0,configurable:!0,writable:!0}):n[r]=c})}return e}({},o),t=(t={designable:!1},t),Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);o.push.apply(o,n)}return o})(Object(t)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(t,o))}),e)},i().createElement(s.SchemaComponent,{schema:E,components:{WorkflowLink:v,ExecutionResourceProvider:y,ExecutionLink:u.a,OpenDrawer:g,ExecutionStatusSelect:F.P,SyncOptionSelect:I,ExecutionStatusColumn:F.r,Tooltip:l.Tooltip},scope:{useTriggersOptions:n,useWorkflowSyncAction:R,useRefreshActionProps:T.X}})))}}}]);
@@ -1,10 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- "use strict";(self.webpackChunk_nocobase_plugin_workflow=self.webpackChunk_nocobase_plugin_workflow||[]).push([["929"],{458:function(e,t,r){r.d(t,{g:function(){return k}});var n=r("2721"),o=r("8156"),a=r.n(o);let l=(0,o.createContext)(null),i={didCatch:!1,error:null};class c extends o.Component{constructor(e){super(e),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=i}static getDerivedStateFromError(e){return{didCatch:!0,error:e}}resetErrorBoundary(){let{error:e}=this.state;if(null!==e){for(var t,r,n=arguments.length,o=Array(n),a=0;a<n;a++)o[a]=arguments[a];null===(t=(r=this.props).onReset)||void 0===t||t.call(r,{args:o,reason:"imperative-api"}),this.setState(i)}}componentDidCatch(e,t){var r,n;null===(r=(n=this.props).onError)||void 0===r||r.call(n,e,t)}componentDidUpdate(e,t){let{didCatch:r}=this.state,{resetKeys:n}=this.props;if(r&&null!==t.error&&function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return e.length!==t.length||e.some((e,r)=>!Object.is(e,t[r]))}(e.resetKeys,n)){var o,a;null===(o=(a=this.props).onReset)||void 0===o||o.call(a,{next:n,prev:e.resetKeys,reason:"keys"}),this.setState(i)}}render(){let{children:e,fallbackRender:t,FallbackComponent:r,fallback:n}=this.props,{didCatch:a,error:i}=this.state,c=e;if(a){let e={error:i,resetErrorBoundary:this.resetErrorBoundary};if((0,o.isValidElement)(n))c=n;else if("function"==typeof t)c=t(e);else if(r)c=(0,o.createElement)(r,e);else throw i}return(0,o.createElement)(l.Provider,{value:{didCatch:a,error:i,resetErrorBoundary:this.resetErrorBoundary}},c)}}var s=r("3772"),u=r("2708"),d=r("8018"),f=r("573"),p=r("8378"),m=r("336"),v=r("5071");function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function b(e,t){return!t&&(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function h(){var e=b(["\n margin-top: 0 !important;\n "]);return h=function(){return e},e}function w(){var e=b(["\n margin-bottom: 1em;\n "]);return w=function(){return e},e}function g(){var e=b(["\n margin-top: 0 !important;\n "]);return g=function(){return e},e}function k(e){var t,r,o=e.entry,l=(0,p.Z)().styles,i=(0,d.G)().workflow;var b=(t=a().useState(100),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r,n,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{!l&&null!=o.return&&o.return()}finally{if(i)throw n}}return a}}(t,2)||function(e,t){if(e){if("string"==typeof e)return y(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return y(e,t)}}(t,r)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),k=b[0],E=b[1];return a().createElement("div",{className:"workflow-canvas-wrapper"},a().createElement(c,{FallbackComponent:s.ErrorFallback,onError:console.error},a().createElement(v.E1,null,a().createElement("div",{className:"workflow-canvas",style:{zoom:k/100}},a().createElement("div",{className:(0,s.cx)(l.branchBlockClass,(0,s.css)(h()))},a().createElement("div",{className:l.branchClass},(null==i?void 0:i.executed)?a().createElement(n.Alert,{type:"warning",message:(0,f.KQ)("Executed workflow cannot be modified. Could be copied to a new version to modify."),showIcon:!0,className:(0,s.css)(w())}):null,a().createElement(m.Gk,null),a().createElement("div",{className:(0,s.cx)(l.branchBlockClass,(0,s.css)(g()))},a().createElement(u.I,{entry:o})),a().createElement("div",{className:l.terminalClass},(0,f.KQ)("End"))))))),a().createElement("div",{className:"workflow-canvas-zoomer"},a().createElement(n.Slider,{vertical:!0,reverse:!0,defaultValue:100,step:10,min:10,value:k,onChange:E})))}},5437:function(e,t,r){r.r(t),r.d(t,{WorkflowPage:function(){return G}});var n=r("3772"),o=r("8156"),a=r.n(o),l=r("6128"),i=r("8378"),c=r("3238"),s=r("2721"),u=r("482"),d=r("7584"),f=r("458"),p=r("2266"),m=r("8958"),v=r("8018"),y=r("573"),b=r("2659"),h=r("7893"),w=r("1188"),g=r("8327"),k=r("336"),E=r("3505"),x=r("9144"),A=r("5019");function C(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function O(e,t,r,n,o,a,l){try{var i=e[a](l),c=i.value}catch(e){r(e);return}i.done?t(c):Promise.resolve(c).then(n,o)}function S(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function l(e){O(a,n,o,l,i,"next",e)}function i(e){O(a,n,o,l,i,"throw",e)}l(void 0)})}}function j(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.forEach(function(t){var n,o,a;n=e,o=t,a=r[t],o in n?Object.defineProperty(n,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[o]=a})}return e}function P(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r.push.apply(r,n)}return r})(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}),e}function T(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],!(t.indexOf(r)>=0)&&(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++){if(r=a[n],!(t.indexOf(r)>=0))Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}}return o}function N(e,t){var r,n,o,a,l={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(a){return function(i){return function(a){if(r)throw TypeError("Generator is already executing.");for(;l;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return l.label++,{value:a[1],done:!1};case 5:l.label++,n=a[1],a=[0];continue;case 7:a=l.ops.pop(),l.trys.pop();continue;default:if(!(o=(o=l.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){l=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){l.label=a[1];break}if(6===a[0]&&l.label<o[1]){l.label=o[1],o=a;break}if(o&&l.label<o[2]){l.label=o[2],l.ops.push(a);break}o[2]&&l.ops.pop(),l.trys.pop();continue}a=t.call(e,l)}catch(e){a=[6,e],n=0}finally{r=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,i])}}}function K(){var e,t,r=(e=["\n margin-bottom: 1em;\n "],!t&&(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return K=function(){return r},r}function D(e){var t,r=e.request,o=(e.filter,T(e,["request","filter"])),l=(0,v.G)().workflow,i=P(j({},o),{request:P(j({},r),{params:P(j({},null==r?void 0:r.params),{filter:P(j({},null==r?void 0:null===(t=r.params)||void 0===t?void 0:t.filter),{key:l.key})})})});return a().createElement(n.ResourceActionProvider,i)}function R(e){var t=e.data,r=e.option,o=(0,n.useCompile)()(r.label);return a().createElement(c.Trans,{ns:y.A7,values:{statusText:o}},"Workflow executed, the result status is ",a().createElement(s.Tag,{color:r.color},"{{statusText}}"),a().createElement(l.Link,{to:"/admin/workflow/executions/".concat(t.id)},"View the execution"))}function B(){var e=(0,v.G)().workflow,t=(0,E.useForm)(),r=(0,n.useResourceContext)().resource,o=(0,n.useActionContext)(),l=(0,n.useNavigateNoUpdate)(),i=s.App.useApp().message,c=t.values,u=c.autoRevision,d=T(c,["autoRevision"]);return{run:function(){return S(function(){var n;return N(this,function(c){switch(c.label){case 0:return[4,t.submit()];case 1:return c.sent(),[4,r.execute(j({filterByTk:e.id,values:d},!e.executed&&u?{autoRevision:1}:{}))];case 2:var s,f,p,m;return n=c.sent().data.data,t.reset(),o.setFormValueChanged(!1),o.setVisible(!1),null==i||i.open((f=(s=n.execution).id,p=s.status,(m=x.uy[p])?{type:"info",content:a().createElement(R,{data:{id:f},option:m})}:null)),n.newVersionId&&l("/admin/workflow/workflows/".concat(n.newVersionId)),[2]}})})()}}}function F(e){var t=e.children,r=(0,E.useField)(),n=(0,v.G)().workflow,o=(0,k.cC)(),l=o.validate(n.config),i="";switch(!0){case!l:i=(0,y.KQ)("The trigger is not configured correctly, please check the trigger configuration.");break;case!o.triggerFieldset:i=(0,y.KQ)("This type of trigger has not been supported to be executed manually.")}return r.setPattern(i?"disabled":"editable"),i?a().createElement(s.Tooltip,{title:i},t):t}function I(){var e,t=(0,v.G)().workflow,r=(0,k.cC)();return a().createElement(n.SchemaComponent,{components:j({Alert:s.Alert,Fieldset:w.p,ActionDisabledProvider:F},r.components),scope:{useCancelAction:n.useCancelAction,useExecuteConfirmAction:B},schema:{name:"trigger-modal-".concat(t.type,"-").concat(t.id),type:"void","x-decorator":"ActionDisabledProvider","x-component":"Action","x-component-props":{openSize:"small"},title:"{{t('Execute manually', { ns: \"".concat(y.A7,'" })}}'),properties:{drawer:{type:"void","x-decorator":"FormV2","x-component":"Action.Modal",title:"{{t('Execute manually', { ns: \"".concat(y.A7,'" })}}'),properties:P(j(P(j({},Object.keys(null!==(e=r.triggerFieldset)&&void 0!==e?e:{}).length?{alert:{type:"void","x-component":"Alert","x-component-props":{message:"{{t('Trigger variables need to be filled for executing.', { ns: \"".concat(y.A7,'" })}}'),className:(0,n.css)(K())}}}:{description:{type:"void","x-component":"p","x-content":"{{t('This will perform all the actions configured in the workflow. Are you sure you want to continue?', { ns: \"".concat(y.A7,'" })}}')}}),{fieldset:{type:"void","x-decorator":"FormItem","x-component":"Fieldset",title:"{{t('Trigger variables', { ns: \"".concat(y.A7,'" })}}'),properties:r.triggerFieldset}}),t.executed?{}:{autoRevision:{type:"boolean","x-decorator":"FormItem","x-component":"Checkbox","x-content":"{{t('Automatically create a new version after execution', { ns: \"".concat(y.A7,'" })}}'),default:!0}}),{footer:{type:"void","x-component":"Action.Modal.Footer",properties:{cancel:{type:"void",title:"{{t('Cancel')}}","x-component":"Action","x-component-props":{useAction:"{{useCancelAction}}"}},submit:{type:"void",title:"{{t('Confirm')}}","x-component":"Action","x-component-props":{type:"primary",useAction:"{{useExecuteConfirmAction}}"}}}}})}}}})}function Q(){var e,t,r=(0,v.G)(),i=r.workflow,d=r.revisions;var f=(e=(0,o.useState)(!1),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r,n,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(r=o.next()).done)&&(a.push(r.value),!t||a.length!==t);l=!0);}catch(e){i=!0,n=e}finally{try{!l&&null!=o.return&&o.return()}finally{if(i)throw n}}return a}}(e,2)||function(e,t){if(e){if("string"==typeof e)return C(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return C(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),w=f[0],k=f[1],E=(0,l.useNavigate)(),x=(0,c.useTranslation)().t,A=s.App.useApp().modal,O=(0,n.useApp)(),j=(0,n.useResourceContext)().resource,P=s.App.useApp().message,T=(0,o.useCallback)(S(function(){var e;return N(this,function(t){switch(t.label){case 0:return[4,j.revision({filterByTk:i.id,filter:{key:i.key}})];case 1:return e=t.sent().data.data,P.success(x("Operation succeeded")),E("/admin/workflow/workflows/".concat(e.id)),[2]}})}),[j,i.id,i.key,P,x,E]),K=(0,o.useCallback)(S(function(){var e;return N(this,function(t){return e=i.current?(0,y.KQ)("Delete a main version will cause all other revisions to be deleted too."):"",A.confirm({title:x("Are you sure you want to delete it?"),content:e,onOk:function(){return S(function(){var e;return N(this,function(t){switch(t.label){case 0:return[4,j.destroy({filterByTk:i.id})];case 1:return t.sent(),P.success(x("Operation succeeded")),E(i.current?O.pluginSettingsManager.getRoutePath("workflow"):(0,h.SI)(null===(e=d.find(function(e){return e.current}))||void 0===e?void 0:e.id)),[2]}})})()}}),[2]})}),[i,A,x,j,P,E,O.pluginSettingsManager,d]),R=(0,o.useCallback)(function(e){switch(e.key){case"history":k(!0);return;case"revision":return T();case"delete":return K()}},[K,T]),B=i.executed&&!d.find(function(e){return!e.executed&&new Date(e.createdAt)>new Date(i.createdAt)});return a().createElement(a().Fragment,null,a().createElement(s.Dropdown,{menu:{items:[{key:"key",label:"Key: ".concat(i.key),disabled:!0},{type:"divider"},{role:"button","aria-label":"history",key:"history",label:(0,y.KQ)("Execution history"),disabled:!i.allExecuted},{role:"button","aria-label":"revision",key:"revision",label:(0,y.KQ)("Copy to new version"),disabled:!B},{type:"divider"},{role:"button","aria-label":"delete",danger:!0,key:"delete",label:x("Delete")}],onClick:R}},a().createElement(s.Button,{"aria-label":"more",type:"text",icon:a().createElement(u.EllipsisOutlined,null)})),a().createElement(n.ActionContextProvider,{value:{visible:w,setVisible:k}},a().createElement(n.SchemaComponent,{schema:b.V,components:{ExecutionResourceProvider:D,ExecutionLink:m.a,ExecutionStatusColumn:p.r},scope:{useRefreshActionProps:g.X}})))}function V(){var e,t,r=(0,l.useNavigate)(),c=(0,n.useApp)(),p=(0,n.useResourceActionContext)(),m=p.data,b=p.refresh,w=p.loading,g=(0,n.useResourceContext)().resource,k=(0,n.useDocumentTitle)().setTitle,E=(0,i.Z)().styles;(0,n.usePlugin)(A.default);var x=null!==(t=null==m?void 0:m.data)&&void 0!==t?t:{},C=x.nodes,O=void 0===C?[]:C,j=x.revisions,P=void 0===j?[]:j,K=T(x,["nodes","revisions"]);(0,h.Yc)(O),(0,o.useEffect)(function(){var e,t=(null!==(e=null==m?void 0:m.data)&&void 0!==e?e:{}).title;null==k||k("".concat((0,y.KQ)("Workflow")).concat(t?": ".concat(t):""))},[null==m?void 0:m.data,k]);var D=(0,o.useCallback)(function(e){var t=e.key;t!=K.id&&r((0,h.SI)(t))},[K.id,r]);var R=(0,o.useCallback)((e=S(function(e){return N(this,function(t){switch(t.label){case 0:return[4,g.update({filterByTk:K.id,values:{enabled:e}})];case 1:return t.sent(),b(),[2]}})}),function(t){return e.apply(this,arguments)}),[g,K.id,b]);if(!(null==m?void 0:m.data))return w?a().createElement(s.Spin,null):a().createElement(s.Result,{status:"404",title:"Not found",extra:a().createElement(s.Button,{onClick:function(){return r(-1)}},(0,y.KQ)("Go back"))});var B=O.find(function(e){return!e.upstream});return a().createElement(v.i.Provider,{value:{workflow:K,revisions:P,nodes:O,refresh:b}},a().createElement("div",{className:"workflow-toolbar"},a().createElement("header",null,a().createElement(s.Breadcrumb,{items:[{title:a().createElement(l.Link,{to:c.pluginSettingsManager.getRoutePath("workflow")},(0,y.KQ)("Workflow"))},{title:a().createElement(s.Tooltip,{title:"Key: ".concat(K.key)},a().createElement("strong",null,K.title))}]}),K.sync?a().createElement(s.Tag,{color:"orange"},(0,y.KQ)("Synchronously")):a().createElement(s.Tag,{color:"cyan"},(0,y.KQ)("Asynchronously"))),a().createElement("aside",null,a().createElement(I,null),a().createElement(s.Dropdown,{className:"workflow-versions",trigger:["click"],menu:{onClick:D,defaultSelectedKeys:["".concat(K.id)],className:(0,n.cx)(E.dropdownClass,E.workflowVersionDropdownClass),items:P.sort(function(e,t){return t.id-e.id}).map(function(e,t){return{role:"button","aria-label":"version-".concat(t),key:"".concat(e.id),icon:e.current?a().createElement(u.RightOutlined,null):null,className:(0,n.cx)({executed:e.executed,unexecuted:!e.executed,enabled:e.enabled}),label:a().createElement(a().Fragment,null,a().createElement("strong",null,"#".concat(e.id)),a().createElement("time",null,(0,d.dayjs)(e.createdAt).fromNow()))}})}},a().createElement(s.Button,{type:"text","aria-label":"version"},a().createElement("label",null,(0,y.KQ)("Version")),a().createElement("span",null,(null==K?void 0:K.id)?"#".concat(K.id):null),a().createElement(u.DownOutlined,null))),a().createElement(s.Switch,{checked:K.enabled,onChange:R,checkedChildren:(0,y.KQ)("On"),unCheckedChildren:(0,y.KQ)("Off")}),a().createElement(Q,null))),a().createElement(f.g,{entry:B}))}var G=function(){var e,t,r,o=(0,l.useParams)(),c=(0,i.Z)().styles;return a().createElement("div",{className:(0,n.cx)(c.workflowPageClass)},a().createElement(n.SchemaComponent,{schema:{type:"void",properties:(e={},t="provider_".concat(o.id),r={type:"void","x-decorator":"ResourceActionProvider","x-decorator-props":{collection:{name:"workflows",fields:[]},resourceName:"workflows",request:{resource:"workflows",action:"get",params:{filter:{id:o.id},appends:["nodes","revisions.id","revisions.createdAt","revisions.current","revisions.executed","revisions.enabled"]}}},"x-component":"WorkflowCanvas"},t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e)},components:{WorkflowCanvas:V}}))}}}]);
@@ -1,10 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- "use strict";(self.webpackChunk_nocobase_plugin_workflow=self.webpackChunk_nocobase_plugin_workflow||[]).push([["999"],{458:function(e,t,n){n.d(t,{g:function(){return g}});var r=n("2721"),o=n("8156"),a=n.n(o);let l=(0,o.createContext)(null),i={didCatch:!1,error:null};class c extends o.Component{constructor(e){super(e),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=i}static getDerivedStateFromError(e){return{didCatch:!0,error:e}}resetErrorBoundary(){let{error:e}=this.state;if(null!==e){for(var t,n,r=arguments.length,o=Array(r),a=0;a<r;a++)o[a]=arguments[a];null===(t=(n=this.props).onReset)||void 0===t||t.call(n,{args:o,reason:"imperative-api"}),this.setState(i)}}componentDidCatch(e,t){var n,r;null===(n=(r=this.props).onError)||void 0===n||n.call(r,e,t)}componentDidUpdate(e,t){let{didCatch:n}=this.state,{resetKeys:r}=this.props;if(n&&null!==t.error&&function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return e.length!==t.length||e.some((e,n)=>!Object.is(e,t[n]))}(e.resetKeys,r)){var o,a;null===(o=(a=this.props).onReset)||void 0===o||o.call(a,{next:r,prev:e.resetKeys,reason:"keys"}),this.setState(i)}}render(){let{children:e,fallbackRender:t,FallbackComponent:n,fallback:r}=this.props,{didCatch:a,error:i}=this.state,c=e;if(a){let e={error:i,resetErrorBoundary:this.resetErrorBoundary};if((0,o.isValidElement)(r))c=r;else if("function"==typeof t)c=t(e);else if(n)c=(0,o.createElement)(n,e);else throw i}return(0,o.createElement)(l.Provider,{value:{didCatch:a,error:i,resetErrorBoundary:this.resetErrorBoundary}},c)}}var s=n("3772"),u=n("2708"),d=n("8018"),m=n("573"),f=n("8378"),p=n("336"),v=n("5071");function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function E(e,t){return!t&&(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function h(){var e=E(["\n margin-top: 0 !important;\n "]);return h=function(){return e},e}function b(){var e=E(["\n margin-bottom: 1em;\n "]);return b=function(){return e},e}function w(){var e=E(["\n margin-top: 0 !important;\n "]);return w=function(){return e},e}function g(e){var t,n,o=e.entry,l=(0,f.Z)().styles,i=(0,d.G)().workflow;var E=(t=a().useState(100),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);l=!0);}catch(e){i=!0,r=e}finally{try{!l&&null!=o.return&&o.return()}finally{if(i)throw r}}return a}}(t,2)||function(e,t){if(e){if("string"==typeof e)return y(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return y(e,t)}}(t,n)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),g=E[0],x=E[1];return a().createElement("div",{className:"workflow-canvas-wrapper"},a().createElement(c,{FallbackComponent:s.ErrorFallback,onError:console.error},a().createElement(v.E1,null,a().createElement("div",{className:"workflow-canvas",style:{zoom:g/100}},a().createElement("div",{className:(0,s.cx)(l.branchBlockClass,(0,s.css)(h()))},a().createElement("div",{className:l.branchClass},(null==i?void 0:i.executed)?a().createElement(r.Alert,{type:"warning",message:(0,m.KQ)("Executed workflow cannot be modified. Could be copied to a new version to modify."),showIcon:!0,className:(0,s.css)(b())}):null,a().createElement(p.Gk,null),a().createElement("div",{className:(0,s.cx)(l.branchBlockClass,(0,s.css)(w()))},a().createElement(u.I,{entry:o})),a().createElement("div",{className:l.terminalClass},(0,m.KQ)("End"))))))),a().createElement("div",{className:"workflow-canvas-zoomer"},a().createElement(r.Slider,{vertical:!0,reverse:!0,defaultValue:100,step:10,min:10,value:g,onChange:x})))}},5625:function(e,t,n){n.r(t),n.d(t,{ExecutionPage:function(){return j}});var r=n("3772"),o=n("8156"),a=n.n(o),l=n("6128"),i=n("2721"),c=n("7584"),s=n("482"),u=n("3238"),d=n("5019"),m=n("458"),f=n("6594"),p=n("9144"),v=n("8018"),y=n("573"),E=n("8378"),h=n("7893");function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function w(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],!(t.indexOf(n)>=0)&&(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++){if(n=a[r],!(t.indexOf(n)>=0))Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}}return o}function g(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);l=!0);}catch(e){i=!0,r=e}finally{try{!l&&null!=o.return&&o.return()}finally{if(i)throw r}}return a}}(e,t)||k(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function x(e){return function(e){if(Array.isArray(e))return b(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||k(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(e,t){if(e){if("string"==typeof e)return b(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return b(e,t)}}function C(){var e,t,n,o=(0,r.usePlugin)(d.default).instructions,l=(0,r.useCompile)(),c=(0,v.G)(),s=c.viewJob,u=c.setViewJob,m=(0,E.Z)().styles,f=(null!=s?s:{}).node,h=void 0===f?{}:f,b=o.get(h.type);return a().createElement(r.ActionContextProvider,{value:{visible:!!s,setVisible:u}},a().createElement(r.SchemaComponent,{schema:{type:"void",properties:(e={},t="".concat(null==s?void 0:s.id,"-").concat(null==s?void 0:s.updatedAt,"-modal"),n={type:"void","x-decorator":"Form","x-decorator-props":{initialValue:s},"x-component":"Action.Modal",title:a().createElement("div",{className:m.nodeTitleClass},a().createElement(i.Tag,null,l(null==b?void 0:b.title)),a().createElement("strong",null,h.title),a().createElement("span",{className:"workflow-node-id"},"#",h.id)),properties:{status:{type:"number",title:'{{t("Status", { ns: "'.concat(y.A7,'" })}}'),"x-decorator":"FormItem","x-component":"Select",enum:p.Vh,"x-read-pretty":!0},updatedAt:{type:"string",title:'{{t("Executed at", { ns: "'.concat(y.A7,'" })}}'),"x-decorator":"FormItem","x-component":"DatePicker","x-component-props":{showTime:!0},"x-read-pretty":!0},result:{type:"object",title:'{{t("Node result", { ns: "'.concat(y.A7,'" })}}'),"x-decorator":"FormItem","x-component":"Input.JSON","x-component-props":{className:m.nodeJobResultClass,autoSize:{minRows:4,maxRows:32}},"x-disabled":!0}}},t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e)}}))}function S(e){var t=(0,v.G)().execution,n=(0,r.useAPIClient)(),u=(0,l.useNavigate)(),d=(0,E.Z)().styles,m=g((0,o.useState)([]),2),y=m[0],b=m[1],w=g((0,o.useState)([]),2),k=w[0],C=w[1];(0,o.useEffect)(function(){if(!!t)n.resource("executions").list({filter:{key:t.key,id:{$lt:t.id}},sort:"-createdAt",pageSize:10,fields:["id","status","createdAt"]}).then(function(e){b(e.data.data)}).catch(function(){})},[t.id]),(0,o.useEffect)(function(){if(!!t)n.resource("executions").list({filter:{key:t.key,id:{$gt:t.id}},sort:"createdAt",pageSize:10,fields:["id","status","createdAt"]}).then(function(e){C(e.data.data.reverse())}).catch(function(){})},[t.id]);var S=(0,o.useCallback)(function(e){var n=e.key;n!=t.id&&u((0,h.s_)(n))},[t.id]);return t?a().createElement(i.Dropdown,{menu:{onClick:S,defaultSelectedKeys:["".concat(t.id)],className:(0,r.cx)(d.dropdownClass,d.executionsDropdownRowClass),items:x(k).concat([t],x(y)).map(function(e){return{key:e.id,label:a().createElement(a().Fragment,null,a().createElement("span",{className:"id"},"#".concat(e.id)),a().createElement("time",null,(0,c.str2moment)(e.createdAt).format("YYYY-MM-DD HH:mm:ss"))),icon:a().createElement("span",null,a().createElement(f.Y,{statusMap:p.uy,status:e.status}))}})}},a().createElement(i.Space,null,a().createElement("strong",null,"#".concat(t.id)),a().createElement(s.DownOutlined,null))):null}function A(){var e,t=(0,u.useTranslation)().t,n=(0,r.useCompile)(),d=(0,r.useResourceActionContext)(),f=d.data,E=d.loading,b=d.refresh,x=(0,r.useDocumentTitle)().setTitle,k=g((0,o.useState)(null),2),A=k[0],j=k[1],O=(0,r.useApp)(),N=(0,r.useAPIClient)();(0,o.useEffect)(function(){var e,t=(null!==(e=null==f?void 0:f.data)&&void 0!==e?e:{}).workflow;null==x||x("".concat((null==t?void 0:t.title)?"".concat(t.title," - "):"").concat((0,y.KQ)("Execution history")))},[null==f?void 0:f.data,x]);var I=(0,o.useCallback)(function(){i.Modal.confirm({title:(0,y.KQ)("Cancel the execution"),icon:a().createElement(s.ExclamationCircleFilled,null),content:(0,y.KQ)("Are you sure you want to cancel the execution?"),onOk:function(){N.resource("executions").cancel({filterByTk:null==f?void 0:f.data.id}).then(function(){i.message.success(t("Operation succeeded")),b()}).catch(function(e){console.error(e.data.error)})}})},[null==f?void 0:f.data]);if(!(null==f?void 0:f.data))return E?a().createElement(i.Spin,null):a().createElement(i.Result,{status:"404",title:"Not found"});var P=null!==(e=null==f?void 0:f.data)&&void 0!==e?e:{},T=P.jobs,B=P.workflow,D=void 0===B?{}:B,K=D.nodes,M=void 0===K?[]:K,R=(D.revisions,w(P.workflow,["nodes","revisions"])),Y=w(P,["jobs","workflow"]);(0,h.Yc)(M),!function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=new Map;e.forEach(function(e){e.jobs=[],n.set(e.id,e)}),t.forEach(function(e){var t=n.get(e.nodeId);t.jobs.push(e),e.node={id:t.id,key:t.key,title:t.title,type:t.type}}),e.forEach(function(e){e.jobs=e.jobs.sort(function(e,t){return e.id-t.id})})}(M,void 0===T?[]:T);var F=M.find(function(e){return!e.upstream}),z=p.uy[Y.status];return a().createElement(v.i.Provider,{value:{workflow:R.type?R:null,nodes:M,execution:Y,viewJob:A,setViewJob:j}},a().createElement("div",{className:"workflow-toolbar"},a().createElement("header",null,a().createElement(i.Breadcrumb,{items:[{title:a().createElement(l.Link,{to:O.pluginSettingsManager.getRoutePath("workflow")},(0,y.KQ)("Workflow"))},{title:a().createElement(i.Tooltip,{title:"Key: ".concat(R.key)},a().createElement(l.Link,{to:(0,h.SI)(R.id)},R.title))},{title:a().createElement(S,null)}]})),a().createElement("aside",null,a().createElement(i.Tag,{color:z.color},n(z.label)),Y.status?null:a().createElement(i.Tooltip,{title:(0,y.KQ)("Cancel the execution")},a().createElement(i.Button,{type:"link",danger:!0,onClick:I,shape:"circle",size:"small",icon:a().createElement(s.StopOutlined,null)})),a().createElement("time",null,(0,c.str2moment)(Y.updatedAt).format("YYYY-MM-DD HH:mm:ss")))),a().createElement(m.g,{entry:F}),a().createElement(C,null))}var j=function(){var e,t,n,o=(0,l.useParams)(),i=(0,E.Z)().styles;return a().createElement("div",{className:(0,r.cx)(i.workflowPageClass)},a().createElement(r.SchemaComponent,{schema:{type:"void",properties:(e={},t="execution_".concat(o.id),n={type:"void","x-decorator":"ResourceActionProvider","x-decorator-props":{collection:{name:"executions",fields:[]},resourceName:"executions",request:{resource:"executions",action:"get",params:{filter:o,appends:["jobs","workflow","workflow.nodes"]}}},"x-component":"ExecutionCanvas"},t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e)},components:{ExecutionCanvas:A}}))}}}]);