@5minds/node-red-contrib-processcube 1.1.4-feature-f2fee5-m0kpqgkx → 1.1.4-feature-b3c80b-m14rvpwu

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,6 +16,7 @@ services:
16
16
 
17
17
  engine:
18
18
  image: 5minds/processcube_engine:2024-1
19
+ #image: 5minds/processcube_engine:17.1.2
19
20
  ports:
20
21
  - 8000:8000
21
22
  volumes:
@@ -8,6 +8,7 @@
8
8
  },
9
9
  inputs: 1,
10
10
  outputs: 1,
11
+ align: 'right',
11
12
  icon: 'externaltask_error.svg',
12
13
  label: function () {
13
14
  return this.name || 'externaltask-error';
@@ -45,6 +45,11 @@ A node which listens for events triggered by externaltasks
45
45
 
46
46
  ## Outputs
47
47
 
48
+ : flowNodeInstanceId (string): The unique identifier for the flow node instance.
49
+ : externalTaskEvent (Object): An Object containing the event data returned by the engine.
50
+ : action (string): The event that occured.
51
+ : type (string): The target of the event.
52
+
48
53
  ### References
49
54
 
50
55
  - [The ProcessCube Developer Network](https://processcube.io) - All documentation for the ProcessCube© platform
@@ -37,9 +37,9 @@ the connected ProcessCube Engine for processing.
37
37
 
38
38
  ## Outputs
39
39
 
40
- : payload (string) : Defines the input of the external task token
40
+ : payload (string) : The payload the external task was started with.
41
41
  : task (object) : The external task object
42
- : flowNodeInstanceId : The Id of the external task, which is needed to complete the task
42
+ : flowNodeInstanceId : The unique identifier of the external task, which is needed to complete the task
43
43
 
44
44
  ### Details
45
45
 
@@ -6,7 +6,6 @@
6
6
  name: { value: '' },
7
7
  engine: { value: '', type: 'processcube-engine-config' },
8
8
  messagename: { value: '', required: true },
9
- processInstanceId: { value: '' },
10
9
  },
11
10
  inputs: 1,
12
11
  outputs: 1,
@@ -30,24 +29,21 @@
30
29
  <label for="node-input-messagename"><i class="fa fa-tag"></i> Message Name</label>
31
30
  <input type="text" id="node-input-messagename" placeholder="Name of the Message-Event" />
32
31
  </div>
33
- <div class="form-row">
34
- <label for="node-input-processinstanceid"><i class="fa fa-tag"></i> Process Instance Id</label>
35
- <input type="text" id="node-input-processinstanceid" placeholder="Id of the recipient process instance" />
36
- </div>
37
32
  </script>
38
33
 
39
34
  <script type="text/markdown" data-help-name="externaltask-input">
40
- A Message event to an intermediate message event can be triggert.
35
+ A node to trigger an event that will be send to the corresponding intermediate message event in the connected ProcessCube Engine.
41
36
 
42
37
  From the config the `messagename` and the `processInstanceId` must be set.
43
38
 
44
39
  ## Inputs
45
40
 
46
- : payload (Object) : Will sent to the event and used an new token payload.
41
+ : payload (Object) : The payload will be sent to the message event and be used as a new token payload.
42
+ : processInstanceId (string) : The process instance where the message event should be triggered.
47
43
 
48
44
  ### References
49
45
 
50
46
  - [The ProcessCube Developer Network](https://processcube.io) - All documentation for the ProcessCube&copy; platform
51
47
  - [Node-RED Integration in ProcessCube&copy;](https://processcube.io/docs/node-red) - Node-RED integration in ProcessCube&copy;
52
-
48
+
53
49
  </script>
@@ -15,7 +15,7 @@ module.exports = function (RED) {
15
15
 
16
16
  engine.engineClient.events
17
17
  .triggerMessageEvent(config.messagename, {
18
- processInstanceId: config.processinstanceid,
18
+ processInstanceId: msg.processinstanceid,
19
19
  payload: msg.payload,
20
20
  identity: engine.identity,
21
21
  })
@@ -202,14 +202,14 @@
202
202
  "color": "#a4a4a4"
203
203
  },
204
204
  "nodes": [
205
- "f7a9604a17188737",
206
205
  "020d34cd4ab43900",
207
- "1db0ae57c1b8486b",
208
- "127bc6e092c5724e"
206
+ "127bc6e092c5724e",
207
+ "394bf2c574d29c0d",
208
+ "30354355d2a0eeb8"
209
209
  ],
210
210
  "x": 34,
211
211
  "y": 19,
212
- "w": 452,
212
+ "w": 532,
213
213
  "h": 202
214
214
  },
215
215
  {
@@ -226,17 +226,16 @@
226
226
  "color": "#a4a4a4"
227
227
  },
228
228
  "nodes": [
229
- "ae0583e83c762956",
230
229
  "f7c7682e3a6adaaa",
231
- "a2fb6369b16c12fa",
232
230
  "8ef39e83173d41e3",
233
231
  "f524b8cc35d56849",
234
- "9fb4017c1d0ac7c9"
232
+ "9fb4017c1d0ac7c9",
233
+ "fc23f271b106648f"
235
234
  ],
236
235
  "x": 34,
237
236
  "y": 259,
238
237
  "w": 652,
239
- "h": 262
238
+ "h": 202
240
239
  },
241
240
  {
242
241
  "id": "a71a168415778e2c",
@@ -353,14 +352,14 @@
353
352
  "color": "#a4a4a4"
354
353
  },
355
354
  "nodes": [
356
- "81a5b763cddfa482",
357
- "9bfd3131d8d4529e",
358
- "fcfec4ae86b4aec2",
359
- "c4f20aefe585bdad"
355
+ "c4f20aefe585bdad",
356
+ "451fc49b81cfe869",
357
+ "07e2258a732baddb",
358
+ "58202f3750a9762b"
360
359
  ],
361
360
  "x": 54,
362
361
  "y": 39,
363
- "w": 452,
362
+ "w": 432,
364
363
  "h": 202
365
364
  },
366
365
  {
@@ -377,17 +376,16 @@
377
376
  "color": "#a4a4a4"
378
377
  },
379
378
  "nodes": [
380
- "59f3d5ea3d920f94",
381
379
  "682a3e6e49c407c0",
382
- "30ac2bbbc0d63b17",
383
380
  "5c9668cbe4b31919",
384
381
  "693e6d63e82ee961",
385
- "c63cac30d2627c52"
382
+ "c63cac30d2627c52",
383
+ "771e1802a60ea5cc"
386
384
  ],
387
385
  "x": 54,
388
386
  "y": 279,
389
- "w": 652,
390
- "h": 262
387
+ "w": 632,
388
+ "h": 202
391
389
  },
392
390
  {
393
391
  "id": "e17f65347110575e",
@@ -1075,29 +1073,13 @@
1075
1073
  "y": 540,
1076
1074
  "wires": []
1077
1075
  },
1078
- {
1079
- "id": "f7a9604a17188737",
1080
- "type": "usertask-new-listener",
1081
- "z": "fd3c725340de4f74",
1082
- "g": "887f3fb69ad1d1fb",
1083
- "name": "New User Task",
1084
- "engine": "42e6796dddd9d4db",
1085
- "multisend": false,
1086
- "x": 160,
1087
- "y": 120,
1088
- "wires": [
1089
- [
1090
- "020d34cd4ab43900"
1091
- ]
1092
- ]
1093
- },
1094
1076
  {
1095
1077
  "id": "020d34cd4ab43900",
1096
1078
  "type": "debug",
1097
1079
  "z": "fd3c725340de4f74",
1098
1080
  "g": "887f3fb69ad1d1fb",
1099
1081
  "name": "Show User Task",
1100
- "active": true,
1082
+ "active": false,
1101
1083
  "tosidebar": true,
1102
1084
  "console": false,
1103
1085
  "tostatus": false,
@@ -1105,26 +1087,10 @@
1105
1087
  "targetType": "msg",
1106
1088
  "statusVal": "",
1107
1089
  "statusType": "auto",
1108
- "x": 360,
1090
+ "x": 440,
1109
1091
  "y": 120,
1110
1092
  "wires": []
1111
1093
  },
1112
- {
1113
- "id": "1db0ae57c1b8486b",
1114
- "type": "usertask-finished-listener",
1115
- "z": "fd3c725340de4f74",
1116
- "g": "887f3fb69ad1d1fb",
1117
- "name": "Finished User Task",
1118
- "engine": "42e6796dddd9d4db",
1119
- "multisend": false,
1120
- "x": 150,
1121
- "y": 180,
1122
- "wires": [
1123
- [
1124
- "020d34cd4ab43900"
1125
- ]
1126
- ]
1127
- },
1128
1094
  {
1129
1095
  "id": "127bc6e092c5724e",
1130
1096
  "type": "comment",
@@ -1136,22 +1102,6 @@
1136
1102
  "y": 60,
1137
1103
  "wires": []
1138
1104
  },
1139
- {
1140
- "id": "ae0583e83c762956",
1141
- "type": "usertask-new-listener",
1142
- "z": "fd3c725340de4f74",
1143
- "g": "72d3db13edc2486b",
1144
- "name": "",
1145
- "engine": "42e6796dddd9d4db",
1146
- "multisend": true,
1147
- "x": 160,
1148
- "y": 360,
1149
- "wires": [
1150
- [
1151
- "a2fb6369b16c12fa"
1152
- ]
1153
- ]
1154
- },
1155
1105
  {
1156
1106
  "id": "f7c7682e3a6adaaa",
1157
1107
  "type": "usertask-input",
@@ -1163,7 +1113,7 @@
1163
1113
  "query_type": "msg",
1164
1114
  "force_send_array": false,
1165
1115
  "multisend": false,
1166
- "x": 380,
1116
+ "x": 180,
1167
1117
  "y": 420,
1168
1118
  "wires": [
1169
1119
  [
@@ -1171,27 +1121,6 @@
1171
1121
  ]
1172
1122
  ]
1173
1123
  },
1174
- {
1175
- "id": "a2fb6369b16c12fa",
1176
- "type": "function",
1177
- "z": "fd3c725340de4f74",
1178
- "g": "72d3db13edc2486b",
1179
- "name": "query",
1180
- "func": "msg.payload = {\n flowNodeInstanceId: msg.payload.flowNodeInstanceId,\n flowNodeId: \"user_task\"\n};\n\nreturn msg;",
1181
- "outputs": 1,
1182
- "timeout": 0,
1183
- "noerr": 0,
1184
- "initialize": "",
1185
- "finalize": "",
1186
- "libs": [],
1187
- "x": 210,
1188
- "y": 420,
1189
- "wires": [
1190
- [
1191
- "f7c7682e3a6adaaa"
1192
- ]
1193
- ]
1194
- },
1195
1124
  {
1196
1125
  "id": "8ef39e83173d41e3",
1197
1126
  "type": "function",
@@ -1206,7 +1135,7 @@
1206
1135
  "finalize": "",
1207
1136
  "libs": [],
1208
1137
  "x": 390,
1209
- "y": 480,
1138
+ "y": 420,
1210
1139
  "wires": [
1211
1140
  [
1212
1141
  "f524b8cc35d56849"
@@ -1223,7 +1152,7 @@
1223
1152
  "result": "payload.result",
1224
1153
  "result_type": "msg",
1225
1154
  "x": 580,
1226
- "y": 480,
1155
+ "y": 420,
1227
1156
  "wires": [
1228
1157
  []
1229
1158
  ]
@@ -1240,52 +1169,59 @@
1240
1169
  "wires": []
1241
1170
  },
1242
1171
  {
1243
- "id": "81a5b763cddfa482",
1244
- "type": "usertask-new-listener",
1245
- "z": "90fa3991405c6248",
1246
- "g": "4f03c1eb4784b442",
1247
- "name": "New User Task",
1248
- "engine": "b78932d162d8d468",
1249
- "multisend": false,
1250
- "x": 180,
1251
- "y": 140,
1172
+ "id": "fc23f271b106648f",
1173
+ "type": "usertask-event-listener",
1174
+ "z": "fd3c725340de4f74",
1175
+ "g": "72d3db13edc2486b",
1176
+ "name": "",
1177
+ "engine": "42e6796dddd9d4db",
1178
+ "usertask": "user_task",
1179
+ "eventtype": "new",
1180
+ "query": "{}",
1181
+ "query_type": "json",
1182
+ "x": 160,
1183
+ "y": 360,
1252
1184
  "wires": [
1253
1185
  [
1254
- "9bfd3131d8d4529e"
1186
+ "f7c7682e3a6adaaa"
1255
1187
  ]
1256
1188
  ]
1257
1189
  },
1258
1190
  {
1259
- "id": "9bfd3131d8d4529e",
1260
- "type": "debug",
1261
- "z": "90fa3991405c6248",
1262
- "g": "4f03c1eb4784b442",
1263
- "name": "Show User Task",
1264
- "active": true,
1265
- "tosidebar": true,
1266
- "console": false,
1267
- "tostatus": false,
1268
- "complete": "payload",
1269
- "targetType": "msg",
1270
- "statusVal": "",
1271
- "statusType": "auto",
1272
- "x": 380,
1273
- "y": 140,
1274
- "wires": []
1191
+ "id": "394bf2c574d29c0d",
1192
+ "type": "usertask-event-listener",
1193
+ "z": "fd3c725340de4f74",
1194
+ "g": "887f3fb69ad1d1fb",
1195
+ "name": "",
1196
+ "engine": "42e6796dddd9d4db",
1197
+ "usertask": "user_task",
1198
+ "eventtype": "new",
1199
+ "query": "{}",
1200
+ "query_type": "json",
1201
+ "x": 160,
1202
+ "y": 120,
1203
+ "wires": [
1204
+ [
1205
+ "020d34cd4ab43900"
1206
+ ]
1207
+ ]
1275
1208
  },
1276
1209
  {
1277
- "id": "fcfec4ae86b4aec2",
1278
- "type": "usertask-finished-listener",
1279
- "z": "90fa3991405c6248",
1280
- "g": "4f03c1eb4784b442",
1281
- "name": "Finished User Task",
1282
- "engine": "b78932d162d8d468",
1283
- "multisend": false,
1284
- "x": 170,
1285
- "y": 200,
1210
+ "id": "30354355d2a0eeb8",
1211
+ "type": "usertask-event-listener",
1212
+ "z": "fd3c725340de4f74",
1213
+ "g": "887f3fb69ad1d1fb",
1214
+ "name": "",
1215
+ "engine": "42e6796dddd9d4db",
1216
+ "usertask": "user_task",
1217
+ "eventtype": "finished",
1218
+ "query": "{}",
1219
+ "query_type": "json",
1220
+ "x": 160,
1221
+ "y": 180,
1286
1222
  "wires": [
1287
1223
  [
1288
- "9bfd3131d8d4529e"
1224
+ "020d34cd4ab43900"
1289
1225
  ]
1290
1226
  ]
1291
1227
  },
@@ -1300,22 +1236,6 @@
1300
1236
  "y": 80,
1301
1237
  "wires": []
1302
1238
  },
1303
- {
1304
- "id": "59f3d5ea3d920f94",
1305
- "type": "usertask-new-listener",
1306
- "z": "90fa3991405c6248",
1307
- "g": "a135da7e3b76f6dd",
1308
- "name": "",
1309
- "engine": "b78932d162d8d468",
1310
- "multisend": true,
1311
- "x": 180,
1312
- "y": 380,
1313
- "wires": [
1314
- [
1315
- "30ac2bbbc0d63b17"
1316
- ]
1317
- ]
1318
- },
1319
1239
  {
1320
1240
  "id": "682a3e6e49c407c0",
1321
1241
  "type": "usertask-input",
@@ -1327,7 +1247,7 @@
1327
1247
  "query_type": "msg",
1328
1248
  "force_send_array": false,
1329
1249
  "multisend": false,
1330
- "x": 400,
1250
+ "x": 200,
1331
1251
  "y": 440,
1332
1252
  "wires": [
1333
1253
  [
@@ -1335,27 +1255,6 @@
1335
1255
  ]
1336
1256
  ]
1337
1257
  },
1338
- {
1339
- "id": "30ac2bbbc0d63b17",
1340
- "type": "function",
1341
- "z": "90fa3991405c6248",
1342
- "g": "a135da7e3b76f6dd",
1343
- "name": "query",
1344
- "func": "msg.payload = {\n flowNodeInstanceId: msg.payload.flowNodeInstanceId,\n flowNodeId: \"user_task_auth\"\n};\n\nreturn msg;",
1345
- "outputs": 1,
1346
- "timeout": 0,
1347
- "noerr": 0,
1348
- "initialize": "",
1349
- "finalize": "",
1350
- "libs": [],
1351
- "x": 230,
1352
- "y": 440,
1353
- "wires": [
1354
- [
1355
- "682a3e6e49c407c0"
1356
- ]
1357
- ]
1358
- },
1359
1258
  {
1360
1259
  "id": "5c9668cbe4b31919",
1361
1260
  "type": "function",
@@ -1369,8 +1268,8 @@
1369
1268
  "initialize": "",
1370
1269
  "finalize": "",
1371
1270
  "libs": [],
1372
- "x": 410,
1373
- "y": 500,
1271
+ "x": 390,
1272
+ "y": 440,
1374
1273
  "wires": [
1375
1274
  [
1376
1275
  "693e6d63e82ee961"
@@ -1386,8 +1285,8 @@
1386
1285
  "engine": "b78932d162d8d468",
1387
1286
  "result": "payload.result",
1388
1287
  "result_type": "msg",
1389
- "x": 600,
1390
- "y": 500,
1288
+ "x": 580,
1289
+ "y": 440,
1391
1290
  "wires": [
1392
1291
  []
1393
1292
  ]
@@ -1403,6 +1302,80 @@
1403
1302
  "y": 320,
1404
1303
  "wires": []
1405
1304
  },
1305
+ {
1306
+ "id": "771e1802a60ea5cc",
1307
+ "type": "usertask-event-listener",
1308
+ "z": "90fa3991405c6248",
1309
+ "g": "a135da7e3b76f6dd",
1310
+ "name": "",
1311
+ "engine": "b78932d162d8d468",
1312
+ "usertask": "user_task_auth",
1313
+ "eventtype": "new",
1314
+ "query": "{}",
1315
+ "query_type": "json",
1316
+ "x": 180,
1317
+ "y": 380,
1318
+ "wires": [
1319
+ [
1320
+ "682a3e6e49c407c0"
1321
+ ]
1322
+ ]
1323
+ },
1324
+ {
1325
+ "id": "451fc49b81cfe869",
1326
+ "type": "usertask-event-listener",
1327
+ "z": "90fa3991405c6248",
1328
+ "g": "4f03c1eb4784b442",
1329
+ "name": "",
1330
+ "engine": "b78932d162d8d468",
1331
+ "usertask": "user_task_auth",
1332
+ "eventtype": "new",
1333
+ "query": "{}",
1334
+ "query_type": "json",
1335
+ "x": 180,
1336
+ "y": 140,
1337
+ "wires": [
1338
+ [
1339
+ "58202f3750a9762b"
1340
+ ]
1341
+ ]
1342
+ },
1343
+ {
1344
+ "id": "07e2258a732baddb",
1345
+ "type": "usertask-event-listener",
1346
+ "z": "90fa3991405c6248",
1347
+ "g": "4f03c1eb4784b442",
1348
+ "name": "",
1349
+ "engine": "b78932d162d8d468",
1350
+ "usertask": "user_task_auth",
1351
+ "eventtype": "finished",
1352
+ "query": "{}",
1353
+ "query_type": "json",
1354
+ "x": 180,
1355
+ "y": 200,
1356
+ "wires": [
1357
+ [
1358
+ "58202f3750a9762b"
1359
+ ]
1360
+ ]
1361
+ },
1362
+ {
1363
+ "id": "58202f3750a9762b",
1364
+ "type": "debug",
1365
+ "z": "90fa3991405c6248",
1366
+ "g": "4f03c1eb4784b442",
1367
+ "name": "debug 31",
1368
+ "active": false,
1369
+ "tosidebar": true,
1370
+ "console": false,
1371
+ "tostatus": false,
1372
+ "complete": "false",
1373
+ "statusVal": "",
1374
+ "statusType": "auto",
1375
+ "x": 380,
1376
+ "y": 140,
1377
+ "wires": []
1378
+ },
1406
1379
  {
1407
1380
  "id": "baa5d814f2e1f1d8",
1408
1381
  "type": "processinstance-query",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@5minds/node-red-contrib-processcube",
3
- "version": "1.1.4-feature-f2fee5-m0kpqgkx",
3
+ "version": "1.1.4-feature-b3c80b-m14rvpwu",
4
4
  "license": "MIT",
5
5
  "description": "Node-RED nodes for ProcessCube",
6
6
  "scripts": {
@@ -41,6 +41,7 @@
41
41
  "externaltaskError": "externaltask-error.js",
42
42
  "externaltaskEventListener": "externaltask-event-listener.js",
43
43
  "processStart": "process-start.js",
44
+ "processTerminate": "process-terminate.js",
44
45
  "processEventListener": "process-event-listener.js",
45
46
  "processcubeEngineConfig": "processcube-engine-config.js",
46
47
  "ProcessinstanceQuery": "processinstance-query.js",
@@ -75,6 +75,95 @@ A node which listens for events triggered by processes
75
75
 
76
76
  ## Outputs
77
77
 
78
+ ### starting
79
+
80
+ : processInstanceId (string): The unique identifier for the process instance.
81
+ : processModelId (string): The id of the process model.
82
+ : processInstance (Object): An Object representing the process instance data.
83
+ : action (string): The event that occured.
84
+ : type (string): The target of the event.
85
+
86
+ ### started
87
+
88
+ : processInstanceId (string): The unique identifier for the process instance.
89
+ : processModelId (string): The id of the process model.
90
+ : flowNodeId (string): The id of the flowNode the process was started with.
91
+ : token (Object): The start token of the process instance.
92
+ : processInstance (Object): An Object representing the process instance data.
93
+ : action (string): The event that occured.
94
+ : type (string): The target of the event.
95
+
96
+ ### resumed
97
+
98
+ : processInstanceId (string): The unique identifier for the process instance.
99
+ : processModelId (string): The id of the process model.
100
+ : token (Object): The current token of the process instance.
101
+ : processInstance (Object): An Object representing the process instance data.
102
+ : action (string): The event that occured.
103
+ : type (string): The target of the event.
104
+
105
+ ### finished
106
+
107
+ : processInstanceId (string): The unique identifier for the process instance.
108
+ : processModelId (string): The id of the process model.
109
+ : flowNodeId (string): The id of the flowNode the process was finished with.
110
+ : token (Object): The end token of the process instance.
111
+ : processInstance (Object): An Object representing the process instance data.
112
+ : action (string): The event that occured.
113
+ : type (string): The target of the event.
114
+
115
+ ### terminated
116
+
117
+ : processInstanceId (string): The unique identifier for the process instance.
118
+ : processModelId (string): The id of the process model.
119
+ : token (Object): The current token of the process instance.
120
+ : processInstance (Object): An Object representing the process instance data.
121
+ : action (string): The event that occured.
122
+ : type (string): The target of the event.
123
+
124
+ ### error
125
+
126
+ : processInstanceId (string): The unique identifier for the process instance.
127
+ : processModelId (string): The id of the process model.
128
+ : token (Object): The current token of the process instance.
129
+ : processInstance (Object): An Object representing the process instance data.
130
+ : action (string): The event that occured.
131
+ : type (string): The target of the event.
132
+
133
+ ### owner-changed
134
+
135
+ : processInstanceId (string): The unique identifier for the process instance.
136
+ : processModelId (string): The id of the process model.
137
+ : processInstance (Object): An Object representing the process instance data.
138
+ : action (string): The event that occured.
139
+ : type (string): The target of the event.
140
+
141
+ ### instances-deleted
142
+
143
+ : processInstanceId (string): The unique identifier for the process instance.
144
+ : processModelId (string): The id of the process model.
145
+ : processInstance (Object): An Object representing the process instance data.
146
+ : action (string): The event that occured.
147
+ : type (string): The target of the event.
148
+
149
+ ### is-executable-changed
150
+
151
+ : processModelId (string): The id of the process model.
152
+ : action (string): The event that occured.
153
+ : type (string): The target of the event.
154
+
155
+ ### deployed
156
+
157
+ : processModelId (string): The id of the process model.
158
+ : action (string): The event that occured.
159
+ : type (string): The target of the event.
160
+
161
+ ### undeployed
162
+
163
+ : processModelId (string): The id of the process model.
164
+ : action (string): The event that occured.
165
+ : type (string): The target of the event.
166
+
78
167
  ### References
79
168
 
80
169
  - [The ProcessCube Developer Network](https://processcube.io) - All documentation for the ProcessCube&copy; platform
@@ -43,10 +43,15 @@ The `processModelId` and `startEventId` can be set in the message object to over
43
43
 
44
44
  ## Inputs
45
45
 
46
- : payload (Object) : Will be used as the input for the process.
46
+ : payload (Object) : Will be used as the start token for the process.
47
47
  : processModelId (String) : Will be used as the process model and override the configured `Processmodel`.
48
48
  : startEventId (String) : Will be used as the start event and override the configured `Startevent`.
49
49
 
50
+ ## Outputs
51
+
52
+ : processInstanceId (string) : The unique identifier of the started process instance.
53
+ : correlationId (string) : The unique correlation identifier of the started process instance.
54
+
50
55
  ### References
51
56
 
52
57
  - [The ProcessCube Developer Network](https://processcube.io) - All documentation for the ProcessCube&copy; platform
@@ -0,0 +1,45 @@
1
+ <script type="text/javascript">
2
+ RED.nodes.registerType('process-terminate', {
3
+ category: 'ProcessCube',
4
+ color: '#02AFD6',
5
+ defaults: {
6
+ name: { value: '' },
7
+ engine: { value: '', type: 'processcube-engine-config' },
8
+ },
9
+ inputs: 1,
10
+ outputs: 1,
11
+ icon: 'font-awesome/fa-sign-in',
12
+ label: function () {
13
+ return this.name || 'process-terminate';
14
+ },
15
+ });
16
+ </script>
17
+
18
+ <script type="text/html" data-template-name="process-terminate">
19
+ <div class="form-row">
20
+ <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
21
+ <input type="text" id="node-input-name" placeholder="Name" />
22
+ </div>
23
+ <div class="form-row">
24
+ <label for="node-input-engine"><i class="fa fa-tag"></i> Engine-URL</label>
25
+ <input type="text" id="node-input-engine" placeholder="Engine-URL" />
26
+ </div>
27
+ </script>
28
+
29
+ <script type="text/markdown" data-help-name="process-terminate">
30
+ Terminate an instance of a process model in the ProcessCube.
31
+
32
+ ## Inputs
33
+
34
+ : payload (string): The id of the processinstance that is going to be terminated.
35
+
36
+ ## Outputs
37
+
38
+ : payload (string): The id of the processinstance that was terminated.
39
+
40
+ ### References
41
+
42
+ - [The ProcessCube Developer Network](https://processcube.io) - All documentation for the ProcessCube&copy; platform
43
+ - [Node-RED Integration in ProcessCube&copy;](https://processcube.io/docs/node-red) - Node-RED integration in ProcessCube&copy;
44
+
45
+ </script>
@@ -0,0 +1,27 @@
1
+ module.exports = function (RED) {
2
+ function ProcessTerminate(config) {
3
+ RED.nodes.createNode(this, config);
4
+ var node = this;
5
+
6
+ node.on('input', function (msg) {
7
+ const engine = RED.nodes.getNode(config.engine);
8
+ const client = engine.engineClient;
9
+
10
+ if (!client) {
11
+ node.error('No engine configured.');
12
+ return;
13
+ }
14
+
15
+ client.processInstances
16
+ .terminateProcessInstance(msg.payload, engine.identity)
17
+ .then(() => {
18
+ node.send(msg);
19
+ })
20
+ .catch((error) => {
21
+ node.error(error);
22
+ });
23
+ });
24
+ }
25
+
26
+ RED.nodes.registerType('process-terminate', ProcessTerminate);
27
+ };
@@ -61,7 +61,7 @@
61
61
  </script>
62
62
 
63
63
  <script type="text/markdown" data-help-name="processdefinition-query">
64
- Query process definitions or process models from the ProcessCube engine.
64
+ A node to query process definition on the ProcessCube Engine.
65
65
 
66
66
  The `query` can be given a direkt query field from the configutation or a message property.
67
67
 
@@ -71,6 +71,11 @@ Only models can be queried by setting the `models_only` flag.
71
71
 
72
72
  : payload (Object | JSON) : Will be used as the input for the query or can be directly set as JSON.
73
73
 
74
+ ## Outputs
75
+
76
+ : processDefinitions / models (Array) : The processDefinitions / models that matched the query.
77
+ : totalCount (number) : The number of matches.
78
+
74
79
  ### References
75
80
 
76
81
  - [The ProcessCube Developer Network](https://processcube.io) - All documentation for the ProcessCube&copy; platform
@@ -0,0 +1,88 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Call-Activity-Sample_Definition" targetNamespace="http://bpmn.io/schema/bpmn" exporter="5Minds Studio" exporterVersion="1">
3
+ <bpmn:collaboration id="Collaboration_1cidyxu" name="">
4
+ <bpmn:participant id="Participant_0px403d" name="Call-Activity-Sample" processRef="Call-Activity-Sample_Process" />
5
+ </bpmn:collaboration>
6
+ <bpmn:process id="Call-Activity-Sample_Process" name="Call-Activity-Sample" isExecutable="true">
7
+ <bpmn:laneSet>
8
+ <bpmn:lane id="Lane_1xzf0d3" name="Lane">
9
+ <bpmn:flowNodeRef>StartEvent_1</bpmn:flowNodeRef>
10
+ <bpmn:flowNodeRef>Activity_1483lxt</bpmn:flowNodeRef>
11
+ <bpmn:flowNodeRef>Event_051opo1</bpmn:flowNodeRef>
12
+ <bpmn:flowNodeRef>Activity_1m883u3</bpmn:flowNodeRef>
13
+ </bpmn:lane>
14
+ </bpmn:laneSet>
15
+ <bpmn:startEvent id="StartEvent_1" name="Start">
16
+ <bpmn:outgoing>Flow_0jchwpf</bpmn:outgoing>
17
+ </bpmn:startEvent>
18
+ <bpmn:sequenceFlow id="Flow_0jchwpf" sourceRef="StartEvent_1" targetRef="Activity_1483lxt" />
19
+ <bpmn:scriptTask id="Activity_1483lxt" name="make multi">
20
+ <bpmn:incoming>Flow_0jchwpf</bpmn:incoming>
21
+ <bpmn:outgoing>Flow_1kbc11o</bpmn:outgoing>
22
+ <bpmn:script>const data = [
23
+ {
24
+ "uid": 14200
25
+ },
26
+ {
27
+ "uid": 14201
28
+ }
29
+ ];
30
+
31
+ return data;</bpmn:script>
32
+ </bpmn:scriptTask>
33
+ <bpmn:sequenceFlow id="Flow_1kbc11o" sourceRef="Activity_1483lxt" targetRef="Activity_1m883u3" />
34
+ <bpmn:endEvent id="Event_051opo1">
35
+ <bpmn:incoming>Flow_0pjaqpi</bpmn:incoming>
36
+ </bpmn:endEvent>
37
+ <bpmn:sequenceFlow id="Flow_0pjaqpi" sourceRef="Activity_1m883u3" targetRef="Event_051opo1" />
38
+ <bpmn:callActivity id="Activity_1m883u3" name="call sub" calledElement="External-Task-Sample_Process">
39
+ <bpmn:extensionElements>
40
+ <camunda:properties>
41
+ <camunda:property name="startEventId" value="StartEvent_1" />
42
+ </camunda:properties>
43
+ </bpmn:extensionElements>
44
+ <bpmn:incoming>Flow_1kbc11o</bpmn:incoming>
45
+ <bpmn:outgoing>Flow_0pjaqpi</bpmn:outgoing>
46
+ <bpmn:multiInstanceLoopCharacteristics />
47
+ </bpmn:callActivity>
48
+ </bpmn:process>
49
+ <bpmndi:BPMNDiagram id="BPMNDiagram_1">
50
+ <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_1cidyxu">
51
+ <bpmndi:BPMNShape id="Participant_0px403d_di" bpmnElement="Participant_0px403d" isHorizontal="true">
52
+ <dc:Bounds x="5" y="4" width="885" height="346" />
53
+ </bpmndi:BPMNShape>
54
+ <bpmndi:BPMNShape id="Lane_1xzf0d3_di" bpmnElement="Lane_1xzf0d3" isHorizontal="true">
55
+ <dc:Bounds x="35" y="4" width="855" height="346" />
56
+ </bpmndi:BPMNShape>
57
+ <bpmndi:BPMNShape id="StartEvent_1_di" bpmnElement="StartEvent_1">
58
+ <dc:Bounds x="92" y="152" width="36" height="36" />
59
+ <bpmndi:BPMNLabel>
60
+ <dc:Bounds x="98" y="195" width="24" height="14" />
61
+ </bpmndi:BPMNLabel>
62
+ </bpmndi:BPMNShape>
63
+ <bpmndi:BPMNShape id="Activity_0uc2tzt_di" bpmnElement="Activity_1483lxt">
64
+ <dc:Bounds x="180" y="130" width="100" height="80" />
65
+ <bpmndi:BPMNLabel />
66
+ </bpmndi:BPMNShape>
67
+ <bpmndi:BPMNShape id="Event_051opo1_di" bpmnElement="Event_051opo1">
68
+ <dc:Bounds x="502" y="152" width="36" height="36" />
69
+ </bpmndi:BPMNShape>
70
+ <bpmndi:BPMNShape id="Activity_0t5p0pc_di" bpmnElement="Activity_1m883u3">
71
+ <dc:Bounds x="340" y="130" width="100" height="80" />
72
+ <bpmndi:BPMNLabel />
73
+ </bpmndi:BPMNShape>
74
+ <bpmndi:BPMNEdge id="Flow_0jchwpf_di" bpmnElement="Flow_0jchwpf">
75
+ <di:waypoint x="128" y="170" />
76
+ <di:waypoint x="180" y="170" />
77
+ </bpmndi:BPMNEdge>
78
+ <bpmndi:BPMNEdge id="Flow_1kbc11o_di" bpmnElement="Flow_1kbc11o">
79
+ <di:waypoint x="280" y="170" />
80
+ <di:waypoint x="340" y="170" />
81
+ </bpmndi:BPMNEdge>
82
+ <bpmndi:BPMNEdge id="Flow_0pjaqpi_di" bpmnElement="Flow_0pjaqpi">
83
+ <di:waypoint x="440" y="170" />
84
+ <di:waypoint x="502" y="170" />
85
+ </bpmndi:BPMNEdge>
86
+ </bpmndi:BPMNPlane>
87
+ </bpmndi:BPMNDiagram>
88
+ </bpmn:definitions>
@@ -46,12 +46,17 @@
46
46
  </script>
47
47
 
48
48
  <script type="text/markdown" data-help-name="processinstance-query">
49
- Query a process instance in the ProcessCube.
49
+ A node to query process instances on the ProcessCube Engine.
50
50
 
51
51
  ## Inputs
52
52
 
53
53
  : payload (Object | JSON) : Will be used as the input for the query or can be directly set as JSON.
54
54
 
55
+ ## Outputs
56
+
57
+ : processInstances (Array) : The process instances that matched the query.
58
+ : totalCount (number) : The number of matches.
59
+
55
60
  ### References
56
61
 
57
62
  - [The ProcessCube Developer Network](https://processcube.io) - All documentation for the ProcessCube&copy; platform
@@ -6,7 +6,6 @@
6
6
  name: { value: '' },
7
7
  engine: { value: '', type: 'processcube-engine-config' },
8
8
  signalname: { value: '', required: true },
9
- processInstanceId: { value: '' },
10
9
  },
11
10
  inputs: 1,
12
11
  outputs: 1,
@@ -30,10 +29,7 @@
30
29
  <label for="node-input-signalname"><i class="fa fa-tag"></i> Signal Name</label>
31
30
  <input type="text" id="node-input-signalname" placeholder="Name of the Signal" />
32
31
  </div>
33
- <div class="form-row">
34
- <label for="node-input-processinstanceid"><i class="fa fa-tag"></i> Process Instance Id</label>
35
- <input type="text" id="node-input-processinstanceid" placeholder="Id of the recipient process instance" />
36
- </div>
32
+
37
33
  </script>
38
34
 
39
35
  <script type="text/markdown" data-help-name="signal-event-trigger">
@@ -44,6 +40,7 @@ From the config the `signalname` and the `processInstanceId` must be set.
44
40
  ## Inputs
45
41
 
46
42
  : payload (Object) : Will sent to the event and used an new token payload.
43
+ : processInstanceId (string) : The process instance where the signal event should be triggered.
47
44
 
48
45
  ### References
49
46
 
@@ -15,7 +15,7 @@ module.exports = function (RED) {
15
15
 
16
16
  client.events
17
17
  .triggerSignalEvent(config.signalname, {
18
- processInstanceId: config.processinstanceid,
18
+ processInstanceId: msg.processinstanceid,
19
19
  payload: msg.payload,
20
20
  identity: engine.identity,
21
21
  })
@@ -68,6 +68,12 @@ A node which listens for events triggered by usertasks
68
68
 
69
69
  ## Outputs
70
70
 
71
+ : flowNodeInstanceId (string): The unique identifier for the usertask instance.
72
+ : userTaskEvent (Object): An Object representing the event returned by the engine.
73
+ : processInstance (Object): An Object representing the process instance data.
74
+ : action (string): The event that occured.
75
+ : type (string): The target of the event.
76
+
71
77
  ### References
72
78
 
73
79
  - [The ProcessCube Developer Network](https://processcube.io) - All documentation for the ProcessCube&copy; platform
@@ -7,8 +7,7 @@
7
7
  engine: { value: '', type: 'processcube-engine-config' },
8
8
  query: { value: 'payload' },
9
9
  query_type: { value: 'msg' },
10
- force_send_array: { value: false },
11
- multisend: { value: false },
10
+ sendtype: { value: 'array', required: true },
12
11
  },
13
12
  inputs: 1,
14
13
  outputs: 1,
@@ -45,33 +44,13 @@
45
44
  <label for="node-input-query"><i class="fa fa-tag"></i> Query</label>
46
45
  <input type="text" id="node-input-query" />
47
46
  </div>
48
- <div class="form-row" style="display:flex; margin-bottom: 3px;">
49
- <label for="node-input-force_send_array" style="vertical-align:top"
50
- ><i class="fa fa-list-alt"></i> Force send payload as array</label
51
- >
52
- <div>
53
- <input
54
- type="checkbox"
55
- checked
56
- id="node-input-force_send_array"
57
- style="display: inline-block; width: auto; margin: 0px 0px 0px 4px;"
58
- />
59
- <label style="width:auto" for="node-input-force_send_array"
60
- >Alway send an array? Only works if <i>Send multi</i> is false.</label
61
- >
62
- </div>
63
- </div>
64
- <div class="form-row" style="display:flex; margin-bottom: 3px;">
65
- <label for="node-input-multisend" style="vertical-align:top"><i class="fa fa-list-alt"></i> Send multi</label>
66
- <div>
67
- <input
68
- type="checkbox"
69
- checked
70
- id="node-input-multisend"
71
- style="display: inline-block; width: auto; margin: 0px 0px 0px 4px;"
72
- />
73
- <label style="width:auto" for="node-input-multisend">Send one output of each usertask input?</label>
74
- </div>
47
+ <div class="form-row">
48
+ <label for="node-input-sendtype"><i class="fa fa-sliders"></i> Result</label>
49
+ <select id="node-input-sendtype" style="width: 70%;">
50
+ <option value="array">Send as Array</option>
51
+ <option value="multi">Send Separately</option>
52
+ <option value="first">Send First Task</option>
53
+ </select>
75
54
  </div>
76
55
  </script>
77
56
 
@@ -88,6 +67,6 @@ A node which sends a payload to a usertask in the ProcessCube.
88
67
 
89
68
  ### References
90
69
 
91
- - [The ProcessCube Developer Network](https://processcube.io) - All documentation for the ProcessCube&copy; platform
92
- - [Node-RED Integration in ProcessCube&copy;](https://processcube.io/docs/node-red) - Node-RED integration in ProcessCube&copy;
70
+ - [The ProcessCube Developer Network](https://processcube.io) - All documentation for the ProcessCube&copy; platform
71
+ - [Node-RED Integration in ProcessCube&copy;](https://processcube.io/docs/node-red) - Node-RED integration in ProcessCube&copy;
93
72
  </script>
package/usertask-input.js CHANGED
@@ -4,7 +4,6 @@ module.exports = function (RED) {
4
4
  var node = this;
5
5
 
6
6
  node.on('input', function (msg) {
7
-
8
7
  const engine = RED.nodes.getNode(config.engine);
9
8
 
10
9
  const client = engine.engineClient;
@@ -17,46 +16,26 @@ module.exports = function (RED) {
17
16
  let query = RED.util.evaluateNodeProperty(config.query, config.query_type, node, msg);
18
17
 
19
18
  query = {
20
- ...query
19
+ ...query,
21
20
  };
22
21
 
23
- client.userTasks.query(query, { identity: engine.identity} )
22
+ client.userTasks
23
+ .query(query, { identity: engine.identity })
24
24
  .then((matchingFlowNodes) => {
25
- if (
26
- !config.force_send_array &&
27
- matchingFlowNodes &&
28
- matchingFlowNodes.userTasks &&
29
- matchingFlowNodes.userTasks.length == 1
30
- ) {
31
- userTask = matchingFlowNodes.userTasks[0];
32
-
33
- msg.payload = { userTask: userTask };
25
+ if (config.sendtype === 'array') {
26
+ msg.payload = { userTasks: matchingFlowNodes.userTasks || [] };
34
27
  node.send(msg);
35
- } else {
36
- if (!config.force_send_array) {
37
- if (config.multisend && matchingFlowNodes.userTasks && matchingFlowNodes.userTasks.length > 1) {
38
- matchingFlowNodes.userTasks.forEach((userTask) => {
39
- msg.payload = { userTask: userTask };
40
- node.send(msg);
41
- });
42
- } else {
43
- if (matchingFlowNodes.userTasks == 1) {
44
- msg.payload = {
45
- userTasks: matchingFlowNodes.userTasks,
46
- };
47
- node.send(msg);
48
- } else {
49
- node.log(`No user tasks found for query: ${JSON.stringify(query)}`);
50
- }
51
- }
52
- } else {
53
- msg.payload = {
54
- userTasks: matchingFlowNodes.userTasks || [],
55
- };
28
+ } else if (config.sendtype === 'multi' && matchingFlowNodes?.userTasks?.length > 1) {
29
+ matchingFlowNodes.userTasks.forEach((userTask) => {
30
+ msg.payload = { userTask };
56
31
  node.send(msg);
57
- }
58
- }
59
- }).catch((error) => {
32
+ });
33
+ } else if (matchingFlowNodes?.userTasks?.length >= 1) {
34
+ msg.payload = { userTask: matchingFlowNodes.userTasks[0] };
35
+ node.send(msg);
36
+ } else node.log(`No user tasks found for query: ${JSON.stringify(query)}`);
37
+ })
38
+ .catch((error) => {
60
39
  node.error(error);
61
40
  });
62
41
  });
@@ -10,6 +10,7 @@
10
10
  },
11
11
  inputs: 1,
12
12
  outputs: 1,
13
+ align: 'right',
13
14
  icon: 'usertask_output.svg',
14
15
  label: function () {
15
16
  return this.name || 'usertask-output';
@@ -55,7 +56,6 @@ A node which sends the result of a usertask to the ProcessCube.
55
56
 
56
57
  ### References
57
58
 
58
- - [The ProcessCube Developer Network](https://processcube.io) - All documentation for the ProcessCube&copy; platform
59
- - [Node-RED Integration in ProcessCube&copy;](https://processcube.io/docs/node-red) - Node-RED integration in ProcessCube&copy;
60
-
59
+ - [The ProcessCube Developer Network](https://processcube.io) - All documentation for the ProcessCube&copy; platform
60
+ - [Node-RED Integration in ProcessCube&copy;](https://processcube.io/docs/node-red) - Node-RED integration in ProcessCube&copy;
61
61
  </script>