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/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', { name, data });
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/delete', query);
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
@@ -1,5 +1,3 @@
1
1
  API_KEY=1234
2
- MONGO_DB_URL=mongodb://localhost:27017?retryWrites=true&w=majority
3
- MONGO_DB_NAME=bpmn
4
- SENDGRID_API_KEY=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
2
+
5
3
 
@@ -3,10 +3,10 @@ const { BPMNClient } = require("../../src/");
3
3
 
4
4
 
5
5
  const API_KEY = '12345';
6
- //const HOST = 'localhost';
7
- //const PORT = '3000';
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
@@ -0,0 +1,4 @@
1
+ API_KEY=12345
2
+ HOST=test.omniworkflow.com
3
+ PORT=443
4
+ BASE_URL=api
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 BPMNClient_1 = require("./src/BPMNClient");
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 client = new BPMNClient_1.BPMNClient('localhost', 3000, 12345);
18
- var instance = yield client.engine.start("Buy Used Car", {});
19
- console.log("instance.id", instance.id, instance.name, instance.status);
20
- var insts = yield client.datastore.findInstances({ 'status': 'running' });
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
- console.log('id==>' + inst.id, inst.name, 'status==>', inst.status);
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 items = yield client.datastore.findItems({ query: { "items.elementId": "task_Buy" } });
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.id, item.name, 'status==>', item.status);
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 './src/BPMNClient';
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
- var insts= await client.datastore.findInstances({ 'status': 'running' });
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
- console.log('id==>' + inst.id,inst.name, 'status==>',inst.status);
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.id, item.name, 'status==>', item.status);
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
+