@5minds/node-red-contrib-processcube 1.3.0-develop-48eb02-m24rg16r → 1.3.0-feature-194a21-m24lts6l

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@5minds/node-red-contrib-processcube",
3
- "version": "1.3.0-develop-48eb02-m24rg16r",
3
+ "version": "1.3.0-feature-194a21-m24lts6l",
4
4
  "license": "MIT",
5
5
  "description": "Node-RED nodes for ProcessCube",
6
6
  "scripts": {
@@ -45,11 +45,12 @@
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",
49
48
  "ProcessdefinitionQuery": "processdefinition-query.js",
50
49
  "messageEventTrigger": "message-event-trigger.js",
51
50
  "signalEventTrigger": "signal-event-trigger.js",
52
51
  "userTaskEventListener": "usertask-event-listener.js",
52
+ "UserTaskNewListener": "usertask-new-listener.js",
53
+ "UserTaskFinishedListener": "usertask-finished-listener.js",
53
54
  "UserTaskInput": "usertask-input.js",
54
55
  "UserTaskOutput": "usertask-output.js",
55
56
  "WaitForUsertask": "wait-for-usertask.js"
@@ -1,58 +0,0 @@
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>
@@ -1,55 +0,0 @@
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, true, 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
- };