@nocobase/plugin-workflow 2.2.0-beta.2 → 2.2.0-beta.5
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/Branch.d.ts +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/triggers/collection.d.ts +29 -2
- package/dist/externalVersion.js +13 -12
- package/dist/locale/de-DE.json +1 -0
- package/dist/locale/en-US.json +5 -1
- package/dist/locale/es-ES.json +1 -0
- package/dist/locale/fr-FR.json +1 -0
- package/dist/locale/hu-HU.json +1 -0
- package/dist/locale/id-ID.json +1 -0
- package/dist/locale/it-IT.json +1 -0
- package/dist/locale/ja-JP.json +1 -0
- package/dist/locale/ko-KR.json +1 -0
- package/dist/locale/nl-NL.json +1 -0
- package/dist/locale/pt-BR.json +1 -0
- package/dist/locale/ru-RU.json +1 -0
- package/dist/locale/tr-TR.json +1 -0
- package/dist/locale/uk-UA.json +1 -0
- package/dist/locale/vi-VN.json +1 -0
- package/dist/locale/zh-CN.json +5 -1
- package/dist/locale/zh-TW.json +1 -0
- package/dist/node_modules/cron-parser/package.json +1 -1
- package/dist/node_modules/joi/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/Processor.d.ts +16 -0
- package/dist/server/Processor.js +112 -0
- package/dist/server/index.d.ts +1 -1
- package/dist/server/instructions/CreateInstruction.js +6 -2
- package/dist/server/instructions/DestroyInstruction.js +2 -1
- package/dist/server/instructions/QueryInstruction.js +2 -1
- package/dist/server/instructions/UpdateInstruction.js +2 -1
- package/dist/server/triggers/CollectionTrigger.d.ts +5 -0
- package/dist/server/triggers/CollectionTrigger.js +26 -1
- package/package.json +2 -2
|
@@ -46,6 +46,7 @@ var import_database = require("@nocobase/database");
|
|
|
46
46
|
var import_data_source_manager = require("@nocobase/data-source-manager");
|
|
47
47
|
var import__ = __toESM(require("."));
|
|
48
48
|
var import_utils2 = require("../utils");
|
|
49
|
+
var import_constants = require("../constants");
|
|
49
50
|
const MODE_BITMAP = {
|
|
50
51
|
CREATE: 1,
|
|
51
52
|
UPDATE: 2,
|
|
@@ -96,6 +97,7 @@ class CollectionTrigger extends import__.default {
|
|
|
96
97
|
otherwise: import_joi.default.forbidden()
|
|
97
98
|
}),
|
|
98
99
|
condition: import_joi.default.object(),
|
|
100
|
+
rollbackOnFailure: import_joi.default.boolean().optional(),
|
|
99
101
|
appends: import_joi.default.when("mode", {
|
|
100
102
|
is: (mode) => mode !== MODE_BITMAP.DESTROY,
|
|
101
103
|
then: import_joi.default.array().items(import_joi.default.string()).optional(),
|
|
@@ -112,6 +114,7 @@ class CollectionTrigger extends import__.default {
|
|
|
112
114
|
events = /* @__PURE__ */ new Map();
|
|
113
115
|
// async function, should return promise
|
|
114
116
|
static async handler(workflowId, eventType, data, options) {
|
|
117
|
+
var _a, _b;
|
|
115
118
|
const workflow = this.workflow.enabledCache.get(workflowId);
|
|
116
119
|
const { skipWorkflow = false, stack } = options.context ?? {};
|
|
117
120
|
if (skipWorkflow) {
|
|
@@ -130,10 +133,25 @@ class CollectionTrigger extends import__.default {
|
|
|
130
133
|
});
|
|
131
134
|
return;
|
|
132
135
|
}
|
|
133
|
-
await this.workflow.trigger(workflow, ctx, {
|
|
136
|
+
const processor = await this.workflow.trigger(workflow, ctx, {
|
|
134
137
|
transaction,
|
|
135
138
|
stack
|
|
136
139
|
});
|
|
140
|
+
const execution = processor ? processor.execution : null;
|
|
141
|
+
const lastSavedJob = processor ? processor.lastSavedJob : null;
|
|
142
|
+
if (workflow.config.rollbackOnFailure && (!execution || execution.status < import_constants.EXECUTION_STATUS.STARTED)) {
|
|
143
|
+
this.workflow.getLogger(workflow.id).error("[CollectionTrigger] source operation rolled back because sync workflow failed", {
|
|
144
|
+
workflowId: workflow.id,
|
|
145
|
+
workflowKey: workflow.key,
|
|
146
|
+
workflowTitle: workflow.title,
|
|
147
|
+
executionId: execution == null ? void 0 : execution.id,
|
|
148
|
+
executionStatus: execution == null ? void 0 : execution.status,
|
|
149
|
+
lastJobId: lastSavedJob == null ? void 0 : lastSavedJob.id,
|
|
150
|
+
lastJobStatus: lastSavedJob == null ? void 0 : lastSavedJob.status,
|
|
151
|
+
lastJobResult: lastSavedJob == null ? void 0 : lastSavedJob.result
|
|
152
|
+
});
|
|
153
|
+
throw this.createRollbackOnFailureError((_b = (_a = options.context) == null ? void 0 : _a.getCurrentLocale) == null ? void 0 : _b.call(_a));
|
|
154
|
+
}
|
|
137
155
|
} else {
|
|
138
156
|
if (transaction) {
|
|
139
157
|
transaction.afterCommit(() => {
|
|
@@ -144,6 +162,13 @@ class CollectionTrigger extends import__.default {
|
|
|
144
162
|
}
|
|
145
163
|
}
|
|
146
164
|
}
|
|
165
|
+
createRollbackOnFailureError(locale) {
|
|
166
|
+
const message = this.workflow.t("System process failed, please contact administrator.", locale ? { lng: locale } : {}).toString();
|
|
167
|
+
const error = new Error(message);
|
|
168
|
+
error.status = 422;
|
|
169
|
+
error.code = "WORKFLOW_ROLLBACK_ON_FAILURE";
|
|
170
|
+
return error;
|
|
171
|
+
}
|
|
147
172
|
async prepare(workflow, data, options) {
|
|
148
173
|
const { condition, changed, mode, appends } = workflow.config;
|
|
149
174
|
const [dataSourceName, collectionName] = (0, import_data_source_manager.parseCollectionName)(workflow.config.collection);
|
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.2.0-beta.
|
|
9
|
+
"version": "2.2.0-beta.5",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"main": "./dist/server/index.js",
|
|
12
12
|
"homepage": "https://docs.nocobase.com/handbook/workflow",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"@nocobase/test": "2.x",
|
|
50
50
|
"@nocobase/utils": "2.x"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "81eab2cfa9d3d989e99ba0c914807b38db55f023",
|
|
53
53
|
"keywords": [
|
|
54
54
|
"Workflow"
|
|
55
55
|
]
|