bpmn-client 1.2.5 → 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/test2.js CHANGED
@@ -1,6 +1,4 @@
1
1
  "use strict";
2
- //import { BPMNClient } from './';
3
- //import { BPMNServer, IInstanceData, IItemData } from './';
4
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
5
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -11,260 +9,83 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
9
  });
12
10
  };
13
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ const _1 = require("./");
13
+ console.log("Testing BPMNClient");
14
14
  const dotenv = require('dotenv');
15
15
  const res = dotenv.config();
16
- console.log("Testing BPMNClient 2");
17
- const https = require('https');
18
- const http = require('http');
19
- class WebService {
20
- constructor() { }
21
- invoke(params, options) {
22
- return __awaiter(this, void 0, void 0, function* () {
23
- var driver = http;
24
- var body = JSON.stringify(params);
25
- console.log(options, params);
26
- if (options.port == 443)
27
- driver = https;
28
- let data = '';
29
- let self = this;
30
- return new Promise(function (resolve, reject) {
31
- try {
32
- driver.request(options, function (res) {
33
- console.log('STATUS: ' + res.statusCode);
34
- //console.log(res);
35
- self.statusCode = res.statusCode;
36
- res.setEncoding('utf8');
37
- res.on('data', function (chunk) {
38
- data += chunk;
39
- });
40
- res.on('end', () => {
41
- self.result = JSON.parse(data);
42
- resolve(self.result);
43
- });
44
- }).on("error", (err) => {
45
- console.log("Error: " + err.message);
46
- reject(err);
47
- }).end(body);
48
- }
49
- catch (exc) {
50
- console.log(exc);
51
- }
52
- });
53
- });
54
- }
55
- }
56
- class BPMNClient extends WebService {
57
- constructor(host, port, apiKey) {
58
- super();
59
- this.host = host;
60
- this.port = port;
61
- this.apiKey = apiKey;
62
- this.engine = new ClientEngine(this);
63
- this.datastore = new ClientDatastore(this);
64
- this.definitions = new ClientDefinitions(this);
65
- }
66
- get(url, data = {}) {
67
- return __awaiter(this, void 0, void 0, function* () {
68
- return yield this.request(url, 'GET', data);
69
- });
70
- }
71
- post(url, data = {}) {
72
- return __awaiter(this, void 0, void 0, function* () {
73
- return yield this.request(url, 'POST', data);
74
- });
75
- }
76
- put(url, data = {}) {
77
- return __awaiter(this, void 0, void 0, function* () {
78
- return yield this.request(url, 'PUT', data);
79
- });
80
- }
81
- del(url, data = {}) {
82
- return __awaiter(this, void 0, void 0, function* () {
83
- return yield this.request(url, 'DELETE', data);
84
- });
85
- }
86
- request(url, method, params) {
87
- return __awaiter(this, void 0, void 0, function* () {
88
- var body = JSON.stringify(params);
89
- var options;
90
- if (params) {
91
- options = {
92
- host: this.host,
93
- port: this.port,
94
- path: '/api/' + url,
95
- method: method,
96
- headers: {
97
- "Content-Type": "application/json",
98
- "x-api-key": this.apiKey,
99
- "Accept": "*/*",
100
- // "User-Agent": "PostmanRuntime/ 7.26.8",
101
- // "Accept-Encoding": "gzip, deflate, br",
102
- "Connection": "keep-alive",
103
- "Content-Length": Buffer.byteLength(body)
104
- }
105
- };
106
- }
107
- else {
108
- options = {
109
- host: this.host,
110
- port: this.port,
111
- path: '/api/' + url,
112
- method: method
113
- };
114
- }
115
- return yield this.invoke(params, options);
116
- });
117
- }
118
- }
119
- class ClientEngine {
120
- constructor(client) {
121
- this.client = client;
122
- }
123
- start(name, data) {
124
- return __awaiter(this, void 0, void 0, function* () {
125
- const ret = yield this.client.post('engine/start', { name, data });
126
- if (ret['errors']) {
127
- console.log(ret['errors']);
128
- throw new Error(ret['errors']);
129
- }
130
- const instance = ret;
131
- return instance;
132
- });
133
- }
134
- invoke(query, data) {
135
- return __awaiter(this, void 0, void 0, function* () {
136
- const ret = yield this.client.put('engine/invoke', { query, data });
137
- if (ret['errors']) {
138
- console.log(ret['errors']);
139
- throw new Error(ret['errors']);
140
- }
141
- const instance = ret['instance'];
142
- return instance;
143
- });
144
- }
145
- get(query) {
146
- return __awaiter(this, void 0, void 0, function* () {
147
- const ret = yield this.client.get('engine/get', query);
148
- if (ret['errors']) {
149
- console.log(ret['errors']);
150
- throw new Error(ret['errors']);
151
- }
152
- const instance = ret['instance'];
153
- return instance;
154
- });
155
- }
156
- }
157
- class ClientDatastore {
158
- constructor(client) {
159
- this.client = client;
160
- }
161
- findItems(query) {
162
- return __awaiter(this, void 0, void 0, function* () {
163
- var res = yield this.client.get('datastore/findItems', query);
164
- if (res['errors']) {
165
- console.log(res['errors']);
166
- throw new Error(res['errors']);
167
- }
168
- const items = res['items'];
169
- return items;
170
- });
171
- }
172
- findInstances(query) {
173
- return __awaiter(this, void 0, void 0, function* () {
174
- const res = yield this.client.get('datastore/findInstances', query);
175
- if (res['errors']) {
176
- console.log(res['errors']);
177
- throw new Error(res['errors']);
178
- }
179
- const instances = res['instances'];
180
- return instances;
181
- });
182
- }
183
- deleteInstances(query) {
184
- return __awaiter(this, void 0, void 0, function* () {
185
- return yield this.client.del('datastore/delete', query);
186
- });
187
- }
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
+ });
188
27
  }
189
- class ClientDefinitions {
190
- constructor(client) {
191
- this.client = client;
192
- }
193
- list() {
194
- return __awaiter(this, void 0, void 0, function* () {
195
- var res = yield this.client.get('definitions/list', []);
196
- if (res['errors']) {
197
- console.log(res['errors']);
198
- throw new Error(res['errors']);
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;
199
47
  }
200
- return res;
201
- });
202
- }
203
- load(name) {
204
- return __awaiter(this, void 0, void 0, function* () {
205
- const res = yield this.client.get(encodeURI('definitions/load/' + name), { name: name });
206
- if (res['errors']) {
207
- console.log(res['errors']);
208
- throw new Error(res['errors']);
48
+ catch (exc) {
49
+ msg += ' no instance' + exc.toString();
209
50
  }
210
- console.log(res);
211
- return res;
212
- });
213
- }
51
+ console.log(msg);
52
+ }
53
+ console.log(`${reason} ->Instances: Total: ${insT} Running: ${insR}`); // Tokens: ${tokT} `);
54
+ });
214
55
  }
215
- test();
216
- function test() {
56
+ function delay(time, result) {
217
57
  return __awaiter(this, void 0, void 0, function* () {
218
- const API_KEY = '12345';
219
- const HOST = 'test.omniworkflow.com';
220
- const PORT = '443';
221
- // const HOST = 'localhost';
222
- // const PORT = '3000';
223
- const BASE_URL = 'api';
224
- //const client = new BPMNClient(process.env.HOST, process.env.PORT, process.env.API_KEY);
225
- const client = new BPMNClient(HOST, PORT, API_KEY);
226
- const server = client;
227
- const caseId = 3040;
228
- var defs = yield server.definitions.list();
229
- console.log(defs);
230
- var def = yield server.definitions.load('Buy Used Car');
231
- console.log(def['elements']);
232
- //var instance = await client.engine.start("Buy Used Car", {});
233
- var instance = yield server.engine.start("Buy Used Car", { caseId: caseId });
234
- console.log("instance.id", instance.id, instance.name, instance.status, instance.data.caseId);
235
- var response = yield server.engine.invoke({ id: instance.id, "items.elementId": 'task_Buy' }, { needsCleaning: "Yes", needsRepairs: "Yes" });
236
- console.log('after buy', response.id, response.data);
237
- response = yield server.engine.invoke({ id: instance.id, "items.elementId": 'task_clean' }, {});
238
- console.log('after clean', response.id, response.data);
239
- response = yield server.engine.invoke({ id: instance.id, "items.elementId": 'task_repair' }, {});
240
- console.log('after repair', response.id, response.data);
241
- try {
242
- response = yield server.engine.invoke({ id: instance.id, "items.elementId": 'task_Drive' }, {});
243
- console.log('after drive', response.id, response.data);
244
- }
245
- catch (exc) {
246
- console.log(exc);
247
- }
248
- var insts = yield client.datastore.findInstances({ data: { caseId: caseId } });
249
- insts.forEach(inst => {
250
- console.log('Inst for CaseId id==>' + inst.id, inst.name, inst.data.caseId, 'status==>', inst.status);
251
- });
252
- var insts = yield client.datastore.findInstances({ id: instance.id });
253
- insts.forEach(inst => {
254
- for (var i = 0; i < inst.items.length; i++) {
255
- var item = inst.items[i];
256
- console.log(' item: elementId==>' + item.elementId, item.name, 'status==>', item.status);
257
- }
258
- });
259
- var inst = yield client.engine.get({ id: instance.id });
260
- for (var i = 0; i < inst.items.length; i++) {
261
- var item = inst.items[i];
262
- console.log(' item: elementId==>' + item.elementId, item.name, 'status==>', item.status);
263
- }
264
- // var items = await client.datastore.findItems({ query: { "items.elementId": "task_Buy" } });
265
- var items = yield client.datastore.findItems({ id: instance.id });
266
- items.forEach(item => {
267
- console.log('item: id==>' + item.elementId, item.type, item.name, 'status==>', item.status);
58
+ return new Promise(function (resolve) {
59
+ setTimeout(function () {
60
+ resolve(result);
61
+ }, time);
268
62
  });
269
63
  });
270
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/test3.js ADDED
@@ -0,0 +1,42 @@
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 cl = readline.createInterface(process.stdin, process.stdout);
18
+ const question = function (q) {
19
+ return new Promise((res, rej) => {
20
+ cl.question(q, answer => {
21
+ res(answer);
22
+ });
23
+ });
24
+ };
25
+ completeUserTask();
26
+ function completeUserTask() {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ const server = new _1.BPMNClient(process.env.HOST, process.env.PORT, process.env.API_KEY);
29
+ const instanceId = yield question('Please provide your Instance ID: ');
30
+ const taskId = yield question('Please provide your Task ID: ');
31
+ let taskData = yield question('Please provide your Task Data (json obj) if any: ');
32
+ cl.close();
33
+ if (taskData === "") {
34
+ taskData = {};
35
+ }
36
+ else {
37
+ taskData = JSON.parse(taskData.toString());
38
+ }
39
+ yield server.engine.invoke({ id: instanceId, "items.elementId": taskId }, taskData);
40
+ console.log("Completed UserTask:", taskId);
41
+ });
42
+ }
package/test3.ts ADDED
@@ -0,0 +1,40 @@
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 cl = readline.createInterface( process.stdin, process.stdout );
10
+ const question = function(q) {
11
+ return new Promise( (res, rej) => {
12
+ cl.question( q, answer => {
13
+ res(answer);
14
+ })
15
+ });
16
+ };
17
+
18
+ completeUserTask();
19
+
20
+ async function completeUserTask() {
21
+ const server = new BPMNClient(process.env.HOST, process.env.PORT, process.env.API_KEY);
22
+
23
+ const instanceId = await question('Please provide your Instance ID: ');
24
+ const taskId = await question('Please provide your Task ID: ');
25
+ let taskData = await question('Please provide your Task Data (json obj) if any: ');
26
+
27
+ cl.close();
28
+
29
+ if (taskData === ""){
30
+ taskData = {};
31
+ }else{
32
+ taskData = JSON.parse(taskData.toString());
33
+ }
34
+
35
+ await server.engine.invoke(
36
+ { id: instanceId, "items.elementId": taskId }
37
+ , taskData);
38
+
39
+ console.log("Completed UserTask:", taskId);
40
+ }
package/testCLI.js ADDED
@@ -0,0 +1,152 @@
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 completeUserTask() {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ console.log('Commands:');
30
+ console.log(' q to quit');
31
+ console.log(' s start process ');
32
+ console.log(' lo list outstanding items');
33
+ console.log(' l list instances for a process');
34
+ console.log(' di display Instance information');
35
+ console.log(' i invoke item');
36
+ console.log(' d delete instnaces');
37
+ let option = '';
38
+ var command;
39
+ while (option !== 'q') {
40
+ command = yield question('Enter Command, q to quit\n\r>');
41
+ let opts = command.split(' ');
42
+ option = opts[0];
43
+ switch (option) {
44
+ case 'lo':
45
+ console.log("list outstanding items");
46
+ yield findItems({ "items.status": "wait" });
47
+ break;
48
+ case 'l':
49
+ console.log("list instances");
50
+ yield listInstances();
51
+ break;
52
+ case 'di':
53
+ console.log("displaying ");
54
+ yield displayInstance();
55
+ break;
56
+ case 'i':
57
+ console.log("invoking");
58
+ yield invoke();
59
+ break;
60
+ case 's':
61
+ console.log("starting");
62
+ yield start();
63
+ break;
64
+ case 'd':
65
+ console.log("deleting");
66
+ yield delInstances();
67
+ break;
68
+ }
69
+ }
70
+ console.log("bye");
71
+ cl.close();
72
+ });
73
+ }
74
+ function start() {
75
+ return __awaiter(this, void 0, void 0, function* () {
76
+ const name = yield question('Please provide your process name: ');
77
+ let taskData = yield question('Please provide your Task Data (json obj) if any: ');
78
+ if (taskData === "") {
79
+ taskData = {};
80
+ }
81
+ else {
82
+ taskData = JSON.parse(taskData.toString());
83
+ }
84
+ let response = yield server.engine.start(name, taskData);
85
+ console.log("Process " + name + " started:", response.items, 'InstanceId', response.id);
86
+ });
87
+ }
88
+ function findItems(query) {
89
+ return __awaiter(this, void 0, void 0, function* () {
90
+ var items = yield server.datastore.findItems(query);
91
+ console.log(items);
92
+ for (var i = 0; i < items.length; i++) {
93
+ let item = items[i];
94
+ console.log(`${item.name} - ${item.elementId} instanceId: ${item['instanceId']}`);
95
+ }
96
+ });
97
+ }
98
+ function listInstances() {
99
+ return __awaiter(this, void 0, void 0, function* () {
100
+ const name = yield question('Please provide your process name: ');
101
+ let insts = yield server.datastore.findInstances({ name: name });
102
+ for (var i = 0; i < insts.length; i++) {
103
+ let inst = insts[i];
104
+ console.log(`name: ${inst.name} status: ${inst.status} instanceId: ${inst.id}
105
+ startedAt: ${inst.startedAt} endedAt ${inst.endedAt}`, 'data:', inst.data);
106
+ }
107
+ });
108
+ }
109
+ function displayInstance() {
110
+ return __awaiter(this, void 0, void 0, function* () {
111
+ const instanceId = yield question('Please provide your Instance ID: ');
112
+ let insts = yield server.datastore.findInstances({ id: instanceId });
113
+ for (var i = 0; i < insts.length; i++) {
114
+ let inst = insts[i];
115
+ var items = inst.items;
116
+ console.log(`name: ${inst.name} status: ${inst.status} instanceId: ${inst.id}
117
+ startedAt: ${inst.startedAt} endedAt ${inst.endedAt}`, 'data:', inst.data);
118
+ for (var j = 0; j < items.length; j++) {
119
+ let item = items[j];
120
+ console.log(`element: ${item.elementId} status: ${item.status} id: ${item.id}`);
121
+ }
122
+ }
123
+ });
124
+ }
125
+ function invoke() {
126
+ return __awaiter(this, void 0, void 0, function* () {
127
+ const instanceId = yield question('Please provide your Instance ID: ');
128
+ const taskId = yield question('Please provide your Task ID: ');
129
+ let taskData = yield question('Please provide your Task Data (json obj) if any: ');
130
+ if (taskData === "") {
131
+ taskData = {};
132
+ }
133
+ else {
134
+ taskData = JSON.parse(taskData.toString());
135
+ }
136
+ try {
137
+ let response = yield server.engine.invoke({ id: instanceId, "items.elementId": taskId }, taskData);
138
+ console.log("Completed UserTask:", taskId, response.items);
139
+ }
140
+ catch (exc) {
141
+ console.log("Invoking task failed for:", taskId, instanceId);
142
+ yield findItems({ id: instanceId, "items.elementId": taskId });
143
+ }
144
+ });
145
+ }
146
+ function delInstances() {
147
+ return __awaiter(this, void 0, void 0, function* () {
148
+ const name = yield question('Please provide process name to delete instnaces: ');
149
+ let response = yield server.datastore.deleteInstances({ name: name });
150
+ console.log("Instances Deleted:", response['result']['deletedCount']);
151
+ });
152
+ }