bpmn-client 1.2.1 → 1.3.8
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/Sample/package.json +44 -44
- package/cli.js +244 -0
- package/cli.ts +268 -0
- package/demo.env +4 -0
- package/local.env +4 -0
- package/monitor.js +91 -0
- package/monitor.ts +100 -0
- package/package.json +5 -8
- package/src/BPMNClient.js +26 -9
- package/src/BPMNClient.ts +26 -11
- package/test/.mocharc.json +12 -0
- package/test/feature/.env +1 -3
- package/test/feature/carServer.js +9 -4
- package/test.env +4 -0
- package/test.js +45 -2
- package/test.ts +56 -3
- package/test2.js +70 -249
- package/test3.js +42 -0
- package/test3.ts +40 -0
- package/test/mocha.opts +0 -5
- package/test/resources/Invoice.js +0 -91
- package/test/resources/car.js +0 -69
- package/test/resources/loop.js +0 -50
- package/test2.ts +0 -326
package/Sample/package.json
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "bpmn-client-sample",
|
|
3
|
-
"version": "1.2.0",
|
|
4
|
-
"license": "MIT",
|
|
5
|
-
"scripts": {
|
|
6
|
-
"build": "tsc --build",
|
|
7
|
-
"clean": "tsc --build --clean",
|
|
8
|
-
"start": "node app.ts",
|
|
9
|
-
"test": "mocha -R dot",
|
|
10
|
-
"posttest": "eslint . --cache && npm run toc",
|
|
11
|
-
"wintest": "node_modules/.bin/mocha",
|
|
12
|
-
"start:watch": "tsc-watch --project . --onSuccess \"nodemon ./test.ts\"",
|
|
13
|
-
"toc": "node scripts/generate-api-toc ./docs/API.md,./docs/Examples.md",
|
|
14
|
-
"test-md": "node scripts/test-markdown.js ./docs/API.md && node scripts/test-markdown.js ./docs/Examples.md"
|
|
15
|
-
},
|
|
16
|
-
"description": "Client API for BPMN-Server webservices",
|
|
17
|
-
"keywords": [
|
|
18
|
-
"BPMN",
|
|
19
|
-
"BPMN 2.0",
|
|
20
|
-
"Workflow",
|
|
21
|
-
"Node.js",
|
|
22
|
-
"TypeScript"
|
|
23
|
-
],
|
|
24
|
-
"author": {
|
|
25
|
-
"name": "ralphhanna"
|
|
26
|
-
},
|
|
27
|
-
"dependencies": {
|
|
28
|
-
"bpmn-client": "*",
|
|
29
|
-
"connect-busboy": "0.0.2",
|
|
30
|
-
"core-js": "^3.6.5",
|
|
31
|
-
"dotenv": "^16.0.1"
|
|
32
|
-
},
|
|
33
|
-
"devDependencies": {
|
|
34
|
-
"@types/mime": "^1.3.1",
|
|
35
|
-
"@types/node": "^8.10.66",
|
|
36
|
-
"@types/serve-static": "^1.7.32",
|
|
37
|
-
"nodemon": "^2.0.19",
|
|
38
|
-
"ts-node": "^8.10.2",
|
|
39
|
-
"typescript": "^3.9.7"
|
|
40
|
-
},
|
|
41
|
-
"engines": {
|
|
42
|
-
"node": "^14.0.0"
|
|
43
|
-
}
|
|
44
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "bpmn-client-sample",
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"build": "tsc --build",
|
|
7
|
+
"clean": "tsc --build --clean",
|
|
8
|
+
"start": "node app.ts",
|
|
9
|
+
"test": "mocha -R dot",
|
|
10
|
+
"posttest": "eslint . --cache && npm run toc",
|
|
11
|
+
"wintest": "node_modules/.bin/mocha",
|
|
12
|
+
"start:watch": "tsc-watch --project . --onSuccess \"nodemon ./test.ts\"",
|
|
13
|
+
"toc": "node scripts/generate-api-toc ./docs/API.md,./docs/Examples.md",
|
|
14
|
+
"test-md": "node scripts/test-markdown.js ./docs/API.md && node scripts/test-markdown.js ./docs/Examples.md"
|
|
15
|
+
},
|
|
16
|
+
"description": "Client API for BPMN-Server webservices",
|
|
17
|
+
"keywords": [
|
|
18
|
+
"BPMN",
|
|
19
|
+
"BPMN 2.0",
|
|
20
|
+
"Workflow",
|
|
21
|
+
"Node.js",
|
|
22
|
+
"TypeScript"
|
|
23
|
+
],
|
|
24
|
+
"author": {
|
|
25
|
+
"name": "ralphhanna"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"bpmn-client": "*",
|
|
29
|
+
"connect-busboy": "0.0.2",
|
|
30
|
+
"core-js": "^3.6.5",
|
|
31
|
+
"dotenv": "^16.0.1"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@types/mime": "^1.3.1",
|
|
35
|
+
"@types/node": "^8.10.66",
|
|
36
|
+
"@types/serve-static": "^1.7.32",
|
|
37
|
+
"nodemon": "^2.0.19",
|
|
38
|
+
"ts-node": "^8.10.2",
|
|
39
|
+
"typescript": "^3.9.7"
|
|
40
|
+
},
|
|
41
|
+
"engines": {
|
|
42
|
+
"node": "^14.0.0"
|
|
43
|
+
}
|
|
44
|
+
}
|
package/cli.js
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
//import { BPMNClient } from "bpmn-client";
|
|
13
|
+
const _1 = require("./");
|
|
14
|
+
const readline = require("readline");
|
|
15
|
+
const dotenv = require('dotenv');
|
|
16
|
+
const res = dotenv.config();
|
|
17
|
+
const server = new _1.BPMNClient(process.env.HOST, process.env.PORT, process.env.API_KEY);
|
|
18
|
+
const cl = readline.createInterface(process.stdin, process.stdout);
|
|
19
|
+
const question = function (q) {
|
|
20
|
+
return new Promise((res, rej) => {
|
|
21
|
+
cl.question(q, answer => {
|
|
22
|
+
res(answer);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
completeUserTask();
|
|
27
|
+
function menu() {
|
|
28
|
+
console.log('Commands:');
|
|
29
|
+
console.log(' q to quit');
|
|
30
|
+
console.log(' s start process ');
|
|
31
|
+
console.log(' lo list outstanding items');
|
|
32
|
+
console.log(' li list items');
|
|
33
|
+
console.log(' l list instances for a process');
|
|
34
|
+
console.log(' di display Instance information');
|
|
35
|
+
console.log(' i Invoke Task');
|
|
36
|
+
console.log(' sgl Signal Task');
|
|
37
|
+
console.log(' msg Message Task');
|
|
38
|
+
console.log(' d delete instnaces');
|
|
39
|
+
console.log(' ? repeat this list');
|
|
40
|
+
}
|
|
41
|
+
function completeUserTask() {
|
|
42
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
menu();
|
|
44
|
+
let option = '';
|
|
45
|
+
var command;
|
|
46
|
+
while (option !== 'q') {
|
|
47
|
+
command = yield question('Enter Command, q to quit\n\r>');
|
|
48
|
+
let opts = command.split(' ');
|
|
49
|
+
option = opts[0];
|
|
50
|
+
switch (option) {
|
|
51
|
+
case '?':
|
|
52
|
+
menu();
|
|
53
|
+
break;
|
|
54
|
+
case 'lo':
|
|
55
|
+
console.log("Listing Outstanding Items");
|
|
56
|
+
yield findItems({ "items.status": "wait" });
|
|
57
|
+
break;
|
|
58
|
+
case 'l':
|
|
59
|
+
console.log("Listing Instances for a Process");
|
|
60
|
+
yield listInstances();
|
|
61
|
+
break;
|
|
62
|
+
case 'li':
|
|
63
|
+
console.log("list items");
|
|
64
|
+
yield listItems();
|
|
65
|
+
break;
|
|
66
|
+
case 'di':
|
|
67
|
+
console.log("Displaying Instance Details");
|
|
68
|
+
yield displayInstance();
|
|
69
|
+
break;
|
|
70
|
+
case 'i':
|
|
71
|
+
console.log("invoking");
|
|
72
|
+
yield invoke();
|
|
73
|
+
break;
|
|
74
|
+
case 's':
|
|
75
|
+
console.log("Starting Process");
|
|
76
|
+
yield start();
|
|
77
|
+
break;
|
|
78
|
+
case 'sgl':
|
|
79
|
+
console.log("Signalling Process");
|
|
80
|
+
yield signal();
|
|
81
|
+
break;
|
|
82
|
+
case 'msg':
|
|
83
|
+
console.log("Message Process");
|
|
84
|
+
yield message();
|
|
85
|
+
break;
|
|
86
|
+
case 'd':
|
|
87
|
+
console.log("deleting");
|
|
88
|
+
yield delInstances();
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
console.log("bye");
|
|
93
|
+
cl.close();
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
function start() {
|
|
97
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
98
|
+
const name = yield question('Please provide your process name: ');
|
|
99
|
+
let taskData = yield question('Please provide your Task Data (json obj) if any: ');
|
|
100
|
+
console.log(taskData);
|
|
101
|
+
try {
|
|
102
|
+
if (taskData === "") {
|
|
103
|
+
taskData = {};
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
taskData = JSON.parse(taskData.toString());
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
catch (exc) {
|
|
110
|
+
console.log(exc);
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
let response = yield server.engine.start(name, taskData);
|
|
114
|
+
console.log("Process " + name + " started:", 'InstanceId', response.id);
|
|
115
|
+
return yield displayInstance(response.id);
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
function findItems(query) {
|
|
119
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
120
|
+
var items = yield server.datastore.findItems(query);
|
|
121
|
+
console.log(items);
|
|
122
|
+
for (var i = 0; i < items.length; i++) {
|
|
123
|
+
let item = items[i];
|
|
124
|
+
console.log(`${item.name} - ${item.elementId} instanceId: ${item['instanceId']}`);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
function listItems() {
|
|
129
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
130
|
+
const answer = yield question('Please items criteria name value pair; example: items.status wait ');
|
|
131
|
+
let str = '' + answer;
|
|
132
|
+
const list = str.split(' ');
|
|
133
|
+
let criteria = {};
|
|
134
|
+
console.log(list);
|
|
135
|
+
for (var i = 0; i < list.length; i += 2) {
|
|
136
|
+
console.log(list[i], list[i + 1]);
|
|
137
|
+
criteria[list[i]] = list[i + 1];
|
|
138
|
+
}
|
|
139
|
+
console.log(criteria);
|
|
140
|
+
var items = yield server.datastore.findItems(criteria);
|
|
141
|
+
console.log(items.length);
|
|
142
|
+
for (var j = 0; j < items.length; j++) {
|
|
143
|
+
let item = items[j];
|
|
144
|
+
console.log(`element: ${item.elementId} status: ${item.status} processName: ${item['processName']} InstanceId: ${item['instanceId']} id: ${item.id}`);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
function listInstances() {
|
|
149
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
150
|
+
const name = yield question('Please provide your process name: ');
|
|
151
|
+
let insts = yield server.datastore.findInstances({ name: name });
|
|
152
|
+
for (var i = 0; i < insts.length; i++) {
|
|
153
|
+
let inst = insts[i];
|
|
154
|
+
console.log(`name: ${inst.name} status: ${inst.status} instanceId: ${inst.id}
|
|
155
|
+
startedAt: ${inst.startedAt} endedAt ${inst.endedAt}`, 'data:', inst.data);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
function displayInstance(instanceId = null) {
|
|
160
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
161
|
+
if (instanceId == null)
|
|
162
|
+
instanceId = yield question('Please provide your Instance ID: ');
|
|
163
|
+
let insts = yield server.datastore.findInstances({ id: instanceId });
|
|
164
|
+
for (var i = 0; i < insts.length; i++) {
|
|
165
|
+
let inst = insts[i];
|
|
166
|
+
var items = inst.items;
|
|
167
|
+
console.log(`name: ${inst.name} status: ${inst.status} instanceId: ${inst.id}
|
|
168
|
+
startedAt: ${inst.startedAt} endedAt ${inst.endedAt}`, 'data:', inst.data);
|
|
169
|
+
for (var j = 0; j < items.length; j++) {
|
|
170
|
+
let item = items[j];
|
|
171
|
+
console.log(`element: ${item.elementId} status: ${item.status} id: ${item.id}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
function invoke() {
|
|
177
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
178
|
+
const instanceId = yield question('Please provide your Instance ID: ');
|
|
179
|
+
const taskId = yield question('Please provide your Task ID: ');
|
|
180
|
+
let taskData = yield question('Please provide your Task Data (json obj) if any: ');
|
|
181
|
+
if (taskData === "") {
|
|
182
|
+
taskData = {};
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
taskData = JSON.parse(taskData.toString());
|
|
186
|
+
}
|
|
187
|
+
try {
|
|
188
|
+
let response = yield server.engine.invoke({ id: instanceId, "items.elementId": taskId }, taskData);
|
|
189
|
+
console.log("Completed UserTask:", taskId);
|
|
190
|
+
return yield displayInstance(response.id);
|
|
191
|
+
}
|
|
192
|
+
catch (exc) {
|
|
193
|
+
console.log("Invoking task failed for:", taskId, instanceId);
|
|
194
|
+
yield findItems({ id: instanceId, "items.elementId": taskId });
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
function signal() {
|
|
199
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
200
|
+
const signalId = yield question('Please provide signal ID: ');
|
|
201
|
+
let signalData = yield question('Please provide your Data (json obj) if any: ');
|
|
202
|
+
//if (typeof signalData === 'string' && signalData.trim() === '') {
|
|
203
|
+
if (signalData === "") {
|
|
204
|
+
signalData = {};
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
try {
|
|
208
|
+
signalData = JSON.parse(signalData.toString());
|
|
209
|
+
}
|
|
210
|
+
catch (exc) {
|
|
211
|
+
console.log(exc);
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
let response = yield server.engine.throwSignal(signalId, signalData);
|
|
216
|
+
console.log("Signal Response:", response);
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
function message() {
|
|
220
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
221
|
+
const messageId = yield question('Please provide message ID: ');
|
|
222
|
+
let messageData = yield question('Please provide your Data (json obj) if any: ');
|
|
223
|
+
if (typeof messageData === 'string' && messageData.trim() === '') {
|
|
224
|
+
messageData = {};
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
messageData = JSON.parse(messageData.toString());
|
|
228
|
+
}
|
|
229
|
+
let response = yield server.engine.throwMessage(messageId, messageData);
|
|
230
|
+
if (response['id'])
|
|
231
|
+
return yield displayInstance(response['id']);
|
|
232
|
+
else {
|
|
233
|
+
console.log(' no results.');
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
function delInstances() {
|
|
239
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
240
|
+
const name = yield question('Please provide process name to delete instances for process: ');
|
|
241
|
+
let response = yield server.datastore.deleteInstances({ name: name });
|
|
242
|
+
console.log("Instances Deleted:", response['result']['deletedCount']);
|
|
243
|
+
});
|
|
244
|
+
}
|
package/cli.ts
ADDED
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
//import { BPMNClient } from "bpmn-client";
|
|
2
|
+
import { BPMNClient } from './';
|
|
3
|
+
|
|
4
|
+
import * as readline from 'readline';
|
|
5
|
+
|
|
6
|
+
const dotenv = require('dotenv');
|
|
7
|
+
const res = dotenv.config();
|
|
8
|
+
|
|
9
|
+
const server = new BPMNClient(process.env.HOST, process.env.PORT, process.env.API_KEY);
|
|
10
|
+
|
|
11
|
+
const cl = readline.createInterface( process.stdin, process.stdout );
|
|
12
|
+
const question = function(q) {
|
|
13
|
+
return new Promise( (res, rej) => {
|
|
14
|
+
cl.question( q, answer => {
|
|
15
|
+
res(answer);
|
|
16
|
+
})
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
completeUserTask();
|
|
21
|
+
|
|
22
|
+
function menu() {
|
|
23
|
+
console.log('Commands:');
|
|
24
|
+
console.log(' q to quit');
|
|
25
|
+
console.log(' s start process ');
|
|
26
|
+
console.log(' lo list outstanding items');
|
|
27
|
+
console.log(' li list items');
|
|
28
|
+
console.log(' l list instances for a process');
|
|
29
|
+
console.log(' di display Instance information');
|
|
30
|
+
console.log(' i Invoke Task');
|
|
31
|
+
console.log(' sgl Signal Task');
|
|
32
|
+
console.log(' msg Message Task');
|
|
33
|
+
console.log(' d delete instnaces');
|
|
34
|
+
console.log(' ? repeat this list');
|
|
35
|
+
|
|
36
|
+
}
|
|
37
|
+
async function completeUserTask() {
|
|
38
|
+
|
|
39
|
+
menu();
|
|
40
|
+
|
|
41
|
+
let option='';
|
|
42
|
+
var command;
|
|
43
|
+
while(option!=='q')
|
|
44
|
+
{
|
|
45
|
+
command= await question('Enter Command, q to quit\n\r>');
|
|
46
|
+
let opts=command.split(' ');
|
|
47
|
+
option=opts[0];
|
|
48
|
+
switch(option)
|
|
49
|
+
{
|
|
50
|
+
case '?':
|
|
51
|
+
menu();
|
|
52
|
+
break;
|
|
53
|
+
case 'lo':
|
|
54
|
+
console.log("Listing Outstanding Items");
|
|
55
|
+
await findItems({ "items.status": "wait"});
|
|
56
|
+
break;
|
|
57
|
+
case 'l':
|
|
58
|
+
console.log("Listing Instances for a Process");
|
|
59
|
+
await listInstances();
|
|
60
|
+
break;
|
|
61
|
+
case 'li':
|
|
62
|
+
console.log("list items");
|
|
63
|
+
await listItems();
|
|
64
|
+
break;
|
|
65
|
+
case 'di':
|
|
66
|
+
console.log("Displaying Instance Details");
|
|
67
|
+
await displayInstance();
|
|
68
|
+
break;
|
|
69
|
+
case 'i':
|
|
70
|
+
console.log("invoking");
|
|
71
|
+
await invoke();
|
|
72
|
+
break;
|
|
73
|
+
|
|
74
|
+
case 's':
|
|
75
|
+
console.log("Starting Process");
|
|
76
|
+
await start();
|
|
77
|
+
break;
|
|
78
|
+
case 'sgl':
|
|
79
|
+
console.log("Signalling Process");
|
|
80
|
+
await signal();
|
|
81
|
+
break;
|
|
82
|
+
case 'msg':
|
|
83
|
+
console.log("Message Process");
|
|
84
|
+
await message();
|
|
85
|
+
break;
|
|
86
|
+
|
|
87
|
+
case 'd':
|
|
88
|
+
console.log("deleting");
|
|
89
|
+
await delInstances();
|
|
90
|
+
break;
|
|
91
|
+
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
console.log("bye");
|
|
98
|
+
|
|
99
|
+
cl.close();
|
|
100
|
+
|
|
101
|
+
}
|
|
102
|
+
async function start()
|
|
103
|
+
{
|
|
104
|
+
const name = await question('Please provide your process name: ');
|
|
105
|
+
let taskData = await question('Please provide your Task Data (json obj) if any: ');
|
|
106
|
+
|
|
107
|
+
console.log(taskData);
|
|
108
|
+
|
|
109
|
+
try {
|
|
110
|
+
if (taskData === "") {
|
|
111
|
+
taskData = {};
|
|
112
|
+
} else {
|
|
113
|
+
taskData = JSON.parse(taskData.toString());
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
}
|
|
117
|
+
catch (exc) {
|
|
118
|
+
console.log(exc);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
let response=await server.engine.start(name, taskData);
|
|
123
|
+
|
|
124
|
+
console.log("Process " + name + " started:", 'InstanceId', response.id);
|
|
125
|
+
return await displayInstance(response.id);
|
|
126
|
+
}
|
|
127
|
+
async function findItems(query) {
|
|
128
|
+
var items = await server.datastore.findItems(query);
|
|
129
|
+
|
|
130
|
+
console.log(items);
|
|
131
|
+
for (var i = 0; i < items.length; i++) {
|
|
132
|
+
let item = items[i];
|
|
133
|
+
console.log(`${item.name} - ${item.elementId} instanceId: ${item['instanceId']}`);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
}
|
|
137
|
+
async function listItems() {
|
|
138
|
+
const answer = await question('Please items criteria name value pair; example: items.status wait ');
|
|
139
|
+
let str=''+ answer;
|
|
140
|
+
|
|
141
|
+
const list = str.split(' ');
|
|
142
|
+
let criteria = {};
|
|
143
|
+
console.log(list);
|
|
144
|
+
for (var i = 0; i < list.length; i += 2) {
|
|
145
|
+
console.log(list[i], list[i + 1]);
|
|
146
|
+
criteria[list[i]] = list[i + 1];
|
|
147
|
+
}
|
|
148
|
+
console.log(criteria);
|
|
149
|
+
|
|
150
|
+
var items = await server.datastore.findItems(criteria)
|
|
151
|
+
console.log(items.length);
|
|
152
|
+
|
|
153
|
+
for (var j = 0; j < items.length; j++) {
|
|
154
|
+
let item = items[j];
|
|
155
|
+
console.log(`element: ${item.elementId} status: ${item.status} processName: ${item['processName']} InstanceId: ${item['instanceId']} id: ${item.id}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
async function listInstances() {
|
|
160
|
+
const name = await question('Please provide your process name: ');
|
|
161
|
+
|
|
162
|
+
let insts = await server.datastore.findInstances({ name: name})
|
|
163
|
+
|
|
164
|
+
for (var i = 0; i < insts.length; i++) {
|
|
165
|
+
let inst = insts[i];
|
|
166
|
+
console.log(`name: ${inst.name} status: ${inst.status} instanceId: ${inst.id}
|
|
167
|
+
startedAt: ${inst.startedAt} endedAt ${inst.endedAt}`, 'data:', inst.data);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
async function displayInstance(instanceId=null) {
|
|
172
|
+
|
|
173
|
+
if (instanceId==null)
|
|
174
|
+
instanceId = await question('Please provide your Instance ID: ');
|
|
175
|
+
|
|
176
|
+
let insts = await server.datastore.findInstances({id: instanceId})
|
|
177
|
+
|
|
178
|
+
for (var i = 0; i < insts.length; i++) {
|
|
179
|
+
let inst = insts[i];
|
|
180
|
+
var items = inst.items;
|
|
181
|
+
console.log(`name: ${inst.name} status: ${inst.status} instanceId: ${inst.id}
|
|
182
|
+
startedAt: ${inst.startedAt} endedAt ${inst.endedAt}`,'data:', inst.data);
|
|
183
|
+
for (var j = 0; j < items.length; j++) {
|
|
184
|
+
let item= items[j];
|
|
185
|
+
console.log(`element: ${item.elementId} status: ${item.status} id: ${item.id}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
async function invoke()
|
|
190
|
+
{
|
|
191
|
+
const instanceId = await question('Please provide your Instance ID: ');
|
|
192
|
+
const taskId = await question('Please provide your Task ID: ');
|
|
193
|
+
let taskData = await question('Please provide your Task Data (json obj) if any: ');
|
|
194
|
+
|
|
195
|
+
if (taskData === ""){
|
|
196
|
+
taskData = {};
|
|
197
|
+
}else{
|
|
198
|
+
taskData = JSON.parse(taskData.toString());
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
try {
|
|
202
|
+
let response = await server.engine.invoke(
|
|
203
|
+
{ id: instanceId, "items.elementId": taskId }
|
|
204
|
+
, taskData);
|
|
205
|
+
|
|
206
|
+
console.log("Completed UserTask:", taskId);
|
|
207
|
+
|
|
208
|
+
return await displayInstance(response.id);
|
|
209
|
+
}
|
|
210
|
+
catch (exc) {
|
|
211
|
+
console.log("Invoking task failed for:", taskId, instanceId);
|
|
212
|
+
await findItems({ id: instanceId, "items.elementId": taskId });
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
async function signal() {
|
|
219
|
+
const signalId = await question('Please provide signal ID: ');
|
|
220
|
+
|
|
221
|
+
let signalData = await question('Please provide your Data (json obj) if any: ');
|
|
222
|
+
|
|
223
|
+
//if (typeof signalData === 'string' && signalData.trim() === '') {
|
|
224
|
+
if (signalData === "") {
|
|
225
|
+
signalData = {};
|
|
226
|
+
} else {
|
|
227
|
+
try {
|
|
228
|
+
signalData = JSON.parse(signalData.toString());
|
|
229
|
+
}
|
|
230
|
+
catch (exc) {
|
|
231
|
+
console.log(exc);
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
let response = await server.engine.throwSignal(signalId, signalData);
|
|
237
|
+
|
|
238
|
+
console.log("Signal Response:", response);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
async function message() {
|
|
242
|
+
const messageId = await question('Please provide message ID: ');
|
|
243
|
+
|
|
244
|
+
let messageData = await question('Please provide your Data (json obj) if any: ');
|
|
245
|
+
|
|
246
|
+
if (typeof messageData === 'string' && messageData.trim() === '') {
|
|
247
|
+
messageData = {};
|
|
248
|
+
} else {
|
|
249
|
+
messageData = JSON.parse(messageData.toString());
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
let response = await server.engine.throwMessage(messageId, messageData);
|
|
253
|
+
|
|
254
|
+
if (response['id'])
|
|
255
|
+
return await displayInstance(response['id']);
|
|
256
|
+
else {
|
|
257
|
+
console.log(' no results.');
|
|
258
|
+
return null;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
async function delInstances() {
|
|
263
|
+
const name = await question('Please provide process name to delete instances for process: ');
|
|
264
|
+
|
|
265
|
+
let response = await server.datastore.deleteInstances({ name: name });
|
|
266
|
+
|
|
267
|
+
console.log("Instances Deleted:", response['result']['deletedCount']);
|
|
268
|
+
}
|
package/demo.env
ADDED
package/local.env
ADDED