@5minds/node-red-contrib-processcube 1.1.4-develop-b953ba-m17jglme → 1.1.4-develop-bd7af6-m17k0jes
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +1 -2
- package/processinstance-delete.html +0 -58
- package/processinstance-delete.js +0 -55
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@5minds/node-red-contrib-processcube",
|
3
|
-
"version": "1.1.4-develop-
|
3
|
+
"version": "1.1.4-develop-bd7af6-m17k0jes",
|
4
4
|
"license": "MIT",
|
5
5
|
"description": "Node-RED nodes for ProcessCube",
|
6
6
|
"scripts": {
|
@@ -45,7 +45,6 @@
|
|
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",
|
@@ -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© platform
|
57
|
-
- [Node-RED Integration in ProcessCube©](https://processcube.io/docs/node-red) - Node-RED integration in ProcessCube©
|
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, 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
|
-
};
|