@5minds/node-red-contrib-processcube 1.5.10-feature-e7245a-m4b9oruh → 1.5.10-feature-c578ab-m4jpoj9a
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/endevent-finished-listener.js +0 -11
- package/externaltask-event-listener.js +0 -11
- package/externaltask-input.js +5 -12
- package/message-event-trigger.js +4 -4
- package/package.json +1 -1
- package/process-event-listener.js +0 -11
- package/process-start.js +3 -3
- package/process-terminate.js +3 -3
- package/processcube-engine-config.html +13 -13
- package/processcube-engine-config.js +65 -108
- package/processdefinition-query.js +2 -2
- package/processinstance-delete.js +4 -4
- package/processinstance-query.js +3 -3
- package/signal-event-trigger.js +3 -3
- package/usertask-event-listener.js +0 -11
- package/usertask-input.js +3 -3
- package/usertask-output.js +3 -3
@@ -6,17 +6,6 @@ module.exports = function (RED) {
|
|
6
6
|
|
7
7
|
let subscription = null;
|
8
8
|
|
9
|
-
const eventEmitter = node.engine.eventEmitter;
|
10
|
-
|
11
|
-
eventEmitter.on('engine-client-dispose', () => {
|
12
|
-
node.engine.engineClient.events.removeSubscription(subscription, node.engine.identity);
|
13
|
-
});
|
14
|
-
|
15
|
-
eventEmitter.on('engine-client-changed', () => {
|
16
|
-
node.log('new engineClient received');
|
17
|
-
register();
|
18
|
-
});
|
19
|
-
|
20
9
|
const register = async () => {
|
21
10
|
const client = node.engine.engineClient;
|
22
11
|
|
@@ -6,17 +6,6 @@ module.exports = function (RED) {
|
|
6
6
|
|
7
7
|
let subscription;
|
8
8
|
|
9
|
-
const eventEmitter = node.engine.eventEmitter;
|
10
|
-
|
11
|
-
eventEmitter.on('engine-client-dispose', () => {
|
12
|
-
node.engine.engineClient.notification.removeSubscription(subscription, node.engine.identity);
|
13
|
-
});
|
14
|
-
|
15
|
-
eventEmitter.on('engine-client-changed', () => {
|
16
|
-
node.log('new engineClient received');
|
17
|
-
register();
|
18
|
-
});
|
19
|
-
|
20
9
|
const register = async () => {
|
21
10
|
let currentIdentity = node.engine.identity;
|
22
11
|
|
package/externaltask-input.js
CHANGED
@@ -16,7 +16,7 @@ module.exports = function (RED) {
|
|
16
16
|
var node = this;
|
17
17
|
var flowContext = node.context().flow;
|
18
18
|
|
19
|
-
|
19
|
+
node.engine = RED.nodes.getNode(config.engine);
|
20
20
|
|
21
21
|
var eventEmitter = flowContext.get('emitter');
|
22
22
|
|
@@ -25,13 +25,6 @@ module.exports = function (RED) {
|
|
25
25
|
eventEmitter = flowContext.get('emitter');
|
26
26
|
}
|
27
27
|
|
28
|
-
const engineEventEmitter = engine.eventEmitter;
|
29
|
-
|
30
|
-
engineEventEmitter.on('engine-client-changed', () => {
|
31
|
-
node.log('new engineClient received');
|
32
|
-
register();
|
33
|
-
});
|
34
|
-
|
35
28
|
const register = async () => {
|
36
29
|
if (node.etw) {
|
37
30
|
try {
|
@@ -41,7 +34,7 @@ module.exports = function (RED) {
|
|
41
34
|
node.log(`cant close etw: ${JSON.stringify(node.etw)}`);
|
42
35
|
}
|
43
36
|
}
|
44
|
-
const client = engine.engineClient;
|
37
|
+
const client = node.engine.engineClient;
|
45
38
|
|
46
39
|
if (!client) {
|
47
40
|
node.error('No engine configured.');
|
@@ -133,8 +126,8 @@ module.exports = function (RED) {
|
|
133
126
|
|
134
127
|
node.etw = externalTaskWorker;
|
135
128
|
|
136
|
-
externalTaskWorker.identity = engine.identity;
|
137
|
-
engine.registerOnIdentityChanged((identity) => {
|
129
|
+
externalTaskWorker.identity = node.engine.identity;
|
130
|
+
node.engine.registerOnIdentityChanged((identity) => {
|
138
131
|
externalTaskWorker.identity = identity;
|
139
132
|
});
|
140
133
|
|
@@ -185,7 +178,7 @@ module.exports = function (RED) {
|
|
185
178
|
});
|
186
179
|
};
|
187
180
|
|
188
|
-
if (engine) {
|
181
|
+
if (node.engine) {
|
189
182
|
register();
|
190
183
|
}
|
191
184
|
}
|
package/message-event-trigger.js
CHANGED
@@ -5,19 +5,19 @@ module.exports = function (RED) {
|
|
5
5
|
|
6
6
|
node.on('input', function (msg) {
|
7
7
|
|
8
|
-
|
9
|
-
const client = engine.engineClient;
|
8
|
+
node.engine = RED.nodes.getNode(config.engine);
|
9
|
+
const client = node.engine.engineClient;
|
10
10
|
|
11
11
|
if (!client) {
|
12
12
|
node.error('No engine configured.');
|
13
13
|
return;
|
14
14
|
}
|
15
15
|
|
16
|
-
engine.engineClient.events
|
16
|
+
node.engine.engineClient.events
|
17
17
|
.triggerMessageEvent(config.messagename, {
|
18
18
|
processInstanceId: msg.processinstanceid,
|
19
19
|
payload: msg.payload,
|
20
|
-
identity: engine.identity,
|
20
|
+
identity: node.engine.identity,
|
21
21
|
})
|
22
22
|
.then((result) => {
|
23
23
|
msg.payload = result;
|
package/package.json
CHANGED
@@ -6,17 +6,6 @@ module.exports = function (RED) {
|
|
6
6
|
|
7
7
|
let subscription;
|
8
8
|
|
9
|
-
const engineEventEmitter = node.engine.eventEmitter;
|
10
|
-
|
11
|
-
engineEventEmitter.on('engine-client-dispose', () => {
|
12
|
-
node.engine.engineClient.notification.removeSubscription(subscription, node.engine.identity);
|
13
|
-
});
|
14
|
-
|
15
|
-
engineEventEmitter.on('engine-client-changed', () => {
|
16
|
-
node.log('new engineClient received');
|
17
|
-
register();
|
18
|
-
});
|
19
|
-
|
20
9
|
const register = async () => {
|
21
10
|
const client = node.engine.engineClient;
|
22
11
|
|
package/process-start.js
CHANGED
@@ -22,8 +22,8 @@ module.exports = function (RED) {
|
|
22
22
|
return;
|
23
23
|
}
|
24
24
|
|
25
|
-
|
26
|
-
const client = engine.engineClient;
|
25
|
+
node.engine = RED.nodes.getNode(config.engine);
|
26
|
+
const client = node.engine.engineClient;
|
27
27
|
|
28
28
|
if (!client) {
|
29
29
|
node.error('No engine configured.');
|
@@ -31,7 +31,7 @@ module.exports = function (RED) {
|
|
31
31
|
}
|
32
32
|
|
33
33
|
client.processDefinitions
|
34
|
-
.startProcessInstance(startParameters, engine.identity)
|
34
|
+
.startProcessInstance(startParameters, node.engine.identity)
|
35
35
|
.then((result) => {
|
36
36
|
msg.payload = result;
|
37
37
|
|
package/process-terminate.js
CHANGED
@@ -4,8 +4,8 @@ module.exports = function (RED) {
|
|
4
4
|
var node = this;
|
5
5
|
|
6
6
|
node.on('input', function (msg) {
|
7
|
-
|
8
|
-
const client = engine.engineClient;
|
7
|
+
node.engine = RED.nodes.getNode(config.engine);
|
8
|
+
const client = node.engine.engineClient;
|
9
9
|
|
10
10
|
if (!client) {
|
11
11
|
node.error('No engine configured.');
|
@@ -13,7 +13,7 @@ module.exports = function (RED) {
|
|
13
13
|
}
|
14
14
|
|
15
15
|
client.processInstances
|
16
|
-
.terminateProcessInstance(msg.payload, engine.identity)
|
16
|
+
.terminateProcessInstance(msg.payload, node.engine.identity)
|
17
17
|
.then(() => {
|
18
18
|
node.send(msg);
|
19
19
|
})
|
@@ -4,7 +4,7 @@
|
|
4
4
|
defaults: {
|
5
5
|
name: { value: '' },
|
6
6
|
url: { value: 'http://engine:8000', required: true },
|
7
|
-
urlType: { type: 'str'},
|
7
|
+
urlType: { type: 'str' },
|
8
8
|
clientId: { value: '' },
|
9
9
|
clientIdType: { type: 'str' },
|
10
10
|
clientSecret: { value: '' },
|
@@ -16,17 +16,17 @@
|
|
16
16
|
oneditprepare: function () {
|
17
17
|
$('#node-config-input-url').typedInput({
|
18
18
|
default: 'str',
|
19
|
-
types: ['str', '
|
19
|
+
types: ['str', 'env', 'cred'],
|
20
20
|
});
|
21
21
|
|
22
22
|
$('#node-config-input-clientId').typedInput({
|
23
23
|
default: 'str',
|
24
|
-
types: ['str', '
|
24
|
+
types: ['str', 'env', 'cred'],
|
25
25
|
});
|
26
26
|
|
27
27
|
$('#node-config-input-clientSecret').typedInput({
|
28
28
|
default: 'str',
|
29
|
-
types: ['str', '
|
29
|
+
types: ['str', 'env', 'cred'],
|
30
30
|
});
|
31
31
|
|
32
32
|
$('#node-config-input-url').typedInput('value', this.url);
|
@@ -66,21 +66,21 @@
|
|
66
66
|
</div>
|
67
67
|
<div class="form-row">
|
68
68
|
<label for="node-config-input-clientSecret"><i class="fa fa-bookmark"></i> Client secret</label>
|
69
|
-
<input type="
|
69
|
+
<input type="text" id="node-config-input-clientSecret" />
|
70
70
|
</div>
|
71
71
|
</script>
|
72
72
|
|
73
73
|
<script type="text/markdown" data-help-name="processcube-engine-config">
|
74
|
-
The configuration for the ProcessCube engine.
|
74
|
+
The configuration for the ProcessCube engine.
|
75
75
|
|
76
|
-
## Inputs
|
76
|
+
## Inputs
|
77
77
|
|
78
|
-
: url (String) : The URL of the ProcessCube engine.
|
79
|
-
: clientId (String) : The client id for the ProcessCube engine.
|
80
|
-
: clientSecret (String) : The client secret for the ProcessCube engine.
|
78
|
+
: url (String) : The URL of the ProcessCube engine.
|
79
|
+
: clientId (String) : The client id for the ProcessCube engine.
|
80
|
+
: clientSecret (String) : The client secret for the ProcessCube engine.
|
81
81
|
|
82
|
-
### References
|
82
|
+
### References
|
83
83
|
|
84
|
-
-
|
85
|
-
-
|
84
|
+
- [The ProcessCube© Developer Network](https://processcube.io) - All documentation for the ProcessCube© platform
|
85
|
+
- [ProcessCube© LowCode Integration](https://processcube.io/docs/node-red) - LowCode integration in ProcessCube©
|
86
86
|
</script>
|
@@ -1,4 +1,3 @@
|
|
1
|
-
const EventEmitter = require('node:events');
|
2
1
|
const engine_client = require('@5minds/processcube_engine_client');
|
3
2
|
const jwt = require('jwt-decode');
|
4
3
|
const oidc = require('openid-client');
|
@@ -8,134 +7,92 @@ module.exports = function (RED) {
|
|
8
7
|
RED.nodes.createNode(this, n);
|
9
8
|
const node = this;
|
10
9
|
const identityChangedCallbacks = [];
|
11
|
-
|
10
|
+
node.identity = null;
|
12
11
|
|
13
|
-
|
14
|
-
|
12
|
+
node.credentials.clientId = RED.util.evaluateNodeProperty(n.clientId, n.clientIdType, node);
|
13
|
+
node.credentials.clientSecret = RED.util.evaluateNodeProperty(n.clientSecret, n.clientSecretType, node);
|
15
14
|
|
16
|
-
node.
|
17
|
-
|
18
|
-
// set the engine url
|
19
|
-
const stopRefreshing = periodicallyRefreshEngineClient(this, n, 10000);
|
20
|
-
|
21
|
-
this.registerOnIdentityChanged = function (callback) {
|
15
|
+
node.registerOnIdentityChanged = function (callback) {
|
22
16
|
identityChangedCallbacks.push(callback);
|
23
17
|
};
|
24
18
|
|
25
|
-
|
26
|
-
if (
|
27
|
-
return
|
19
|
+
node.isIdentityReady = function () {
|
20
|
+
if (node.credentials.clientId && node.credentials.clientSecret) {
|
21
|
+
return node.identity != null;
|
28
22
|
} else {
|
29
23
|
return true;
|
30
24
|
}
|
31
25
|
};
|
32
26
|
|
33
|
-
|
27
|
+
node.setIdentity = (identity) => {
|
34
28
|
node.log(`setIdentity: ${JSON.stringify(identity)}`);
|
35
|
-
|
29
|
+
node.identity = identity;
|
36
30
|
|
37
31
|
for (const callback of identityChangedCallbacks) {
|
38
32
|
callback(identity);
|
39
33
|
}
|
40
34
|
};
|
41
35
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
node.url === newUrl &&
|
50
|
-
node.credentials.clientId === newClientId &&
|
51
|
-
node.credentials.clientSecret === newClientSecret
|
52
|
-
) {
|
53
|
-
return;
|
54
|
-
}
|
55
|
-
|
56
|
-
node.url = newUrl;
|
57
|
-
node.credentials.clientId = newClientId;
|
58
|
-
node.credentials.clientSecret = newClientSecret;
|
59
|
-
|
60
|
-
if (node.credentials.clientId && node.credentials.clientSecret) {
|
61
|
-
if (node.engineClient) {
|
62
|
-
node.eventEmitter.emit('engine-client-dispose');
|
63
|
-
node.engineClient.dispose();
|
64
|
-
}
|
65
|
-
node.engineClient = new engine_client.EngineClient(node.url, () =>
|
66
|
-
getFreshIdentity(node.url, node)
|
67
|
-
);
|
68
|
-
|
69
|
-
node.eventEmitter.emit('engine-client-changed');
|
70
|
-
} else {
|
71
|
-
if (node.engineClient) {
|
72
|
-
node.eventEmitter.emit('engine-client-dispose');
|
73
|
-
node.engineClient.dispose();
|
74
|
-
}
|
75
|
-
node.engineClient = new engine_client.EngineClient(node.url);
|
76
|
-
|
77
|
-
node.eventEmitter.emit('engine-client-changed');
|
78
|
-
}
|
79
|
-
}
|
80
|
-
|
81
|
-
refreshUrl();
|
82
|
-
const intervalId = setInterval(refreshUrl, intervalMs);
|
83
|
-
|
84
|
-
return () => clearInterval(intervalId);
|
36
|
+
if (node.credentials.clientId && node.credentials.clientSecret) {
|
37
|
+
node.engineClient = new engine_client.EngineClient(node.url, {
|
38
|
+
clientId: node.credentials.clientId,
|
39
|
+
clientSecret: node.credentials.clientSecret,
|
40
|
+
});
|
41
|
+
} else {
|
42
|
+
node.engineClient = new engine_client.EngineClient(node.url);
|
85
43
|
}
|
86
44
|
|
87
|
-
async function getFreshIdentity(url, node) {
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
}
|
45
|
+
// async function getFreshIdentity(url, node) {
|
46
|
+
// try {
|
47
|
+
// if (
|
48
|
+
// !RED.util.evaluateNodeProperty(n.clientId, n.clientIdType, node) ||
|
49
|
+
// !RED.util.evaluateNodeProperty(n.clientSecret, n.clientSecretType, node)
|
50
|
+
// ) {
|
51
|
+
// return null;
|
52
|
+
// }
|
53
|
+
|
54
|
+
// const res = await fetch(url + '/atlas_engine/api/v1/authority', {
|
55
|
+
// method: 'GET',
|
56
|
+
// headers: {
|
57
|
+
// Authorization: `Bearer ZHVtbXlfdG9rZW4=`,
|
58
|
+
// 'Content-Type': 'application/json',
|
59
|
+
// },
|
60
|
+
// });
|
61
|
+
|
62
|
+
// const body = await res.json();
|
63
|
+
|
64
|
+
// const issuer = await oidc.Issuer.discover(body);
|
65
|
+
|
66
|
+
// const client = new issuer.Client({
|
67
|
+
// client_id: RED.util.evaluateNodeProperty(n.clientId, n.clientIdType, node),
|
68
|
+
// client_secret: RED.util.evaluateNodeProperty(n.clientSecret, n.clientSecretType, node),
|
69
|
+
// });
|
70
|
+
|
71
|
+
// const tokenSet = await client.grant({
|
72
|
+
// grant_type: 'client_credentials',
|
73
|
+
// scope: 'engine_etw engine_read engine_write',
|
74
|
+
// });
|
75
|
+
|
76
|
+
// const accessToken = tokenSet.access_token;
|
77
|
+
// const decodedToken = jwt.jwtDecode(accessToken);
|
78
|
+
|
79
|
+
// const freshIdentity = {
|
80
|
+
// token: tokenSet.access_token,
|
81
|
+
// userId: decodedToken.sub,
|
82
|
+
// };
|
83
|
+
|
84
|
+
// node.setIdentity(freshIdentity);
|
85
|
+
|
86
|
+
// return freshIdentity;
|
87
|
+
// } catch (e) {
|
88
|
+
// node.error(`Could not get fresh identity: ${e}`);
|
89
|
+
// }
|
90
|
+
// }
|
133
91
|
|
134
92
|
node.on('close', async () => {
|
135
|
-
if (
|
136
|
-
|
137
|
-
|
138
|
-
this.engineClient = null;
|
93
|
+
if (node.engineClient) {
|
94
|
+
node.engineClient.dispose();
|
95
|
+
node.engineClient = null;
|
139
96
|
}
|
140
97
|
});
|
141
98
|
}
|
@@ -5,7 +5,7 @@ module.exports = function (RED) {
|
|
5
5
|
|
6
6
|
node.on('input', function (msg) {
|
7
7
|
|
8
|
-
|
8
|
+
node.engine = RED.nodes.getNode(config.engine);
|
9
9
|
const client = engine.engineClient;
|
10
10
|
|
11
11
|
if (!client) {
|
@@ -17,7 +17,7 @@ module.exports = function (RED) {
|
|
17
17
|
|
18
18
|
query = {
|
19
19
|
...query,
|
20
|
-
identity: engine.identity,
|
20
|
+
identity: node.engine.identity,
|
21
21
|
};
|
22
22
|
|
23
23
|
node.log(`Querying process definitions with query: ${JSON.stringify(query)}`);
|
@@ -4,8 +4,8 @@ module.exports = function (RED) {
|
|
4
4
|
var node = this;
|
5
5
|
|
6
6
|
node.on('input', async function (msg) {
|
7
|
-
|
8
|
-
const client = engine.engineClient;
|
7
|
+
node.engine = RED.nodes.getNode(config.engine);
|
8
|
+
const client = node.engine.engineClient;
|
9
9
|
|
10
10
|
if (!client) {
|
11
11
|
node.error('No engine configured.');
|
@@ -30,7 +30,7 @@ module.exports = function (RED) {
|
|
30
30
|
try {
|
31
31
|
const result = await client.processInstances.query({
|
32
32
|
processModelId: modelId
|
33
|
-
}, { identity: engine.identity });
|
33
|
+
}, { identity: node.engine.identity });
|
34
34
|
|
35
35
|
let allInstances = result.processInstances.filter((instance) => instance.state != 'suspended');
|
36
36
|
|
@@ -45,7 +45,7 @@ module.exports = function (RED) {
|
|
45
45
|
const ids = oldTasks.map((obj) => obj.processInstanceId);
|
46
46
|
msg.payload = ids;
|
47
47
|
|
48
|
-
await client.processInstances.deleteProcessInstances(ids, true, engine.identity);
|
48
|
+
await client.processInstances.deleteProcessInstances(ids, true, node.engine.identity);
|
49
49
|
node.send(msg);
|
50
50
|
} catch (error) {
|
51
51
|
node.error(error);
|
package/processinstance-query.js
CHANGED
@@ -6,8 +6,8 @@ module.exports = function (RED) {
|
|
6
6
|
node.on('input', function (msg) {
|
7
7
|
let query = RED.util.evaluateNodeProperty(config.query, config.query_type, node, msg);
|
8
8
|
|
9
|
-
|
10
|
-
const client = engine.engineClient;
|
9
|
+
node.engine = RED.nodes.getNode(config.engine);
|
10
|
+
const client = node.engine.engineClient;
|
11
11
|
|
12
12
|
if (!client) {
|
13
13
|
node.error('No engine configured.');
|
@@ -15,7 +15,7 @@ module.exports = function (RED) {
|
|
15
15
|
}
|
16
16
|
|
17
17
|
client.processInstances
|
18
|
-
.query(query, { identity: engine.identity })
|
18
|
+
.query(query, { identity: node.engine.identity })
|
19
19
|
.then((matchingInstances) => {
|
20
20
|
msg.payload = matchingInstances;
|
21
21
|
|
package/signal-event-trigger.js
CHANGED
@@ -4,9 +4,9 @@ module.exports = function (RED) {
|
|
4
4
|
var node = this;
|
5
5
|
|
6
6
|
node.on('input', function (msg) {
|
7
|
-
|
7
|
+
node.engine = RED.nodes.getNode(config.engine);
|
8
8
|
|
9
|
-
const client = engine.engineClient;
|
9
|
+
const client = node.engine.engineClient;
|
10
10
|
|
11
11
|
if (!client) {
|
12
12
|
node.error('No engine configured.');
|
@@ -17,7 +17,7 @@ module.exports = function (RED) {
|
|
17
17
|
.triggerSignalEvent(config.signalname, {
|
18
18
|
processInstanceId: msg.processinstanceid,
|
19
19
|
payload: msg.payload,
|
20
|
-
identity: engine.identity,
|
20
|
+
identity: node.engine.identity,
|
21
21
|
})
|
22
22
|
.then((result) => {
|
23
23
|
msg.payload = result;
|
@@ -6,17 +6,6 @@ module.exports = function (RED) {
|
|
6
6
|
|
7
7
|
let subscription;
|
8
8
|
|
9
|
-
const eventEmitter = node.engine.eventEmitter;
|
10
|
-
|
11
|
-
eventEmitter.on('engine-client-dispose', () => {
|
12
|
-
node.engine.engineClient.userTasks.removeSubscription(subscription, node.engine.identity);
|
13
|
-
});
|
14
|
-
|
15
|
-
eventEmitter.on('engine-client-changed', () => {
|
16
|
-
node.log('new engineClient received');
|
17
|
-
register();
|
18
|
-
});
|
19
|
-
|
20
9
|
const register = async () => {
|
21
10
|
let currentIdentity = node.engine.identity;
|
22
11
|
|
package/usertask-input.js
CHANGED
@@ -4,9 +4,9 @@ module.exports = function (RED) {
|
|
4
4
|
var node = this;
|
5
5
|
|
6
6
|
node.on('input', function (msg) {
|
7
|
-
|
7
|
+
node.engine = RED.nodes.getNode(config.engine);
|
8
8
|
|
9
|
-
const client = engine.engineClient;
|
9
|
+
const client = node.engine.engineClient;
|
10
10
|
|
11
11
|
if (!client) {
|
12
12
|
node.error('No engine configured.');
|
@@ -20,7 +20,7 @@ module.exports = function (RED) {
|
|
20
20
|
};
|
21
21
|
|
22
22
|
client.userTasks
|
23
|
-
.query(query, { identity: engine.identity })
|
23
|
+
.query(query, { identity: node.engine.identity })
|
24
24
|
.then((matchingFlowNodes) => {
|
25
25
|
if (config.sendtype === 'array') {
|
26
26
|
msg.payload = { userTasks: matchingFlowNodes.userTasks || [] };
|
package/usertask-output.js
CHANGED
@@ -9,9 +9,9 @@ module.exports = function (RED) {
|
|
9
9
|
|
10
10
|
const userTaskResult = RED.util.evaluateNodeProperty(config.result, config.result_type, node, msg);
|
11
11
|
|
12
|
-
|
12
|
+
node.engine = RED.nodes.getNode(config.engine);
|
13
13
|
|
14
|
-
const client = engine.engineClient;
|
14
|
+
const client = node.engine.engineClient;
|
15
15
|
|
16
16
|
if (!client) {
|
17
17
|
node.error('No engine configured.');
|
@@ -19,7 +19,7 @@ module.exports = function (RED) {
|
|
19
19
|
}
|
20
20
|
|
21
21
|
client.userTasks
|
22
|
-
.finishUserTask(flowNodeInstanceId, userTaskResult, engine.identity)
|
22
|
+
.finishUserTask(flowNodeInstanceId, userTaskResult, node.engine.identity)
|
23
23
|
.then(() => {
|
24
24
|
node.send(msg);
|
25
25
|
})
|