@5minds/node-red-contrib-processcube 1.1.4-feature-e25f70-m14zy2lq → 1.1.4-feature-b953ba-m17k0vnb

Sign up to get free protection for your applications and to get access to all the features.
@@ -21,16 +21,15 @@
21
21
  "color": "#a4a4a4"
22
22
  },
23
23
  "nodes": [
24
+ "f7a9604a17188737",
24
25
  "020d34cd4ab43900",
25
- "127bc6e092c5724e",
26
- "6ebfe52c79b7f0cd",
27
- "2760e94c2824a5a4",
28
- "8d17d660fce14104"
26
+ "1db0ae57c1b8486b",
27
+ "127bc6e092c5724e"
29
28
  ],
30
29
  "x": 34,
31
- "y": 59,
32
- "w": 572,
33
- "h": 222
30
+ "y": 19,
31
+ "w": 452,
32
+ "h": 202
34
33
  },
35
34
  {
36
35
  "id": "72d3db13edc2486b",
@@ -46,24 +45,41 @@
46
45
  "color": "#a4a4a4"
47
46
  },
48
47
  "nodes": [
48
+ "ae0583e83c762956",
49
49
  "f7c7682e3a6adaaa",
50
50
  "a2fb6369b16c12fa",
51
51
  "8ef39e83173d41e3",
52
52
  "f524b8cc35d56849",
53
- "9fb4017c1d0ac7c9",
54
- "a1c3526b6fa21903"
53
+ "9fb4017c1d0ac7c9"
55
54
  ],
56
55
  "x": 34,
57
- "y": 319,
58
- "w": 972,
59
- "h": 142
56
+ "y": 259,
57
+ "w": 652,
58
+ "h": 262
59
+ },
60
+ {
61
+ "id": "f7a9604a17188737",
62
+ "type": "usertask-new-listener",
63
+ "z": "fd3c725340de4f74",
64
+ "d": true,
65
+ "g": "887f3fb69ad1d1fb",
66
+ "name": "New User Task",
67
+ "engine": "42e6796dddd9d4db",
68
+ "multisend": false,
69
+ "x": 160,
70
+ "y": 120,
71
+ "wires": [
72
+ [
73
+ "020d34cd4ab43900"
74
+ ]
75
+ ]
60
76
  },
61
77
  {
62
78
  "id": "020d34cd4ab43900",
63
79
  "type": "debug",
64
80
  "z": "fd3c725340de4f74",
65
81
  "g": "887f3fb69ad1d1fb",
66
- "name": "New User Task",
82
+ "name": "Show User Task",
67
83
  "active": true,
68
84
  "tosidebar": true,
69
85
  "console": false,
@@ -72,34 +88,20 @@
72
88
  "targetType": "msg",
73
89
  "statusVal": "",
74
90
  "statusType": "auto",
75
- "x": 420,
76
- "y": 160,
77
- "wires": []
78
- },
79
- {
80
- "id": "127bc6e092c5724e",
81
- "type": "comment",
82
- "z": "fd3c725340de4f74",
83
- "g": "887f3fb69ad1d1fb",
84
- "name": "User Task Events",
85
- "info": "",
86
- "x": 140,
87
- "y": 100,
91
+ "x": 360,
92
+ "y": 120,
88
93
  "wires": []
89
94
  },
90
95
  {
91
- "id": "6ebfe52c79b7f0cd",
92
- "type": "usertask-event-listener",
96
+ "id": "1db0ae57c1b8486b",
97
+ "type": "usertask-finished-listener",
93
98
  "z": "fd3c725340de4f74",
94
99
  "g": "887f3fb69ad1d1fb",
95
- "name": "",
100
+ "name": "Finished User Task",
96
101
  "engine": "42e6796dddd9d4db",
97
- "usertask": "",
98
- "eventtype": "new",
99
- "query": "{}",
100
- "query_type": "json",
101
- "x": 160,
102
- "y": 160,
102
+ "multisend": false,
103
+ "x": 150,
104
+ "y": 180,
103
105
  "wires": [
104
106
  [
105
107
  "020d34cd4ab43900"
@@ -107,42 +109,33 @@
107
109
  ]
108
110
  },
109
111
  {
110
- "id": "2760e94c2824a5a4",
111
- "type": "usertask-event-listener",
112
+ "id": "127bc6e092c5724e",
113
+ "type": "comment",
112
114
  "z": "fd3c725340de4f74",
113
115
  "g": "887f3fb69ad1d1fb",
116
+ "name": "User Task Events",
117
+ "info": "",
118
+ "x": 140,
119
+ "y": 60,
120
+ "wires": []
121
+ },
122
+ {
123
+ "id": "ae0583e83c762956",
124
+ "type": "usertask-new-listener",
125
+ "z": "fd3c725340de4f74",
126
+ "d": true,
127
+ "g": "72d3db13edc2486b",
114
128
  "name": "",
115
129
  "engine": "42e6796dddd9d4db",
116
- "usertask": "",
117
- "eventtype": "finished",
118
- "query": "{}",
119
- "query_type": "json",
130
+ "multisend": true,
120
131
  "x": 160,
121
- "y": 240,
132
+ "y": 360,
122
133
  "wires": [
123
134
  [
124
- "8d17d660fce14104"
135
+ "a2fb6369b16c12fa"
125
136
  ]
126
137
  ]
127
138
  },
128
- {
129
- "id": "8d17d660fce14104",
130
- "type": "debug",
131
- "z": "fd3c725340de4f74",
132
- "g": "887f3fb69ad1d1fb",
133
- "name": "A User Task was finished",
134
- "active": true,
135
- "tosidebar": true,
136
- "console": false,
137
- "tostatus": false,
138
- "complete": "payload",
139
- "targetType": "msg",
140
- "statusVal": "",
141
- "statusType": "auto",
142
- "x": 450,
143
- "y": 240,
144
- "wires": []
145
- },
146
139
  {
147
140
  "id": "f7c7682e3a6adaaa",
148
141
  "type": "usertask-input",
@@ -152,8 +145,9 @@
152
145
  "engine": "42e6796dddd9d4db",
153
146
  "query": "payload",
154
147
  "query_type": "msg",
155
- "sendtype": "first",
156
- "x": 520,
148
+ "force_send_array": false,
149
+ "multisend": false,
150
+ "x": 380,
157
151
  "y": 420,
158
152
  "wires": [
159
153
  [
@@ -167,14 +161,14 @@
167
161
  "z": "fd3c725340de4f74",
168
162
  "g": "72d3db13edc2486b",
169
163
  "name": "query",
170
- "func": "msg.payload = {\n flowNodeInstanceId: msg.payload.flowNodeInstanceId,\n};\n\nreturn msg;",
164
+ "func": "msg.payload = {\n flowNodeInstanceId: msg.payload.flowNodeInstanceId,\n flowNodeId: \"user_task\"\n};\n\nreturn msg;",
171
165
  "outputs": 1,
172
166
  "timeout": 0,
173
167
  "noerr": 0,
174
168
  "initialize": "",
175
169
  "finalize": "",
176
170
  "libs": [],
177
- "x": 350,
171
+ "x": 210,
178
172
  "y": 420,
179
173
  "wires": [
180
174
  [
@@ -195,8 +189,8 @@
195
189
  "initialize": "",
196
190
  "finalize": "",
197
191
  "libs": [],
198
- "x": 710,
199
- "y": 420,
192
+ "x": 390,
193
+ "y": 480,
200
194
  "wires": [
201
195
  [
202
196
  "f524b8cc35d56849"
@@ -212,8 +206,8 @@
212
206
  "engine": "42e6796dddd9d4db",
213
207
  "result": "payload.result",
214
208
  "result_type": "msg",
215
- "x": 900,
216
- "y": 420,
209
+ "x": 580,
210
+ "y": 480,
217
211
  "wires": [
218
212
  []
219
213
  ]
@@ -223,34 +217,15 @@
223
217
  "type": "comment",
224
218
  "z": "fd3c725340de4f74",
225
219
  "g": "72d3db13edc2486b",
226
- "name": "Demo to listen on a new usertask and finish it",
220
+ "name": "Demo to listen on a new usertask an finish them",
227
221
  "info": "",
228
- "x": 230,
229
- "y": 360,
222
+ "x": 240,
223
+ "y": 300,
230
224
  "wires": []
231
225
  },
232
- {
233
- "id": "a1c3526b6fa21903",
234
- "type": "usertask-event-listener",
235
- "z": "fd3c725340de4f74",
236
- "g": "72d3db13edc2486b",
237
- "name": "",
238
- "engine": "42e6796dddd9d4db",
239
- "usertask": "",
240
- "eventtype": "new",
241
- "query": "{}",
242
- "query_type": "json",
243
- "x": 160,
244
- "y": 420,
245
- "wires": [
246
- [
247
- "a2fb6369b16c12fa"
248
- ]
249
- ]
250
- },
251
226
  {
252
227
  "id": "42e6796dddd9d4db",
253
228
  "type": "processcube-engine-config",
254
229
  "url": "http://engine:8000"
255
230
  }
256
- ]
231
+ ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@5minds/node-red-contrib-processcube",
3
- "version": "1.1.4-feature-e25f70-m14zy2lq",
3
+ "version": "1.1.4-feature-b953ba-m17k0vnb",
4
4
  "license": "MIT",
5
5
  "description": "Node-RED nodes for ProcessCube",
6
6
  "scripts": {
@@ -45,6 +45,7 @@
45
45
  "processEventListener": "process-event-listener.js",
46
46
  "processcubeEngineConfig": "processcube-engine-config.js",
47
47
  "ProcessinstanceQuery": "processinstance-query.js",
48
+ "ProcessinstanceDelete": "processinstance-delete.js",
48
49
  "ProcessdefinitionQuery": "processdefinition-query.js",
49
50
  "messageEventTrigger": "message-event-trigger.js",
50
51
  "signalEventTrigger": "signal-event-trigger.js",
@@ -0,0 +1,58 @@
1
+ <script type="text/javascript">
2
+ RED.nodes.registerType('processinstance-delete', {
3
+ category: 'ProcessCube DevOps',
4
+ color: '#02AFD6',
5
+ defaults: {
6
+ name: { value: '' },
7
+ engine: { value: '', type: 'processcube-engine-config' },
8
+ time: { value: '', type: 'number' },
9
+ time_type: { value: 'hours' },
10
+ },
11
+ inputs: 1,
12
+ outputs: 1,
13
+ icon: 'font-awesome/fa-sign-in',
14
+ label: function () {
15
+ return this.name || 'processinstance-delete';
16
+ },
17
+ });
18
+ </script>
19
+
20
+ <script type="text/html" data-template-name="processinstance-delete">
21
+ <div class="form-row">
22
+ <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
23
+ <input type="text" id="node-input-name" placeholder="Name" />
24
+ </div>
25
+ <div class="form-row">
26
+ <label for="node-input-engine"><i class="fa fa-tag"></i> Engine-URL</label>
27
+ <input type="text" id="node-input-engine" placeholder="Engine-URL" />
28
+ </div>
29
+ <div class="form-row">
30
+ <label for="node-input-time"><i class="fa fa-tag"></i> Time</label>
31
+ <input type="text" id="node-input-time" />
32
+ </div>
33
+ <div class="form-row">
34
+ <label for="node-input-time_type"><i class="fa fa-sliders"></i> Period</label>
35
+ <select id="node-input-time_type" style="width: 70%;">
36
+ <option value="hours">Hours</option>
37
+ <option value="days">Days</option>
38
+ </select>
39
+ </div>
40
+ </script>
41
+
42
+ <script type="text/markdown" data-help-name="processinstance-delete">
43
+ Delete old instances of a process model in the ProcessCube.
44
+
45
+ ## Inputs
46
+
47
+ : payload.time (number): The number of given time periods.
48
+ : payload.time_type ('hours' | 'days'): The type of time period to use.
49
+
50
+ ## Outputs
51
+
52
+ : payload (string[]): The ids of the processinstances that were deleted.
53
+
54
+ ### References
55
+
56
+ - [The ProcessCube Developer Network](https://processcube.io) - All documentation for the ProcessCube&copy; platform
57
+ - [Node-RED Integration in ProcessCube&copy;](https://processcube.io/docs/node-red) - Node-RED integration in ProcessCube&copy;
58
+ </script>
@@ -0,0 +1,55 @@
1
+ module.exports = function (RED) {
2
+ function ProcessInstanceDelete(config) {
3
+ RED.nodes.createNode(this, config);
4
+ var node = this;
5
+
6
+ node.on('input', async 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
+ let timeMultiplier;
15
+ if (msg.payload.time_type) {
16
+ timeMultiplier = msg.payload.time_type == 'hours' ? 1 : 24;
17
+ } else {
18
+ timeMultiplier = config.time_type == 'hours' ? 1 : 24;
19
+ }
20
+
21
+ const timeToUse = msg.payload.time ? msg.payload.time : config.time;
22
+
23
+ try {
24
+ const fetchInstancesByState = async (state) => {
25
+ const result = await client.processInstances.query({ state });
26
+ return result.processInstances;
27
+ };
28
+
29
+ const finishedInstances = await fetchInstancesByState('finished');
30
+ const terminatedInstances = await fetchInstancesByState('terminated');
31
+ const errorInstances = await fetchInstancesByState('error');
32
+
33
+ let allInstances = [...finishedInstances, ...terminatedInstances, ...errorInstances];
34
+
35
+ const today = new Date();
36
+
37
+ const oldTasks = allInstances.filter((instance) => {
38
+ const finishedDate = new Date(instance.finishedAt);
39
+ const diffInHours = (today - finishedDate) / (1000 * 60 * 60);
40
+ return diffInHours > Number(timeToUse) * timeMultiplier;
41
+ });
42
+
43
+ const ids = oldTasks.map((obj) => obj.processInstanceId);
44
+ msg.payload = ids;
45
+
46
+ await client.processInstances.deleteProcessInstances(ids, engine.identity);
47
+ node.send(msg);
48
+ } catch (error) {
49
+ node.error(error);
50
+ }
51
+ });
52
+ }
53
+
54
+ RED.nodes.registerType('processinstance-delete', ProcessInstanceDelete);
55
+ };
@@ -1,46 +0,0 @@
1
- [
2
- {
3
- "id": "e0221ca7bcc43410",
4
- "type": "tab",
5
- "label": "Flow 1",
6
- "disabled": false,
7
- "info": "",
8
- "env": []
9
- },
10
- {
11
- "id": "99c103764aa0dd67",
12
- "type": "endevent-finished-listener",
13
- "z": "e0221ca7bcc43410",
14
- "name": "",
15
- "engine": "4cd9b529f03e5d07",
16
- "x": 350,
17
- "y": 360,
18
- "wires": [
19
- [
20
- "ddcbcb47a30846cc"
21
- ]
22
- ]
23
- },
24
- {
25
- "id": "ddcbcb47a30846cc",
26
- "type": "debug",
27
- "z": "e0221ca7bcc43410",
28
- "name": "debug 1",
29
- "active": true,
30
- "tosidebar": true,
31
- "console": false,
32
- "tostatus": false,
33
- "complete": "false",
34
- "statusVal": "",
35
- "statusType": "auto",
36
- "x": 680,
37
- "y": 360,
38
- "wires": []
39
- },
40
- {
41
- "id": "4cd9b529f03e5d07",
42
- "type": "processcube-engine-config",
43
- "name": "",
44
- "url": "http://engine:8000"
45
- }
46
- ]
@@ -1,48 +0,0 @@
1
- [
2
- {
3
- "id": "e0221ca7bcc43410",
4
- "type": "tab",
5
- "label": "Flow 1",
6
- "disabled": false,
7
- "info": "",
8
- "env": []
9
- },
10
- {
11
- "id": "ddcbcb47a30846cc",
12
- "type": "debug",
13
- "z": "e0221ca7bcc43410",
14
- "name": "debug 1",
15
- "active": true,
16
- "tosidebar": true,
17
- "console": false,
18
- "tostatus": false,
19
- "complete": "false",
20
- "statusVal": "",
21
- "statusType": "auto",
22
- "x": 680,
23
- "y": 360,
24
- "wires": []
25
- },
26
- {
27
- "id": "bdafbeab35606a9f",
28
- "type": "externaltask-event-listener",
29
- "z": "e0221ca7bcc43410",
30
- "name": "",
31
- "engine": "4cd9b529f03e5d07",
32
- "externaltask": "",
33
- "eventtype": "created",
34
- "x": 350,
35
- "y": 360,
36
- "wires": [
37
- [
38
- "ddcbcb47a30846cc"
39
- ]
40
- ]
41
- },
42
- {
43
- "id": "4cd9b529f03e5d07",
44
- "type": "processcube-engine-config",
45
- "name": "",
46
- "url": "http://engine:8000"
47
- }
48
- ]
@@ -1,47 +0,0 @@
1
- [
2
- {
3
- "id": "e0221ca7bcc43410",
4
- "type": "tab",
5
- "label": "Flow 1",
6
- "disabled": false,
7
- "info": "",
8
- "env": []
9
- },
10
- {
11
- "id": "ddcbcb47a30846cc",
12
- "type": "debug",
13
- "z": "e0221ca7bcc43410",
14
- "name": "debug 1",
15
- "active": true,
16
- "tosidebar": true,
17
- "console": false,
18
- "tostatus": false,
19
- "complete": "false",
20
- "statusVal": "",
21
- "statusType": "auto",
22
- "x": 680,
23
- "y": 360,
24
- "wires": []
25
- },
26
- {
27
- "id": "4e6b50755428220b",
28
- "type": "message-event-trigger",
29
- "z": "e0221ca7bcc43410",
30
- "name": "",
31
- "engine": "4cd9b529f03e5d07",
32
- "messagename": "My-Message-Event",
33
- "x": 360,
34
- "y": 360,
35
- "wires": [
36
- [
37
- "ddcbcb47a30846cc"
38
- ]
39
- ]
40
- },
41
- {
42
- "id": "4cd9b529f03e5d07",
43
- "type": "processcube-engine-config",
44
- "name": "",
45
- "url": "http://engine:8000"
46
- }
47
- ]
@@ -1,50 +0,0 @@
1
- [
2
- {
3
- "id": "e0221ca7bcc43410",
4
- "type": "tab",
5
- "label": "Flow 1",
6
- "disabled": false,
7
- "info": "",
8
- "env": []
9
- },
10
- {
11
- "id": "ddcbcb47a30846cc",
12
- "type": "debug",
13
- "z": "e0221ca7bcc43410",
14
- "name": "debug 1",
15
- "active": true,
16
- "tosidebar": true,
17
- "console": false,
18
- "tostatus": false,
19
- "complete": "false",
20
- "statusVal": "",
21
- "statusType": "auto",
22
- "x": 680,
23
- "y": 360,
24
- "wires": []
25
- },
26
- {
27
- "id": "8abe2d1336341797",
28
- "type": "process-event-listener",
29
- "z": "e0221ca7bcc43410",
30
- "name": "",
31
- "engine": "4cd9b529f03e5d07",
32
- "processmodel": "",
33
- "eventtype": "started",
34
- "query": "{}",
35
- "query_type": "json",
36
- "x": 360,
37
- "y": 360,
38
- "wires": [
39
- [
40
- "ddcbcb47a30846cc"
41
- ]
42
- ]
43
- },
44
- {
45
- "id": "4cd9b529f03e5d07",
46
- "type": "processcube-engine-config",
47
- "name": "",
48
- "url": "http://engine:8000"
49
- }
50
- ]
@@ -1,48 +0,0 @@
1
- [
2
- {
3
- "id": "e0221ca7bcc43410",
4
- "type": "tab",
5
- "label": "Flow 1",
6
- "disabled": false,
7
- "info": "",
8
- "env": []
9
- },
10
- {
11
- "id": "ddcbcb47a30846cc",
12
- "type": "debug",
13
- "z": "e0221ca7bcc43410",
14
- "name": "debug 1",
15
- "active": true,
16
- "tosidebar": true,
17
- "console": false,
18
- "tostatus": false,
19
- "complete": "false",
20
- "statusVal": "",
21
- "statusType": "auto",
22
- "x": 680,
23
- "y": 360,
24
- "wires": []
25
- },
26
- {
27
- "id": "f028b3204b89f89f",
28
- "type": "process-start",
29
- "z": "e0221ca7bcc43410",
30
- "name": "",
31
- "engine": "4cd9b529f03e5d07",
32
- "processmodel": "My_Process",
33
- "startevent": "StartEvent_1",
34
- "x": 390,
35
- "y": 360,
36
- "wires": [
37
- [
38
- "ddcbcb47a30846cc"
39
- ]
40
- ]
41
- },
42
- {
43
- "id": "4cd9b529f03e5d07",
44
- "type": "processcube-engine-config",
45
- "name": "",
46
- "url": "http://engine:8000"
47
- }
48
- ]
@@ -1,75 +0,0 @@
1
- [
2
- {
3
- "id": "e0221ca7bcc43410",
4
- "type": "tab",
5
- "label": "Flow 1",
6
- "disabled": false,
7
- "info": "",
8
- "env": []
9
- },
10
- {
11
- "id": "ddcbcb47a30846cc",
12
- "type": "debug",
13
- "z": "e0221ca7bcc43410",
14
- "name": "debug 1",
15
- "active": true,
16
- "tosidebar": true,
17
- "console": false,
18
- "tostatus": false,
19
- "complete": "false",
20
- "statusVal": "",
21
- "statusType": "auto",
22
- "x": 820,
23
- "y": 360,
24
- "wires": []
25
- },
26
- {
27
- "id": "7bf175249a1e4191",
28
- "type": "process-terminate",
29
- "z": "e0221ca7bcc43410",
30
- "name": "",
31
- "engine": "4cd9b529f03e5d07",
32
- "x": 570,
33
- "y": 360,
34
- "wires": [
35
- [
36
- "ddcbcb47a30846cc"
37
- ]
38
- ]
39
- },
40
- {
41
- "id": "0a92212597eeb5b8",
42
- "type": "inject",
43
- "z": "e0221ca7bcc43410",
44
- "name": "",
45
- "props": [
46
- {
47
- "p": "payload"
48
- },
49
- {
50
- "p": "topic",
51
- "vt": "str"
52
- }
53
- ],
54
- "repeat": "",
55
- "crontab": "",
56
- "once": false,
57
- "onceDelay": 0.1,
58
- "topic": "",
59
- "payload": "TheProcessInstanceIdGoesHere",
60
- "payloadType": "str",
61
- "x": 310,
62
- "y": 360,
63
- "wires": [
64
- [
65
- "7bf175249a1e4191"
66
- ]
67
- ]
68
- },
69
- {
70
- "id": "4cd9b529f03e5d07",
71
- "type": "processcube-engine-config",
72
- "name": "",
73
- "url": "http://engine:8000"
74
- }
75
- ]
@@ -1,47 +0,0 @@
1
- [
2
- {
3
- "id": "e0221ca7bcc43410",
4
- "type": "tab",
5
- "label": "Flow 1",
6
- "disabled": false,
7
- "info": "",
8
- "env": []
9
- },
10
- {
11
- "id": "ddcbcb47a30846cc",
12
- "type": "debug",
13
- "z": "e0221ca7bcc43410",
14
- "name": "debug 1",
15
- "active": true,
16
- "tosidebar": true,
17
- "console": false,
18
- "tostatus": false,
19
- "complete": "false",
20
- "statusVal": "",
21
- "statusType": "auto",
22
- "x": 680,
23
- "y": 360,
24
- "wires": []
25
- },
26
- {
27
- "id": "ad5b5c56dc748337",
28
- "type": "signal-event-trigger",
29
- "z": "e0221ca7bcc43410",
30
- "name": "",
31
- "engine": "4cd9b529f03e5d07",
32
- "signalname": "My_Event",
33
- "x": 370,
34
- "y": 360,
35
- "wires": [
36
- [
37
- "ddcbcb47a30846cc"
38
- ]
39
- ]
40
- },
41
- {
42
- "id": "4cd9b529f03e5d07",
43
- "type": "processcube-engine-config",
44
- "name": "",
45
- "url": "http://engine:8000"
46
- }
47
- ]