@nocobase/plugin-workflow 2.0.0-beta.6 → 2.0.0-beta.7
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/40b94f9ce949dab9.js +10 -0
- package/dist/client/{80d4cd8911e03c27.js → c050b1c93ef4392f.js} +1 -1
- package/dist/client/index.d.ts +3 -0
- package/dist/client/index.js +1 -1
- package/dist/client/models/NodeDetailsModel.d.ts +34 -0
- package/dist/client/models/NodeValueModel.d.ts +15 -0
- package/dist/client/models/index.d.ts +10 -0
- package/dist/client/nodes/calculation.d.ts +7 -0
- package/dist/client/nodes/create.d.ts +7 -0
- package/dist/client/nodes/index.d.ts +14 -0
- package/dist/client/nodes/query.d.ts +7 -0
- package/dist/externalVersion.js +12 -12
- package/dist/locale/de-DE.json +1 -1
- package/dist/locale/en-US.json +2 -1
- package/dist/locale/es-ES.json +1 -1
- package/dist/locale/fr-FR.json +1 -1
- package/dist/locale/it-IT.json +1 -1
- package/dist/locale/ja-JP.json +1 -1
- package/dist/locale/ko-KR.json +1 -1
- package/dist/locale/nl-NL.json +1 -1
- package/dist/locale/pt-BR.json +1 -1
- package/dist/locale/ru-RU.json +1 -1
- package/dist/locale/tr-TR.json +1 -1
- package/dist/locale/uk-UA.json +1 -1
- package/dist/locale/zh-CN.json +2 -1
- package/dist/locale/zh-TW.json +1 -1
- package/dist/node_modules/cron-parser/package.json +1 -1
- package/dist/node_modules/lru-cache/package.json +1 -1
- package/dist/node_modules/nodejs-snowflake/package.json +1 -1
- package/dist/server/Plugin.js +2 -1
- package/dist/server/Processor.d.ts +9 -0
- package/dist/server/Processor.js +6 -1
- package/dist/server/repositories/WorkflowRepository.js +2 -1
- package/package.json +2 -2
- package/dist/client/bfc2a351589613e1.js +0 -10
|
@@ -0,0 +1,34 @@
|
|
|
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 { BlockGridModel, CollectionBlockModel, DetailsGridModel } from '@nocobase/client';
|
|
10
|
+
import { SingleRecordResource } from '@nocobase/flow-engine';
|
|
11
|
+
import React from 'react';
|
|
12
|
+
export declare class NodeDetailsModel extends CollectionBlockModel<{
|
|
13
|
+
parent?: BlockGridModel;
|
|
14
|
+
subModels?: {
|
|
15
|
+
grid: DetailsGridModel;
|
|
16
|
+
};
|
|
17
|
+
}> {
|
|
18
|
+
isManualRefresh: boolean;
|
|
19
|
+
_defaultCustomModelClasses: {
|
|
20
|
+
RecordActionGroupModel: string;
|
|
21
|
+
DetailsItemModel: string;
|
|
22
|
+
DetailsAssociationFieldGroupModel: string;
|
|
23
|
+
DetailsCustomItemModel: string;
|
|
24
|
+
};
|
|
25
|
+
customModelClasses: {};
|
|
26
|
+
get dataSourceKey(): any;
|
|
27
|
+
get collectionName(): any;
|
|
28
|
+
get collection(): import("@nocobase/flow-engine").Collection;
|
|
29
|
+
get dataPath(): any;
|
|
30
|
+
createResource(ctx: any, params: any): SingleRecordResource<unknown>;
|
|
31
|
+
onInit(options: any): void;
|
|
32
|
+
getCurrentRecord(): any;
|
|
33
|
+
renderComponent(): React.JSX.Element;
|
|
34
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
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 { BlockModel } from '@nocobase/client';
|
|
10
|
+
export declare class NodeValueModel extends BlockModel {
|
|
11
|
+
get execution(): any;
|
|
12
|
+
get dataSource(): any;
|
|
13
|
+
get defaultValue(): any;
|
|
14
|
+
renderComponent(): any;
|
|
15
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
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
|
+
export { NodeDetailsModel } from './NodeDetailsModel';
|
|
10
|
+
export { NodeValueModel } from './NodeValueModel';
|
|
@@ -11,6 +11,7 @@ import { SchemaInitializerItemType } from '@nocobase/client';
|
|
|
11
11
|
import { RadioWithTooltip } from '../components/RadioWithTooltip';
|
|
12
12
|
import { WorkflowVariableTextArea } from '../variable';
|
|
13
13
|
import { Instruction } from '.';
|
|
14
|
+
import { SubModelItem } from '@nocobase/flow-engine';
|
|
14
15
|
export default class extends Instruction {
|
|
15
16
|
title: string;
|
|
16
17
|
type: string;
|
|
@@ -78,5 +79,11 @@ export default class extends Instruction {
|
|
|
78
79
|
label: any;
|
|
79
80
|
};
|
|
80
81
|
useInitializers(node: any): SchemaInitializerItemType;
|
|
82
|
+
/**
|
|
83
|
+
* 2.0
|
|
84
|
+
*/
|
|
85
|
+
getCreateModelMenuItem({ node }: {
|
|
86
|
+
node: any;
|
|
87
|
+
}): SubModelItem;
|
|
81
88
|
testable: boolean;
|
|
82
89
|
}
|
|
@@ -10,6 +10,7 @@ import React from 'react';
|
|
|
10
10
|
import { SchemaInitializerItemType, useCollectionDataSource } from '@nocobase/client';
|
|
11
11
|
import { AssignedFieldsFormSchemaConfig } from '../components/AssignedFieldsFormSchemaConfig';
|
|
12
12
|
import { Instruction, useNodeSavedConfig } from '.';
|
|
13
|
+
import { SubModelItem } from '@nocobase/flow-engine';
|
|
13
14
|
declare function useVariables({ key: name, title, config }: {
|
|
14
15
|
key: any;
|
|
15
16
|
title: any;
|
|
@@ -107,5 +108,11 @@ export default class extends Instruction {
|
|
|
107
108
|
};
|
|
108
109
|
useVariables: typeof useVariables;
|
|
109
110
|
useInitializers(node: any): SchemaInitializerItemType | null;
|
|
111
|
+
/**
|
|
112
|
+
* 2.0
|
|
113
|
+
*/
|
|
114
|
+
getCreateModelMenuItem({ node }: {
|
|
115
|
+
node: any;
|
|
116
|
+
}): SubModelItem;
|
|
110
117
|
}
|
|
111
118
|
export {};
|
|
@@ -11,6 +11,7 @@ import React from 'react';
|
|
|
11
11
|
import { SchemaInitializerItemType } from '@nocobase/client';
|
|
12
12
|
import WorkflowPlugin from '..';
|
|
13
13
|
import { UseVariableOptions, VariableOption } from '../variable';
|
|
14
|
+
import { SubModelItem } from '@nocobase/flow-engine';
|
|
14
15
|
export type NodeAvailableContext = {
|
|
15
16
|
engine: WorkflowPlugin;
|
|
16
17
|
workflow: object;
|
|
@@ -66,7 +67,20 @@ export declare abstract class Instruction {
|
|
|
66
67
|
isAvailable?(ctx: NodeAvailableContext): boolean;
|
|
67
68
|
end?: boolean | ((node: any) => boolean);
|
|
68
69
|
testable?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* 2.0
|
|
72
|
+
*/
|
|
73
|
+
getCreateModelMenuItem?({ node, workflow }: {
|
|
74
|
+
node: any;
|
|
75
|
+
workflow: any;
|
|
76
|
+
}): SubModelItem | null;
|
|
69
77
|
}
|
|
78
|
+
export declare function updateNodeConfig({ api, nodeId, config, resourceName }: {
|
|
79
|
+
api: any;
|
|
80
|
+
nodeId: any;
|
|
81
|
+
config: any;
|
|
82
|
+
resourceName?: string;
|
|
83
|
+
}): Promise<void>;
|
|
70
84
|
export declare const NodeContext: React.Context<any>;
|
|
71
85
|
export declare function useNodeContext(): any;
|
|
72
86
|
export declare function useNodeSavedConfig(keys?: any[]): boolean;
|
|
@@ -12,6 +12,7 @@ import { FilterDynamicComponent } from '../components/FilterDynamicComponent';
|
|
|
12
12
|
import { WorkflowVariableInput } from '../variable';
|
|
13
13
|
import { Instruction, useNodeSavedConfig } from '.';
|
|
14
14
|
import { RadioWithTooltip } from '../components';
|
|
15
|
+
import { SubModelItem } from '@nocobase/flow-engine';
|
|
15
16
|
declare function useVariables({ key: name, title, config }: {
|
|
16
17
|
key: any;
|
|
17
18
|
title: any;
|
|
@@ -232,5 +233,11 @@ export default class extends Instruction {
|
|
|
232
233
|
};
|
|
233
234
|
useVariables: typeof useVariables;
|
|
234
235
|
useInitializers(node: any): SchemaInitializerItemType | null;
|
|
236
|
+
/**
|
|
237
|
+
* 2.0
|
|
238
|
+
*/
|
|
239
|
+
getCreateModelMenuItem({ node }: {
|
|
240
|
+
node: any;
|
|
241
|
+
}): SubModelItem;
|
|
235
242
|
}
|
|
236
243
|
export {};
|
package/dist/externalVersion.js
CHANGED
|
@@ -11,8 +11,8 @@ module.exports = {
|
|
|
11
11
|
"react": "18.2.0",
|
|
12
12
|
"@formily/core": "2.3.7",
|
|
13
13
|
"@formily/react": "2.3.7",
|
|
14
|
-
"@nocobase/client": "2.0.0-beta.
|
|
15
|
-
"@nocobase/utils": "2.0.0-beta.
|
|
14
|
+
"@nocobase/client": "2.0.0-beta.7",
|
|
15
|
+
"@nocobase/utils": "2.0.0-beta.7",
|
|
16
16
|
"antd": "5.24.2",
|
|
17
17
|
"@ant-design/icons": "5.6.1",
|
|
18
18
|
"react-router-dom": "6.30.1",
|
|
@@ -20,18 +20,18 @@ module.exports = {
|
|
|
20
20
|
"lodash": "4.17.21",
|
|
21
21
|
"@dnd-kit/core": "6.1.0",
|
|
22
22
|
"@formily/shared": "2.3.7",
|
|
23
|
-
"@nocobase/flow-engine": "2.0.0-beta.
|
|
24
|
-
"@nocobase/plugin-mobile": "2.0.0-beta.
|
|
23
|
+
"@nocobase/flow-engine": "2.0.0-beta.7",
|
|
24
|
+
"@nocobase/plugin-mobile": "2.0.0-beta.7",
|
|
25
25
|
"sequelize": "6.35.2",
|
|
26
|
-
"@nocobase/server": "2.0.0-beta.
|
|
27
|
-
"@nocobase/database": "2.0.0-beta.
|
|
28
|
-
"@nocobase/data-source-manager": "2.0.0-beta.
|
|
29
|
-
"@nocobase/logger": "2.0.0-beta.
|
|
30
|
-
"@nocobase/evaluators": "2.0.0-beta.
|
|
26
|
+
"@nocobase/server": "2.0.0-beta.7",
|
|
27
|
+
"@nocobase/database": "2.0.0-beta.7",
|
|
28
|
+
"@nocobase/data-source-manager": "2.0.0-beta.7",
|
|
29
|
+
"@nocobase/logger": "2.0.0-beta.7",
|
|
30
|
+
"@nocobase/evaluators": "2.0.0-beta.7",
|
|
31
31
|
"@formily/antd-v5": "1.2.3",
|
|
32
32
|
"@formily/reactive": "2.3.7",
|
|
33
|
-
"@nocobase/actions": "2.0.0-beta.
|
|
33
|
+
"@nocobase/actions": "2.0.0-beta.7",
|
|
34
34
|
"dayjs": "1.11.13",
|
|
35
|
-
"@nocobase/plugin-workflow-test": "2.0.0-beta.
|
|
36
|
-
"@nocobase/test": "2.0.0-beta.
|
|
35
|
+
"@nocobase/plugin-workflow-test": "2.0.0-beta.7",
|
|
36
|
+
"@nocobase/test": "2.0.0-beta.7"
|
|
37
37
|
};
|
package/dist/locale/de-DE.json
CHANGED
|
@@ -247,7 +247,7 @@
|
|
|
247
247
|
"Will be executed in the background as a queued task.": "Wird im Hintergrund als Aufgabe in der Warteschlange ausgeführt.",
|
|
248
248
|
"Workflow": "Workflow",
|
|
249
249
|
"Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>": "Workflow ausgeführt, der Ergebnisstatus ist <1>{{statusText}}</1><2>Ausführung anzeigen</2>",
|
|
250
|
-
"Workflow is not
|
|
250
|
+
"Workflow of execution is not existed": "Workflow of execution is not existed",
|
|
251
251
|
"Workflow tasks": "Workflow tasks",
|
|
252
252
|
"Workflow todos": "Workflow-Aufgaben",
|
|
253
253
|
"Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).": "Workflow wird vor erfolgreichem Löschen ausgelöst (unterstützt nur Ereignis vor der Aktion im lokalen Modus).",
|
package/dist/locale/en-US.json
CHANGED
|
@@ -152,6 +152,7 @@
|
|
|
152
152
|
"Node type": "Node type",
|
|
153
153
|
"Node with unknown type will cause error. Please delete it or check plugin which provide this type.": "Node with unknown type will cause error. Please delete it or check plugin which provide this type.",
|
|
154
154
|
"Null": "Null",
|
|
155
|
+
"Not found": "Not found",
|
|
155
156
|
"Off": "Off",
|
|
156
157
|
"On": "On",
|
|
157
158
|
"On going": "On going",
|
|
@@ -250,7 +251,7 @@
|
|
|
250
251
|
"Will be executed in the background as a queued task.": "Will be executed in the background as a queued task.",
|
|
251
252
|
"Workflow": "Workflow",
|
|
252
253
|
"Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>": "Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>",
|
|
253
|
-
"Workflow is not
|
|
254
|
+
"Workflow of execution is not existed": "Workflow of execution is not existed",
|
|
254
255
|
"Workflow tasks": "Workflow tasks",
|
|
255
256
|
"Workflow todos": "Workflow todos",
|
|
256
257
|
"Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).": "Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).",
|
package/dist/locale/es-ES.json
CHANGED
|
@@ -247,7 +247,7 @@
|
|
|
247
247
|
"Will be executed in the background as a queued task.": "Will be executed in the background as a queued task.",
|
|
248
248
|
"Workflow": "Flujo de trabajo",
|
|
249
249
|
"Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>": "Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>",
|
|
250
|
-
"Workflow is not
|
|
250
|
+
"Workflow of execution is not existed": "Workflow of execution is not existed",
|
|
251
251
|
"Workflow tasks": "Workflow tasks",
|
|
252
252
|
"Workflow todos": "Workflow todos",
|
|
253
253
|
"Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).": "Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).",
|
package/dist/locale/fr-FR.json
CHANGED
|
@@ -247,7 +247,7 @@
|
|
|
247
247
|
"Will be executed in the background as a queued task.": "Will be executed in the background as a queued task.",
|
|
248
248
|
"Workflow": "Workflow",
|
|
249
249
|
"Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>": "Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>",
|
|
250
|
-
"Workflow is not
|
|
250
|
+
"Workflow of execution is not existed": "Workflow of execution is not existed",
|
|
251
251
|
"Workflow tasks": "Workflow tasks",
|
|
252
252
|
"Workflow todos": "Workflow todos",
|
|
253
253
|
"Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).": "Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).",
|
package/dist/locale/it-IT.json
CHANGED
|
@@ -247,7 +247,7 @@
|
|
|
247
247
|
"Will be executed in the background as a queued task.": "Verrà eseguito in background come attività in coda.",
|
|
248
248
|
"Workflow": "Workflow",
|
|
249
249
|
"Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>": "Workflow eseguito, lo stato del risultato è <1>{{statusText}}</1><2>Visualizza l'esecuzione</2>",
|
|
250
|
-
"Workflow is not
|
|
250
|
+
"Workflow of execution is not existed": "Workflow of execution is not existed",
|
|
251
251
|
"Workflow tasks": "Workflow tasks",
|
|
252
252
|
"Workflow todos": "Da fare",
|
|
253
253
|
"Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).": "Il workflow verrà attivato prima dell'eliminazione riuscita (supporta solo l'evento pre-azione in modalità locale).",
|
package/dist/locale/ja-JP.json
CHANGED
|
@@ -249,7 +249,7 @@
|
|
|
249
249
|
"Will be executed in the background as a queued task.": "キュータスクとしてバックグラウンドで実行されます。",
|
|
250
250
|
"Workflow": "ワークフロー",
|
|
251
251
|
"Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>": "ワークフローが実行されました。結果ステータス: <1>{{statusText}}</1><2>実行詳細を表示</2>",
|
|
252
|
-
"Workflow is not
|
|
252
|
+
"Workflow of execution is not existed": "Workflow of execution is not existed",
|
|
253
253
|
"Workflow tasks": "Workflow tasks",
|
|
254
254
|
"Workflow todos": "ワークフロー対応事項",
|
|
255
255
|
"Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).": "削除が成功する前にワークフローがトリガーされます(ローカルモードではアクション前イベントのみサポート)。",
|
package/dist/locale/ko-KR.json
CHANGED
|
@@ -265,7 +265,7 @@
|
|
|
265
265
|
"Will be executed in the background as a queued task.": "백그라운드에서 대기 작업으로 실행됩니다.",
|
|
266
266
|
"Workflow": "워크플로우",
|
|
267
267
|
"Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>": "워크플로우가 실행되었습니다. 결과 상태는 <1>{{statusText}}</1><2>실행 보기</2>",
|
|
268
|
-
"Workflow is not
|
|
268
|
+
"Workflow of execution is not existed": "Workflow of execution is not existed",
|
|
269
269
|
"Workflow tasks": "Workflow tasks",
|
|
270
270
|
"Workflow todos": "워크플로우 할 일",
|
|
271
271
|
"Workflow will be triggered after saving succeeded.": "저장 성공 후 워크플로우가 트리거됩니다.",
|
package/dist/locale/nl-NL.json
CHANGED
|
@@ -247,7 +247,7 @@
|
|
|
247
247
|
"Will be executed in the background as a queued task.": "Will be executed in the background as a queued task.",
|
|
248
248
|
"Workflow": "Workflow",
|
|
249
249
|
"Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>": "Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>",
|
|
250
|
-
"Workflow is not
|
|
250
|
+
"Workflow of execution is not existed": "Workflow of execution is not existed",
|
|
251
251
|
"Workflow tasks": "Workflow tasks",
|
|
252
252
|
"Workflow todos": "Workflow todos",
|
|
253
253
|
"Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).": "Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).",
|
package/dist/locale/pt-BR.json
CHANGED
|
@@ -247,7 +247,7 @@
|
|
|
247
247
|
"Will be executed in the background as a queued task.": "Will be executed in the background as a queued task.",
|
|
248
248
|
"Workflow": "Fluxo de trabalho",
|
|
249
249
|
"Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>": "Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>",
|
|
250
|
-
"Workflow is not
|
|
250
|
+
"Workflow of execution is not existed": "Workflow of execution is not existed",
|
|
251
251
|
"Workflow tasks": "Workflow tasks",
|
|
252
252
|
"Workflow todos": "Workflow todos",
|
|
253
253
|
"Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).": "Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).",
|
package/dist/locale/ru-RU.json
CHANGED
|
@@ -247,7 +247,7 @@
|
|
|
247
247
|
"Will be executed in the background as a queued task.": "Будет выполнен в фоновом режиме как задача в очереди.",
|
|
248
248
|
"Workflow": "Рабочий процесс",
|
|
249
249
|
"Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>": "Рабочий процесс выполнен, статус результата: <1>{{statusText}}</1><2>Посмотреть выполнение</2>",
|
|
250
|
-
"Workflow is not
|
|
250
|
+
"Workflow of execution is not existed": "Workflow of execution is not existed",
|
|
251
251
|
"Workflow tasks": "Workflow tasks",
|
|
252
252
|
"Workflow todos": "Задачи рабочего процесса",
|
|
253
253
|
"Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).": "Рабочий процесс будет запущен перед успешным удалением (поддерживается только событие \"предварительного действия\" в локальном режиме).",
|
package/dist/locale/tr-TR.json
CHANGED
|
@@ -247,7 +247,7 @@
|
|
|
247
247
|
"Will be executed in the background as a queued task.": "Will be executed in the background as a queued task.",
|
|
248
248
|
"Workflow": "İş Akışı",
|
|
249
249
|
"Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>": "Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>",
|
|
250
|
-
"Workflow is not
|
|
250
|
+
"Workflow of execution is not existed": "Workflow of execution is not existed",
|
|
251
251
|
"Workflow tasks": "Workflow tasks",
|
|
252
252
|
"Workflow todos": "Workflow todos",
|
|
253
253
|
"Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).": "Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).",
|
package/dist/locale/uk-UA.json
CHANGED
|
@@ -247,7 +247,7 @@
|
|
|
247
247
|
"Will be executed in the background as a queued task.": "Will be executed in the background as a queued task.",
|
|
248
248
|
"Workflow": "Workflow",
|
|
249
249
|
"Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>": "Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>",
|
|
250
|
-
"Workflow is not
|
|
250
|
+
"Workflow of execution is not existed": "Workflow of execution is not existed",
|
|
251
251
|
"Workflow tasks": "Workflow tasks",
|
|
252
252
|
"Workflow todos": "Workflow todos",
|
|
253
253
|
"Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).": "Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).",
|
package/dist/locale/zh-CN.json
CHANGED
|
@@ -152,6 +152,7 @@
|
|
|
152
152
|
"Node type": "节点类型",
|
|
153
153
|
"Node with unknown type will cause error. Please delete it or check plugin which provide this type.": "未知类型的节点会导致错误,请删除或检查提供该类型的插件。",
|
|
154
154
|
"Null": "Null",
|
|
155
|
+
"Not found": "未找到",
|
|
155
156
|
"Off": "停用",
|
|
156
157
|
"On": "启用",
|
|
157
158
|
"On going": "进行中",
|
|
@@ -253,7 +254,7 @@
|
|
|
253
254
|
"Will be executed in the background as a queued task.": "将作为队列任务在后台执行。",
|
|
254
255
|
"Workflow": "工作流",
|
|
255
256
|
"Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>": "工作流已执行,结果状态为 <1>{{statusText}}</1><2>查看执行详情</2>",
|
|
256
|
-
"Workflow is not
|
|
257
|
+
"Workflow of execution is not existed": "执行计划对应的工作流不存在",
|
|
257
258
|
"Workflow tasks": "流程待办",
|
|
258
259
|
"Workflow todos": "流程待办",
|
|
259
260
|
"Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).": "删除成功之前触发工作流(支持操作前事件)。",
|
package/dist/locale/zh-TW.json
CHANGED
|
@@ -247,7 +247,7 @@
|
|
|
247
247
|
"Will be executed in the background as a queued task.": "Will be executed in the background as a queued task.",
|
|
248
248
|
"Workflow": "Workflow",
|
|
249
249
|
"Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>": "Workflow executed, the result status is <1>{{statusText}}</1><2>View the execution</2>",
|
|
250
|
-
"Workflow is not
|
|
250
|
+
"Workflow of execution is not existed": "Workflow of execution is not existed",
|
|
251
251
|
"Workflow tasks": "Workflow tasks",
|
|
252
252
|
"Workflow todos": "Workflow todos",
|
|
253
253
|
"Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).": "Workflow will be triggered before deleting succeeded (only supports pre-action event in local mode).",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"cron-parser","version":"4.4.0","description":"Node.js library for parsing crontab instructions","main":"lib/parser.js","types":"index.d.ts","typesVersions":{"<4.1":{"*":["types/ts3/*"]}},"directories":{"test":"test"},"scripts":{"test:tsd":"tsd","test:unit":"TZ=UTC tap ./test/*.js","test:cover":"TZ=UTC tap --coverage-report=html ./test/*.js","lint":"eslint .","lint:fix":"eslint --fix .","test":"npm run lint && npm run test:unit && npm run test:tsd"},"repository":{"type":"git","url":"https://github.com/harrisiirak/cron-parser.git"},"keywords":["cron","crontab","parser"],"author":"Harri Siirak","contributors":["Nicholas Clawson","Daniel Prentis <daniel@salsitasoft.com>","Renault John Lecoultre","Richard Astbury <richard.astbury@gmail.com>","Meaglin Wasabi <Meaglin.wasabi@gmail.com>","Mike Kusold <hello@mikekusold.com>","Alex Kit <alex.kit@atmajs.com>","Santiago Gimeno <santiago.gimeno@gmail.com>","Daniel <darc.tec@gmail.com>","Christian Steininger <christian.steininger.cs@gmail.com>","Mykola Piskovyi <m.piskovyi@gmail.com>","Brian Vaughn <brian.david.vaughn@gmail.com>","Nicholas Clawson <nickclaw@gmail.com>","Yasuhiroki <yasuhiroki.duck@gmail.com>","Nicholas Clawson <nickclaw@gmail.com>","Brendan Warkentin <faazshift@gmail.com>","Charlie Fish <fishcharlie.code@gmail.com>","Ian Graves <ian+diskimage@iangrav.es>","Andy Thompson <me@andytson.com>","Regev Brody <regevbr@gmail.com>"],"license":"MIT","dependencies":{"luxon":"^1.28.0"},"devDependencies":{"eslint":"^8.2.0","sinon":"^10.0.0","tap":"^16.0.1","tsd":"^0.19.0"},"engines":{"node":">=0.8"},"browser":{"fs":false},"tap":{"check-coverage":false},"tsd":{"directory":"test","compilerOptions":{"lib":["es2017","dom"]}},"_lastModified":"2026-01-
|
|
1
|
+
{"name":"cron-parser","version":"4.4.0","description":"Node.js library for parsing crontab instructions","main":"lib/parser.js","types":"index.d.ts","typesVersions":{"<4.1":{"*":["types/ts3/*"]}},"directories":{"test":"test"},"scripts":{"test:tsd":"tsd","test:unit":"TZ=UTC tap ./test/*.js","test:cover":"TZ=UTC tap --coverage-report=html ./test/*.js","lint":"eslint .","lint:fix":"eslint --fix .","test":"npm run lint && npm run test:unit && npm run test:tsd"},"repository":{"type":"git","url":"https://github.com/harrisiirak/cron-parser.git"},"keywords":["cron","crontab","parser"],"author":"Harri Siirak","contributors":["Nicholas Clawson","Daniel Prentis <daniel@salsitasoft.com>","Renault John Lecoultre","Richard Astbury <richard.astbury@gmail.com>","Meaglin Wasabi <Meaglin.wasabi@gmail.com>","Mike Kusold <hello@mikekusold.com>","Alex Kit <alex.kit@atmajs.com>","Santiago Gimeno <santiago.gimeno@gmail.com>","Daniel <darc.tec@gmail.com>","Christian Steininger <christian.steininger.cs@gmail.com>","Mykola Piskovyi <m.piskovyi@gmail.com>","Brian Vaughn <brian.david.vaughn@gmail.com>","Nicholas Clawson <nickclaw@gmail.com>","Yasuhiroki <yasuhiroki.duck@gmail.com>","Nicholas Clawson <nickclaw@gmail.com>","Brendan Warkentin <faazshift@gmail.com>","Charlie Fish <fishcharlie.code@gmail.com>","Ian Graves <ian+diskimage@iangrav.es>","Andy Thompson <me@andytson.com>","Regev Brody <regevbr@gmail.com>"],"license":"MIT","dependencies":{"luxon":"^1.28.0"},"devDependencies":{"eslint":"^8.2.0","sinon":"^10.0.0","tap":"^16.0.1","tsd":"^0.19.0"},"engines":{"node":">=0.8"},"browser":{"fs":false},"tap":{"check-coverage":false},"tsd":{"directory":"test","compilerOptions":{"lib":["es2017","dom"]}},"_lastModified":"2026-01-09T02:29:22.918Z"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"lru-cache","description":"A cache object that deletes the least-recently-used items.","version":"8.0.5","author":"Isaac Z. Schlueter <i@izs.me>","keywords":["mru","lru","cache"],"sideEffects":false,"scripts":{"build":"npm run prepare","preprepare":"rm -rf dist","prepare":"tsc -p tsconfig.json && tsc -p tsconfig-esm.json","postprepare":"bash fixup.sh","pretest":"npm run prepare","presnap":"npm run prepare","test":"c8 tap","snap":"c8 tap","preversion":"npm test","postversion":"npm publish","prepublishOnly":"git push origin --follow-tags","format":"prettier --write .","typedoc":"typedoc --tsconfig tsconfig-esm.json ./src/*.ts","benchmark-results-typedoc":"bash scripts/benchmark-results-typedoc.sh","prebenchmark":"npm run prepare","benchmark":"make -C benchmark","preprofile":"npm run prepare","profile":"make -C benchmark profile"},"main":"./dist/cjs/index-cjs.js","module":"./dist/mjs/index.js","types":"./dist/mjs/index.d.ts","exports":{"./min":{"import":{"types":"./dist/mjs/index.d.ts","default":"./dist/mjs/index.min.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.min.js"}},".":{"import":{"types":"./dist/mjs/index.d.ts","default":"./dist/mjs/index.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index-cjs.js"}}},"repository":"git://github.com/isaacs/node-lru-cache.git","devDependencies":{"@size-limit/preset-small-lib":"^7.0.8","@types/node":"^17.0.31","@types/tap":"^15.0.6","benchmark":"^2.1.4","c8":"^7.11.2","clock-mock":"^1.0.6","esbuild":"^0.17.11","eslint-config-prettier":"^8.5.0","marked":"^4.2.12","mkdirp":"^2.1.5","prettier":"^2.6.2","size-limit":"^7.0.8","tap":"^16.3.4","ts-node":"^10.7.0","tslib":"^2.4.0","typedoc":"^0.23.24","typescript":"^4.6.4"},"license":"ISC","files":["dist"],"engines":{"node":">=16.14"},"prettier":{"semi":false,"printWidth":70,"tabWidth":2,"useTabs":false,"singleQuote":true,"jsxSingleQuote":false,"bracketSameLine":true,"arrowParens":"avoid","endOfLine":"lf"},"tap":{"coverage":false,"node-arg":["--expose-gc","--no-warnings","--loader","ts-node/esm"],"ts":false},"size-limit":[{"path":"./dist/mjs/index.js"}],"_lastModified":"2026-01-
|
|
1
|
+
{"name":"lru-cache","description":"A cache object that deletes the least-recently-used items.","version":"8.0.5","author":"Isaac Z. Schlueter <i@izs.me>","keywords":["mru","lru","cache"],"sideEffects":false,"scripts":{"build":"npm run prepare","preprepare":"rm -rf dist","prepare":"tsc -p tsconfig.json && tsc -p tsconfig-esm.json","postprepare":"bash fixup.sh","pretest":"npm run prepare","presnap":"npm run prepare","test":"c8 tap","snap":"c8 tap","preversion":"npm test","postversion":"npm publish","prepublishOnly":"git push origin --follow-tags","format":"prettier --write .","typedoc":"typedoc --tsconfig tsconfig-esm.json ./src/*.ts","benchmark-results-typedoc":"bash scripts/benchmark-results-typedoc.sh","prebenchmark":"npm run prepare","benchmark":"make -C benchmark","preprofile":"npm run prepare","profile":"make -C benchmark profile"},"main":"./dist/cjs/index-cjs.js","module":"./dist/mjs/index.js","types":"./dist/mjs/index.d.ts","exports":{"./min":{"import":{"types":"./dist/mjs/index.d.ts","default":"./dist/mjs/index.min.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.min.js"}},".":{"import":{"types":"./dist/mjs/index.d.ts","default":"./dist/mjs/index.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index-cjs.js"}}},"repository":"git://github.com/isaacs/node-lru-cache.git","devDependencies":{"@size-limit/preset-small-lib":"^7.0.8","@types/node":"^17.0.31","@types/tap":"^15.0.6","benchmark":"^2.1.4","c8":"^7.11.2","clock-mock":"^1.0.6","esbuild":"^0.17.11","eslint-config-prettier":"^8.5.0","marked":"^4.2.12","mkdirp":"^2.1.5","prettier":"^2.6.2","size-limit":"^7.0.8","tap":"^16.3.4","ts-node":"^10.7.0","tslib":"^2.4.0","typedoc":"^0.23.24","typescript":"^4.6.4"},"license":"ISC","files":["dist"],"engines":{"node":">=16.14"},"prettier":{"semi":false,"printWidth":70,"tabWidth":2,"useTabs":false,"singleQuote":true,"jsxSingleQuote":false,"bracketSameLine":true,"arrowParens":"avoid","endOfLine":"lf"},"tap":{"coverage":false,"node-arg":["--expose-gc","--no-warnings","--loader","ts-node/esm"],"ts":false},"size-limit":[{"path":"./dist/mjs/index.js"}],"_lastModified":"2026-01-09T02:29:22.586Z"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"nodejs-snowflake","collaborators":["Utkarsh Srivastava <utkarsh@sagacious.dev>"],"description":"Generate time sortable 64 bits unique ids for distributed systems (inspired from twitter snowflake)","version":"2.0.1","license":"Apache 2.0","repository":{"type":"git","url":"https://github.com/utkarsh-pro/nodejs-snowflake.git"},"files":["nodejs_snowflake_bg.wasm","nodejs_snowflake.js","nodejs_snowflake.d.ts"],"main":"nodejs_snowflake.js","types":"nodejs_snowflake.d.ts","_lastModified":"2026-01-
|
|
1
|
+
{"name":"nodejs-snowflake","collaborators":["Utkarsh Srivastava <utkarsh@sagacious.dev>"],"description":"Generate time sortable 64 bits unique ids for distributed systems (inspired from twitter snowflake)","version":"2.0.1","license":"Apache 2.0","repository":{"type":"git","url":"https://github.com/utkarsh-pro/nodejs-snowflake.git"},"files":["nodejs_snowflake_bg.wasm","nodejs_snowflake.js","nodejs_snowflake.d.ts"],"main":"nodejs_snowflake.js","types":"nodejs_snowflake.d.ts","_lastModified":"2026-01-09T02:29:22.372Z"}
|
package/dist/server/Plugin.js
CHANGED
|
@@ -287,7 +287,8 @@ class PluginWorkflowServer extends import_server.Plugin {
|
|
|
287
287
|
filter: { name: this.name }
|
|
288
288
|
});
|
|
289
289
|
this.snowflake = new import_nodejs_snowflake.Snowflake({
|
|
290
|
-
custom_epoch: pluginRecord == null ? void 0 : pluginRecord.createdAt.getTime()
|
|
290
|
+
custom_epoch: pluginRecord == null ? void 0 : pluginRecord.createdAt.getTime(),
|
|
291
|
+
instance_id: this.app.instanceId
|
|
291
292
|
});
|
|
292
293
|
}
|
|
293
294
|
/**
|
|
@@ -96,6 +96,15 @@ export default class Processor {
|
|
|
96
96
|
* @experimental
|
|
97
97
|
*/
|
|
98
98
|
getScope(sourceNodeId?: number | string, includeSelfScope?: boolean): {
|
|
99
|
+
ctx: {
|
|
100
|
+
$context: any;
|
|
101
|
+
$jobsMapByNodeKey: {
|
|
102
|
+
[key: string]: any;
|
|
103
|
+
};
|
|
104
|
+
$system: {};
|
|
105
|
+
$scopes: {};
|
|
106
|
+
$env: {};
|
|
107
|
+
};
|
|
99
108
|
$context: any;
|
|
100
109
|
$jobsMapByNodeKey: {
|
|
101
110
|
[key: string]: any;
|
package/dist/server/Processor.js
CHANGED
|
@@ -439,13 +439,18 @@ class Processor {
|
|
|
439
439
|
$scopes[n.id] = $scopes[n.key] = instruction.getScope(n, this.jobResultsMapByNodeKey[n.key], this);
|
|
440
440
|
}
|
|
441
441
|
}
|
|
442
|
-
|
|
442
|
+
const scopes = {
|
|
443
443
|
$context: this.execution.context,
|
|
444
444
|
$jobsMapByNodeKey: this.jobResultsMapByNodeKey,
|
|
445
445
|
$system: systemFns,
|
|
446
446
|
$scopes,
|
|
447
447
|
$env: this.options.plugin.app.environment.getVariables()
|
|
448
448
|
};
|
|
449
|
+
return {
|
|
450
|
+
...scopes,
|
|
451
|
+
ctx: scopes
|
|
452
|
+
// 2.0
|
|
453
|
+
};
|
|
449
454
|
}
|
|
450
455
|
/**
|
|
451
456
|
* @experimental
|
|
@@ -97,7 +97,8 @@ class WorkflowRepository extends import_database.Repository {
|
|
|
97
97
|
{ transaction }
|
|
98
98
|
);
|
|
99
99
|
if (typeof instruction.duplicateConfig === "function") {
|
|
100
|
-
await instruction.duplicateConfig(newNode, { origin: node, transaction });
|
|
100
|
+
const newConfig = await instruction.duplicateConfig(newNode, { origin: node, transaction });
|
|
101
|
+
await newNode.update({ config: newConfig }, { transaction });
|
|
101
102
|
}
|
|
102
103
|
oldToNew.set(node.id, newNode);
|
|
103
104
|
newToOld.set(newNode.id, node);
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"description": "A powerful BPM tool that provides foundational support for business automation, with the capability to extend unlimited triggers and nodes.",
|
|
7
7
|
"description.zh-CN": "一个强大的 BPM 工具,为业务自动化提供基础支持,并且可任意扩展更多的触发器和节点。",
|
|
8
8
|
"description.ru-RU": "Мощный инструмент BPM, обеспечивающий базовую поддержку автоматизации бизнес-процессов с возможностью неограниченного расширения триггеров и узлов.",
|
|
9
|
-
"version": "2.0.0-beta.
|
|
9
|
+
"version": "2.0.0-beta.7",
|
|
10
10
|
"license": "AGPL-3.0",
|
|
11
11
|
"main": "./dist/server/index.js",
|
|
12
12
|
"homepage": "https://docs.nocobase.com/handbook/workflow",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"@nocobase/test": "2.x",
|
|
49
49
|
"@nocobase/utils": "2.x"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "17b6e4042a4814e38b256c7b3ae34e6d0b08fd57",
|
|
52
52
|
"keywords": [
|
|
53
53
|
"Workflow"
|
|
54
54
|
]
|
|
@@ -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([["771"],{144:function(e,t,n){n.d(t,{g:function(){return w}});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)||t.call(n,{args:o,reason:"imperative-api"}),this.setState(i)}}componentDidCatch(e,t){var n,r;null==(n=(r=this.props).onError)||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)||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(2415),d=n(8551),m=n(5329),f=n(4477),p=n(8562);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 v(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function b(){var e=v(["\n margin-top: 0 !important;\n "]);return b=function(){return e},e}function h(){var e=v(["\n margin-bottom: 1em;\n "]);return h=function(){return e},e}function E(){var e=v(["\n margin-top: 0 !important;\n "]);return E=function(){return e},e}function w(e){var t,n=e.entry,o=(0,m.Z)().styles,l=(0,p.RY)(),i=(t=a().useState(100),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),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,2);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,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),v=i[0],w=i[1];return a().createElement("div",{className:"workflow-canvas-wrapper"},a().createElement(c,{FallbackComponent:s.ErrorFallback,onError:console.error},a().createElement("div",{className:"workflow-canvas",style:{zoom:v/100}},a().createElement("div",{className:(0,s.cx)(o.branchBlockClass,(0,s.css)(b()))},a().createElement("div",{className:o.branchClass},l?a().createElement(r.Alert,{type:"warning",message:(0,d.KQ)("Executed workflow cannot be modified. Could be copied to a new version to modify."),showIcon:!0,className:(0,s.css)(h())}):null,a().createElement(f.Gk,null),a().createElement("div",{className:(0,s.cx)(o.branchBlockClass,(0,s.css)(E()))},a().createElement(u.I0,{entry:n})),a().createElement("div",{className:o.terminalClass},(0,d.KQ)("End")))))),a().createElement("div",{className:"workflow-canvas-zoomer"},a().createElement(r.Slider,{vertical:!0,reverse:!0,defaultValue:100,step:10,min:10,value:v,onChange:w})))}},2378:function(e,t,n){n.r(t),n.d(t,{ExecutionPage:function(){return N}});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(4199),m=n(144),f=n(118),p=n(1682),y=n(8398),v=n(8551),b=n(5329),h=n(9315),E=n(467);function w(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 g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function k(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++)n=a[r],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function x(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)||O(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 S(e){return function(e){if(Array.isArray(e))return w(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||O(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 O(e,t){if(e){if("string"==typeof e)return w(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 w(e,t)}}function C(e){var t,n,o=(0,y.G2)().viewJob,l=(0,r.useRequest)({resource:"jobs",action:"get",params:{filterByTk:o.id}}),c=l.data;if(l.loading)return a().createElement(i.Spin,null);var s=(0,E.get)(c,"data.result");return a().createElement(r.Input.JSON,(t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){g(e,t,n[t])})}return e}({},e),n=n={value:s,disabled:!0},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}),t))}function j(){var e=(0,r.usePlugin)(d.default).instructions,t=(0,r.useCompile)(),n=(0,y.G2)(),o=n.viewJob,l=n.setViewJob,c=(0,b.Z)().styles,s=(null!=o?o:{}).node,u=void 0===s?{}:s,m=e.get(u.type);return a().createElement(r.ActionContextProvider,{value:{visible:!!o,setVisible:l}},a().createElement(r.SchemaComponent,{components:{JobResult:C},schema:{type:"void",properties:g({},"".concat(null==o?void 0:o.id,"-").concat(null==o?void 0:o.updatedAt,"-modal"),{type:"void","x-decorator":"Form","x-decorator-props":{initialValue:o},"x-component":"Action.Modal",title:a().createElement("div",{className:c.nodeTitleClass},a().createElement(i.Tag,null,t(null==m?void 0:m.title)),a().createElement("strong",null,u.title),a().createElement("span",{className:"workflow-node-id"},"#",u.id)),properties:{status:{type:"number",title:'{{t("Status", { ns: "'.concat(v.A7,'" })}}'),"x-decorator":"FormItem","x-component":"Select",enum:p.Vh,"x-read-pretty":!0},updatedAt:{type:"string",title:'{{t("Executed at", { ns: "'.concat(v.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(v.A7,'" })}}'),"x-decorator":"FormItem","x-component":"JobResult","x-component-props":{className:c.nodeJobResultClass,autoSize:{minRows:4,maxRows:32}}}}})}}))}function A(e){var t=(0,y.G2)().execution,n=(0,r.useAPIClient)(),u=(0,l.useNavigate)(),d=(0,b.Z)().styles,m=(0,r.useResourceActionContext)().refresh,v=x((0,o.useState)([]),2),E=v[0],w=v[1],g=x((0,o.useState)([]),2),k=g[0],O=g[1],C=x((0,o.useState)(null),2),j=C[0],A=C[1],P=x((0,o.useState)(null),2),N=P[0],I=P[1],D=x((0,o.useState)(null),2),R=D[0],T=D[1],B=(0,o.useCallback)(function(e){t&&e&&(j!==t.id&&n.resource("executions").list({filter:{key:t.key,id:{$lt:t.id}},sort:"-id",pageSize:10,fields:["id","status","createdAt"]}).then(function(e){var n=e.data;A(t.id),w(n.data)}).catch(function(){}),(N!==t.id||R&&Date.now()-Number(R)>6e4&&k.length<10)&&n.resource("executions").list({filter:{key:t.key,id:{$gt:t.id}},sort:"id",pageSize:10,fields:["id","status","createdAt"]}).then(function(e){var n=e.data;I(t.id),T(Date.now()),O(n.data.reverse())}).catch(function(){}))},[t,j,N,R,k.length,n]),K=(0,o.useCallback)(function(e){var n=e.key;n!=t.id&&u((0,h.s_)(n))},[t.id,u]);return t?a().createElement(i.Space,null,a().createElement(i.Dropdown,{onOpenChange:B,menu:{onClick:K,defaultSelectedKeys:["".concat(t.id)],className:(0,r.cx)(d.dropdownClass,d.executionsDropdownRowClass),items:S(k).concat([t],S(E)).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))),a().createElement(i.Button,{type:"link",size:"small",icon:a().createElement(s.ReloadOutlined,null),onClick:m})):null}function P(){var e,t=(0,u.useTranslation)().t,n=(0,r.useCompile)(),d=(0,r.useResourceActionContext)(),f=d.data,b=d.loading,E=d.refresh,w=(0,r.useDocumentTitle)().setTitle,g=x((0,o.useState)(null),2),S=g[0],O=g[1],C=(0,r.useApp)(),P=(0,r.useAPIClient)();(0,o.useEffect)(function(){var e,t=(null!=(e=null==f?void 0:f.data)?e:{}).workflow;null==w||w("".concat((null==t?void 0:t.title)?"".concat(t.title," - "):"").concat((0,v.KQ)("Execution history")))},[null==f?void 0:f.data,w]);var N=(0,o.useCallback)(function(){i.Modal.confirm({title:(0,v.KQ)("Cancel the execution"),icon:a().createElement(s.ExclamationCircleFilled,null),content:(0,v.KQ)("Are you sure you want to cancel the execution?"),onOk:function(){P.resource("executions").cancel({filterByTk:null==f?void 0:f.data.id}).then(function(){i.message.success(t("Operation succeeded")),E()}).catch(function(e){console.error(e.data.error)})}})},[null==f?void 0:f.data]);if(!(null==f?void 0:f.data))return b?a().createElement(i.Spin,null):a().createElement(i.Result,{status:"404",title:"Not found"});var I=null!=(e=null==f?void 0:f.data)?e:{},D=I.jobs,R=I.workflow,T=void 0===R?{}:R,B=T.nodes,K=void 0===B?[]:B,M=(T.revisions,k(I.workflow,["nodes","revisions"])),Y=k(I,["jobs","workflow"]);(0,h.Yc)(K),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&&(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})})}(K,void 0===D?[]:D);var z=K.find(function(e){return!e.upstream}),F=p.uy[Y.status];return a().createElement(y.iT.Provider,{value:{workflow:M.type?M:null,nodes:K,execution:Y,viewJob:S,setViewJob:O}},a().createElement("div",{className:"workflow-toolbar"},a().createElement("header",null,a().createElement(i.Breadcrumb,{items:[{title:a().createElement(l.Link,{to:C.pluginSettingsManager.getRoutePath("workflow")},(0,v.KQ)("Workflow"))},{title:a().createElement(i.Tooltip,{title:"Key: ".concat(M.key)},a().createElement(l.Link,{to:(0,h.SI)(M.id)},M.title))},{title:a().createElement(A,null)}]})),a().createElement("aside",null,a().createElement(i.Tag,{color:F.color},n(F.label)),Y.status?null:a().createElement(i.Tooltip,{title:(0,v.KQ)("Cancel the execution")},a().createElement(i.Button,{type:"link",danger:!0,onClick:N,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:z}),a().createElement(j,null))}var N=function(){var e,t,n,o=(0,l.useParams)(),i=(0,b.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","workflow.versionStats","workflow.stats"],except:["jobs.result","workflow.options"]}}},"x-component":"ExecutionCanvas"},t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e)},components:{ExecutionCanvas:P}}))}}}]);
|