bpmn-elements 14.0.0 → 14.1.0
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/dist/eventDefinitions/SignalEventDefinition.js +2 -1
- package/dist/eventDefinitions/TimerEventDefinition.js +15 -4
- package/package.json +5 -3
- package/src/eventDefinitions/SignalEventDefinition.js +1 -1
- package/src/eventDefinitions/TimerEventDefinition.js +17 -4
- package/types/index.d.ts +1 -3
- package/types/types.d.ts +0 -20
|
@@ -120,7 +120,8 @@ SignalEventDefinition.prototype.executeThrow = function executeThrow(executeMess
|
|
|
120
120
|
throwContent.parent = (0, _messageHelper.shiftParent)(parent);
|
|
121
121
|
const broker = this.broker;
|
|
122
122
|
broker.publish('event', 'activity.signal', throwContent, {
|
|
123
|
-
type: 'signal'
|
|
123
|
+
type: 'signal',
|
|
124
|
+
delegate: true
|
|
124
125
|
});
|
|
125
126
|
return broker.publish('execution', 'execute.completed', (0, _messageHelper.cloneContent)(executeContent));
|
|
126
127
|
};
|
|
@@ -4,8 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = TimerEventDefinition;
|
|
7
|
-
var _messageHelper = require("../messageHelper.js");
|
|
8
7
|
var _piso = require("@0dep/piso");
|
|
8
|
+
var _messageHelper = require("../messageHelper.js");
|
|
9
|
+
var _Errors = require("../error/Errors.js");
|
|
9
10
|
const kStopped = Symbol.for('stopped');
|
|
10
11
|
const kTimerContent = Symbol.for('timerContent');
|
|
11
12
|
const kTimer = Symbol.for('timer');
|
|
@@ -60,7 +61,13 @@ TimerEventDefinition.prototype.execute = function execute(executeMessage) {
|
|
|
60
61
|
const content = executeMessage.content;
|
|
61
62
|
const executionId = content.executionId;
|
|
62
63
|
const startedAt = this.startedAt = 'startedAt' in content ? new Date(content.startedAt) : new Date();
|
|
63
|
-
|
|
64
|
+
try {
|
|
65
|
+
// eslint-disable-next-line no-var
|
|
66
|
+
var resolvedTimer = this._getTimers(executeMessage);
|
|
67
|
+
} catch (err) {
|
|
68
|
+
this.logger.error(`<${executionId} (${this.activity.id})> failed to get timeout delay: ${err}`);
|
|
69
|
+
throw new _Errors.RunError(err.message, executeMessage, err);
|
|
70
|
+
}
|
|
64
71
|
const timerContent = this[kTimerContent] = (0, _messageHelper.cloneContent)(content, {
|
|
65
72
|
...resolvedTimer,
|
|
66
73
|
...(isResumed && {
|
|
@@ -222,6 +229,7 @@ TimerEventDefinition.prototype._getTimers = function getTimers(executeMessage) {
|
|
|
222
229
|
expireAt: new Date(content.expireAt)
|
|
223
230
|
})
|
|
224
231
|
};
|
|
232
|
+
const now = new Date();
|
|
225
233
|
for (const timerType of timerTypes) {
|
|
226
234
|
if (timerType in content) result[timerType] = content[timerType];else if (timerType in this) result[timerType] = this.environment.resolveExpression(this[timerType], executeMessage);else continue;
|
|
227
235
|
let expireAtDate, repeat;
|
|
@@ -232,9 +240,12 @@ TimerEventDefinition.prototype._getTimers = function getTimers(executeMessage) {
|
|
|
232
240
|
expireAt: parsedExpireAt
|
|
233
241
|
} = this.parse(timerType, timerStr);
|
|
234
242
|
repeat = parsedRepeat;
|
|
243
|
+
if (!parsedExpireAt || !parsedExpireAt.getTime) {
|
|
244
|
+
throw new TypeError(`Parsed ${timerType} "${timerStr}" expireAt failed to resolve to a date`);
|
|
245
|
+
}
|
|
235
246
|
expireAtDate = parsedExpireAt;
|
|
236
247
|
} else {
|
|
237
|
-
expireAtDate =
|
|
248
|
+
expireAtDate = now;
|
|
238
249
|
}
|
|
239
250
|
if (!('expireAt' in result) || result.expireAt > expireAtDate) {
|
|
240
251
|
result.timerType = timerType;
|
|
@@ -243,7 +254,7 @@ TimerEventDefinition.prototype._getTimers = function getTimers(executeMessage) {
|
|
|
243
254
|
}
|
|
244
255
|
}
|
|
245
256
|
if ('expireAt' in result) {
|
|
246
|
-
result.timeout = result.expireAt -
|
|
257
|
+
result.timeout = result.expireAt - now.getTime();
|
|
247
258
|
} else if ('timeout' in content) {
|
|
248
259
|
result.timeout = content.timeout;
|
|
249
260
|
} else if (!Object.keys(result).length) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bpmn-elements",
|
|
3
|
-
"version": "14.
|
|
3
|
+
"version": "14.1.0",
|
|
4
4
|
"description": "Executable workflow elements based on BPMN 2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -35,13 +35,14 @@
|
|
|
35
35
|
"posttest": "npm run lint && npm run dist",
|
|
36
36
|
"lint": "eslint . --cache && prettier . --check --cache",
|
|
37
37
|
"prepack": "npm run dist",
|
|
38
|
+
"test:md": "texample ./docs/Examples.md,./docs/StartEvent.md,./docs/Extension.md",
|
|
38
39
|
"cov:html": "c8 -r html -r text mocha -R @bonniernews/hot-bev -p -t 3000",
|
|
39
40
|
"test:lcov": "c8 -r lcov mocha && npm run lint",
|
|
40
41
|
"dist": "babel src -d dist/"
|
|
41
42
|
},
|
|
42
43
|
"repository": {
|
|
43
44
|
"type": "git",
|
|
44
|
-
"url": "git://github.com/paed01/bpmn-elements"
|
|
45
|
+
"url": "git://github.com/paed01/bpmn-elements.git"
|
|
45
46
|
},
|
|
46
47
|
"author": {
|
|
47
48
|
"name": "Pål Edman",
|
|
@@ -83,7 +84,8 @@
|
|
|
83
84
|
"mocha-cakes-2": "^3.3.0",
|
|
84
85
|
"moddle-context-serializer": "^4.1.2",
|
|
85
86
|
"nock": "^13.5.3",
|
|
86
|
-
"prettier": "^3.2.5"
|
|
87
|
+
"prettier": "^3.2.5",
|
|
88
|
+
"texample": "^0.0.2"
|
|
87
89
|
},
|
|
88
90
|
"dependencies": {
|
|
89
91
|
"@0dep/piso": "^0.1.3",
|
|
@@ -108,7 +108,7 @@ SignalEventDefinition.prototype.executeThrow = function executeThrow(executeMess
|
|
|
108
108
|
throwContent.parent = shiftParent(parent);
|
|
109
109
|
|
|
110
110
|
const broker = this.broker;
|
|
111
|
-
broker.publish('event', 'activity.signal', throwContent, { type: 'signal' });
|
|
111
|
+
broker.publish('event', 'activity.signal', throwContent, { type: 'signal', delegate: true });
|
|
112
112
|
|
|
113
113
|
return broker.publish('execution', 'execute.completed', cloneContent(executeContent));
|
|
114
114
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { cloneContent } from '../messageHelper.js';
|
|
2
1
|
import { ISOInterval, getDate } from '@0dep/piso';
|
|
2
|
+
import { cloneContent } from '../messageHelper.js';
|
|
3
|
+
import { RunError } from '../error/Errors.js';
|
|
3
4
|
|
|
4
5
|
const kStopped = Symbol.for('stopped');
|
|
5
6
|
const kTimerContent = Symbol.for('timerContent');
|
|
@@ -58,7 +59,14 @@ TimerEventDefinition.prototype.execute = function execute(executeMessage) {
|
|
|
58
59
|
const executionId = content.executionId;
|
|
59
60
|
const startedAt = (this.startedAt = 'startedAt' in content ? new Date(content.startedAt) : new Date());
|
|
60
61
|
|
|
61
|
-
|
|
62
|
+
try {
|
|
63
|
+
// eslint-disable-next-line no-var
|
|
64
|
+
var resolvedTimer = this._getTimers(executeMessage);
|
|
65
|
+
} catch (err) {
|
|
66
|
+
this.logger.error(`<${executionId} (${this.activity.id})> failed to get timeout delay: ${err}`);
|
|
67
|
+
throw new RunError(err.message, executeMessage, err);
|
|
68
|
+
}
|
|
69
|
+
|
|
62
70
|
const timerContent = (this[kTimerContent] = cloneContent(content, {
|
|
63
71
|
...resolvedTimer,
|
|
64
72
|
...(isResumed && { isResumed }),
|
|
@@ -220,6 +228,8 @@ TimerEventDefinition.prototype._getTimers = function getTimers(executeMessage) {
|
|
|
220
228
|
...('expireAt' in content && { expireAt: new Date(content.expireAt) }),
|
|
221
229
|
};
|
|
222
230
|
|
|
231
|
+
const now = new Date();
|
|
232
|
+
|
|
223
233
|
for (const timerType of timerTypes) {
|
|
224
234
|
if (timerType in content) result[timerType] = content[timerType];
|
|
225
235
|
else if (timerType in this) result[timerType] = this.environment.resolveExpression(this[timerType], executeMessage);
|
|
@@ -230,9 +240,12 @@ TimerEventDefinition.prototype._getTimers = function getTimers(executeMessage) {
|
|
|
230
240
|
if (timerStr) {
|
|
231
241
|
const { repeat: parsedRepeat, expireAt: parsedExpireAt } = this.parse(timerType, timerStr);
|
|
232
242
|
repeat = parsedRepeat;
|
|
243
|
+
if (!parsedExpireAt || !parsedExpireAt.getTime) {
|
|
244
|
+
throw new TypeError(`Parsed ${timerType} "${timerStr}" expireAt failed to resolve to a date`);
|
|
245
|
+
}
|
|
233
246
|
expireAtDate = parsedExpireAt;
|
|
234
247
|
} else {
|
|
235
|
-
expireAtDate =
|
|
248
|
+
expireAtDate = now;
|
|
236
249
|
}
|
|
237
250
|
|
|
238
251
|
if (!('expireAt' in result) || result.expireAt > expireAtDate) {
|
|
@@ -243,7 +256,7 @@ TimerEventDefinition.prototype._getTimers = function getTimers(executeMessage) {
|
|
|
243
256
|
}
|
|
244
257
|
|
|
245
258
|
if ('expireAt' in result) {
|
|
246
|
-
result.timeout = result.expireAt -
|
|
259
|
+
result.timeout = result.expireAt - now.getTime();
|
|
247
260
|
} else if ('timeout' in content) {
|
|
248
261
|
result.timeout = content.timeout;
|
|
249
262
|
} else if (!Object.keys(result).length) {
|
package/types/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from './types.js';
|
|
2
|
-
import { IActivityBehaviour, ActivityBehaviour, EventDefinition, MessageElement
|
|
2
|
+
import { IActivityBehaviour, ActivityBehaviour, EventDefinition, MessageElement } from './types.js';
|
|
3
3
|
|
|
4
4
|
declare module 'bpmn-elements' {
|
|
5
5
|
export var BoundaryEvent: typeof ActivityBehaviour;
|
|
@@ -65,8 +65,6 @@ declare module 'bpmn-elements' {
|
|
|
65
65
|
export class Message extends MessageElement {}
|
|
66
66
|
export class Signal extends MessageElement {}
|
|
67
67
|
export class Escalation extends MessageElement {}
|
|
68
|
-
|
|
69
|
-
export var ISODuration: ISODurationApi;
|
|
70
68
|
}
|
|
71
69
|
|
|
72
70
|
declare module 'bpmn-elements/events' {
|
package/types/types.d.ts
CHANGED
|
@@ -697,26 +697,6 @@ declare class ActivityError extends Error {
|
|
|
697
697
|
constructor(description: string, sourceMessage: MessageMessage, inner?: Error);
|
|
698
698
|
}
|
|
699
699
|
|
|
700
|
-
declare interface Duration {
|
|
701
|
-
years?: number;
|
|
702
|
-
months?: number;
|
|
703
|
-
weeks?: number;
|
|
704
|
-
days?: number;
|
|
705
|
-
hours?: number;
|
|
706
|
-
minutes?: number;
|
|
707
|
-
seconds?: number;
|
|
708
|
-
repeat?: number;
|
|
709
|
-
}
|
|
710
|
-
|
|
711
|
-
declare type ISODurationApi = {
|
|
712
|
-
/** Parse PnYnMnDTnHnMnS format to object */
|
|
713
|
-
parse: (durationString: string) => Duration;
|
|
714
|
-
/** Convert ISO8601 duration object to an end Date. */
|
|
715
|
-
end: (durationInput: Duration, startDate?: Date) => Date;
|
|
716
|
-
/** Convert ISO8601 duration object to seconds */
|
|
717
|
-
toSeconds: (durationInput: Duration, startDate?: Date) => number;
|
|
718
|
-
};
|
|
719
|
-
|
|
720
700
|
/**
|
|
721
701
|
* Evaluate flow callback
|
|
722
702
|
* @callback evaluateCallback
|