@rytass/bpm-core-nestjs-module 0.21.4 → 0.23.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/CHANGELOG.md +87 -0
- package/README.md +9 -1
- package/package.json +2 -2
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/lib/bpm/bpm-root-options.d.ts +57 -0
- package/src/lib/bpm/bpm-root-options.js.map +1 -1
- package/src/lib/bpm/bpm-root.module.d.ts +21 -0
- package/src/lib/bpm/bpm-root.module.js +6 -0
- package/src/lib/bpm/bpm-root.module.js.map +1 -1
- package/src/lib/form/dto/form-definition.input.d.ts +5 -0
- package/src/lib/form/dto/form-definition.input.js.map +1 -1
- package/src/lib/form/form-definition.entity.d.ts +5 -0
- package/src/lib/form/form-definition.entity.js +7 -0
- package/src/lib/form/form-definition.entity.js.map +1 -1
- package/src/lib/form/form-schema.validator.js +17 -5
- package/src/lib/form/form-schema.validator.js.map +1 -1
- package/src/lib/form/form.queries.d.ts +2 -2
- package/src/lib/form/form.queries.js +17 -5
- package/src/lib/form/form.queries.js.map +1 -1
- package/src/lib/form/form.service.d.ts +2 -1
- package/src/lib/form/form.service.js +10 -5
- package/src/lib/form/form.service.js.map +1 -1
- package/src/lib/form-data-source/form-data-source-value-resolver.service.js +22 -2
- package/src/lib/form-data-source/form-data-source-value-resolver.service.js.map +1 -1
- package/src/lib/form-data-source/form-data-source.errors.d.ts +11 -0
- package/src/lib/form-data-source/form-data-source.errors.js +14 -1
- package/src/lib/form-data-source/form-data-source.errors.js.map +1 -1
- package/src/lib/form-data-source/form-data-source.service.d.ts +6 -0
- package/src/lib/form-data-source/form-data-source.service.js +41 -15
- package/src/lib/form-data-source/form-data-source.service.js.map +1 -1
- package/src/lib/identity/identity-options.d.ts +1 -1
- package/src/lib/identity/identity.queries.d.ts +0 -2
- package/src/lib/identity/identity.queries.js +0 -11
- package/src/lib/identity/identity.queries.js.map +1 -1
- package/src/lib/instance-event/approval-instance-event.entity.d.ts +27 -0
- package/src/lib/instance-event/approval-instance-event.entity.js +93 -0
- package/src/lib/instance-event/approval-instance-event.entity.js.map +1 -0
- package/src/lib/instance-event/index.d.ts +13 -0
- package/src/lib/instance-event/index.js +17 -0
- package/src/lib/instance-event/index.js.map +1 -0
- package/src/lib/instance-event/instance-event.delivery-scheduler.service.d.ts +21 -0
- package/src/lib/instance-event/instance-event.delivery-scheduler.service.js +81 -0
- package/src/lib/instance-event/instance-event.delivery-scheduler.service.js.map +1 -0
- package/src/lib/instance-event/instance-event.delivery.service.d.ts +69 -0
- package/src/lib/instance-event/instance-event.delivery.service.js +259 -0
- package/src/lib/instance-event/instance-event.delivery.service.js.map +1 -0
- package/src/lib/instance-event/instance-event.delivery.subscriber.d.ts +24 -0
- package/src/lib/instance-event/instance-event.delivery.subscriber.js +85 -0
- package/src/lib/instance-event/instance-event.delivery.subscriber.js.map +1 -0
- package/src/lib/instance-event/instance-event.enums.d.ts +12 -0
- package/src/lib/instance-event/instance-event.enums.js +28 -0
- package/src/lib/instance-event/instance-event.enums.js.map +1 -0
- package/src/lib/instance-event/instance-event.module.d.ts +13 -0
- package/src/lib/instance-event/instance-event.module.js +52 -0
- package/src/lib/instance-event/instance-event.module.js.map +1 -0
- package/src/lib/instance-event/instance-event.object.d.ts +24 -0
- package/src/lib/instance-event/instance-event.object.js +73 -0
- package/src/lib/instance-event/instance-event.object.js.map +1 -0
- package/src/lib/instance-event/instance-event.options.d.ts +26 -0
- package/src/lib/instance-event/instance-event.options.js +35 -0
- package/src/lib/instance-event/instance-event.options.js.map +1 -0
- package/src/lib/instance-event/instance-event.resolver.d.ts +10 -0
- package/src/lib/instance-event/instance-event.resolver.js +75 -0
- package/src/lib/instance-event/instance-event.resolver.js.map +1 -0
- package/src/lib/instance-event/instance-event.service.d.ts +18 -0
- package/src/lib/instance-event/instance-event.service.js +37 -0
- package/src/lib/instance-event/instance-event.service.js.map +1 -0
- package/src/lib/instance-event/instance-event.token.d.ts +19 -0
- package/src/lib/instance-event/instance-event.token.js +9 -0
- package/src/lib/instance-event/instance-event.token.js.map +1 -0
- package/src/lib/instance-event/instance-event.types.d.ts +67 -0
- package/src/lib/instance-event/instance-event.types.js +9 -0
- package/src/lib/instance-event/instance-event.types.js.map +1 -0
- package/src/lib/instance-event/instance-event.writer.d.ts +21 -0
- package/src/lib/instance-event/instance-event.writer.js +45 -0
- package/src/lib/instance-event/instance-event.writer.js.map +1 -0
- package/src/lib/migrations/0000000032000-host-integration-round.d.ts +25 -0
- package/src/lib/migrations/0000000032000-host-integration-round.js +104 -0
- package/src/lib/migrations/0000000032000-host-integration-round.js.map +1 -0
- package/src/lib/migrations/index.d.ts +1 -0
- package/src/lib/migrations/index.js +3 -0
- package/src/lib/migrations/index.js.map +1 -1
- package/src/lib/notification/notification.service.js +50 -9
- package/src/lib/notification/notification.service.js.map +1 -1
- package/src/lib/template/approval-template-version.entity.d.ts +9 -1
- package/src/lib/template/approval-template-version.entity.js +11 -1
- package/src/lib/template/approval-template-version.entity.js.map +1 -1
- package/src/lib/template/approval-template.entity.d.ts +18 -0
- package/src/lib/template/approval-template.entity.js +23 -0
- package/src/lib/template/approval-template.entity.js.map +1 -1
- package/src/lib/template/dto/approval-template.input.d.ts +21 -0
- package/src/lib/template/dto/approval-template.input.js +38 -0
- package/src/lib/template/dto/approval-template.input.js.map +1 -1
- package/src/lib/template/dto/compose-approval-template.input.d.ts +23 -0
- package/src/lib/template/dto/compose-approval-template.input.js +37 -0
- package/src/lib/template/dto/compose-approval-template.input.js.map +1 -1
- package/src/lib/template/template-key.d.ts +26 -0
- package/src/lib/template/template-key.js +67 -0
- package/src/lib/template/template-key.js.map +1 -0
- package/src/lib/template/template.enums.d.ts +11 -0
- package/src/lib/template/template.enums.js +17 -1
- package/src/lib/template/template.enums.js.map +1 -1
- package/src/lib/template/template.queries.d.ts +3 -2
- package/src/lib/template/template.queries.js +29 -4
- package/src/lib/template/template.queries.js.map +1 -1
- package/src/lib/template/template.service.d.ts +8 -1
- package/src/lib/template/template.service.js +94 -17
- package/src/lib/template/template.service.js.map +1 -1
- package/src/lib/workflow-engine/approver-filled-table-columns.d.ts +91 -0
- package/src/lib/workflow-engine/approver-filled-table-columns.js +301 -0
- package/src/lib/workflow-engine/approver-filled-table-columns.js.map +1 -0
- package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.d.ts +7 -0
- package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.js +9 -0
- package/src/lib/workflow-engine/dto/dry-run-approval-workflow.input.js.map +1 -1
- package/src/lib/workflow-engine/index.d.ts +1 -0
- package/src/lib/workflow-engine/index.js +1 -0
- package/src/lib/workflow-engine/index.js.map +1 -1
- package/src/lib/workflow-engine/initiator-custom-fields-resolver.token.d.ts +31 -11
- package/src/lib/workflow-engine/initiator-custom-fields-resolver.token.js.map +1 -1
- package/src/lib/workflow-engine/instance-guard.runner.d.ts +19 -0
- package/src/lib/workflow-engine/instance-guard.runner.js +102 -0
- package/src/lib/workflow-engine/instance-guard.runner.js.map +1 -0
- package/src/lib/workflow-engine/instance-guard.token.d.ts +101 -0
- package/src/lib/workflow-engine/instance-guard.token.js +9 -0
- package/src/lib/workflow-engine/instance-guard.token.js.map +1 -0
- package/src/lib/workflow-engine/missing-form-fields.d.ts +12 -0
- package/src/lib/workflow-engine/missing-form-fields.js +27 -0
- package/src/lib/workflow-engine/missing-form-fields.js.map +1 -0
- package/src/lib/workflow-engine/workflow-engine.module.d.ts +2 -0
- package/src/lib/workflow-engine/workflow-engine.module.js +3 -0
- package/src/lib/workflow-engine/workflow-engine.module.js.map +1 -1
- package/src/lib/workflow-engine/workflow-engine.mutations.d.ts +1 -1
- package/src/lib/workflow-engine/workflow-engine.mutations.js +8 -3
- package/src/lib/workflow-engine/workflow-engine.mutations.js.map +1 -1
- package/src/lib/workflow-engine/workflow-engine.queries.d.ts +7 -5
- package/src/lib/workflow-engine/workflow-engine.queries.js +136 -24
- package/src/lib/workflow-engine/workflow-engine.queries.js.map +1 -1
- package/src/lib/workflow-engine/workflow-engine.service.d.ts +216 -7
- package/src/lib/workflow-engine/workflow-engine.service.js +864 -131
- package/src/lib/workflow-engine/workflow-engine.service.js.map +1 -1
- package/src/lib/workflow-engine/workflow-engine.tokens.d.ts +5 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BPM_INSTANCE_GUARD_FAILED_CODE = exports.BPM_INSTANCE_GUARD_TIMEOUT_CODE = exports.BPM_INSTANCE_GUARD_DEFAULT_TIMEOUT_MS = void 0;
|
|
4
|
+
exports.isInstanceGuardError = isInstanceGuardError;
|
|
5
|
+
exports.runInstanceGuard = runInstanceGuard;
|
|
6
|
+
const common_1 = require("@nestjs/common");
|
|
7
|
+
const form_data_issue_1 = require("../form/form-data-issue");
|
|
8
|
+
/** Default for `instanceGuardTimeoutMs` (ADR 27 §2.2). */
|
|
9
|
+
exports.BPM_INSTANCE_GUARD_DEFAULT_TIMEOUT_MS = 5000;
|
|
10
|
+
exports.BPM_INSTANCE_GUARD_TIMEOUT_CODE = 'BPM_INSTANCE_GUARD_TIMEOUT';
|
|
11
|
+
exports.BPM_INSTANCE_GUARD_FAILED_CODE = 'BPM_INSTANCE_GUARD_FAILED';
|
|
12
|
+
/**
|
|
13
|
+
* Every error the guard path raises: the 400 for refused issues, the 503 for a
|
|
14
|
+
* timeout or a failing guard, and an `HttpException` the host threw itself.
|
|
15
|
+
* Lets a caller tell a guard refusal apart from any other failure without
|
|
16
|
+
* matching on messages.
|
|
17
|
+
*/
|
|
18
|
+
const instanceGuardErrors = new WeakSet();
|
|
19
|
+
function markInstanceGuardError(error) {
|
|
20
|
+
instanceGuardErrors.add(error);
|
|
21
|
+
return error;
|
|
22
|
+
}
|
|
23
|
+
function isInstanceGuardError(error) {
|
|
24
|
+
return typeof error === 'object' && error !== null
|
|
25
|
+
? instanceGuardErrors.has(error)
|
|
26
|
+
: false;
|
|
27
|
+
}
|
|
28
|
+
function createGuardUnavailable(code, message) {
|
|
29
|
+
return markInstanceGuardError(new common_1.ServiceUnavailableException({
|
|
30
|
+
code,
|
|
31
|
+
error: 'Service Unavailable',
|
|
32
|
+
message,
|
|
33
|
+
statusCode: 503,
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
function isGuardIssue(value) {
|
|
37
|
+
if (typeof value !== 'object' || value === null) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
const issue = value;
|
|
41
|
+
return (typeof issue.message === 'string' &&
|
|
42
|
+
typeof issue.path === 'string' &&
|
|
43
|
+
issue.reason === 'HOST_RULE' &&
|
|
44
|
+
(issue.code === undefined || typeof issue.code === 'string'));
|
|
45
|
+
}
|
|
46
|
+
function readIssueFormDataErrors(issues) {
|
|
47
|
+
return issues.map((issue) => ({
|
|
48
|
+
message: issue.message,
|
|
49
|
+
path: issue.path,
|
|
50
|
+
reason: issue.reason,
|
|
51
|
+
...(issue.code === undefined ? {} : { code: issue.code }),
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Runs the host guard for one engine path and throws if the path must stop.
|
|
56
|
+
*
|
|
57
|
+
* Returns normally only when the guard answered with an empty list in time.
|
|
58
|
+
* Call it inside the engine transaction, after the case lock is taken, so a
|
|
59
|
+
* throw rolls the whole change back.
|
|
60
|
+
*
|
|
61
|
+
* - non-empty issues: 400 `createFormDataBadRequest`
|
|
62
|
+
* - no answer within `timeoutMs`: 503 `BPM_INSTANCE_GUARD_TIMEOUT` (fail closed)
|
|
63
|
+
* - a thrown `HttpException`: rethrown unchanged
|
|
64
|
+
* - any other error, or a malformed answer: 503 `BPM_INSTANCE_GUARD_FAILED`
|
|
65
|
+
*/
|
|
66
|
+
async function runInstanceGuard(guard, input, timeoutMs) {
|
|
67
|
+
const timeoutError = markInstanceGuardError(new Error(`BPM_INSTANCE_GUARD_TIMEOUT_${timeoutMs}MS`));
|
|
68
|
+
let timer;
|
|
69
|
+
let issues;
|
|
70
|
+
try {
|
|
71
|
+
issues = await Promise.race([
|
|
72
|
+
Promise.resolve().then(() => guard.check(input)),
|
|
73
|
+
new Promise((_resolve, reject) => {
|
|
74
|
+
timer = setTimeout(() => {
|
|
75
|
+
reject(timeoutError);
|
|
76
|
+
}, timeoutMs);
|
|
77
|
+
}),
|
|
78
|
+
]);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
if (error === timeoutError) {
|
|
82
|
+
throw createGuardUnavailable(exports.BPM_INSTANCE_GUARD_TIMEOUT_CODE, `Instance guard did not answer within ${timeoutMs} ms`);
|
|
83
|
+
}
|
|
84
|
+
if (error instanceof common_1.HttpException) {
|
|
85
|
+
markInstanceGuardError(error);
|
|
86
|
+
throw error;
|
|
87
|
+
}
|
|
88
|
+
throw createGuardUnavailable(exports.BPM_INSTANCE_GUARD_FAILED_CODE, 'Instance guard failed');
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
clearTimeout(timer);
|
|
92
|
+
}
|
|
93
|
+
if (!Array.isArray(issues) || !issues.every(isGuardIssue)) {
|
|
94
|
+
throw createGuardUnavailable(exports.BPM_INSTANCE_GUARD_FAILED_CODE, 'Instance guard returned an answer of the wrong shape');
|
|
95
|
+
}
|
|
96
|
+
if (issues.length === 0) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const formDataErrors = readIssueFormDataErrors(issues);
|
|
100
|
+
throw markInstanceGuardError((0, form_data_issue_1.createFormDataBadRequest)((0, form_data_issue_1.readFormDataIssueMessage)(formDataErrors), formDataErrors));
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=instance-guard.runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance-guard.runner.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/workflow-engine/instance-guard.runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { InjectionToken } from '@nestjs/common';
|
|
2
|
+
import type { WorkflowNode } from '@rytass/bpm-core-shared';
|
|
3
|
+
import type { EntityManager } from 'typeorm';
|
|
4
|
+
import type { BPMAuthContext } from '../bpm-auth';
|
|
5
|
+
import type { ApprovalInstanceEntity } from './approval-instance.entity';
|
|
6
|
+
import type { TaskEntity } from './task.entity';
|
|
7
|
+
import type { ApprovalTemplateVersionEntity } from '../template/approval-template-version.entity';
|
|
8
|
+
/**
|
|
9
|
+
* Which engine path is asking the guard: a case being submitted, a returned
|
|
10
|
+
* case being resubmitted, or a task being decided.
|
|
11
|
+
*/
|
|
12
|
+
export type BPMInstanceGuardKind = 'DECIDE' | 'RESUBMIT' | 'SUBMIT';
|
|
13
|
+
/**
|
|
14
|
+
* What the engine hands the guard. The guard runs inside the engine
|
|
15
|
+
* transaction, after the case lock is taken, so every value here is the state
|
|
16
|
+
* the engine is about to commit.
|
|
17
|
+
*
|
|
18
|
+
* Treat every object as read-only. The guard decides, it does not write:
|
|
19
|
+
* whatever it writes through `manager` is committed or rolled back together
|
|
20
|
+
* with the decision, and a timed-out guard cannot take it back.
|
|
21
|
+
*/
|
|
22
|
+
export interface BPMInstanceGuardInput {
|
|
23
|
+
/** The member who triggered the path, or `null` for a system action. */
|
|
24
|
+
readonly actorMemberId: string | null;
|
|
25
|
+
/**
|
|
26
|
+
* Set only for a decision made by the engine itself (SLA auto-approve). The
|
|
27
|
+
* guard may treat it differently, for example to skip an approver-facing
|
|
28
|
+
* rule. `null` for every other decision.
|
|
29
|
+
*/
|
|
30
|
+
readonly automatic: 'SLA_AUTO_APPROVE' | null;
|
|
31
|
+
/** The caller's auth context, when the path has one. */
|
|
32
|
+
readonly authContext: BPMAuthContext | null;
|
|
33
|
+
/** The decision action (`APPROVE`, `REJECT`, ...). `null` unless `kind` is `DECIDE`. */
|
|
34
|
+
readonly action: string | null;
|
|
35
|
+
/**
|
|
36
|
+
* The keys of `formData` the request changed, sorted. For `SUBMIT` every
|
|
37
|
+
* submitted key counts; for `RESUBMIT` the keys whose value differs from the
|
|
38
|
+
* stored form data, including keys the resubmission drops; for `DECIDE` the
|
|
39
|
+
* approver-filled fields whose value really changes.
|
|
40
|
+
*/
|
|
41
|
+
readonly changedFieldKeys: readonly string[];
|
|
42
|
+
/**
|
|
43
|
+
* The case as it will be committed. For `SUBMIT` this is the entity the
|
|
44
|
+
* engine has just built and not yet saved (no `id` yet).
|
|
45
|
+
*/
|
|
46
|
+
readonly instance: Readonly<ApprovalInstanceEntity>;
|
|
47
|
+
readonly kind: BPMInstanceGuardKind;
|
|
48
|
+
/** The merged form data the case will hold after this path. */
|
|
49
|
+
readonly formData: Readonly<Record<string, unknown>>;
|
|
50
|
+
/** The node being decided. `null` unless `kind` is `DECIDE`. */
|
|
51
|
+
readonly node: WorkflowNode | null;
|
|
52
|
+
/** The task being decided. `null` unless `kind` is `DECIDE`. */
|
|
53
|
+
readonly task: Readonly<TaskEntity> | null;
|
|
54
|
+
/** The published template version the case runs on. */
|
|
55
|
+
readonly templateVersion: Readonly<ApprovalTemplateVersionEntity>;
|
|
56
|
+
/**
|
|
57
|
+
* The engine's transaction manager, for reads that must see the same
|
|
58
|
+
* snapshot the decision is made on. Do not write through it (see above).
|
|
59
|
+
*/
|
|
60
|
+
readonly manager: EntityManager;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* One rule the guard refuses on. A non-empty list is returned to the caller as
|
|
64
|
+
* a 400 `createFormDataBadRequest` carrying `formDataErrors`.
|
|
65
|
+
*
|
|
66
|
+
* - `path` is the form field the rule is about, or `''` for the whole case.
|
|
67
|
+
* - `reason` is always `HOST_RULE` for guard issues.
|
|
68
|
+
* - `code` is an optional host error code, passed through unchanged.
|
|
69
|
+
*
|
|
70
|
+
* A guard returns issues only. It cannot return a patch to `formData`: a
|
|
71
|
+
* patch would bypass the approver-fill permissions and the signature coverage.
|
|
72
|
+
*/
|
|
73
|
+
export interface BPMInstanceGuardIssue {
|
|
74
|
+
readonly code?: string;
|
|
75
|
+
readonly message: string;
|
|
76
|
+
readonly path: string;
|
|
77
|
+
readonly reason: 'HOST_RULE';
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Host hook that can refuse a case before the engine commits a state change.
|
|
81
|
+
*
|
|
82
|
+
* The engine calls `check` on three paths: submit, resubmit and decide. It is
|
|
83
|
+
* called inside the transaction, so a refusal rolls the whole change back. An
|
|
84
|
+
* empty array means pass; a non-empty array becomes a 400. A thrown
|
|
85
|
+
* `HttpException` is returned to the caller unchanged; any other error and a
|
|
86
|
+
* timeout become a 503 (`BPM_INSTANCE_GUARD_FAILED` /
|
|
87
|
+
* `BPM_INSTANCE_GUARD_TIMEOUT`). The default timeout is 5000 ms
|
|
88
|
+
* (`instanceGuardTimeoutMs`).
|
|
89
|
+
*
|
|
90
|
+
* Keep `check` fast and side-effect free. A call that is still running when
|
|
91
|
+
* the timeout fires keeps running; if it has external side effects, the host
|
|
92
|
+
* must make them idempotent itself.
|
|
93
|
+
*/
|
|
94
|
+
export interface BPMInstanceGuard {
|
|
95
|
+
check(input: BPMInstanceGuardInput): Promise<readonly BPMInstanceGuardIssue[]>;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Optional host binding for {@link BPMInstanceGuard}. Without one, the three
|
|
99
|
+
* engine paths behave exactly as before the guard existed.
|
|
100
|
+
*/
|
|
101
|
+
export declare const BPM_INSTANCE_GUARD: InjectionToken<BPMInstanceGuard>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BPM_INSTANCE_GUARD = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Optional host binding for {@link BPMInstanceGuard}. Without one, the three
|
|
6
|
+
* engine paths behave exactly as before the guard existed.
|
|
7
|
+
*/
|
|
8
|
+
exports.BPM_INSTANCE_GUARD = Symbol('BPM_INSTANCE_GUARD');
|
|
9
|
+
//# sourceMappingURL=instance-guard.token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance-guard.token.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/workflow-engine/instance-guard.token.ts"],"names":[],"mappings":";;;AAkHA;;;GAGG;AACU,QAAA,kBAAkB,GAAqC,MAAM,CACxE,oBAAoB,CACrB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FormDefinitionSchema } from '@rytass/bpm-core-shared';
|
|
2
|
+
/**
|
|
3
|
+
* The form data an expression reads when the host turns on
|
|
4
|
+
* `expressionMissingFormFieldsAsNull` (ADR 27 §3): every top-level field of
|
|
5
|
+
* the schema that the data has no key for is added, as `[]` for a table and
|
|
6
|
+
* `null` for anything else. A key that is present is never touched, and the
|
|
7
|
+
* columns inside table rows are not filled.
|
|
8
|
+
*
|
|
9
|
+
* The result is a copy used for evaluation only; it is never written back to
|
|
10
|
+
* `form_data`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function fillMissingFormFields(formData: Readonly<Record<string, unknown>>, schema: FormDefinitionSchema): Readonly<Record<string, unknown>>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fillMissingFormFields = fillMissingFormFields;
|
|
4
|
+
/**
|
|
5
|
+
* The form data an expression reads when the host turns on
|
|
6
|
+
* `expressionMissingFormFieldsAsNull` (ADR 27 §3): every top-level field of
|
|
7
|
+
* the schema that the data has no key for is added, as `[]` for a table and
|
|
8
|
+
* `null` for anything else. A key that is present is never touched, and the
|
|
9
|
+
* columns inside table rows are not filled.
|
|
10
|
+
*
|
|
11
|
+
* The result is a copy used for evaluation only; it is never written back to
|
|
12
|
+
* `form_data`.
|
|
13
|
+
*/
|
|
14
|
+
function fillMissingFormFields(formData, schema) {
|
|
15
|
+
const missing = schema.fields.filter((field) => !Object.prototype.hasOwnProperty.call(formData, field.fieldKey));
|
|
16
|
+
if (missing.length === 0) {
|
|
17
|
+
return formData;
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
...Object.fromEntries(missing.map((field) => [
|
|
21
|
+
field.fieldKey,
|
|
22
|
+
field.type === 'table' ? [] : null,
|
|
23
|
+
])),
|
|
24
|
+
...formData,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=missing-form-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"missing-form-fields.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/workflow-engine/missing-form-fields.ts"],"names":[],"mappings":";;AAYA,sDAsBC;AAhCD;;;;;;;;;GASG;AACH,SAAgB,qBAAqB,CACnC,QAA2C,EAC3C,MAA4B;IAE5B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAClC,CAAC,KAAK,EAAW,EAAE,CACjB,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAClE,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO;QACL,GAAG,MAAM,CAAC,WAAW,CACnB,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAA8B,EAAE,CAAC;YACjD,KAAK,CAAC,QAAQ;YACd,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;SACnC,CAAC,CACH;QACD,GAAG,QAAQ;KACZ,CAAC;AACJ,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { DynamicModule, ModuleMetadata, Provider } from '@nestjs/common';
|
|
2
2
|
import { BPMInitiatorCustomFieldsResolver } from './initiator-custom-fields-resolver.token';
|
|
3
|
+
import { BPMInstanceGuard } from './instance-guard.token';
|
|
3
4
|
import { BPMWorkflowServiceTaskDispatcher } from './workflow-service-task-dispatcher.token';
|
|
4
5
|
export interface WorkflowEngineModuleOptions extends Pick<ModuleMetadata, 'imports'> {
|
|
5
6
|
readonly initiatorCustomFieldsResolverProvider?: Provider<BPMInitiatorCustomFieldsResolver>;
|
|
7
|
+
readonly instanceGuardProvider?: Provider<BPMInstanceGuard>;
|
|
6
8
|
readonly serviceTaskDispatcherProvider?: Provider<BPMWorkflowServiceTaskDispatcher>;
|
|
7
9
|
}
|
|
8
10
|
export declare class WorkflowEngineModule {
|
|
@@ -43,6 +43,9 @@ let WorkflowEngineModule = WorkflowEngineModule_1 = class WorkflowEngineModule {
|
|
|
43
43
|
...(options.initiatorCustomFieldsResolverProvider
|
|
44
44
|
? [options.initiatorCustomFieldsResolverProvider]
|
|
45
45
|
: []),
|
|
46
|
+
...(options.instanceGuardProvider
|
|
47
|
+
? [options.instanceGuardProvider]
|
|
48
|
+
: []),
|
|
46
49
|
],
|
|
47
50
|
};
|
|
48
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-engine.module.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/workflow-engine/workflow-engine.module.ts"],"names":[],"mappings":";;;;;AAAA,2CAKwB;AACxB,6CAAgD;AAChD,oEAAgE;AAChE,uEAAmE;AACnE,2FAAqF;AACrF,yFAAoF;AACpF,6EAAyE;AACzE,6EAAyE;AACzE,qEAAgE;AAChE,oEAAgE;AAChE,yEAAqE;AACrE,mGAA6F;AAC7F,mFAA8E;AAC9E,+DAA0D;AAC1D,qEAAgE;AAChE,yEAAoE;AACpE,iEAA4D;AAC5D,mEAA8D;AAC9D,+CAA2C;AAC3C,2EAAsE;AACtE,uEAAkE;AAClE,uEAAkE;AAClE,qEAAuE;
|
|
1
|
+
{"version":3,"file":"workflow-engine.module.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/workflow-engine/workflow-engine.module.ts"],"names":[],"mappings":";;;;;AAAA,2CAKwB;AACxB,6CAAgD;AAChD,oEAAgE;AAChE,uEAAmE;AACnE,2FAAqF;AACrF,yFAAoF;AACpF,6EAAyE;AACzE,6EAAyE;AACzE,qEAAgE;AAChE,oEAAgE;AAChE,yEAAqE;AACrE,mGAA6F;AAC7F,mFAA8E;AAC9E,+DAA0D;AAC1D,qEAAgE;AAChE,yEAAoE;AACpE,iEAA4D;AAC5D,mEAA8D;AAC9D,+CAA2C;AAC3C,2EAAsE;AACtE,uEAAkE;AAClE,uEAAkE;AAClE,qEAAuE;AAIvE,mEAA8D;AA6CvD,IAAM,oBAAoB,4BAA1B,MAAM,oBAAoB;IAC/B,MAAM,CAAC,OAAO,CAAC,UAAuC,EAAE;QACtD,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YACpD,MAAM,EAAE,sBAAoB;YAC5B,qEAAqE;YACrE,wEAAwE;YACxE,uEAAuE;YACvE,+DAA+D;YAC/D,SAAS,EAAE;gBACT,GAAG,CAAC,OAAO,CAAC,6BAA6B;oBACvC,CAAC,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC;oBACzC,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,OAAO,CAAC,qCAAqC;oBAC/C,CAAC,CAAC,CAAC,OAAO,CAAC,qCAAqC,CAAC;oBACjD,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,OAAO,CAAC,qBAAqB;oBAC/B,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC;oBACjC,CAAC,CAAC,EAAE,CAAC;aACR;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAtBY,oDAAoB;+BAApB,oBAAoB;IAlChC,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,kCAAe;YACf,oCAAgB;YAChB,wCAAkB;YAClB,kCAAe;YACf,uBAAa,CAAC,UAAU,CAAC;gBACvB,uCAAiB;gBACjB,6CAAoB;gBACpB,iDAAsB;gBACtB,iDAAsB;gBACtB,gEAA6B;gBAC7B,4DAA2B;gBAC3B,mDAAuB;gBACvB,oCAAgB;gBAChB,wCAAkB;gBAClB,+BAAa;gBACb,2CAAmB;gBACnB,yCAAkB;gBAClB,wBAAU;gBACV,2CAAmB;aACpB,CAAC;SACH;QACD,SAAS,EAAE;YACT,mDAAuB;YACvB,+CAAqB;YACrB,+CAAqB;YACrB;gBACE,OAAO,EAAE,oDAA2B;gBACpC,WAAW,EAAE,+CAAqB;aACnC;SACF;QACD,OAAO,EAAE,CAAC,oDAA2B,EAAE,+CAAqB,CAAC;KAC9D,CAAC;GACW,oBAAoB,CAsBhC"}
|
|
@@ -21,7 +21,7 @@ export declare class WorkflowEngineMutations {
|
|
|
21
21
|
constructor(workflowEngineService: WorkflowEngineService);
|
|
22
22
|
submitApprovalInstance(input: SubmitApprovalInstanceInput, currentMemberId: string, authContext: BPMAuthContext): Promise<ApprovalInstanceEntity>;
|
|
23
23
|
processApprovalInstance(instanceId: string): Promise<boolean>;
|
|
24
|
-
decideTask(input: DecideTaskInput, currentMemberId: string): Promise<TaskDecisionEntity>;
|
|
24
|
+
decideTask(input: DecideTaskInput, currentMemberId: string, authContext: BPMAuthContext): Promise<TaskDecisionEntity>;
|
|
25
25
|
reassignMemberTasks(input: ReassignMemberTasksInput, currentMemberId: string): Promise<readonly TaskReassignmentResultObject[]>;
|
|
26
26
|
reassignTask(input: ReassignTaskInput, currentMemberId: string): Promise<TaskReassignmentResultObject>;
|
|
27
27
|
cancelApprovalInstance(input: CancelApprovalInstanceInput, currentMemberId: string): Promise<ApprovalInstanceEntity>;
|
|
@@ -35,6 +35,7 @@ let WorkflowEngineMutations = class WorkflowEngineMutations {
|
|
|
35
35
|
// service keep approver-filled fields out of the submission.
|
|
36
36
|
endUserSubmission: true,
|
|
37
37
|
initiatorMemberId: currentMemberId,
|
|
38
|
+
initiatorCustomFields: null,
|
|
38
39
|
initiatorMetadataSnapshotJson: null,
|
|
39
40
|
// Never read from the input: the person pressing submit is whoever is
|
|
40
41
|
// signed in, so a client cannot claim someone else filed the document.
|
|
@@ -45,7 +46,7 @@ let WorkflowEngineMutations = class WorkflowEngineMutations {
|
|
|
45
46
|
await this.workflowEngineService.processInstance(instanceId);
|
|
46
47
|
return true;
|
|
47
48
|
}
|
|
48
|
-
async decideTask(input, currentMemberId) {
|
|
49
|
+
async decideTask(input, currentMemberId, authContext) {
|
|
49
50
|
// "Sent" means not null and not undefined, so '{}' counts. A host calling
|
|
50
51
|
// the service may leave the fingerprint out; a screen may not, or it would
|
|
51
52
|
// overwrite whatever changed since it loaded the case.
|
|
@@ -58,7 +59,10 @@ let WorkflowEngineMutations = class WorkflowEngineMutations {
|
|
|
58
59
|
return this.workflowEngineService.decideTask({
|
|
59
60
|
...input,
|
|
60
61
|
decidedByMemberId: currentMemberId,
|
|
61
|
-
}
|
|
62
|
+
},
|
|
63
|
+
// The signed-in approver's own context: data-source providers see who
|
|
64
|
+
// is deciding, so an approver-filled option is judged as their pick.
|
|
65
|
+
{ approverAuthContext: authContext });
|
|
62
66
|
}
|
|
63
67
|
async reassignMemberTasks(input, currentMemberId) {
|
|
64
68
|
return this.workflowEngineService.reassignMemberTasks({
|
|
@@ -159,8 +163,9 @@ tslib_1.__decorate([
|
|
|
159
163
|
(0, graphql_1.Mutation)(() => task_decision_entity_1.TaskDecisionEntity),
|
|
160
164
|
tslib_1.__param(0, (0, graphql_1.Args)('input')),
|
|
161
165
|
tslib_1.__param(1, (0, bpm_auth_1.BPMCurrentMemberId)()),
|
|
166
|
+
tslib_1.__param(2, (0, bpm_auth_1.BPMCurrentAuthContext)()),
|
|
162
167
|
tslib_1.__metadata("design:type", Function),
|
|
163
|
-
tslib_1.__metadata("design:paramtypes", [decide_task_input_1.DecideTaskInput, String]),
|
|
168
|
+
tslib_1.__metadata("design:paramtypes", [decide_task_input_1.DecideTaskInput, String, Object]),
|
|
164
169
|
tslib_1.__metadata("design:returntype", Promise)
|
|
165
170
|
], WorkflowEngineMutations.prototype, "decideTask", null);
|
|
166
171
|
tslib_1.__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-engine.mutations.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/workflow-engine/workflow-engine.mutations.ts"],"names":[],"mappings":";;;;AAAA,2CAAqD;AACrD,6CAA+D;AAC/D,0CAMqB;AACrB,qEAAgE;AAChE,+CAGuB;AACvB,yEAAoE;AACpE,6EAAwE;AACxE,iEAA4D;AAC5D,yFAAmF;AACnF,+DAA0D;AAC1D,2FAAoF;AACpF,mFAA6E;AAC7E,mEAA8D;AAC9D,6FAAuF;AACvF,yFAAmF;AACnF,iEAA4D;AAC5D,+CAA2C;AAC3C,yEAA0E;AAC1E,uEAAuE;AACvE,uEAAkE;AAI3D,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClC,YAA6B,qBAA4C;QAA5C,0BAAqB,GAArB,qBAAqB,CAAuB;IAAG,CAAC;IAGvE,AAAN,KAAK,CAAC,sBAAsB,CACX,KAAkC,EAC3B,eAAuB,EACpB,WAA2B;QAEpD,OAAO,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CACtD;YACE,GAAG,KAAK;YACR,qEAAqE;YACrE,WAAW,EAAE,IAAI;YACjB,sEAAsE;YACtE,6DAA6D;YAC7D,iBAAiB,EAAE,IAAI;YACvB,iBAAiB,EAAE,eAAe;YAClC,6BAA6B,EAAE,IAAI;YACnC,sEAAsE;YACtE,uEAAuE;YACvE,mBAAmB,EAAE,eAAe;SACrC,EACD,WAAW,CACZ,CAAC;IACJ,CAAC;IAIK,AAAN,KAAK,CAAC,uBAAuB,CACiB,UAAkB;QAE9D,MAAM,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAE7D,OAAO,IAAI,CAAC;IACd,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU,CACC,KAAsB,EACf,eAAuB;
|
|
1
|
+
{"version":3,"file":"workflow-engine.mutations.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/workflow-engine/workflow-engine.mutations.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,15 +19,17 @@ export declare class WorkflowEngineQueries {
|
|
|
19
19
|
private readonly workflowEngineService;
|
|
20
20
|
private readonly moduleRef;
|
|
21
21
|
constructor(workflowEngineService: WorkflowEngineService, moduleRef: ModuleRef);
|
|
22
|
-
approvalInstances(view: ApprovalInstanceListViewEnum | null, searchText: string | null, state: readonly ApprovalInstanceStateEnum[] | null, templateId: string | null, page: number | null, pageSize: number | null, fieldFilters: readonly ApprovalInstanceFieldFilterInput[] | null, sort: readonly ApprovalInstanceSortInput[] | null, currentAuthContext: BPMAuthContext): Promise<readonly ApprovalInstanceEntity[]>;
|
|
23
|
-
approvalInstanceCount(view: ApprovalInstanceListViewEnum | null, searchText: string | null, state: readonly ApprovalInstanceStateEnum[] | null, templateId: string | null, fieldFilters: readonly ApprovalInstanceFieldFilterInput[] | null, currentAuthContext: BPMAuthContext): Promise<number>;
|
|
24
|
-
approvalInstancePageInfo(view: ApprovalInstanceListViewEnum | null, searchText: string | null, state: readonly ApprovalInstanceStateEnum[] | null, templateId: string | null, page: number | null, pageSize: number | null, fieldFilters: readonly ApprovalInstanceFieldFilterInput[] | null, sort: readonly ApprovalInstanceSortInput[] | null, currentAuthContext: BPMAuthContext): Promise<ApprovalInstancePageInfoObject>;
|
|
22
|
+
approvalInstances(view: ApprovalInstanceListViewEnum | null, searchText: string | null, state: readonly ApprovalInstanceStateEnum[] | null, templateId: string | null, templateKey: string | null, page: number | null, pageSize: number | null, fieldFilters: readonly ApprovalInstanceFieldFilterInput[] | null, sort: readonly ApprovalInstanceSortInput[] | null, currentAuthContext: BPMAuthContext): Promise<readonly ApprovalInstanceEntity[]>;
|
|
23
|
+
approvalInstanceCount(view: ApprovalInstanceListViewEnum | null, searchText: string | null, state: readonly ApprovalInstanceStateEnum[] | null, templateId: string | null, templateKey: string | null, fieldFilters: readonly ApprovalInstanceFieldFilterInput[] | null, currentAuthContext: BPMAuthContext): Promise<number>;
|
|
24
|
+
approvalInstancePageInfo(view: ApprovalInstanceListViewEnum | null, searchText: string | null, state: readonly ApprovalInstanceStateEnum[] | null, templateId: string | null, templateKey: string | null, page: number | null, pageSize: number | null, fieldFilters: readonly ApprovalInstanceFieldFilterInput[] | null, sort: readonly ApprovalInstanceSortInput[] | null, currentAuthContext: BPMAuthContext): Promise<ApprovalInstancePageInfoObject>;
|
|
25
25
|
workflowDashboardSummary(from: Date | null, to: Date | null, currentAuthContext: BPMAuthContext): Promise<WorkflowDashboardSummaryObject>;
|
|
26
26
|
approvalInstance(id: string, currentAuthContext: BPMAuthContext): Promise<ApprovalInstanceEntity>;
|
|
27
27
|
workflowTokens(instanceId: string, currentAuthContext: BPMAuthContext): Promise<readonly WorkflowTokenEntity[]>;
|
|
28
28
|
tasks(instanceId: string, currentAuthContext: BPMAuthContext): Promise<readonly TaskEntity[]>;
|
|
29
|
-
inboxTasks(assigneeMemberId: string, currentMemberId: string): Promise<readonly TaskEntity[]>;
|
|
30
|
-
|
|
29
|
+
inboxTasks(assigneeMemberId: string, currentMemberId: string, page: number | null, pageSize: number | null, templateIds: readonly string[] | null, templateKey: string | null): Promise<readonly TaskEntity[]>;
|
|
30
|
+
inboxTaskCount(currentMemberId: string, templateIds: readonly string[] | null, templateKey: string | null): Promise<number>;
|
|
31
|
+
approvalHistoryTasks(assigneeMemberId: string, currentMemberId: string, page: number | null, pageSize: number | null, instanceState: ApprovalInstanceStateEnum | null, templateIds: readonly string[] | null, templateKey: string | null): Promise<readonly TaskEntity[]>;
|
|
32
|
+
approvalHistoryTaskCount(currentMemberId: string, instanceState: ApprovalInstanceStateEnum | null, templateIds: readonly string[] | null, templateKey: string | null): Promise<number>;
|
|
31
33
|
memberOpenTasks(memberId: string): Promise<readonly MemberOpenTaskRecord[]>;
|
|
32
34
|
inactiveMembersWithOpenTasks(): Promise<readonly InactiveMemberOpenTasksRecord[]>;
|
|
33
35
|
launchableApprovalTemplates(currentMemberId: string, currentAuthContext: BPMAuthContext): Promise<readonly ApprovalTemplateEntity[]>;
|