@5minds/node-red-contrib-processcube 0.14.0-feature-612fd3-lywvsveq → 0.14.0-feature-ebe375-lyxawl6i
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/Dockerfile +1 -1
- package/docker-compose.yml +5 -0
- package/externaltask-error.js +16 -12
- package/externaltask-input.js +11 -4
- package/package.json +1 -1
- package/processcube-engine-config.js +17 -2
package/Dockerfile
CHANGED
package/docker-compose.yml
CHANGED
@@ -12,6 +12,9 @@ services:
|
|
12
12
|
volumes:
|
13
13
|
- ./nodered/:/nodered/
|
14
14
|
- ./examples/:/examples/
|
15
|
+
depends_on:
|
16
|
+
- engine
|
17
|
+
- authority
|
15
18
|
|
16
19
|
engine:
|
17
20
|
image: 5minds/processcube_engine:2024-1
|
@@ -24,6 +27,8 @@ services:
|
|
24
27
|
iam__baseUrl: http://authority:11560
|
25
28
|
iam__allowAnonymousRootAccess: true
|
26
29
|
command: --seed-dir=/processes --port 8000
|
30
|
+
depends_on:
|
31
|
+
- authority
|
27
32
|
|
28
33
|
authority:
|
29
34
|
image: 5minds/processcube_authority:3.0.4
|
package/externaltask-error.js
CHANGED
@@ -10,22 +10,26 @@ module.exports = function(RED) {
|
|
10
10
|
|
11
11
|
const externalTaskId = msg.externalTaskId;
|
12
12
|
|
13
|
-
let
|
13
|
+
let msgError = msg.error;
|
14
14
|
|
15
|
-
if (
|
16
|
-
|
17
|
-
error.source = msg.payload;
|
15
|
+
if (msgError === undefined) {
|
16
|
+
msgError.message = "An error occurred";
|
18
17
|
}
|
19
18
|
|
20
|
-
msg.
|
21
|
-
|
22
|
-
|
23
|
-
errorMessage: error.message,
|
24
|
-
errorDetails: error.source
|
25
|
-
}
|
26
|
-
};
|
19
|
+
msg.errorCode = config.error;
|
20
|
+
msg.errorMessage = msgError.message;
|
21
|
+
//msg.errorDetails = RED.util.encodeObject(msg); // circular structure
|
27
22
|
|
28
|
-
|
23
|
+
const error = new Error(msg.errorMessage);
|
24
|
+
error.errorCode = msg.errorCode;
|
25
|
+
error.errorDetails = RED.util.encodeObject(msg);
|
26
|
+
|
27
|
+
// TODO: hack cause https://github.com/5minds/ProcessCube.Engine.Client.ts/blob/develop/src/ExternalTaskWorker.ts#L180
|
28
|
+
error.stack = error.errorDetails;
|
29
|
+
error.externalTaskId = externalTaskId;
|
30
|
+
error._msgid = msg._msgid;
|
31
|
+
|
32
|
+
eventEmitter.emit(`handle-${externalTaskId}`, error, true);
|
29
33
|
|
30
34
|
node.send(msg);
|
31
35
|
});
|
package/externaltask-input.js
CHANGED
@@ -20,7 +20,6 @@ module.exports = function(RED) {
|
|
20
20
|
var flowContext = node.context().flow;
|
21
21
|
var nodeContext = node.context();
|
22
22
|
|
23
|
-
|
24
23
|
this.engine = this.server = RED.nodes.getNode(config.engine);
|
25
24
|
|
26
25
|
const engineUrl = this.engine?.url || process.env.ENGINE_URL || 'http://engine:8000';
|
@@ -46,27 +45,35 @@ module.exports = function(RED) {
|
|
46
45
|
return await new Promise((resolve, reject) => {
|
47
46
|
|
48
47
|
const handleFinishTask = (msg) => {
|
48
|
+
let result = RED.util.encodeObject(msg.payload);
|
49
|
+
|
50
|
+
node.log(`handle event for external task ${externalTask.flowNodeInstanceId} and process it with result ${result} on msg._msgid ${msg._msgid}.`);
|
51
|
+
|
49
52
|
if (msg.externalTaskId) {
|
50
53
|
delete started_external_tasks[msg.externalTaskId];
|
51
54
|
}
|
52
55
|
|
53
56
|
showStatus(node, Object.keys(started_external_tasks).length);
|
54
57
|
|
55
|
-
let result = RED.util.encodeObject(msg.payload);
|
56
58
|
|
57
59
|
resolve(result);
|
58
60
|
};
|
59
61
|
|
60
62
|
const handleErrorTask = (msg) => {
|
63
|
+
|
64
|
+
node.log(`handle error event for external task ${externalTask.flowNodeInstanceId} with result ${msg} on msg._msgid ${msg._msgid}.`);
|
65
|
+
|
61
66
|
if (msg.externalTaskId) {
|
62
67
|
delete started_external_tasks[msg.externalTaskId];
|
63
68
|
}
|
64
69
|
|
65
70
|
showStatus(node, Object.keys(started_external_tasks).length);
|
66
71
|
|
67
|
-
let result = RED.util.encodeObject(msg);
|
68
72
|
|
69
|
-
reject
|
73
|
+
// TODO: with reject, the default error handling is proceed
|
74
|
+
// SEE: https://github.com/5minds/ProcessCube.Engine.Client.ts/blob/develop/src/ExternalTaskWorker.ts#L180
|
75
|
+
// reject(result);
|
76
|
+
resolve(msg);
|
70
77
|
};
|
71
78
|
|
72
79
|
eventEmitter.once(`handle-${externalTask.flowNodeInstanceId}`, (msg, isError = false) => {
|
package/package.json
CHANGED
@@ -13,14 +13,29 @@ module.exports = function(RED) {
|
|
13
13
|
this.identity = null;
|
14
14
|
this.registerOnIdentityChanged = function (callback) {
|
15
15
|
identityChangedCallbacks.push(callback);
|
16
|
-
}
|
16
|
+
};
|
17
|
+
|
17
18
|
this.setIdentity = (identity) => {
|
18
19
|
this.identity = identity;
|
19
20
|
|
20
21
|
for (const callback of identityChangedCallbacks) {
|
21
22
|
callback(identity);
|
22
23
|
}
|
23
|
-
}
|
24
|
+
};
|
25
|
+
|
26
|
+
var nodeContext = node.context();
|
27
|
+
|
28
|
+
this.getEngineClient = () => {
|
29
|
+
const engineUrl = this.url || process.env.ENGINE_URL || 'http://engine:8000';
|
30
|
+
let client = nodeContext.get('client');
|
31
|
+
|
32
|
+
if (!client) {
|
33
|
+
nodeContext.set('client', new engine_client.EngineClient(engineUrl));
|
34
|
+
client = nodeContext.get('client');
|
35
|
+
}
|
36
|
+
|
37
|
+
return client;
|
38
|
+
};
|
24
39
|
|
25
40
|
if (this.credentials.clientId && this.credentials.clientSecret) {
|
26
41
|
const engineClient = new engine_client.EngineClient(this.url);
|