@5minds/node-red-contrib-processcube 0.14.0-feature-ef048b-lyy1ngi6 → 0.14.0-fix-error-in-process-instance-query-433395-lyzh0xul
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 +0 -11
- package/externaltask-error.js +13 -14
- package/externaltask-input.js +43 -98
- package/externaltask-output.js +3 -3
- package/nodered/node-red-contrib-processcube-flows.json +133 -108
- package/nodered/settings.js +1 -1
- package/package.json +1 -1
- package/processcube-engine-config.js +2 -17
- package/processes/CheckError.bpmn +78 -0
- package/processes/NodeRedExternalTask.bpmn +77 -0
- package/processes/SampleUserTask.bpmn +95 -0
- package/processinstance-query.js +36 -22
- package/examples/External-Task-Sample.json +0 -252
- package/processes/External-Task-Sample.bpmn +0 -94
package/Dockerfile
CHANGED
package/docker-compose.yml
CHANGED
@@ -11,10 +11,6 @@ services:
|
|
11
11
|
- FLOWS=/nodered/node-red-contrib-processcube-flows.json
|
12
12
|
volumes:
|
13
13
|
- ./nodered/:/nodered/
|
14
|
-
- ./examples/:/examples/
|
15
|
-
depends_on:
|
16
|
-
- engine
|
17
|
-
- authority
|
18
14
|
|
19
15
|
engine:
|
20
16
|
image: 5minds/processcube_engine:2024-1
|
@@ -23,16 +19,9 @@ services:
|
|
23
19
|
volumes:
|
24
20
|
- ./processes:/processes:ro
|
25
21
|
environment:
|
26
|
-
application__name: Engine for Node-RED contrib
|
27
22
|
iam__baseUrl: http://authority:11560
|
28
23
|
iam__allowAnonymousRootAccess: true
|
29
24
|
command: --seed-dir=/processes --port 8000
|
30
|
-
depends_on:
|
31
|
-
- authority
|
32
|
-
healthcheck:
|
33
|
-
test: bash -c "[ -f /tmp/healthy ]"
|
34
|
-
timeout: 1s
|
35
|
-
retries: 20
|
36
25
|
|
37
26
|
authority:
|
38
27
|
image: 5minds/processcube_authority:3.0.4
|
package/externaltask-error.js
CHANGED
@@ -8,25 +8,24 @@ module.exports = function(RED) {
|
|
8
8
|
|
9
9
|
node.on('input', function(msg) {
|
10
10
|
|
11
|
-
const
|
11
|
+
const externalTaskId = msg.externalTaskId;
|
12
12
|
|
13
|
-
let
|
13
|
+
let error = msg.error;
|
14
14
|
|
15
|
-
if (
|
16
|
-
|
15
|
+
if (error === undefined) {
|
16
|
+
error.message = "An error occurred";
|
17
|
+
error.source = msg.payload;
|
17
18
|
}
|
18
19
|
|
19
|
-
msg.
|
20
|
-
|
21
|
-
|
20
|
+
msg.payload = {
|
21
|
+
"error": {
|
22
|
+
errorCode: config.error,
|
23
|
+
errorMessage: error.message,
|
24
|
+
errorDetails: error.source
|
25
|
+
}
|
26
|
+
};
|
22
27
|
|
23
|
-
|
24
|
-
error.errorCode = config.error;
|
25
|
-
|
26
|
-
// TODO: hack cause https://github.com/5minds/ProcessCube.Engine.Client.ts/blob/develop/src/ExternalTaskWorker.ts#L180
|
27
|
-
error.stack = RED.util.encodeObject(msg);
|
28
|
-
|
29
|
-
eventEmitter.emit(`handle-${flowNodeInstanceId}`, error, true);
|
28
|
+
eventEmitter.emit(`error-${externalTaskId}`, msg.payload);
|
30
29
|
|
31
30
|
node.send(msg);
|
32
31
|
});
|
package/externaltask-input.js
CHANGED
@@ -1,24 +1,44 @@
|
|
1
|
+
const process = require('process');
|
1
2
|
const EventEmitter = require('node:events');
|
2
3
|
|
4
|
+
const engine_client = require('@5minds/processcube_engine_client');
|
5
|
+
|
3
6
|
function showStatus(node, msgCounter) {
|
4
7
|
if (msgCounter >= 1) {
|
5
|
-
node.status({fill: "blue", shape: "dot", text: `handling tasks ${msgCounter}
|
8
|
+
node.status({fill: "blue", shape: "dot", text: `handling tasks ${msgCounter}`});
|
6
9
|
} else {
|
7
|
-
node.status({fill: "blue", shape: "ring", text: `subcribed
|
10
|
+
node.status({fill: "blue", shape: "ring", text: `subcribed ${msgCounter}`});
|
8
11
|
}
|
9
12
|
}
|
10
13
|
|
11
|
-
|
14
|
+
function decrCounter(msgCounter) {
|
15
|
+
msgCounter--;
|
16
|
+
|
17
|
+
if (msgCounter < 0) {
|
18
|
+
msgCounter = 0;
|
19
|
+
}
|
20
|
+
|
21
|
+
return msgCounter;
|
22
|
+
}
|
12
23
|
|
13
24
|
module.exports = function(RED) {
|
14
25
|
function ExternalTaskInput(config) {
|
15
26
|
RED.nodes.createNode(this,config);
|
16
27
|
var node = this;
|
28
|
+
var msgCounter = 0;
|
17
29
|
var flowContext = node.context().flow;
|
18
|
-
|
30
|
+
var nodeContext = node.context();
|
31
|
+
|
19
32
|
this.engine = this.server = RED.nodes.getNode(config.engine);
|
20
33
|
|
21
|
-
const
|
34
|
+
const engineUrl = this.engine?.url || process.env.ENGINE_URL || 'http://engine:8000';
|
35
|
+
|
36
|
+
var client = nodeContext.get('client');
|
37
|
+
|
38
|
+
if (!client) {
|
39
|
+
nodeContext.set('client', new engine_client.EngineClient(engineUrl));
|
40
|
+
client = nodeContext.get('client');
|
41
|
+
}
|
22
42
|
|
23
43
|
var eventEmitter = flowContext.get('emitter');
|
24
44
|
|
@@ -30,75 +50,30 @@ module.exports = function(RED) {
|
|
30
50
|
client.externalTasks.subscribeToExternalTaskTopic(
|
31
51
|
config.topic,
|
32
52
|
async (payload, externalTask) => {
|
53
|
+
msgCounter++;
|
33
54
|
|
34
|
-
const saveHandleCallback = (data, callback) => {
|
35
|
-
try {
|
36
|
-
callback(data);
|
37
|
-
} catch (error) {
|
38
|
-
node.error(`Error in callback 'saveHandleCallback': ${error.message}`);
|
39
|
-
}
|
40
|
-
};
|
41
|
-
|
42
55
|
return await new Promise((resolve, reject) => {
|
56
|
+
|
57
|
+
// TODO: once ist 2x gebunden
|
58
|
+
eventEmitter.once(`finish-${externalTask.flowNodeInstanceId}`, (result) => {
|
59
|
+
msgCounter = decrCounter(msgCounter);
|
43
60
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
node.log(`handle event for *external task flowNodeInstanceId* '${externalTask.flowNodeInstanceId}' and *processInstanceId* ${externalTask.processInstanceId} with result ${result} on msg._msgid ${msg._msgid}.`);
|
48
|
-
|
49
|
-
if (externalTask.flowNodeInstanceId) {
|
50
|
-
delete started_external_tasks[externalTask.flowNodeInstanceId];
|
51
|
-
}
|
52
|
-
|
53
|
-
showStatus(node, Object.keys(started_external_tasks).length);
|
54
|
-
|
55
|
-
|
56
|
-
//resolve(result);
|
57
|
-
saveHandleCallback(result, resolve)
|
58
|
-
};
|
59
|
-
|
60
|
-
const handleErrorTask = (msg) => {
|
61
|
-
|
62
|
-
node.log(`handle error event for *external task flowNodeInstanceId* '${externalTask.flowNodeInstanceId}' and *processInstanceId* '${externalTask.processInstanceId}' on *msg._msgid* '${msg._msgid}'.`);
|
63
|
-
|
64
|
-
if (externalTask.flowNodeInstanceId) {
|
65
|
-
delete started_external_tasks[externalTask.flowNodeInstanceId];
|
66
|
-
}
|
67
|
-
|
68
|
-
showStatus(node, Object.keys(started_external_tasks).length);
|
69
|
-
|
61
|
+
showStatus(node, msgCounter);
|
62
|
+
resolve(result);
|
63
|
+
});
|
70
64
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
//resolve(msg);
|
75
|
-
saveHandleCallback(msg, resolve);
|
76
|
-
};
|
65
|
+
eventEmitter.once(`error-${externalTask.flowNodeInstanceId}`, (msg) => {
|
66
|
+
msgCounter = decrCounter(msgCounter);
|
67
|
+
showStatus(node, msgCounter);
|
77
68
|
|
78
|
-
|
79
|
-
node.log(`handle event for *external task flowNodeInstanceId* '${externalTask.flowNodeInstanceId}' and *processInstanceId* '${externalTask.processInstanceId}' with *msg._msgid* '${msg._msgid}' and *isError* '${isError}'`);
|
69
|
+
var result = msg.payload ? msg.payload : msg;
|
80
70
|
|
81
|
-
|
82
|
-
handleErrorTask(msg);
|
83
|
-
} else {
|
84
|
-
handleFinishTask(msg);
|
85
|
-
}
|
71
|
+
reject(result);
|
86
72
|
});
|
87
73
|
|
88
|
-
|
89
|
-
|
90
|
-
showStatus(node, Object.keys(started_external_tasks).length);
|
91
|
-
|
92
|
-
let msg = {
|
93
|
-
_msgid: RED.util.generateId(),
|
94
|
-
task: RED.util.encodeObject(externalTask),
|
95
|
-
payload: payload,
|
96
|
-
flowNodeInstanceId: externalTask.flowNodeInstanceId
|
97
|
-
};
|
98
|
-
|
99
|
-
node.log(`Received *external task flowNodeInstanceId* '${externalTask.flowNodeInstanceId}' and *processInstanceId* '${externalTask.processInstanceId}' with *msg._msgid* '${msg._msgid}'`);
|
74
|
+
showStatus(node, msgCounter);
|
100
75
|
|
101
|
-
node.send(
|
76
|
+
node.send({topic: externalTask.topic, payload: payload, externalTaskId: externalTask.flowNodeInstanceId});
|
102
77
|
});
|
103
78
|
},
|
104
79
|
).then(async externalTaskWorker => {
|
@@ -108,36 +83,9 @@ module.exports = function(RED) {
|
|
108
83
|
node.server.registerOnIdentityChanged((identity) => {
|
109
84
|
externalTaskWorker.identity = identity;
|
110
85
|
});
|
86
|
+
await externalTaskWorker.start();
|
111
87
|
|
112
|
-
|
113
|
-
externalTaskWorker.onWorkerError((errorType, error, externalTask) => {
|
114
|
-
switch (errorType) {
|
115
|
-
case 'extendLock':
|
116
|
-
case 'finishExternalTask':
|
117
|
-
case 'processExternalTask':
|
118
|
-
node.error(`Worker error ${errorType} for *external task flowNodeInstanceId* '${externalTask.flowNodeInstanceId}' and *processInstanceId* '${externalTask.processInstanceId}': ${error.message}`);
|
119
|
-
|
120
|
-
externalTaskWorker.stop();
|
121
|
-
|
122
|
-
if (externalTask) {
|
123
|
-
delete started_external_tasks[externalTask.flowNodeInstanceId];
|
124
|
-
}
|
125
|
-
|
126
|
-
showStatus(node, Object.keys(started_external_tasks).length);
|
127
|
-
break;
|
128
|
-
default:
|
129
|
-
node.error(`Worker error ${errorType}: ${error.message}`);
|
130
|
-
break;
|
131
|
-
}
|
132
|
-
});
|
133
|
-
|
134
|
-
try {
|
135
|
-
externalTaskWorker.start();
|
136
|
-
} catch (error) {
|
137
|
-
node.error(`Worker start 'externalTaskWorker.start' failed: ${error.message}`);
|
138
|
-
}
|
139
|
-
|
140
|
-
node.on("close", () => {
|
88
|
+
node.on("close", async () => {
|
141
89
|
try {
|
142
90
|
externalTaskWorker.stop();
|
143
91
|
} catch {
|
@@ -145,10 +93,7 @@ module.exports = function(RED) {
|
|
145
93
|
}
|
146
94
|
});
|
147
95
|
}
|
148
|
-
)
|
149
|
-
node.error(`Error in subscribeToExternalTaskTopic: ${error.message}`);
|
150
|
-
});
|
96
|
+
);
|
151
97
|
}
|
152
|
-
|
153
98
|
RED.nodes.registerType("externaltask-input", ExternalTaskInput);
|
154
99
|
}
|
package/externaltask-output.js
CHANGED
@@ -8,13 +8,13 @@ module.exports = function(RED) {
|
|
8
8
|
|
9
9
|
node.on('input', function(msg) {
|
10
10
|
|
11
|
-
const
|
11
|
+
const externalTaskId = msg.externalTaskId;
|
12
12
|
|
13
|
-
if (!
|
13
|
+
if (!externalTaskId) {
|
14
14
|
node.error('Error: The message did not contain the required external task id.', msg);
|
15
15
|
}
|
16
16
|
|
17
|
-
eventEmitter.emit(`
|
17
|
+
eventEmitter.emit(`finish-${externalTaskId}`, msg.payload);
|
18
18
|
});
|
19
19
|
}
|
20
20
|
RED.nodes.registerType("externaltask-output", ExternalTaskOutput);
|
@@ -2,7 +2,7 @@
|
|
2
2
|
{
|
3
3
|
"id": "a23d2e782beb66f4",
|
4
4
|
"type": "tab",
|
5
|
-
"label": "
|
5
|
+
"label": "ExternalTasks",
|
6
6
|
"disabled": false,
|
7
7
|
"info": "",
|
8
8
|
"env": []
|
@@ -79,57 +79,6 @@
|
|
79
79
|
"w": 572,
|
80
80
|
"h": 142
|
81
81
|
},
|
82
|
-
{
|
83
|
-
"id": "70d7a70e375b162a",
|
84
|
-
"type": "group",
|
85
|
-
"z": "a23d2e782beb66f4",
|
86
|
-
"style": {
|
87
|
-
"stroke": "#999999",
|
88
|
-
"stroke-opacity": "1",
|
89
|
-
"fill": "none",
|
90
|
-
"fill-opacity": "1",
|
91
|
-
"label": true,
|
92
|
-
"label-position": "nw",
|
93
|
-
"color": "#a4a4a4"
|
94
|
-
},
|
95
|
-
"nodes": [
|
96
|
-
"2991a5e6df2b87d2",
|
97
|
-
"911fde53bcbb7e3f",
|
98
|
-
"d56bb7cd73fd220c",
|
99
|
-
"15a5f64b9e2e05fc"
|
100
|
-
],
|
101
|
-
"x": 34,
|
102
|
-
"y": 79,
|
103
|
-
"w": 512,
|
104
|
-
"h": 142
|
105
|
-
},
|
106
|
-
{
|
107
|
-
"id": "31cb6729aac0ba46",
|
108
|
-
"type": "group",
|
109
|
-
"z": "a23d2e782beb66f4",
|
110
|
-
"style": {
|
111
|
-
"stroke": "#999999",
|
112
|
-
"stroke-opacity": "1",
|
113
|
-
"fill": "none",
|
114
|
-
"fill-opacity": "1",
|
115
|
-
"label": true,
|
116
|
-
"label-position": "nw",
|
117
|
-
"color": "#a4a4a4"
|
118
|
-
},
|
119
|
-
"nodes": [
|
120
|
-
"18e05d562d48f32d",
|
121
|
-
"49aee03a7885fae8",
|
122
|
-
"e4555d9019cd3f47",
|
123
|
-
"bd68c4bdc53b8f80",
|
124
|
-
"fb87f79852b22e4a",
|
125
|
-
"1ba1e62c9935255f",
|
126
|
-
"b49f226ba865e164"
|
127
|
-
],
|
128
|
-
"x": 34,
|
129
|
-
"y": 259,
|
130
|
-
"w": 812,
|
131
|
-
"h": 202
|
132
|
-
},
|
133
82
|
{
|
134
83
|
"id": "42e6796dddd9d4db",
|
135
84
|
"type": "processcube-engine-config",
|
@@ -139,15 +88,15 @@
|
|
139
88
|
"id": "2991a5e6df2b87d2",
|
140
89
|
"type": "externaltask-input",
|
141
90
|
"z": "a23d2e782beb66f4",
|
142
|
-
"g": "70d7a70e375b162a",
|
143
91
|
"name": "Test",
|
144
92
|
"engine": "42e6796dddd9d4db",
|
145
93
|
"topic": "Test",
|
146
|
-
"x":
|
147
|
-
"y":
|
94
|
+
"x": 90,
|
95
|
+
"y": 400,
|
148
96
|
"wires": [
|
149
97
|
[
|
150
|
-
"d56bb7cd73fd220c"
|
98
|
+
"d56bb7cd73fd220c",
|
99
|
+
"75c7bb5cc34e354a"
|
151
100
|
]
|
152
101
|
]
|
153
102
|
},
|
@@ -155,17 +104,15 @@
|
|
155
104
|
"id": "911fde53bcbb7e3f",
|
156
105
|
"type": "externaltask-output",
|
157
106
|
"z": "a23d2e782beb66f4",
|
158
|
-
"g": "70d7a70e375b162a",
|
159
107
|
"name": "Test Ende",
|
160
|
-
"x":
|
161
|
-
"y":
|
108
|
+
"x": 500,
|
109
|
+
"y": 400,
|
162
110
|
"wires": []
|
163
111
|
},
|
164
112
|
{
|
165
113
|
"id": "d56bb7cd73fd220c",
|
166
114
|
"type": "delay",
|
167
115
|
"z": "a23d2e782beb66f4",
|
168
|
-
"g": "70d7a70e375b162a",
|
169
116
|
"name": "",
|
170
117
|
"pauseType": "delay",
|
171
118
|
"timeout": "1",
|
@@ -180,23 +127,56 @@
|
|
180
127
|
"allowrate": false,
|
181
128
|
"outputs": 1,
|
182
129
|
"x": 280,
|
183
|
-
"y":
|
130
|
+
"y": 400,
|
184
131
|
"wires": [
|
185
132
|
[
|
186
|
-
"911fde53bcbb7e3f"
|
133
|
+
"911fde53bcbb7e3f",
|
134
|
+
"69aec57d8bb00292"
|
187
135
|
]
|
188
136
|
]
|
189
137
|
},
|
138
|
+
{
|
139
|
+
"id": "75c7bb5cc34e354a",
|
140
|
+
"type": "debug",
|
141
|
+
"z": "a23d2e782beb66f4",
|
142
|
+
"name": "debug 1",
|
143
|
+
"active": true,
|
144
|
+
"tosidebar": true,
|
145
|
+
"console": false,
|
146
|
+
"tostatus": false,
|
147
|
+
"complete": "false",
|
148
|
+
"statusVal": "",
|
149
|
+
"statusType": "auto",
|
150
|
+
"x": 260,
|
151
|
+
"y": 480,
|
152
|
+
"wires": []
|
153
|
+
},
|
154
|
+
{
|
155
|
+
"id": "69aec57d8bb00292",
|
156
|
+
"type": "debug",
|
157
|
+
"z": "a23d2e782beb66f4",
|
158
|
+
"name": "debug 6",
|
159
|
+
"active": true,
|
160
|
+
"tosidebar": true,
|
161
|
+
"console": false,
|
162
|
+
"tostatus": false,
|
163
|
+
"complete": "externalTaskId",
|
164
|
+
"targetType": "msg",
|
165
|
+
"statusVal": "",
|
166
|
+
"statusType": "auto",
|
167
|
+
"x": 480,
|
168
|
+
"y": 480,
|
169
|
+
"wires": []
|
170
|
+
},
|
190
171
|
{
|
191
172
|
"id": "18e05d562d48f32d",
|
192
173
|
"type": "externaltask-input",
|
193
174
|
"z": "a23d2e782beb66f4",
|
194
|
-
"g": "31cb6729aac0ba46",
|
195
175
|
"name": "SampleError",
|
196
176
|
"engine": "42e6796dddd9d4db",
|
197
177
|
"topic": "SampleError",
|
198
|
-
"x":
|
199
|
-
"y":
|
178
|
+
"x": 110,
|
179
|
+
"y": 640,
|
200
180
|
"wires": [
|
201
181
|
[
|
202
182
|
"49aee03a7885fae8"
|
@@ -207,10 +187,9 @@
|
|
207
187
|
"id": "49aee03a7885fae8",
|
208
188
|
"type": "delay",
|
209
189
|
"z": "a23d2e782beb66f4",
|
210
|
-
"g": "31cb6729aac0ba46",
|
211
190
|
"name": "",
|
212
191
|
"pauseType": "delay",
|
213
|
-
"timeout": "
|
192
|
+
"timeout": "5",
|
214
193
|
"timeoutUnits": "seconds",
|
215
194
|
"rate": "1",
|
216
195
|
"nbRateUnits": "1",
|
@@ -221,8 +200,8 @@
|
|
221
200
|
"drop": false,
|
222
201
|
"allowrate": false,
|
223
202
|
"outputs": 1,
|
224
|
-
"x":
|
225
|
-
"y":
|
203
|
+
"x": 350,
|
204
|
+
"y": 640,
|
226
205
|
"wires": [
|
227
206
|
[
|
228
207
|
"bd68c4bdc53b8f80"
|
@@ -233,14 +212,15 @@
|
|
233
212
|
"id": "e4555d9019cd3f47",
|
234
213
|
"type": "catch",
|
235
214
|
"z": "a23d2e782beb66f4",
|
236
|
-
"g": "31cb6729aac0ba46",
|
237
215
|
"name": "",
|
238
|
-
"scope":
|
216
|
+
"scope": null,
|
239
217
|
"uncaught": false,
|
240
|
-
"x":
|
241
|
-
"y":
|
218
|
+
"x": 360,
|
219
|
+
"y": 760,
|
242
220
|
"wires": [
|
243
221
|
[
|
222
|
+
"fa1c26d470c38efd",
|
223
|
+
"019797b5a0882e7b",
|
244
224
|
"fb87f79852b22e4a"
|
245
225
|
]
|
246
226
|
]
|
@@ -249,8 +229,7 @@
|
|
249
229
|
"id": "bd68c4bdc53b8f80",
|
250
230
|
"type": "function",
|
251
231
|
"z": "a23d2e782beb66f4",
|
252
|
-
"
|
253
|
-
"name": "raise Error",
|
232
|
+
"name": "function 1",
|
254
233
|
"func": "throw Error(\"hello error\");\n\nreturn msg;",
|
255
234
|
"outputs": 1,
|
256
235
|
"timeout": 0,
|
@@ -258,23 +237,55 @@
|
|
258
237
|
"initialize": "",
|
259
238
|
"finalize": "",
|
260
239
|
"libs": [],
|
261
|
-
"x":
|
262
|
-
"y":
|
240
|
+
"x": 560,
|
241
|
+
"y": 640,
|
263
242
|
"wires": [
|
264
243
|
[
|
265
244
|
"1ba1e62c9935255f"
|
266
245
|
]
|
267
246
|
]
|
268
247
|
},
|
248
|
+
{
|
249
|
+
"id": "fa1c26d470c38efd",
|
250
|
+
"type": "debug",
|
251
|
+
"z": "a23d2e782beb66f4",
|
252
|
+
"name": "debug 8",
|
253
|
+
"active": true,
|
254
|
+
"tosidebar": true,
|
255
|
+
"console": false,
|
256
|
+
"tostatus": false,
|
257
|
+
"complete": "false",
|
258
|
+
"statusVal": "",
|
259
|
+
"statusType": "auto",
|
260
|
+
"x": 620,
|
261
|
+
"y": 760,
|
262
|
+
"wires": []
|
263
|
+
},
|
264
|
+
{
|
265
|
+
"id": "019797b5a0882e7b",
|
266
|
+
"type": "debug",
|
267
|
+
"z": "a23d2e782beb66f4",
|
268
|
+
"name": "debug 9",
|
269
|
+
"active": true,
|
270
|
+
"tosidebar": true,
|
271
|
+
"console": false,
|
272
|
+
"tostatus": false,
|
273
|
+
"complete": "externalTaskId",
|
274
|
+
"targetType": "msg",
|
275
|
+
"statusVal": "",
|
276
|
+
"statusType": "auto",
|
277
|
+
"x": 620,
|
278
|
+
"y": 820,
|
279
|
+
"wires": []
|
280
|
+
},
|
269
281
|
{
|
270
282
|
"id": "fb87f79852b22e4a",
|
271
283
|
"type": "externaltask-error",
|
272
284
|
"z": "a23d2e782beb66f4",
|
273
|
-
"
|
274
|
-
"name": "Send Error to Engine",
|
285
|
+
"name": "Fehler",
|
275
286
|
"error": "MyErrorCode",
|
276
|
-
"x":
|
277
|
-
"y":
|
287
|
+
"x": 570,
|
288
|
+
"y": 900,
|
278
289
|
"wires": [
|
279
290
|
[]
|
280
291
|
]
|
@@ -283,42 +294,56 @@
|
|
283
294
|
"id": "1ba1e62c9935255f",
|
284
295
|
"type": "externaltask-output",
|
285
296
|
"z": "a23d2e782beb66f4",
|
286
|
-
"g": "31cb6729aac0ba46",
|
287
297
|
"name": "",
|
288
|
-
"x":
|
289
|
-
"y":
|
298
|
+
"x": 770,
|
299
|
+
"y": 640,
|
290
300
|
"wires": []
|
291
301
|
},
|
292
302
|
{
|
293
|
-
"id": "
|
294
|
-
"type": "
|
295
|
-
"z": "a23d2e782beb66f4",
|
296
|
-
"g": "70d7a70e375b162a",
|
297
|
-
"name": "Simple External Task handling",
|
298
|
-
"info": "",
|
299
|
-
"x": 180,
|
300
|
-
"y": 120,
|
301
|
-
"wires": []
|
302
|
-
},
|
303
|
-
{
|
304
|
-
"id": "b49f226ba865e164",
|
305
|
-
"type": "comment",
|
303
|
+
"id": "c18723294975e975",
|
304
|
+
"type": "inject",
|
306
305
|
"z": "a23d2e782beb66f4",
|
307
|
-
"
|
308
|
-
"
|
309
|
-
|
306
|
+
"name": "",
|
307
|
+
"props": [
|
308
|
+
{
|
309
|
+
"p": "payload"
|
310
|
+
},
|
311
|
+
{
|
312
|
+
"p": "eventName",
|
313
|
+
"v": "sampleEvent",
|
314
|
+
"vt": "str"
|
315
|
+
}
|
316
|
+
],
|
317
|
+
"repeat": "",
|
318
|
+
"crontab": "",
|
319
|
+
"once": false,
|
320
|
+
"onceDelay": 0.1,
|
321
|
+
"topic": "",
|
322
|
+
"payload": "{\t \t}",
|
323
|
+
"payloadType": "jsonata",
|
310
324
|
"x": 190,
|
311
|
-
"y":
|
312
|
-
"wires": [
|
325
|
+
"y": 1200,
|
326
|
+
"wires": [
|
327
|
+
[
|
328
|
+
"ddcde0ab7abfb8af"
|
329
|
+
]
|
330
|
+
]
|
313
331
|
},
|
314
332
|
{
|
315
|
-
"id": "
|
316
|
-
"type": "
|
333
|
+
"id": "ddcde0ab7abfb8af",
|
334
|
+
"type": "debug",
|
317
335
|
"z": "a23d2e782beb66f4",
|
318
|
-
"name": "
|
319
|
-
"
|
320
|
-
"
|
321
|
-
"
|
336
|
+
"name": "debug 18",
|
337
|
+
"active": true,
|
338
|
+
"tosidebar": true,
|
339
|
+
"console": false,
|
340
|
+
"tostatus": false,
|
341
|
+
"complete": "true",
|
342
|
+
"targetType": "full",
|
343
|
+
"statusVal": "",
|
344
|
+
"statusType": "auto",
|
345
|
+
"x": 480,
|
346
|
+
"y": 1200,
|
322
347
|
"wires": []
|
323
348
|
},
|
324
349
|
{
|
package/nodered/settings.js
CHANGED
@@ -385,7 +385,7 @@ module.exports = {
|
|
385
385
|
//tours: false,
|
386
386
|
|
387
387
|
header: {
|
388
|
-
title: "Node-RED powered by ProcessCube©",
|
388
|
+
title: "Node-RED powered by ProcessCube ©",
|
389
389
|
url: "https://processcube.io" // optional url to make the header text/image a link to this url
|
390
390
|
|
391
391
|
},
|
package/package.json
CHANGED