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/src/BPMNClient.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import { IInstanceData, IItemData , IDefinitionData} from './interfaces/DataObjects';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
const dotenv = require('dotenv');
|
|
5
|
-
const res = dotenv.config();
|
|
6
|
-
|
|
7
3
|
console.log("BPMNClient 1.2");
|
|
8
4
|
|
|
9
5
|
const https = require('https');
|
|
@@ -12,13 +8,14 @@ const http = require('http');
|
|
|
12
8
|
class WebService {
|
|
13
9
|
statusCode;
|
|
14
10
|
result;
|
|
11
|
+
response;
|
|
15
12
|
constructor() { }
|
|
16
13
|
async invoke(params, options) {
|
|
17
14
|
|
|
18
15
|
var driver = http;
|
|
19
16
|
var body = JSON.stringify(params);
|
|
20
17
|
|
|
21
|
-
console.log(options, params);
|
|
18
|
+
// console.log(options, params);
|
|
22
19
|
if (options.port == 443)
|
|
23
20
|
driver = https;
|
|
24
21
|
|
|
@@ -28,7 +25,8 @@ class WebService {
|
|
|
28
25
|
try {
|
|
29
26
|
|
|
30
27
|
driver.request(options, function (res) {
|
|
31
|
-
console.log('STATUS: ' + res.statusCode);
|
|
28
|
+
// console.log('STATUS: ' + res.statusCode);
|
|
29
|
+
this.response = res;
|
|
32
30
|
//console.log(res);
|
|
33
31
|
self.statusCode = res.statusCode;
|
|
34
32
|
res.setEncoding('utf8');
|
|
@@ -61,6 +59,8 @@ class BPMNClient extends WebService {
|
|
|
61
59
|
apiKey;
|
|
62
60
|
engine: ClientEngine;
|
|
63
61
|
datastore: ClientDatastore;
|
|
62
|
+
definitions: ClientDefinitions;
|
|
63
|
+
|
|
64
64
|
constructor(host, port, apiKey) {
|
|
65
65
|
super();
|
|
66
66
|
this.host = host;
|
|
@@ -68,6 +68,7 @@ class BPMNClient extends WebService {
|
|
|
68
68
|
this.apiKey = apiKey;
|
|
69
69
|
this.engine = new ClientEngine(this);
|
|
70
70
|
this.datastore = new ClientDatastore(this);
|
|
71
|
+
this.definitions = new ClientDefinitions(this);
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
async get(url, data = {}) {
|
|
@@ -131,8 +132,9 @@ class ClientEngine {
|
|
|
131
132
|
constructor(client) {
|
|
132
133
|
this.client = client;
|
|
133
134
|
}
|
|
134
|
-
async start(name, data): Promise<IInstanceData> {
|
|
135
|
-
const ret = await this.client.post('engine/start',
|
|
135
|
+
async start(name, data = {} , startNodeId = null, options = {}): Promise<IInstanceData> {
|
|
136
|
+
const ret = await this.client.post('engine/start',
|
|
137
|
+
{ name, data, startNodeId, options });
|
|
136
138
|
if (ret['errors']) {
|
|
137
139
|
console.log(ret['errors']);
|
|
138
140
|
throw new Error(ret['errors']);
|
|
@@ -150,6 +152,23 @@ class ClientEngine {
|
|
|
150
152
|
return instance;
|
|
151
153
|
}
|
|
152
154
|
|
|
155
|
+
async throwMessage(messageId, data) {
|
|
156
|
+
const ret = await this.client.put('engine/throwMessage', { "messageId": messageId , "data": data });
|
|
157
|
+
if (ret['errors']) {
|
|
158
|
+
console.log(ret['errors']);
|
|
159
|
+
throw new Error(ret['errors']);
|
|
160
|
+
}
|
|
161
|
+
return ret;
|
|
162
|
+
}
|
|
163
|
+
async throwSignal(signalId, data) {
|
|
164
|
+
const ret = await this.client.put('engine/throwSignal', { "signalId": signalId, "data": data });
|
|
165
|
+
if (ret['errors']) {
|
|
166
|
+
console.log(ret['errors']);
|
|
167
|
+
throw new Error(ret['errors']);
|
|
168
|
+
}
|
|
169
|
+
return ret;
|
|
170
|
+
}
|
|
171
|
+
|
|
153
172
|
async get(query): Promise<IInstanceData> {
|
|
154
173
|
const ret = await this.client.get('engine/get', query);
|
|
155
174
|
if (ret['errors']) {
|
|
@@ -159,6 +178,14 @@ class ClientEngine {
|
|
|
159
178
|
const instance = ret['instance'] as IInstanceData;
|
|
160
179
|
return instance;
|
|
161
180
|
}
|
|
181
|
+
async status() {
|
|
182
|
+
const ret = await this.client.get('engine/status', {});
|
|
183
|
+
if (ret['errors']) {
|
|
184
|
+
console.log(ret['errors']);
|
|
185
|
+
throw new Error(ret['errors']);
|
|
186
|
+
}
|
|
187
|
+
return ret;
|
|
188
|
+
}
|
|
162
189
|
}
|
|
163
190
|
class ClientDatastore {
|
|
164
191
|
private client: BPMNClient;
|
|
@@ -186,7 +213,7 @@ class ClientDatastore {
|
|
|
186
213
|
return instances;
|
|
187
214
|
}
|
|
188
215
|
async deleteInstances(query) {
|
|
189
|
-
return await this.client.del('datastore/
|
|
216
|
+
return await this.client.del('datastore/deleteInstances', query);
|
|
190
217
|
}
|
|
191
218
|
}
|
|
192
219
|
class ClientDefinitions {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"diff": true,
|
|
3
|
+
"extension": [ "js" ],
|
|
4
|
+
"package": "package.json",
|
|
5
|
+
"reporter": "spec",
|
|
6
|
+
"slow": 1500,
|
|
7
|
+
"timeout": 50000,
|
|
8
|
+
"recursive": true,
|
|
9
|
+
"file": [ "test/helpers/setup.js" ],
|
|
10
|
+
"ui": "mocha-cakes-2",
|
|
11
|
+
"watch-files": [ "test/feature/*.js" ]
|
|
12
|
+
}
|
package/test/feature/.env
CHANGED
|
@@ -3,10 +3,10 @@ const { BPMNClient } = require("../../src/");
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
const API_KEY = '12345';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const HOST = 'test.omniworkflow.com';
|
|
9
|
-
const PORT = '443';
|
|
6
|
+
const HOST = 'localhost';
|
|
7
|
+
const PORT = '3000';
|
|
8
|
+
//const HOST = 'test.omniworkflow.com';
|
|
9
|
+
//const PORT = '443';
|
|
10
10
|
|
|
11
11
|
const BASE_URL = 'api';
|
|
12
12
|
|
|
@@ -89,6 +89,11 @@ Feature('Buy Used Car- clean and repair', () => {
|
|
|
89
89
|
|
|
90
90
|
});
|
|
91
91
|
|
|
92
|
+
and('find engine status', async () => {
|
|
93
|
+
|
|
94
|
+
var insts = await server.engine.status();
|
|
95
|
+
|
|
96
|
+
});
|
|
92
97
|
|
|
93
98
|
//
|
|
94
99
|
and('find instances', async () => {
|
package/test.env
ADDED
package/test.js
CHANGED
|
@@ -9,21 +9,72 @@ 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 _1 = require("./");
|
|
13
13
|
console.log("Testing BPMNClient");
|
|
14
|
+
const dotenv = require('dotenv');
|
|
15
|
+
const res = dotenv.config();
|
|
16
|
+
console.log(res);
|
|
14
17
|
test();
|
|
15
18
|
function test() {
|
|
16
19
|
return __awaiter(this, void 0, void 0, function* () {
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
const server = new _1.BPMNClient(process.env.HOST, process.env.PORT, process.env.API_KEY);
|
|
21
|
+
const caseId = 3040;
|
|
22
|
+
var delResp = yield server.datastore.deleteInstances({ name: 'Buy Used Car' });
|
|
23
|
+
//console.log(delResp);
|
|
24
|
+
//return;
|
|
25
|
+
var defs = yield server.definitions.list();
|
|
26
|
+
console.log(defs);
|
|
27
|
+
var def = yield server.definitions.load('Buy Used Car');
|
|
28
|
+
console.log(def['elements']);
|
|
29
|
+
//var instance = await server.engine.start("Buy Used Car", {});
|
|
30
|
+
var instance = yield server.engine.start("Buy Used Car", { caseId: caseId });
|
|
31
|
+
console.log("instance.id", instance.id, instance.name, instance.status, instance.data.caseId);
|
|
32
|
+
var response = yield server.engine.invoke({ id: instance.id, "items.elementId": 'task_Buy' }, { needsCleaning: "Yes", needsRepairs: "Yes" });
|
|
33
|
+
console.log('after buy', response.id, response.data);
|
|
34
|
+
response = yield server.engine.invoke({ id: instance.id, "items.elementId": 'task_clean' }, {});
|
|
35
|
+
console.log('after clean', response.id, response.data);
|
|
36
|
+
response = yield server.engine.invoke({ id: instance.id, "items.elementId": 'task_repair' }, {});
|
|
37
|
+
console.log('after repair', response.id, response.data);
|
|
38
|
+
try {
|
|
39
|
+
response = yield server.engine.invoke({ id: instance.id, "items.elementId": 'task_Drive' }, {});
|
|
40
|
+
console.log('after drive', response.id, response.data);
|
|
41
|
+
}
|
|
42
|
+
catch (exc) {
|
|
43
|
+
console.log(exc);
|
|
44
|
+
}
|
|
45
|
+
var items = yield server.datastore.findItems({ "items.status": "end", "items.elementId": "task_Buy" });
|
|
46
|
+
items.forEach(item => {
|
|
47
|
+
console.log('item: id==>' + item.elementId, item.type, item.name, 'status==>', item.status);
|
|
48
|
+
});
|
|
49
|
+
var insts = yield server.datastore.findInstances({ data: { caseId: caseId } });
|
|
50
|
+
insts.forEach(inst => {
|
|
51
|
+
console.log('Inst for CaseId id==>' + inst.id, inst.name, inst.data.caseId, 'status==>', inst.status);
|
|
52
|
+
});
|
|
53
|
+
var insts = yield server.datastore.findInstances({ id: instance.id });
|
|
21
54
|
insts.forEach(inst => {
|
|
22
|
-
|
|
55
|
+
for (var i = 0; i < inst.items.length; i++) {
|
|
56
|
+
var item = inst.items[i];
|
|
57
|
+
console.log(' item: elementId==>' + item.elementId, item.name, 'status==>', item.status);
|
|
58
|
+
}
|
|
23
59
|
});
|
|
24
|
-
var
|
|
60
|
+
var inst = yield server.engine.get({ id: instance.id });
|
|
61
|
+
for (var i = 0; i < inst.items.length; i++) {
|
|
62
|
+
var item = inst.items[i];
|
|
63
|
+
console.log(' item: elementId==>' + item.elementId, item.name, 'status==>', item.status);
|
|
64
|
+
}
|
|
65
|
+
// var items = await server.datastore.findItems({ query: { "items.elementId": "task_Buy" } });
|
|
66
|
+
var items = yield server.datastore.findItems({ id: instance.id });
|
|
25
67
|
items.forEach(item => {
|
|
26
|
-
console.log('item: id==>' + item.
|
|
68
|
+
console.log('item: id==>' + item.elementId, item.type, item.name, 'status==>', item.status);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function delay(time, result) {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
return new Promise(function (resolve) {
|
|
75
|
+
setTimeout(function () {
|
|
76
|
+
resolve(result);
|
|
77
|
+
}, time);
|
|
27
78
|
});
|
|
28
79
|
});
|
|
29
80
|
}
|
package/test.ts
CHANGED
|
@@ -1,27 +1,121 @@
|
|
|
1
|
-
import { BPMNClient } from './
|
|
1
|
+
import { BPMNClient } from './';
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
console.log("Testing BPMNClient");
|
|
5
|
+
const dotenv = require('dotenv');
|
|
6
|
+
const res = dotenv.config();
|
|
7
|
+
|
|
8
|
+
console.log(res);
|
|
5
9
|
test();
|
|
6
10
|
|
|
7
11
|
async function test() {
|
|
8
|
-
const client = new BPMNClient('localhost', 3000,12345);
|
|
9
|
-
var instance = await client.engine.start("Buy Used Car", {} );
|
|
10
|
-
console.log("instance.id", instance.id, instance.name,instance.status);
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
const server = new BPMNClient(process.env.HOST, process.env.PORT, process.env.API_KEY);
|
|
14
|
+
|
|
15
|
+
const caseId = 3040;
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
var delResp = await server.datastore.deleteInstances({ name: 'Buy Used Car' });
|
|
19
|
+
//console.log(delResp);
|
|
20
|
+
//return;
|
|
21
|
+
var defs = await server.definitions.list();
|
|
22
|
+
|
|
23
|
+
console.log(defs);
|
|
24
|
+
var def = await server.definitions.load('Buy Used Car');
|
|
25
|
+
|
|
26
|
+
console.log(def['elements']);
|
|
27
|
+
|
|
28
|
+
//var instance = await server.engine.start("Buy Used Car", {});
|
|
29
|
+
|
|
30
|
+
var instance = await server.engine.start("Buy Used Car", { caseId: caseId });
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
console.log("instance.id", instance.id, instance.name, instance.status, instance.data.caseId);
|
|
34
|
+
|
|
35
|
+
var response = await server.engine.invoke(
|
|
36
|
+
{ id: instance.id, "items.elementId": 'task_Buy' }
|
|
37
|
+
, { needsCleaning: "Yes", needsRepairs: "Yes" });
|
|
38
|
+
|
|
39
|
+
console.log('after buy', response.id, response.data);
|
|
40
|
+
|
|
41
|
+
response = await server.engine.invoke(
|
|
42
|
+
{ id: instance.id, "items.elementId": 'task_clean' }
|
|
43
|
+
, {});
|
|
44
|
+
|
|
45
|
+
console.log('after clean', response.id, response.data);
|
|
46
|
+
|
|
47
|
+
response = await server.engine.invoke(
|
|
48
|
+
{ id: instance.id, "items.elementId": 'task_repair' }
|
|
49
|
+
, {});
|
|
50
|
+
|
|
51
|
+
console.log('after repair', response.id, response.data);
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
try {
|
|
55
|
+
response = await server.engine.invoke(
|
|
56
|
+
{ id: instance.id, "items.elementId": 'task_Drive' }
|
|
57
|
+
, {});
|
|
58
|
+
|
|
59
|
+
console.log('after drive', response.id, response.data);
|
|
60
|
+
|
|
61
|
+
}
|
|
62
|
+
catch (exc) {
|
|
63
|
+
console.log(exc);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
var items = await server.datastore.findItems({ "items.status": "end", "items.elementId": "task_Buy" });
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
items.forEach(item => {
|
|
73
|
+
console.log('item: id==>' + item.elementId, item.type, item.name, 'status==>', item.status);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
var insts = await server.datastore.findInstances({ data: { caseId: caseId } });
|
|
79
|
+
|
|
80
|
+
insts.forEach(inst => {
|
|
81
|
+
console.log('Inst for CaseId id==>' + inst.id, inst.name, inst.data.caseId, 'status==>', inst.status);
|
|
82
|
+
});
|
|
83
|
+
var insts = await server.datastore.findInstances({ id: instance.id });
|
|
13
84
|
|
|
14
85
|
insts.forEach(inst => {
|
|
15
|
-
|
|
86
|
+
for (var i = 0; i < inst.items.length; i++) {
|
|
87
|
+
var item = inst.items[i];
|
|
88
|
+
console.log(' item: elementId==>' + item.elementId, item.name, 'status==>', item.status);
|
|
89
|
+
|
|
90
|
+
}
|
|
16
91
|
});
|
|
17
92
|
|
|
93
|
+
var inst = await server.engine.get({ id: instance.id });
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
for (var i = 0; i < inst.items.length; i++) {
|
|
97
|
+
var item = inst.items[i];
|
|
98
|
+
console.log(' item: elementId==>' + item.elementId, item.name, 'status==>', item.status);
|
|
99
|
+
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
// var items = await server.datastore.findItems({ query: { "items.elementId": "task_Buy" } });
|
|
105
|
+
var items = await server.datastore.findItems({ id: instance.id });
|
|
18
106
|
|
|
19
|
-
var items = await client.datastore.findItems({ query: { "items.elementId": "task_Buy" } });
|
|
20
107
|
|
|
21
|
-
|
|
22
108
|
items.forEach(item => {
|
|
23
|
-
console.log('item: id==>' + item.
|
|
109
|
+
console.log('item: id==>' + item.elementId, item.type, item.name, 'status==>', item.status);
|
|
24
110
|
});
|
|
111
|
+
}
|
|
25
112
|
|
|
113
|
+
async function delay(time, result) {
|
|
114
|
+
return new Promise(function (resolve) {
|
|
115
|
+
setTimeout(function () {
|
|
116
|
+
resolve(result);
|
|
117
|
+
}, time);
|
|
118
|
+
});
|
|
26
119
|
}
|
|
27
120
|
|
|
121
|
+
|