bpmn-client 1.2.0 → 1.3.2
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/.env +4 -0
- package/Sample/CarExample.js +62 -0
- package/Sample/CarExample.ts +97 -0
- package/Sample/package.json +44 -44
- package/Sample/test.js +6 -3
- package/Sample/test.ts +7 -2
- package/demo.env +4 -0
- package/local.env +4 -0
- package/monitor.js +91 -0
- package/monitor.ts +100 -0
- package/package.json +7 -9
- package/src/BPMNClient.js +37 -7
- package/src/BPMNClient.ts +36 -9
- 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 +59 -8
- package/test.ts +103 -9
- package/test2.js +70 -249
- package/test3.js +42 -0
- package/test3.ts +40 -0
- package/testCLI.js +152 -0
- package/testCLI.ts +163 -0
- package/bpmn-client-1.2.0.tgz +0 -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/.env
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
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
|
+
const bpmn_client_1 = require("bpmn-client");
|
|
13
|
+
const dotenv = require('dotenv');
|
|
14
|
+
const res = dotenv.config();
|
|
15
|
+
console.log("Testing BPMNClient 3");
|
|
16
|
+
const http = require('http');
|
|
17
|
+
test();
|
|
18
|
+
function test() {
|
|
19
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
console.log('-------- car.js -----------');
|
|
21
|
+
const server = new bpmn_client_1.BPMNClient(process.env.HOST, process.env.PORT, process.env.API_KEY);
|
|
22
|
+
var caseId = Math.floor(Math.random() * 10000);
|
|
23
|
+
let name = 'Buy Used Car';
|
|
24
|
+
let instanceId;
|
|
25
|
+
var instance = yield server.engine.start("Buy Used Car", { caseId: caseId });
|
|
26
|
+
console.log("instance.id", instance.id, instance.name, instance.status, instance.data.caseId);
|
|
27
|
+
var response = yield server.engine.invoke({ id: instance.id, "items.elementId": 'task_Buy' }, { needsCleaning: "Yes", needsRepairs: "Yes" });
|
|
28
|
+
console.log('after buy', response.id, response.data);
|
|
29
|
+
response = yield server.engine.invoke({ id: instance.id, "items.elementId": 'task_clean' }, {});
|
|
30
|
+
console.log('after clean', response.id, response.data);
|
|
31
|
+
response = yield server.engine.invoke({ id: instance.id, "items.elementId": 'task_repair' }, {});
|
|
32
|
+
console.log('after repair', response.id, response.data);
|
|
33
|
+
try {
|
|
34
|
+
response = yield server.engine.invoke({ id: instance.id, "items.elementId": 'task_Drive' }, {});
|
|
35
|
+
console.log('after drive', response.id, response.data);
|
|
36
|
+
}
|
|
37
|
+
catch (exc) {
|
|
38
|
+
console.log(exc);
|
|
39
|
+
}
|
|
40
|
+
var insts = yield server.datastore.findInstances({ data: { caseId: caseId } });
|
|
41
|
+
insts.forEach(inst => {
|
|
42
|
+
console.log('Inst for CaseId id==>' + inst.id, inst.name, inst.data.caseId, 'status==>', inst.status);
|
|
43
|
+
});
|
|
44
|
+
var insts = yield server.datastore.findInstances({ id: instance.id });
|
|
45
|
+
insts.forEach(inst => {
|
|
46
|
+
for (var i = 0; i < inst.items.length; i++) {
|
|
47
|
+
var item = inst.items[i];
|
|
48
|
+
console.log(' item: elementId==>' + item.elementId, item.name, 'status==>', item.status);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
var inst = yield server.engine.get({ id: instance.id });
|
|
52
|
+
for (var i = 0; i < inst.items.length; i++) {
|
|
53
|
+
var item = inst.items[i];
|
|
54
|
+
console.log(' item: elementId==>' + item.elementId, item.name, 'status==>', item.status);
|
|
55
|
+
}
|
|
56
|
+
// var items = await server.datastore.findItems({ query: { "items.elementId": "task_Buy" } });
|
|
57
|
+
var items = yield server.datastore.findItems({ id: instance.id });
|
|
58
|
+
items.forEach(item => {
|
|
59
|
+
console.log('item: id==>' + item.elementId, item.type, item.name, 'status==>', item.status);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { BPMNClient } from "bpmn-client";
|
|
2
|
+
|
|
3
|
+
const dotenv = require('dotenv');
|
|
4
|
+
const res = dotenv.config();
|
|
5
|
+
|
|
6
|
+
console.log("Testing BPMNClient 3");
|
|
7
|
+
|
|
8
|
+
const http = require('http');
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
test();
|
|
12
|
+
|
|
13
|
+
async function test() {
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
console.log('-------- car.js -----------');
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
const server= new BPMNClient(process.env.HOST, process.env.PORT, process.env.API_KEY);
|
|
20
|
+
var caseId = Math.floor(Math.random() * 10000);
|
|
21
|
+
|
|
22
|
+
let name = 'Buy Used Car';
|
|
23
|
+
let instanceId;
|
|
24
|
+
|
|
25
|
+
var instance = await server.engine.start("Buy Used Car", { caseId: caseId });
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
console.log("instance.id", instance.id, instance.name, instance.status, instance.data.caseId);
|
|
29
|
+
|
|
30
|
+
var response = await server.engine.invoke(
|
|
31
|
+
{ id: instance.id, "items.elementId": 'task_Buy' }
|
|
32
|
+
, { needsCleaning: "Yes", needsRepairs: "Yes" });
|
|
33
|
+
|
|
34
|
+
console.log('after buy', response.id, response.data);
|
|
35
|
+
|
|
36
|
+
response = await server.engine.invoke(
|
|
37
|
+
{ id: instance.id, "items.elementId": 'task_clean' }
|
|
38
|
+
, {});
|
|
39
|
+
|
|
40
|
+
console.log('after clean', response.id, response.data);
|
|
41
|
+
|
|
42
|
+
response = await server.engine.invoke(
|
|
43
|
+
{ id: instance.id, "items.elementId": 'task_repair' }
|
|
44
|
+
, {});
|
|
45
|
+
|
|
46
|
+
console.log('after repair', response.id, response.data);
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
try {
|
|
50
|
+
response = await server.engine.invoke(
|
|
51
|
+
{ id: instance.id, "items.elementId": 'task_Drive' }
|
|
52
|
+
, {});
|
|
53
|
+
|
|
54
|
+
console.log('after drive', response.id, response.data);
|
|
55
|
+
|
|
56
|
+
}
|
|
57
|
+
catch (exc) {
|
|
58
|
+
console.log(exc);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
var insts = await server.datastore.findInstances({ data: { caseId: caseId } });
|
|
64
|
+
|
|
65
|
+
insts.forEach(inst => {
|
|
66
|
+
console.log('Inst for CaseId id==>' + inst.id, inst.name, inst.data.caseId, 'status==>', inst.status);
|
|
67
|
+
});
|
|
68
|
+
var insts = await server.datastore.findInstances({ id: instance.id });
|
|
69
|
+
|
|
70
|
+
insts.forEach(inst => {
|
|
71
|
+
for (var i = 0; i < inst.items.length; i++) {
|
|
72
|
+
var item = inst.items[i];
|
|
73
|
+
console.log(' item: elementId==>' + item.elementId, item.name, 'status==>', item.status);
|
|
74
|
+
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
var inst = await server.engine.get({ id: instance.id });
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
for (var i = 0; i < inst.items.length; i++) {
|
|
82
|
+
var item = inst.items[i];
|
|
83
|
+
console.log(' item: elementId==>' + item.elementId, item.name, 'status==>', item.status);
|
|
84
|
+
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
// var items = await server.datastore.findItems({ query: { "items.elementId": "task_Buy" } });
|
|
90
|
+
var items = await server.datastore.findItems({ id: instance.id });
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
items.forEach(item => {
|
|
94
|
+
console.log('item: id==>' + item.elementId, item.type, item.name, 'status==>', item.status);
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
}
|
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.
|
|
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/Sample/test.js
CHANGED
|
@@ -9,12 +9,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const
|
|
12
|
+
const bpmn_client_1 = require("bpmn-client");
|
|
13
|
+
console.log("Testing BPMNClient");
|
|
14
|
+
const dotenv = require('dotenv');
|
|
15
|
+
const res = dotenv.config();
|
|
13
16
|
console.log("Testing BPMNClient");
|
|
14
17
|
test();
|
|
15
18
|
function test() {
|
|
16
19
|
return __awaiter(this, void 0, void 0, function* () {
|
|
17
|
-
const client = new
|
|
20
|
+
//const client = new BPMNClient('localhost', 3000,12345);
|
|
21
|
+
const client = new bpmn_client_1.BPMNClient(process.env.HOST, process.env.PORT, process.env.API_KEY);
|
|
18
22
|
var instance = yield client.engine.start("Buy Used Car", {});
|
|
19
23
|
console.log("instance.id", instance.id, instance.name, instance.status);
|
|
20
24
|
var insts = yield client.datastore.findInstances({ 'status': 'running' });
|
|
@@ -27,4 +31,3 @@ function test() {
|
|
|
27
31
|
});
|
|
28
32
|
});
|
|
29
33
|
}
|
|
30
|
-
//# sourceMappingURL=test.js.map
|
package/Sample/test.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
import { BPMNClient } from "bpmn-client
|
|
1
|
+
import { BPMNClient } from "bpmn-client";
|
|
2
|
+
|
|
3
|
+
console.log("Testing BPMNClient");
|
|
4
|
+
const dotenv = require('dotenv');
|
|
5
|
+
const res = dotenv.config();
|
|
2
6
|
|
|
3
7
|
|
|
4
8
|
console.log("Testing BPMNClient");
|
|
5
9
|
test();
|
|
6
10
|
|
|
7
11
|
async function test() {
|
|
8
|
-
const client = new BPMNClient('localhost', 3000,12345);
|
|
12
|
+
//const client = new BPMNClient('localhost', 3000,12345);
|
|
13
|
+
const client= new BPMNClient(process.env.HOST, process.env.PORT, process.env.API_KEY);
|
|
9
14
|
var instance = await client.engine.start("Buy Used Car", {} );
|
|
10
15
|
console.log("instance.id", instance.id, instance.name,instance.status);
|
|
11
16
|
|
package/demo.env
ADDED
package/local.env
ADDED
package/monitor.js
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
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
|
+
const _1 = require("./");
|
|
13
|
+
console.log("Testing BPMNClient");
|
|
14
|
+
const dotenv = require('dotenv');
|
|
15
|
+
const res = dotenv.config();
|
|
16
|
+
console.log(res);
|
|
17
|
+
monitor();
|
|
18
|
+
function monitor() {
|
|
19
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
const server = new _1.BPMNClient(process.env.HOST, process.env.PORT, process.env.API_KEY);
|
|
21
|
+
console.log('running monitor');
|
|
22
|
+
for (var i = 0; i < 1000; i++) {
|
|
23
|
+
yield checkStatus(server);
|
|
24
|
+
yield delay(15000, 'test');
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function checkStatus(server, reason = '') {
|
|
29
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
var list = yield server.engine.status();
|
|
31
|
+
var insT = 0, insR = 0, itmT = 0, itmR = 0, tokT = 0, tokR = 0;
|
|
32
|
+
for (var i = 0; i < list.length; i++) {
|
|
33
|
+
var exec = list[i];
|
|
34
|
+
var dInstance = null;
|
|
35
|
+
insT++;
|
|
36
|
+
tokT += exec.instance.tokens.length;
|
|
37
|
+
if (exec.instance.status == 'running')
|
|
38
|
+
insR++;
|
|
39
|
+
var started = dateDiff(exec.instance.startedAt);
|
|
40
|
+
var ended = dateDiff(exec.instance.endedAt);
|
|
41
|
+
var msg = ` Instance for '${exec.instance.name}' Status: ${exec.status} Started At ${started} Ended ${ended} items: ${exec.instance.items.length}`;
|
|
42
|
+
try {
|
|
43
|
+
dInstance = yield server.datastore.findInstances({ id: exec.instance.id }, {});
|
|
44
|
+
//console.log(reason+' logs:',exec.instance.logs.length, dInstance.logs.length,dInstance.data.caseId);
|
|
45
|
+
if (dInstance.length > 0)
|
|
46
|
+
msg += ' items:' + dInstance[0].items.length;
|
|
47
|
+
}
|
|
48
|
+
catch (exc) {
|
|
49
|
+
msg += ' no instance' + exc.toString();
|
|
50
|
+
}
|
|
51
|
+
console.log(msg);
|
|
52
|
+
}
|
|
53
|
+
console.log(`${reason} ->Instances: Total: ${insT} Running: ${insR}`); // Tokens: ${tokT} `);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
function delay(time, result) {
|
|
57
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
return new Promise(function (resolve) {
|
|
59
|
+
setTimeout(function () {
|
|
60
|
+
resolve(result);
|
|
61
|
+
}, time);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function dateDiff(dateStr) {
|
|
66
|
+
var endDate = new Date();
|
|
67
|
+
var startTime = new Date(dateStr);
|
|
68
|
+
var time1 = endDate.getTime();
|
|
69
|
+
var time2 = startTime;
|
|
70
|
+
var seconds = Math.abs(time1 - time2) / 1000;
|
|
71
|
+
// get total seconds between the times
|
|
72
|
+
var delta = seconds; //Math.abs(date_future - date_now) / 1000;
|
|
73
|
+
// calculate (and subtract) whole days
|
|
74
|
+
var days = Math.floor(delta / 86400);
|
|
75
|
+
delta -= days * 86400;
|
|
76
|
+
// calculate (and subtract) whole hours
|
|
77
|
+
var hours = Math.floor(delta / 3600) % 24;
|
|
78
|
+
delta -= hours * 3600;
|
|
79
|
+
// calculate (and subtract) whole minutes
|
|
80
|
+
var minutes = Math.floor(delta / 60) % 60;
|
|
81
|
+
delta -= minutes * 60;
|
|
82
|
+
// what's left is seconds
|
|
83
|
+
var seconds = Math.floor(delta % 60); // in theory the modulus is not required
|
|
84
|
+
if (days > 0)
|
|
85
|
+
return (days + " days");
|
|
86
|
+
if (hours > 0)
|
|
87
|
+
return (hours + " hours");
|
|
88
|
+
if (minutes > 0)
|
|
89
|
+
return (minutes + " minutes");
|
|
90
|
+
return (seconds + " seconds");
|
|
91
|
+
}
|
package/monitor.ts
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { BPMNClient } from './';
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
console.log("Testing BPMNClient");
|
|
5
|
+
const dotenv = require('dotenv');
|
|
6
|
+
const res = dotenv.config();
|
|
7
|
+
|
|
8
|
+
console.log(res);
|
|
9
|
+
monitor();
|
|
10
|
+
|
|
11
|
+
async function monitor() {
|
|
12
|
+
|
|
13
|
+
const server = new BPMNClient(process.env.HOST, process.env.PORT, process.env.API_KEY);
|
|
14
|
+
|
|
15
|
+
console.log('running monitor');
|
|
16
|
+
for (var i = 0; i < 1000; i++) {
|
|
17
|
+
await checkStatus(server);
|
|
18
|
+
await delay(15000, 'test');
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
}
|
|
23
|
+
async function checkStatus(server, reason = '') {
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
var list = await server.engine.status();
|
|
27
|
+
|
|
28
|
+
var insT = 0, insR = 0, itmT = 0, itmR = 0, tokT = 0, tokR = 0;
|
|
29
|
+
for (var i = 0; i < list.length; i++) {
|
|
30
|
+
var exec = list[i];
|
|
31
|
+
var dInstance = null;
|
|
32
|
+
insT++;
|
|
33
|
+
tokT += exec.instance.tokens.length;
|
|
34
|
+
if (exec.instance.status == 'running') insR++;
|
|
35
|
+
var started = dateDiff(exec.instance.startedAt);
|
|
36
|
+
var ended = dateDiff(exec.instance.endedAt);
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
var msg = ` Instance for '${exec.instance.name}' Status: ${exec.status} Started At ${started} Ended ${ended} items: ${exec.instance.items.length}`;
|
|
40
|
+
try {
|
|
41
|
+
dInstance = await server.datastore.findInstances({ id: exec.instance.id }, {});
|
|
42
|
+
//console.log(reason+' logs:',exec.instance.logs.length, dInstance.logs.length,dInstance.data.caseId);
|
|
43
|
+
if (dInstance.length > 0)
|
|
44
|
+
msg += ' items:' + dInstance[0].items.length;
|
|
45
|
+
}
|
|
46
|
+
catch (exc) {
|
|
47
|
+
msg += ' no instance' + exc.toString();
|
|
48
|
+
}
|
|
49
|
+
console.log(msg);
|
|
50
|
+
|
|
51
|
+
}
|
|
52
|
+
console.log(`${reason} ->Instances: Total: ${insT} Running: ${insR}`);// Tokens: ${tokT} `);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
async function delay(time, result) {
|
|
56
|
+
return new Promise(function (resolve) {
|
|
57
|
+
setTimeout(function () {
|
|
58
|
+
resolve(result);
|
|
59
|
+
}, time);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
function dateDiff(dateStr) {
|
|
67
|
+
|
|
68
|
+
var endDate = new Date();
|
|
69
|
+
var startTime = new Date(dateStr);
|
|
70
|
+
var time1 = endDate.getTime();
|
|
71
|
+
var time2 = startTime as unknown as number;
|
|
72
|
+
|
|
73
|
+
var seconds = Math.abs(time1 - time2) / 1000;
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
// get total seconds between the times
|
|
77
|
+
var delta = seconds; //Math.abs(date_future - date_now) / 1000;
|
|
78
|
+
|
|
79
|
+
// calculate (and subtract) whole days
|
|
80
|
+
var days = Math.floor(delta / 86400);
|
|
81
|
+
delta -= days * 86400;
|
|
82
|
+
|
|
83
|
+
// calculate (and subtract) whole hours
|
|
84
|
+
var hours = Math.floor(delta / 3600) % 24;
|
|
85
|
+
delta -= hours * 3600;
|
|
86
|
+
|
|
87
|
+
// calculate (and subtract) whole minutes
|
|
88
|
+
var minutes = Math.floor(delta / 60) % 60;
|
|
89
|
+
delta -= minutes * 60;
|
|
90
|
+
|
|
91
|
+
// what's left is seconds
|
|
92
|
+
var seconds = Math.floor(delta % 60); // in theory the modulus is not required
|
|
93
|
+
if (days > 0)
|
|
94
|
+
return (days + " days");
|
|
95
|
+
if (hours > 0)
|
|
96
|
+
return (hours + " hours");
|
|
97
|
+
if (minutes > 0)
|
|
98
|
+
return (minutes + " minutes");
|
|
99
|
+
return (seconds + " seconds");
|
|
100
|
+
}
|
package/package.json
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bpmn-client",
|
|
3
|
-
"version": "1.2
|
|
3
|
+
"version": "1.3.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "tsc --build",
|
|
7
|
+
"compileRun": "tsc --build && node test.js",
|
|
8
|
+
"dev": "nodemon -e ts --exec \"npm run compileRun\"",
|
|
7
9
|
"clean": "tsc --build --clean",
|
|
8
|
-
"start": "node
|
|
9
|
-
"test": "mocha -
|
|
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"
|
|
10
|
+
"start": "node test.ts",
|
|
11
|
+
"test": "mocha -exit --config=test\\.mocharc.json"
|
|
15
12
|
},
|
|
16
13
|
"description": "Client API for BPMN-Server webservices",
|
|
17
14
|
"keywords": [
|
|
@@ -42,6 +39,7 @@
|
|
|
42
39
|
"typescript": "^3.9.7"
|
|
43
40
|
},
|
|
44
41
|
"engines": {
|
|
45
|
-
"node": "
|
|
42
|
+
"node": ">=12.0.0"
|
|
43
|
+
|
|
46
44
|
}
|
|
47
45
|
}
|
package/src/BPMNClient.js
CHANGED
|
@@ -10,8 +10,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.ClientDefinitions = exports.ClientDatastore = exports.ClientEngine = exports.BPMNClient = void 0;
|
|
13
|
-
const dotenv = require('dotenv');
|
|
14
|
-
const res = dotenv.config();
|
|
15
13
|
console.log("BPMNClient 1.2");
|
|
16
14
|
const https = require('https');
|
|
17
15
|
const http = require('http');
|
|
@@ -21,7 +19,7 @@ class WebService {
|
|
|
21
19
|
return __awaiter(this, void 0, void 0, function* () {
|
|
22
20
|
var driver = http;
|
|
23
21
|
var body = JSON.stringify(params);
|
|
24
|
-
console.log(options, params);
|
|
22
|
+
// console.log(options, params);
|
|
25
23
|
if (options.port == 443)
|
|
26
24
|
driver = https;
|
|
27
25
|
let data = '';
|
|
@@ -29,7 +27,8 @@ class WebService {
|
|
|
29
27
|
return new Promise(function (resolve, reject) {
|
|
30
28
|
try {
|
|
31
29
|
driver.request(options, function (res) {
|
|
32
|
-
console.log('STATUS: ' + res.statusCode);
|
|
30
|
+
// console.log('STATUS: ' + res.statusCode);
|
|
31
|
+
this.response = res;
|
|
33
32
|
//console.log(res);
|
|
34
33
|
self.statusCode = res.statusCode;
|
|
35
34
|
res.setEncoding('utf8');
|
|
@@ -60,6 +59,7 @@ class BPMNClient extends WebService {
|
|
|
60
59
|
this.apiKey = apiKey;
|
|
61
60
|
this.engine = new ClientEngine(this);
|
|
62
61
|
this.datastore = new ClientDatastore(this);
|
|
62
|
+
this.definitions = new ClientDefinitions(this);
|
|
63
63
|
}
|
|
64
64
|
get(url, data = {}) {
|
|
65
65
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -119,9 +119,9 @@ class ClientEngine {
|
|
|
119
119
|
constructor(client) {
|
|
120
120
|
this.client = client;
|
|
121
121
|
}
|
|
122
|
-
start(name, data) {
|
|
122
|
+
start(name, data = {}, startNodeId = null, options = {}) {
|
|
123
123
|
return __awaiter(this, void 0, void 0, function* () {
|
|
124
|
-
const ret = yield this.client.post('engine/start', { name, data });
|
|
124
|
+
const ret = yield this.client.post('engine/start', { name, data, startNodeId, options });
|
|
125
125
|
if (ret['errors']) {
|
|
126
126
|
console.log(ret['errors']);
|
|
127
127
|
throw new Error(ret['errors']);
|
|
@@ -141,6 +141,26 @@ class ClientEngine {
|
|
|
141
141
|
return instance;
|
|
142
142
|
});
|
|
143
143
|
}
|
|
144
|
+
throwMessage(messageId, data) {
|
|
145
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
146
|
+
const ret = yield this.client.put('engine/throwMessage', { "messageId": messageId, "data": data });
|
|
147
|
+
if (ret['errors']) {
|
|
148
|
+
console.log(ret['errors']);
|
|
149
|
+
throw new Error(ret['errors']);
|
|
150
|
+
}
|
|
151
|
+
return ret;
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
throwSignal(signalId, data) {
|
|
155
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
156
|
+
const ret = yield this.client.put('engine/throwSignal', { "signalId": signalId, "data": data });
|
|
157
|
+
if (ret['errors']) {
|
|
158
|
+
console.log(ret['errors']);
|
|
159
|
+
throw new Error(ret['errors']);
|
|
160
|
+
}
|
|
161
|
+
return ret;
|
|
162
|
+
});
|
|
163
|
+
}
|
|
144
164
|
get(query) {
|
|
145
165
|
return __awaiter(this, void 0, void 0, function* () {
|
|
146
166
|
const ret = yield this.client.get('engine/get', query);
|
|
@@ -152,6 +172,16 @@ class ClientEngine {
|
|
|
152
172
|
return instance;
|
|
153
173
|
});
|
|
154
174
|
}
|
|
175
|
+
status() {
|
|
176
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
177
|
+
const ret = yield this.client.get('engine/status', {});
|
|
178
|
+
if (ret['errors']) {
|
|
179
|
+
console.log(ret['errors']);
|
|
180
|
+
throw new Error(ret['errors']);
|
|
181
|
+
}
|
|
182
|
+
return ret;
|
|
183
|
+
});
|
|
184
|
+
}
|
|
155
185
|
}
|
|
156
186
|
exports.ClientEngine = ClientEngine;
|
|
157
187
|
class ClientDatastore {
|
|
@@ -182,7 +212,7 @@ class ClientDatastore {
|
|
|
182
212
|
}
|
|
183
213
|
deleteInstances(query) {
|
|
184
214
|
return __awaiter(this, void 0, void 0, function* () {
|
|
185
|
-
return yield this.client.del('datastore/
|
|
215
|
+
return yield this.client.del('datastore/deleteInstances', query);
|
|
186
216
|
});
|
|
187
217
|
}
|
|
188
218
|
}
|