@nocobase/plugin-workflow 1.6.0-alpha.9 → 1.6.0-beta.2
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/{4147131201cde30c.js → 112c72b90000c81b.js} +1 -1
- package/dist/client/87dff3ee7e6061ee.js +10 -0
- package/dist/client/9d4370267ad5749d.js +10 -0
- package/dist/client/index.d.ts +0 -3
- package/dist/client/index.js +1 -1
- package/dist/client/nodes/calculation.d.ts +3 -2
- package/dist/client/nodes/condition.d.ts +1 -0
- package/dist/client/nodes/create.d.ts +3 -2
- package/dist/client/nodes/destroy.d.ts +2 -0
- package/dist/client/nodes/end.d.ts +2 -0
- package/dist/client/nodes/index.d.ts +1 -0
- package/dist/client/nodes/query.d.ts +5 -4
- package/dist/client/nodes/update.d.ts +3 -2
- package/dist/externalVersion.js +11 -11
- package/dist/locale/en-US.json +3 -1
- package/dist/locale/zh-CN.json +8 -8
- package/dist/node_modules/cron-parser/package.json +1 -1
- package/dist/node_modules/lru-cache/package.json +1 -1
- package/dist/server/Plugin.d.ts +4 -4
- package/dist/server/Plugin.js +78 -41
- package/dist/server/triggers/CollectionTrigger.d.ts +3 -0
- package/dist/server/triggers/CollectionTrigger.js +8 -0
- package/dist/server/triggers/ScheduleTrigger/DateFieldScheduleTrigger.d.ts +4 -1
- package/dist/server/triggers/ScheduleTrigger/DateFieldScheduleTrigger.js +26 -13
- package/dist/server/triggers/ScheduleTrigger/index.d.ts +1 -0
- package/dist/server/triggers/ScheduleTrigger/index.js +15 -0
- package/dist/server/triggers/index.d.ts +3 -0
- package/package.json +3 -3
- package/dist/client/6dc5d1b15d6a5026.js +0 -10
- package/dist/client/WorkflowTasks.d.ts +0 -17
- package/dist/client/a0f7941b557d9712.js +0 -10
- package/dist/client/nodes/output.d.ts +0 -31
|
@@ -132,6 +132,7 @@ class DateFieldScheduleTrigger {
|
|
|
132
132
|
const now = /* @__PURE__ */ new Date();
|
|
133
133
|
workflows.forEach(async (workflow) => {
|
|
134
134
|
const records = await this.loadRecordsToSchedule(workflow, now);
|
|
135
|
+
this.workflow.getLogger(workflow.id).info(`[Schedule on date field] ${records.length} records to schedule`);
|
|
135
136
|
records.forEach((record) => {
|
|
136
137
|
const nextTime = this.getRecordNextTime(workflow, record);
|
|
137
138
|
this.schedule(workflow, record, nextTime, Boolean(nextTime));
|
|
@@ -145,17 +146,20 @@ class DateFieldScheduleTrigger {
|
|
|
145
146
|
// b. repeat in range (number or cron):
|
|
146
147
|
// i. endsOn after now -> yes
|
|
147
148
|
// ii. endsOn before now -> no
|
|
148
|
-
async loadRecordsToSchedule({ config: { collection, limit, startsOn, repeat, endsOn }, allExecuted }, currentDate) {
|
|
149
|
+
async loadRecordsToSchedule({ id, config: { collection, limit, startsOn, repeat, endsOn }, allExecuted }, currentDate) {
|
|
149
150
|
const { dataSourceManager } = this.workflow.app;
|
|
150
151
|
if (limit && allExecuted >= limit) {
|
|
152
|
+
this.workflow.getLogger(id).warn(`[Schedule on date field] limit reached (all executed ${allExecuted})`);
|
|
151
153
|
return [];
|
|
152
154
|
}
|
|
153
155
|
if (!startsOn) {
|
|
156
|
+
this.workflow.getLogger(id).warn(`[Schedule on date field] "startsOn" is not configured`);
|
|
154
157
|
return [];
|
|
155
158
|
}
|
|
156
159
|
const timestamp = currentDate.getTime();
|
|
157
160
|
const startTimestamp = getOnTimestampWithOffset(startsOn, currentDate);
|
|
158
161
|
if (!startTimestamp) {
|
|
162
|
+
this.workflow.getLogger(id).warn(`[Schedule on date field] "startsOn.field" is not configured`);
|
|
159
163
|
return [];
|
|
160
164
|
}
|
|
161
165
|
const [dataSourceName, collectionName] = (0, import_data_source_manager.parseCollectionName)(collection);
|
|
@@ -182,7 +186,7 @@ class DateFieldScheduleTrigger {
|
|
|
182
186
|
const modExp = (0, import_database.fn)(
|
|
183
187
|
"MOD",
|
|
184
188
|
(0, import_database.literal)(
|
|
185
|
-
`${Math.round(timestamp / 1e3)} - ${db.sequelize.getQueryInterface().quoteIdentifiers(
|
|
189
|
+
`${Math.round(timestamp / 1e3)} - ${tsFn(db.sequelize.getQueryInterface().quoteIdentifiers(field))}`
|
|
186
190
|
),
|
|
187
191
|
Math.round(repeat / 1e3)
|
|
188
192
|
);
|
|
@@ -194,21 +198,21 @@ class DateFieldScheduleTrigger {
|
|
|
194
198
|
}
|
|
195
199
|
}
|
|
196
200
|
if (endsOn) {
|
|
197
|
-
const now = /* @__PURE__ */ new Date();
|
|
198
|
-
const endTimestamp = getOnTimestampWithOffset(endsOn, now);
|
|
199
|
-
if (!endTimestamp) {
|
|
200
|
-
return [];
|
|
201
|
-
}
|
|
202
201
|
if (typeof endsOn === "string") {
|
|
203
|
-
if (
|
|
202
|
+
if ((0, import_utils.parseDateWithoutMs)(endsOn) <= timestamp) {
|
|
204
203
|
return [];
|
|
205
204
|
}
|
|
206
205
|
} else {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
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
|
+
}
|
|
212
216
|
}
|
|
213
217
|
}
|
|
214
218
|
} else {
|
|
@@ -218,6 +222,7 @@ class DateFieldScheduleTrigger {
|
|
|
218
222
|
}
|
|
219
223
|
});
|
|
220
224
|
}
|
|
225
|
+
this.workflow.getLogger(id).debug(`[Schedule on date field] conditions: `, { conditions });
|
|
221
226
|
return model.findAll({
|
|
222
227
|
where: {
|
|
223
228
|
[import_database.Op.and]: conditions
|
|
@@ -389,4 +394,12 @@ class DateFieldScheduleTrigger {
|
|
|
389
394
|
}
|
|
390
395
|
return this.workflow.trigger(workflow, { ...values, data, date: (values == null ? void 0 : values.date) ?? /* @__PURE__ */ new Date() }, options);
|
|
391
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
|
+
}
|
|
392
405
|
}
|
|
@@ -88,4 +88,19 @@ class ScheduleTrigger extends import__.default {
|
|
|
88
88
|
// });
|
|
89
89
|
// return !existed.length;
|
|
90
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
|
+
}
|
|
91
106
|
}
|
|
@@ -17,6 +17,9 @@ 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
24
|
execute?(workflow: WorkflowModel, values: any, options: Transactionable): void | Processor | Promise<void | Processor>;
|
|
22
25
|
}
|
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-
|
|
7
|
+
"version": "1.6.0-beta.2",
|
|
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-
|
|
13
|
+
"@nocobase/plugin-workflow-test": "1.6.0-beta.2"
|
|
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": "
|
|
47
|
+
"gitHead": "476ab2f424d86f585c8fba1459568c8aec49a5c6",
|
|
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:"radioGroup",uiSchema:{title:'{{t("Mode", { ns: "'.concat(h.A7,'" })}}'),type:"boolean","x-decorator":"FormItem","x-component":"Radio.Group",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("3552"),T=o("8327");function R(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 I(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:R,ExecutionStatusColumn:F.r,Tooltip:l.Tooltip},scope:{useTriggersOptions:n,useWorkflowSyncAction:I,useRefreshActionProps:T.X}})))}}}]);
|
|
@@ -1,17 +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
|
-
import React from 'react';
|
|
10
|
-
export interface TaskTypeOptions {
|
|
11
|
-
title: string;
|
|
12
|
-
useCountRequest?: Function;
|
|
13
|
-
component?: React.ComponentType;
|
|
14
|
-
children?: TaskTypeOptions[];
|
|
15
|
-
}
|
|
16
|
-
export declare function WorkflowTasks(): React.JSX.Element;
|
|
17
|
-
export declare const TasksProvider: (props: any) => React.JSX.Element;
|
|
@@ -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.G2)().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 z}});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("3505"),f=r("7584"),p=r("3552"),m=r("458"),v=r("2266"),y=r("8958"),b=r("8018"),h=r("573"),w=r("2659"),g=r("7893"),k=r("1188"),E=r("8327"),x=r("336"),A=r("9144"),C=r("6805");function O(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 S(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 P(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function l(e){S(a,n,o,l,i,"next",e)}function i(e){S(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 T(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 N(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 K(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 D(){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 D=function(){return r},r}function R(e){var t,r=e.request,o=(e.filter,N(e,["request","filter"])),l=(0,b.G2)().workflow,i=T(j({},o),{request:T(j({},r),{params:T(j({},null==r?void 0:r.params),{filter:T(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 B(e){var t=e.data,r=e.option,o=(0,n.useCompile)()(r.label);return a().createElement(c.Trans,{ns:h.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 F(){var e=(0,b.G2)().workflow,t=(0,d.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,f=N(c,["autoRevision"]);return{run:function(){return P(function(){var n;return K(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:f},!e.executed&&u?{autoRevision:1}:{}))];case 2:var s,d,p,m;return n=c.sent().data.data,t.reset(),o.setFormValueChanged(!1),o.setVisible(!1),null==i||i.open((d=(s=n.execution).id,p=s.status,(m=A.uy[p])?{type:"info",content:a().createElement(B,{data:{id:d},option:m})}:null)),n.newVersionId&&l("/admin/workflow/workflows/".concat(n.newVersionId)),[2]}})})()}}}function Q(e){var t=e.children,r=(0,d.useField)(),n=(0,b.G2)().workflow,o=(0,x.cC)(),l=o.validate(n.config),i="";switch(!0){case!l:i=(0,h.KQ)("The trigger is not configured correctly, please check the trigger configuration.");break;case!o.triggerFieldset:i=(0,h.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,b.G2)().workflow,r=(0,x.cC)();return a().createElement(b.zQ.Provider,{value:t},a().createElement(C.XA.Provider,{value:!0},a().createElement(n.SchemaComponent,{components:j({Alert:s.Alert,Fieldset:k.p,ActionDisabledProvider:Q},r.components),scope:{useCancelAction:n.useCancelAction,useExecuteConfirmAction:F},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(h.A7,'" })}}'),properties:{drawer:{type:"void","x-decorator":"FormV2","x-component":"Action.Modal",title:"{{t('Execute manually', { ns: \"".concat(h.A7,'" })}}'),properties:T(j(T(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(h.A7,'" })}}'),className:(0,n.css)(D())}}}:{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(h.A7,'" })}}')}}),{fieldset:{type:"void","x-decorator":"FormItem","x-component":"Fieldset",title:"{{t('Trigger variables', { ns: \"".concat(h.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(h.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 V(){var e,t,r=(0,b.G2)(),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 O(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 O(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.")}()),p=f[0],m=f[1],k=(0,l.useNavigate)(),x=(0,c.useTranslation)().t,A=s.App.useApp().modal,C=(0,n.useApp)(),S=(0,n.useResourceContext)().resource,j=s.App.useApp().message,T=(0,o.useCallback)(P(function(){var e;return K(this,function(t){switch(t.label){case 0:return[4,S.revision({filterByTk:i.id,filter:{key:i.key}})];case 1:return e=t.sent().data.data,j.success(x("Operation succeeded")),k("/admin/workflow/workflows/".concat(e.id)),[2]}})}),[S,i.id,i.key,j,x,k]),N=(0,o.useCallback)(P(function(){var e;return K(this,function(t){return e=i.current?(0,h.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 P(function(){var e;return K(this,function(t){switch(t.label){case 0:return[4,S.destroy({filterByTk:i.id})];case 1:return t.sent(),j.success(x("Operation succeeded")),k(i.current?C.pluginSettingsManager.getRoutePath("workflow"):(0,g.SI)(null===(e=d.find(function(e){return e.current}))||void 0===e?void 0:e.id)),[2]}})})()}}),[2]})}),[i,A,x,S,j,k,C.pluginSettingsManager,d]),D=(0,o.useCallback)(function(e){switch(e.key){case"history":m(!0);return;case"revision":return T();case"delete":return N()}},[N,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,h.KQ)("Execution history"),disabled:!i.allExecuted},{role:"button","aria-label":"revision",key:"revision",label:(0,h.KQ)("Copy to new version"),disabled:!B},{type:"divider"},{role:"button","aria-label":"delete",danger:!0,key:"delete",label:x("Delete")}],onClick:D}},a().createElement(s.Button,{"aria-label":"more",type:"text",icon:a().createElement(u.EllipsisOutlined,null)})),a().createElement(n.ActionContextProvider,{value:{visible:p,setVisible:m}},a().createElement(n.SchemaComponent,{schema:w.V,components:{ExecutionResourceProvider:R,ExecutionLink:y.a,ExecutionStatusColumn:v.r},scope:{useRefreshActionProps:E.X}})))}function G(){var e,t,r=(0,l.useNavigate)(),c=(0,n.useApp)(),d=(0,n.useResourceActionContext)(),v=d.data,y=d.refresh,w=d.loading,k=(0,n.useResourceContext)().resource,E=(0,n.useDocumentTitle)().setTitle,x=(0,i.Z)().styles;(0,n.usePlugin)(p.default);var A=null!==(t=null==v?void 0:v.data)&&void 0!==t?t:{},C=A.nodes,O=void 0===C?[]:C,S=A.revisions,j=void 0===S?[]:S,T=N(A,["nodes","revisions"]);(0,g.Yc)(O),(0,o.useEffect)(function(){var e,t=(null!==(e=null==v?void 0:v.data)&&void 0!==e?e:{}).title;null==E||E("".concat((0,h.KQ)("Workflow")).concat(t?": ".concat(t):""))},[null==v?void 0:v.data,E]);var D=(0,o.useCallback)(function(e){var t=e.key;t!=T.id&&r((0,g.SI)(t))},[T.id,r]);var R=(0,o.useCallback)((e=P(function(e){return K(this,function(t){switch(t.label){case 0:return[4,k.update({filterByTk:T.id,values:{enabled:e}})];case 1:return t.sent(),y(),[2]}})}),function(t){return e.apply(this,arguments)}),[k,T.id,y]);if(!(null==v?void 0:v.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,h.KQ)("Go back"))});var B=O.find(function(e){return!e.upstream});return a().createElement(b.iT.Provider,{value:{workflow:T,revisions:j,nodes:O,refresh:y}},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,h.KQ)("Workflow"))},{title:a().createElement(s.Tooltip,{title:"Key: ".concat(T.key)},a().createElement("strong",null,T.title))}]}),T.sync?a().createElement(s.Tag,{color:"orange"},(0,h.KQ)("Synchronously")):a().createElement(s.Tag,{color:"cyan"},(0,h.KQ)("Asynchronously"))),a().createElement("aside",null,a().createElement(I,null),a().createElement(s.Dropdown,{className:"workflow-versions",trigger:["click"],menu:{onClick:D,defaultSelectedKeys:["".concat(T.id)],className:(0,n.cx)(x.dropdownClass,x.workflowVersionDropdownClass),items:j.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,f.dayjs)(e.createdAt).fromNow()))}})}},a().createElement(s.Button,{type:"text","aria-label":"version"},a().createElement("label",null,(0,h.KQ)("Version")),a().createElement("span",null,(null==T?void 0:T.id)?"#".concat(T.id):null),a().createElement(u.DownOutlined,null))),a().createElement(s.Switch,{checked:T.enabled,onChange:R,checkedChildren:(0,h.KQ)("On"),unCheckedChildren:(0,h.KQ)("Off")}),a().createElement(V,null))),a().createElement(m.g,{entry:B}))}var z=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:G}}))}}}]);
|
|
@@ -1,31 +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
|
-
import { Instruction } from '.';
|
|
10
|
-
import { WorkflowVariableInput } from '../variable';
|
|
11
|
-
export default class extends Instruction {
|
|
12
|
-
title: string;
|
|
13
|
-
type: string;
|
|
14
|
-
group: string;
|
|
15
|
-
description: string;
|
|
16
|
-
fieldset: {
|
|
17
|
-
result: {
|
|
18
|
-
type: string;
|
|
19
|
-
title: string;
|
|
20
|
-
'x-decorator': string;
|
|
21
|
-
'x-component': string;
|
|
22
|
-
'x-component-props': {
|
|
23
|
-
useTypedConstant: boolean;
|
|
24
|
-
};
|
|
25
|
-
required: boolean;
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
components: {
|
|
29
|
-
WorkflowVariableInput: typeof WorkflowVariableInput;
|
|
30
|
-
};
|
|
31
|
-
}
|