@rytass/bpm-core-nestjs-module 0.23.0 → 0.24.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 +31 -0
- package/README.md +68 -1
- package/package.json +2 -2
- package/src/lib/migrations/0000000033000-activity-log-advance-failed-index.d.ts +35 -0
- package/src/lib/migrations/0000000033000-activity-log-advance-failed-index.js +51 -0
- package/src/lib/migrations/0000000033000-activity-log-advance-failed-index.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.d.ts +3 -2
- package/src/lib/notification/notification.service.js +2 -1
- package/src/lib/notification/notification.service.js.map +1 -1
- package/src/lib/template/template.service.js +17 -0
- package/src/lib/template/template.service.js.map +1 -1
- package/src/lib/template/workflow-definition.validator.js +12 -6
- package/src/lib/template/workflow-definition.validator.js.map +1 -1
- package/src/lib/workflow-engine/dto/admin-cancel-approval-instance.input.d.ts +9 -0
- package/src/lib/workflow-engine/dto/admin-cancel-approval-instance.input.js +24 -0
- package/src/lib/workflow-engine/dto/admin-cancel-approval-instance.input.js.map +1 -0
- package/src/lib/workflow-engine/dto/reassign-member-tasks.input.d.ts +2 -0
- package/src/lib/workflow-engine/dto/reassign-member-tasks.input.js +8 -0
- package/src/lib/workflow-engine/dto/reassign-member-tasks.input.js.map +1 -1
- package/src/lib/workflow-engine/index.d.ts +2 -0
- package/src/lib/workflow-engine/index.js +2 -0
- package/src/lib/workflow-engine/index.js.map +1 -1
- package/src/lib/workflow-engine/instance-advance-failure.d.ts +28 -0
- package/src/lib/workflow-engine/instance-advance-failure.js +20 -0
- package/src/lib/workflow-engine/instance-advance-failure.js.map +1 -0
- package/src/lib/workflow-engine/stuck-approval-instance.object.d.ts +22 -0
- package/src/lib/workflow-engine/stuck-approval-instance.object.js +107 -0
- package/src/lib/workflow-engine/stuck-approval-instance.object.js.map +1 -0
- package/src/lib/workflow-engine/stuck-approval-instance.query.d.ts +22 -0
- package/src/lib/workflow-engine/stuck-approval-instance.query.js +139 -0
- package/src/lib/workflow-engine/stuck-approval-instance.query.js.map +1 -0
- package/src/lib/workflow-engine/workflow-engine.enums.d.ts +11 -0
- package/src/lib/workflow-engine/workflow-engine.enums.js +16 -1
- package/src/lib/workflow-engine/workflow-engine.enums.js.map +1 -1
- package/src/lib/workflow-engine/workflow-engine.mutations.d.ts +2 -0
- package/src/lib/workflow-engine/workflow-engine.mutations.js +31 -3
- package/src/lib/workflow-engine/workflow-engine.mutations.js.map +1 -1
- package/src/lib/workflow-engine/workflow-engine.queries.d.ts +3 -1
- package/src/lib/workflow-engine/workflow-engine.queries.js +34 -0
- package/src/lib/workflow-engine/workflow-engine.queries.js.map +1 -1
- package/src/lib/workflow-engine/workflow-engine.service.d.ts +207 -3
- package/src/lib/workflow-engine/workflow-engine.service.js +745 -45
- package/src/lib/workflow-engine/workflow-engine.service.js.map +1 -1
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StuckApprovalInstanceObject = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const graphql_1 = require("@nestjs/graphql");
|
|
6
|
+
const workflow_engine_enums_1 = require("./workflow-engine.enums");
|
|
7
|
+
/**
|
|
8
|
+
* An approval instance that could not move on to its next stage, as the
|
|
9
|
+
* administrator's stuck-instances screen lists it: one row per instance, from
|
|
10
|
+
* its latest unresolved failure.
|
|
11
|
+
*/
|
|
12
|
+
let StuckApprovalInstanceObject = class StuckApprovalInstanceObject {
|
|
13
|
+
};
|
|
14
|
+
exports.StuckApprovalInstanceObject = StuckApprovalInstanceObject;
|
|
15
|
+
tslib_1.__decorate([
|
|
16
|
+
(0, graphql_1.Field)(() => graphql_1.ID, { description: 'The stuck instance.' }),
|
|
17
|
+
tslib_1.__metadata("design:type", String)
|
|
18
|
+
], StuckApprovalInstanceObject.prototype, "instanceId", void 0);
|
|
19
|
+
tslib_1.__decorate([
|
|
20
|
+
(0, graphql_1.Field)({ description: 'Title of the stuck instance.' }),
|
|
21
|
+
tslib_1.__metadata("design:type", String)
|
|
22
|
+
], StuckApprovalInstanceObject.prototype, "instanceTitle", void 0);
|
|
23
|
+
tslib_1.__decorate([
|
|
24
|
+
(0, graphql_1.Field)(() => graphql_1.ID, { description: 'The template the instance was filed from.' }),
|
|
25
|
+
tslib_1.__metadata("design:type", String)
|
|
26
|
+
], StuckApprovalInstanceObject.prototype, "templateId", void 0);
|
|
27
|
+
tslib_1.__decorate([
|
|
28
|
+
(0, graphql_1.Field)(() => String, {
|
|
29
|
+
description: 'Name of that template; null when it can no longer be read.',
|
|
30
|
+
nullable: true,
|
|
31
|
+
}),
|
|
32
|
+
tslib_1.__metadata("design:type", Object)
|
|
33
|
+
], StuckApprovalInstanceObject.prototype, "templateName", void 0);
|
|
34
|
+
tslib_1.__decorate([
|
|
35
|
+
(0, graphql_1.Field)({ description: 'Who filed the instance.' }),
|
|
36
|
+
tslib_1.__metadata("design:type", String)
|
|
37
|
+
], StuckApprovalInstanceObject.prototype, "initiatorMemberId", void 0);
|
|
38
|
+
tslib_1.__decorate([
|
|
39
|
+
(0, graphql_1.Field)(() => workflow_engine_enums_1.StuckApprovalInstanceKindEnum, {
|
|
40
|
+
description: 'DECISION: a decision on a task could not move the instance on. ' +
|
|
41
|
+
'RESUBMIT: the initiator resubmitted a returned instance and it could not start.',
|
|
42
|
+
}),
|
|
43
|
+
tslib_1.__metadata("design:type", String)
|
|
44
|
+
], StuckApprovalInstanceObject.prototype, "kind", void 0);
|
|
45
|
+
tslib_1.__decorate([
|
|
46
|
+
(0, graphql_1.Field)(() => String, {
|
|
47
|
+
description: 'The node the failed decision was made on; null for RESUBMIT.',
|
|
48
|
+
nullable: true,
|
|
49
|
+
}),
|
|
50
|
+
tslib_1.__metadata("design:type", Object)
|
|
51
|
+
], StuckApprovalInstanceObject.prototype, "nodeId", void 0);
|
|
52
|
+
tslib_1.__decorate([
|
|
53
|
+
(0, graphql_1.Field)(() => String, {
|
|
54
|
+
description: 'Display name of that node, read from the instance workflow snapshot; ' +
|
|
55
|
+
'null for RESUBMIT or when the node carries no label.',
|
|
56
|
+
nullable: true,
|
|
57
|
+
}),
|
|
58
|
+
tslib_1.__metadata("design:type", Object)
|
|
59
|
+
], StuckApprovalInstanceObject.prototype, "nodeLabel", void 0);
|
|
60
|
+
tslib_1.__decorate([
|
|
61
|
+
(0, graphql_1.Field)(() => graphql_1.ID, {
|
|
62
|
+
description: 'The task the failed decision was made on; null for RESUBMIT.',
|
|
63
|
+
nullable: true,
|
|
64
|
+
}),
|
|
65
|
+
tslib_1.__metadata("design:type", Object)
|
|
66
|
+
], StuckApprovalInstanceObject.prototype, "taskId", void 0);
|
|
67
|
+
tslib_1.__decorate([
|
|
68
|
+
(0, graphql_1.Field)(() => [String], {
|
|
69
|
+
description: 'Who has to press again now, read when the list is loaded. DECISION: ' +
|
|
70
|
+
'the members whose seat on the task is PENDING or CLAIMED (WAITING ' +
|
|
71
|
+
'seats are not their turn yet), or the assignee of a task that has no ' +
|
|
72
|
+
'candidate rows at all; it follows a later reassignment. RESUBMIT: the ' +
|
|
73
|
+
'initiator only.',
|
|
74
|
+
}),
|
|
75
|
+
tslib_1.__metadata("design:type", Array)
|
|
76
|
+
], StuckApprovalInstanceObject.prototype, "pendingActorMemberIds", void 0);
|
|
77
|
+
tslib_1.__decorate([
|
|
78
|
+
(0, graphql_1.Field)(() => String, {
|
|
79
|
+
description: 'The member the failed attempt was made as. For an automatic approval ' +
|
|
80
|
+
'this is the holder the system picked, who did not press anything: ' +
|
|
81
|
+
'read `automatic` first.',
|
|
82
|
+
nullable: true,
|
|
83
|
+
}),
|
|
84
|
+
tslib_1.__metadata("design:type", Object)
|
|
85
|
+
], StuckApprovalInstanceObject.prototype, "failedActorMemberId", void 0);
|
|
86
|
+
tslib_1.__decorate([
|
|
87
|
+
(0, graphql_1.Field)(() => String, {
|
|
88
|
+
description: "'SLA_AUTO_APPROVE' when the failed attempt was the system approving " +
|
|
89
|
+
'an overdue task, null when a person pressed the button.',
|
|
90
|
+
nullable: true,
|
|
91
|
+
}),
|
|
92
|
+
tslib_1.__metadata("design:type", Object)
|
|
93
|
+
], StuckApprovalInstanceObject.prototype, "automatic", void 0);
|
|
94
|
+
tslib_1.__decorate([
|
|
95
|
+
(0, graphql_1.Field)({
|
|
96
|
+
description: 'Why the instance could not move on, as the operator saw it.',
|
|
97
|
+
}),
|
|
98
|
+
tslib_1.__metadata("design:type", String)
|
|
99
|
+
], StuckApprovalInstanceObject.prototype, "message", void 0);
|
|
100
|
+
tslib_1.__decorate([
|
|
101
|
+
(0, graphql_1.Field)({ description: 'When the failed attempt was recorded.' }),
|
|
102
|
+
tslib_1.__metadata("design:type", Date)
|
|
103
|
+
], StuckApprovalInstanceObject.prototype, "failedAt", void 0);
|
|
104
|
+
exports.StuckApprovalInstanceObject = StuckApprovalInstanceObject = tslib_1.__decorate([
|
|
105
|
+
(0, graphql_1.ObjectType)('StuckApprovalInstance')
|
|
106
|
+
], StuckApprovalInstanceObject);
|
|
107
|
+
//# sourceMappingURL=stuck-approval-instance.object.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stuck-approval-instance.object.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/workflow-engine/stuck-approval-instance.object.ts"],"names":[],"mappings":";;;;AAAA,6CAAwD;AACxD,mEAAwE;AAExE;;;;GAIG;AAEI,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;CAiFvC,CAAA;AAjFY,kEAA2B;AAEtC;IADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,YAAE,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;;+DACpC;AAGpB;IADC,IAAA,eAAK,EAAC,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAC;;kEAChC;AAGvB;IADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,YAAE,EAAE,EAAE,WAAW,EAAE,2CAA2C,EAAE,CAAC;;+DAC1D;AAMpB;IAJC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,MAAM,EAAE;QACnB,WAAW,EAAE,4DAA4D;QACzE,QAAQ,EAAE,IAAI;KACf,CAAC;;iEAC2B;AAG7B;IADC,IAAA,eAAK,EAAC,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;;sEACvB;AAO3B;IALC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,qDAA6B,EAAE;QAC1C,WAAW,EACT,iEAAiE;YACjE,iFAAiF;KACpF,CAAC;;yDACmC;AAOrC;IALC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,MAAM,EAAE;QACnB,WAAW,EACT,8DAA8D;QAChE,QAAQ,EAAE,IAAI;KACf,CAAC;;2DACqB;AAQvB;IANC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,MAAM,EAAE;QACnB,WAAW,EACT,uEAAuE;YACvE,sDAAsD;QACxD,QAAQ,EAAE,IAAI;KACf,CAAC;;8DACwB;AAM1B;IAJC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,YAAE,EAAE;QACf,WAAW,EAAE,8DAA8D;QAC3E,QAAQ,EAAE,IAAI;KACf,CAAC;;2DACqB;AAUvB;IARC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE;QACrB,WAAW,EACT,sEAAsE;YACtE,oEAAoE;YACpE,uEAAuE;YACvE,wEAAwE;YACxE,iBAAiB;KACpB,CAAC;;0EAC+B;AASjC;IAPC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,MAAM,EAAE;QACnB,WAAW,EACT,uEAAuE;YACvE,oEAAoE;YACpE,yBAAyB;QAC3B,QAAQ,EAAE,IAAI;KACf,CAAC;;wEACkC;AAQpC;IANC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,MAAM,EAAE;QACnB,WAAW,EACT,sEAAsE;YACtE,yDAAyD;QAC3D,QAAQ,EAAE,IAAI;KACf,CAAC;;8DACwB;AAK1B;IAHC,IAAA,eAAK,EAAC;QACL,WAAW,EAAE,6DAA6D;KAC3E,CAAC;;4DACe;AAGjB;IADC,IAAA,eAAK,EAAC,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC;sCACrD,IAAI;6DAAC;sCAhFL,2BAA2B;IADvC,IAAA,oBAAU,EAAC,uBAAuB,CAAC;GACvB,2BAA2B,CAiFvC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { EntityManager } from 'typeorm';
|
|
2
|
+
import { ActivityLogEntity } from './activity-log.entity';
|
|
3
|
+
import { ApprovalInstanceEntity } from './approval-instance.entity';
|
|
4
|
+
import { TaskStatusEnum } from './workflow-engine.enums';
|
|
5
|
+
/**
|
|
6
|
+
* The rule above for one instance, given its `ADVANCE_FAILED` and
|
|
7
|
+
* `INSTANCE_RESUBMITTED` rows in `seq` order and the ids of the tasks among
|
|
8
|
+
* them that are still open.
|
|
9
|
+
*/
|
|
10
|
+
export declare function readUnresolvedInstanceFailures(instance: ApprovalInstanceEntity, logs: readonly ActivityLogEntity[], openTaskIds: ReadonlySet<string>): readonly ActivityLogEntity[];
|
|
11
|
+
/**
|
|
12
|
+
* One page of stuck instances, as the ids of the failure that describes each:
|
|
13
|
+
* its latest unresolved `ADVANCE_FAILED` (highest `seq`). Newest failure first:
|
|
14
|
+
* `created_at` is the transaction start, so `seq` breaks a tie within one
|
|
15
|
+
* transaction, and the instance id any tie left after that.
|
|
16
|
+
*/
|
|
17
|
+
export declare function readStuckFailurePage(manager: EntityManager, openTaskStatuses: readonly TaskStatusEnum[], page: {
|
|
18
|
+
readonly offset: number;
|
|
19
|
+
readonly limit: number;
|
|
20
|
+
}): Promise<readonly string[]>;
|
|
21
|
+
/** How many instances {@link readStuckFailurePage} pages through. */
|
|
22
|
+
export declare function countStuckInstances(manager: EntityManager, openTaskStatuses: readonly TaskStatusEnum[]): Promise<number>;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readUnresolvedInstanceFailures = readUnresolvedInstanceFailures;
|
|
4
|
+
exports.readStuckFailurePage = readStuckFailurePage;
|
|
5
|
+
exports.countStuckInstances = countStuckInstances;
|
|
6
|
+
const typeorm_1 = require("typeorm");
|
|
7
|
+
const activity_log_entity_1 = require("./activity-log.entity");
|
|
8
|
+
const approval_instance_entity_1 = require("./approval-instance.entity");
|
|
9
|
+
const task_entity_1 = require("./task.entity");
|
|
10
|
+
const workflow_engine_enums_1 = require("./workflow-engine.enums");
|
|
11
|
+
/*
|
|
12
|
+
* Which `ADVANCE_FAILED` rows still describe a stuck instance, written twice:
|
|
13
|
+
* `readUnresolvedInstanceFailures` in TypeScript, for the duplicate check that
|
|
14
|
+
* runs when a failure is recorded, and `createUnresolvedFailureQuery` in SQL,
|
|
15
|
+
* for the administrator's stuck list, so that list can be paged and counted by
|
|
16
|
+
* the database. The two must say the same thing; change them together.
|
|
17
|
+
*
|
|
18
|
+
* - `DECISION`: the instance is RUNNING and the failed task is still open.
|
|
19
|
+
* Once the task is done, cancelled, transferred or the instance has ended,
|
|
20
|
+
* the case has moved on or been taken over.
|
|
21
|
+
* - `RESUBMIT`: the instance is RETURNED and no later `INSTANCE_RESUBMITTED`
|
|
22
|
+
* exists.
|
|
23
|
+
* - Any other `kind`: never unresolved.
|
|
24
|
+
*
|
|
25
|
+
* Not exported from the package: both are internals of the workflow engine.
|
|
26
|
+
*/
|
|
27
|
+
/** The `kind` of an `ADVANCE_FAILED` payload, trimmed; `null` when absent. */
|
|
28
|
+
function readFailureKind(failure) {
|
|
29
|
+
const value = failure.payload['kind'];
|
|
30
|
+
return typeof value === 'string' && value.trim() ? value.trim() : null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The rule above for one instance, given its `ADVANCE_FAILED` and
|
|
34
|
+
* `INSTANCE_RESUBMITTED` rows in `seq` order and the ids of the tasks among
|
|
35
|
+
* them that are still open.
|
|
36
|
+
*/
|
|
37
|
+
function readUnresolvedInstanceFailures(instance, logs, openTaskIds) {
|
|
38
|
+
return logs.filter((failure, index) => {
|
|
39
|
+
if (failure.eventType !== workflow_engine_enums_1.ActivityLogEventTypeEnum.ADVANCE_FAILED) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const kind = readFailureKind(failure);
|
|
43
|
+
if (kind === 'DECISION') {
|
|
44
|
+
return (instance.state === workflow_engine_enums_1.ApprovalInstanceStateEnum.RUNNING &&
|
|
45
|
+
failure.taskId !== null &&
|
|
46
|
+
openTaskIds.has(failure.taskId));
|
|
47
|
+
}
|
|
48
|
+
if (kind === 'RESUBMIT') {
|
|
49
|
+
return (instance.state === workflow_engine_enums_1.ApprovalInstanceStateEnum.RETURNED &&
|
|
50
|
+
!logs
|
|
51
|
+
.slice(index + 1)
|
|
52
|
+
.some((log) => log.eventType === workflow_engine_enums_1.ActivityLogEventTypeEnum.INSTANCE_RESUBMITTED));
|
|
53
|
+
}
|
|
54
|
+
return false;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/*
|
|
58
|
+
* TypeORM rewrites `alias.property` to the quoted column only when the next
|
|
59
|
+
* character is a space, a comma or a closing bracket; before a line break it
|
|
60
|
+
* leaves the path bare, which Postgres folds to lower case and cannot find. So
|
|
61
|
+
* every condition below is a single line.
|
|
62
|
+
*/
|
|
63
|
+
const FAILURE_KIND_SQL = `TRIM("failure"."payload"->>'kind')`;
|
|
64
|
+
/**
|
|
65
|
+
* The rule above as SQL: every unresolved `ADVANCE_FAILED` row (alias
|
|
66
|
+
* `failure`), joined to its instance (alias `stuckInstance`).
|
|
67
|
+
*/
|
|
68
|
+
function createUnresolvedFailureQuery(manager, openTaskStatuses) {
|
|
69
|
+
const query = manager
|
|
70
|
+
.createQueryBuilder(activity_log_entity_1.ActivityLogEntity, 'failure')
|
|
71
|
+
.innerJoin(approval_instance_entity_1.ApprovalInstanceEntity, 'stuckInstance', 'stuckInstance.id = failure.instanceId');
|
|
72
|
+
const openTask = query
|
|
73
|
+
.subQuery()
|
|
74
|
+
.select('1')
|
|
75
|
+
.from(task_entity_1.TaskEntity, 'failedTask')
|
|
76
|
+
.where('failedTask.id = failure.taskId ')
|
|
77
|
+
.andWhere('failedTask.status IN (:...stuckOpenTaskStatuses) ')
|
|
78
|
+
.getQuery();
|
|
79
|
+
const laterResubmission = query
|
|
80
|
+
.subQuery()
|
|
81
|
+
.select('1')
|
|
82
|
+
.from(activity_log_entity_1.ActivityLogEntity, 'resubmitted')
|
|
83
|
+
.where('resubmitted.instanceId = failure.instanceId ')
|
|
84
|
+
.andWhere('resubmitted.eventType = :stuckResubmittedEventType ')
|
|
85
|
+
.andWhere('resubmitted.seq > failure.seq ')
|
|
86
|
+
.getQuery();
|
|
87
|
+
// The event type is a literal, not a parameter: Postgres can use the
|
|
88
|
+
// partial index `IDX_activity_logs_advance_failed` (migration 0000000033000)
|
|
89
|
+
// only when the plan can see the value matches its WHERE clause.
|
|
90
|
+
return query
|
|
91
|
+
.where(`failure.eventType = '${workflow_engine_enums_1.ActivityLogEventTypeEnum.ADVANCE_FAILED}' `)
|
|
92
|
+
.andWhere(new typeorm_1.Brackets((either) => {
|
|
93
|
+
either
|
|
94
|
+
.where(`${FAILURE_KIND_SQL} = 'DECISION' AND stuckInstance.state = :stuckRunningState AND EXISTS ${openTask}`)
|
|
95
|
+
.orWhere(`${FAILURE_KIND_SQL} = 'RESUBMIT' AND stuckInstance.state = :stuckReturnedState AND NOT EXISTS ${laterResubmission}`);
|
|
96
|
+
}))
|
|
97
|
+
.setParameters({
|
|
98
|
+
stuckOpenTaskStatuses: [...openTaskStatuses],
|
|
99
|
+
stuckResubmittedEventType: workflow_engine_enums_1.ActivityLogEventTypeEnum.INSTANCE_RESUBMITTED,
|
|
100
|
+
stuckReturnedState: workflow_engine_enums_1.ApprovalInstanceStateEnum.RETURNED,
|
|
101
|
+
stuckRunningState: workflow_engine_enums_1.ApprovalInstanceStateEnum.RUNNING,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* One page of stuck instances, as the ids of the failure that describes each:
|
|
106
|
+
* its latest unresolved `ADVANCE_FAILED` (highest `seq`). Newest failure first:
|
|
107
|
+
* `created_at` is the transaction start, so `seq` breaks a tie within one
|
|
108
|
+
* transaction, and the instance id any tie left after that.
|
|
109
|
+
*/
|
|
110
|
+
async function readStuckFailurePage(manager, openTaskStatuses, page) {
|
|
111
|
+
const latest = createUnresolvedFailureQuery(manager, openTaskStatuses)
|
|
112
|
+
.select('failure.id', 'failureId')
|
|
113
|
+
.addSelect('failure.instanceId', 'instanceId')
|
|
114
|
+
.addSelect('failure.createdAt', 'createdAt')
|
|
115
|
+
.addSelect('failure.seq', 'seq')
|
|
116
|
+
.distinctOn(['failure.instanceId'])
|
|
117
|
+
.orderBy('failure.instanceId', 'ASC')
|
|
118
|
+
.addOrderBy('failure.seq', 'DESC');
|
|
119
|
+
const rows = await manager
|
|
120
|
+
.createQueryBuilder()
|
|
121
|
+
.select('"latest"."failureId"', 'failureId')
|
|
122
|
+
.from(`(${latest.getQuery()})`, 'latest')
|
|
123
|
+
.setParameters(latest.getParameters())
|
|
124
|
+
.orderBy('"latest"."createdAt"', 'DESC')
|
|
125
|
+
.addOrderBy('"latest"."seq"', 'DESC')
|
|
126
|
+
.addOrderBy('"latest"."instanceId"', 'ASC')
|
|
127
|
+
.offset(page.offset)
|
|
128
|
+
.limit(page.limit)
|
|
129
|
+
.getRawMany();
|
|
130
|
+
return rows.map((row) => row.failureId);
|
|
131
|
+
}
|
|
132
|
+
/** How many instances {@link readStuckFailurePage} pages through. */
|
|
133
|
+
async function countStuckInstances(manager, openTaskStatuses) {
|
|
134
|
+
const row = await createUnresolvedFailureQuery(manager, openTaskStatuses)
|
|
135
|
+
.select('COUNT(DISTINCT failure.instanceId)', 'count')
|
|
136
|
+
.getRawOne();
|
|
137
|
+
return Number(row?.count ?? 0);
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=stuck-approval-instance.query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stuck-approval-instance.query.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/workflow-engine/stuck-approval-instance.query.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,6 +55,11 @@ export declare enum MemberTaskRoleEnum {
|
|
|
55
55
|
ASSIGNEE = "ASSIGNEE",
|
|
56
56
|
CANDIDATE = "CANDIDATE"
|
|
57
57
|
}
|
|
58
|
+
/** What stopped a stuck instance: a decision on a task, or a resubmission after a return. */
|
|
59
|
+
export declare enum StuckApprovalInstanceKindEnum {
|
|
60
|
+
DECISION = "DECISION",
|
|
61
|
+
RESUBMIT = "RESUBMIT"
|
|
62
|
+
}
|
|
58
63
|
export declare enum TaskReassignmentOutcomeEnum {
|
|
59
64
|
REASSIGNED = "REASSIGNED",
|
|
60
65
|
REJECTED = "REJECTED",
|
|
@@ -86,6 +91,12 @@ export declare enum ActivityLogEventTypeEnum {
|
|
|
86
91
|
ADHOC_DIRECTIVE_CANCELLED = "ADHOC_DIRECTIVE_CANCELLED",
|
|
87
92
|
ADHOC_DIRECTIVE_CREATED = "ADHOC_DIRECTIVE_CREATED",
|
|
88
93
|
ADHOC_PRE_APPROVAL_RETURNED = "ADHOC_PRE_APPROVAL_RETURNED",
|
|
94
|
+
/**
|
|
95
|
+
* A decision or a resubmission could not move the instance on (the next stage
|
|
96
|
+
* had no resolvable approver, say). The transaction rolled back, so the task
|
|
97
|
+
* is still open or the instance is still returned; this row is the only trace.
|
|
98
|
+
*/
|
|
99
|
+
ADVANCE_FAILED = "ADVANCE_FAILED",
|
|
89
100
|
ENGINE_PROCESS_REQUESTED = "ENGINE_PROCESS_REQUESTED",
|
|
90
101
|
INSTANCE_CANCELLED = "INSTANCE_CANCELLED",
|
|
91
102
|
/** SLA `TERMINATE_INSTANCE` ended the instance; it has no actor. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ActivityLogEventTypeEnum = exports.TaskDecisionActionEnum = exports.TaskReassignmentErrorCodeEnum = exports.TaskReassignmentOutcomeEnum = exports.MemberTaskRoleEnum = exports.TaskCandidateStatusEnum = exports.TaskAssignmentTypeEnum = exports.TaskStatusEnum = exports.WorkflowTokenStatusEnum = exports.ApprovalInstanceSortDirectionEnum = exports.ApprovalInstanceFieldFilterOperatorEnum = exports.ApprovalInstanceListViewEnum = exports.ApprovalInstanceStateEnum = void 0;
|
|
3
|
+
exports.ActivityLogEventTypeEnum = exports.TaskDecisionActionEnum = exports.TaskReassignmentErrorCodeEnum = exports.TaskReassignmentOutcomeEnum = exports.StuckApprovalInstanceKindEnum = exports.MemberTaskRoleEnum = exports.TaskCandidateStatusEnum = exports.TaskAssignmentTypeEnum = exports.TaskStatusEnum = exports.WorkflowTokenStatusEnum = exports.ApprovalInstanceSortDirectionEnum = exports.ApprovalInstanceFieldFilterOperatorEnum = exports.ApprovalInstanceListViewEnum = exports.ApprovalInstanceStateEnum = void 0;
|
|
4
4
|
const graphql_1 = require("@nestjs/graphql");
|
|
5
5
|
var ApprovalInstanceStateEnum;
|
|
6
6
|
(function (ApprovalInstanceStateEnum) {
|
|
@@ -68,6 +68,12 @@ var MemberTaskRoleEnum;
|
|
|
68
68
|
MemberTaskRoleEnum["ASSIGNEE"] = "ASSIGNEE";
|
|
69
69
|
MemberTaskRoleEnum["CANDIDATE"] = "CANDIDATE";
|
|
70
70
|
})(MemberTaskRoleEnum || (exports.MemberTaskRoleEnum = MemberTaskRoleEnum = {}));
|
|
71
|
+
/** What stopped a stuck instance: a decision on a task, or a resubmission after a return. */
|
|
72
|
+
var StuckApprovalInstanceKindEnum;
|
|
73
|
+
(function (StuckApprovalInstanceKindEnum) {
|
|
74
|
+
StuckApprovalInstanceKindEnum["DECISION"] = "DECISION";
|
|
75
|
+
StuckApprovalInstanceKindEnum["RESUBMIT"] = "RESUBMIT";
|
|
76
|
+
})(StuckApprovalInstanceKindEnum || (exports.StuckApprovalInstanceKindEnum = StuckApprovalInstanceKindEnum = {}));
|
|
71
77
|
var TaskReassignmentOutcomeEnum;
|
|
72
78
|
(function (TaskReassignmentOutcomeEnum) {
|
|
73
79
|
TaskReassignmentOutcomeEnum["REASSIGNED"] = "REASSIGNED";
|
|
@@ -103,6 +109,12 @@ var ActivityLogEventTypeEnum;
|
|
|
103
109
|
ActivityLogEventTypeEnum["ADHOC_DIRECTIVE_CANCELLED"] = "ADHOC_DIRECTIVE_CANCELLED";
|
|
104
110
|
ActivityLogEventTypeEnum["ADHOC_DIRECTIVE_CREATED"] = "ADHOC_DIRECTIVE_CREATED";
|
|
105
111
|
ActivityLogEventTypeEnum["ADHOC_PRE_APPROVAL_RETURNED"] = "ADHOC_PRE_APPROVAL_RETURNED";
|
|
112
|
+
/**
|
|
113
|
+
* A decision or a resubmission could not move the instance on (the next stage
|
|
114
|
+
* had no resolvable approver, say). The transaction rolled back, so the task
|
|
115
|
+
* is still open or the instance is still returned; this row is the only trace.
|
|
116
|
+
*/
|
|
117
|
+
ActivityLogEventTypeEnum["ADVANCE_FAILED"] = "ADVANCE_FAILED";
|
|
106
118
|
ActivityLogEventTypeEnum["ENGINE_PROCESS_REQUESTED"] = "ENGINE_PROCESS_REQUESTED";
|
|
107
119
|
ActivityLogEventTypeEnum["INSTANCE_CANCELLED"] = "INSTANCE_CANCELLED";
|
|
108
120
|
/** SLA `TERMINATE_INSTANCE` ended the instance; it has no actor. */
|
|
@@ -157,6 +169,9 @@ var ActivityLogEventTypeEnum;
|
|
|
157
169
|
(0, graphql_1.registerEnumType)(MemberTaskRoleEnum, {
|
|
158
170
|
name: 'MemberTaskRole',
|
|
159
171
|
});
|
|
172
|
+
(0, graphql_1.registerEnumType)(StuckApprovalInstanceKindEnum, {
|
|
173
|
+
name: 'StuckApprovalInstanceKind',
|
|
174
|
+
});
|
|
160
175
|
(0, graphql_1.registerEnumType)(TaskReassignmentOutcomeEnum, {
|
|
161
176
|
name: 'TaskReassignmentOutcome',
|
|
162
177
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-engine.enums.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/workflow-engine/workflow-engine.enums.ts"],"names":[],"mappings":";;;AAAA,6CAAmD;AAEnD,IAAY,yBAQX;AARD,WAAY,yBAAyB;IACnC,kDAAqB,CAAA;IACrB,oDAAuB,CAAA;IACvB,4CAAe,CAAA;IACf,gDAAmB,CAAA;IACnB,kDAAqB,CAAA;IACrB,kDAAqB,CAAA;IACrB,gDAAmB,CAAA;AACrB,CAAC,EARW,yBAAyB,yCAAzB,yBAAyB,QAQpC;AAED,IAAY,4BAIX;AAJD,WAAY,4BAA4B;IACtC,2CAAW,CAAA;IACX,yCAAS,CAAA;IACT,6CAAa,CAAA;AACf,CAAC,EAJW,4BAA4B,4CAA5B,4BAA4B,QAIvC;AAED,+EAA+E;AAC/E,IAAY,uCAMX;AAND,WAAY,uCAAuC;IACjD,gEAAqB,CAAA;IACrB,4DAAiB,CAAA;IACjB,oDAAS,CAAA;IACT,oEAAyB,CAAA;IACzB,0DAAe,CAAA;AACjB,CAAC,EANW,uCAAuC,uDAAvC,uCAAuC,QAMlD;AAED,IAAY,iCAGX;AAHD,WAAY,iCAAiC;IAC3C,gDAAW,CAAA;IACX,kDAAa,CAAA;AACf,CAAC,EAHW,iCAAiC,iDAAjC,iCAAiC,QAG5C;AAED,IAAY,uBAIX;AAJD,WAAY,uBAAuB;IACjC,4CAAiB,CAAA;IACjB,gDAAqB,CAAA;IACrB,8CAAmB,CAAA;AACrB,CAAC,EAJW,uBAAuB,uCAAvB,uBAAuB,QAIlC;AAED,IAAY,cAMX;AAND,WAAY,cAAc;IACxB,yCAAuB,CAAA;IACvB,yCAAuB,CAAA;IACvB,6CAA2B,CAAA;IAC3B,qCAAmB,CAAA;IACnB,6CAA2B,CAAA;AAC7B,CAAC,EANW,cAAc,8BAAd,cAAc,QAMzB;AAED,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAChC,6DAAmC,CAAA;IACnC,yDAA+B,CAAA;AACjC,CAAC,EAHW,sBAAsB,sCAAtB,sBAAsB,QAGjC;AAED,IAAY,uBASX;AATD,WAAY,uBAAuB;IACjC,kDAAuB,CAAA;IACvB,8CAAmB,CAAA;IACnB,kDAAuB,CAAA;IACvB,8CAAmB,CAAA;IACnB,oDAAyB,CAAA;IACzB,sDAA2B,CAAA;IAC3B,sDAAsD;IACtD,8CAAmB,CAAA;AACrB,CAAC,EATW,uBAAuB,uCAAvB,uBAAuB,QASlC;AAED,sFAAsF;AACtF,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,2CAAqB,CAAA;IACrB,6CAAuB,CAAA;AACzB,CAAC,EAHW,kBAAkB,kCAAlB,kBAAkB,QAG7B;AAED,IAAY,2BAIX;AAJD,WAAY,2BAA2B;IACrC,wDAAyB,CAAA;IACzB,oDAAqB,CAAA;IACrB,gEAAiC,CAAA;AACnC,CAAC,EAJW,2BAA2B,2CAA3B,2BAA2B,QAItC;AAED,wGAAwG;AACxG,IAAY,6BAcX;AAdD,WAAY,6BAA6B;IACvC,8EAA6C,CAAA;IAC7C,oEAAmC,CAAA;IACnC,0EAAyC,CAAA;IACzC,kFAAiD,CAAA;IACjD,kFAAiD,CAAA;IACjD,8EAA6C,CAAA;IAC7C,gGAA+D,CAAA;IAC/D,4EAA2C,CAAA;IAC3C,4EAA2C,CAAA;IAC3C,gFAA+C,CAAA;IAC/C,gEAA+B,CAAA;IAC/B,4FAA4F;IAC5F,sEAAqC,CAAA;AACvC,CAAC,EAdW,6BAA6B,6CAA7B,6BAA6B,QAcxC;AAED,IAAY,sBAKX;AALD,WAAY,sBAAsB;IAChC,+CAAqB,CAAA;IACrB,+CAAqB,CAAA;IACrB,+CAAqB,CAAA;IACrB,qDAA2B,CAAA;AAC7B,CAAC,EALW,sBAAsB,sCAAtB,sBAAsB,QAKjC;AAED,IAAY,
|
|
1
|
+
{"version":3,"file":"workflow-engine.enums.js","sourceRoot":"","sources":["../../../../../../libs/bpm-core/src/lib/workflow-engine/workflow-engine.enums.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { AdhocPreApprovalRejectBehaviorEnum } from './adhoc.enums';
|
|
|
4
4
|
import { ApprovalInstanceEntity } from './approval-instance.entity';
|
|
5
5
|
import { AdhocNotificationInput } from './dto/adhoc-notification.input';
|
|
6
6
|
import { AdhocTargetInput } from './dto/adhoc-target.input';
|
|
7
|
+
import { AdminCancelApprovalInstanceInput } from './dto/admin-cancel-approval-instance.input';
|
|
7
8
|
import { CancelApprovalInstanceInput } from './dto/cancel-approval-instance.input';
|
|
8
9
|
import { DecideTaskInput } from './dto/decide-task.input';
|
|
9
10
|
import { DryRunApprovalWorkflowInput } from './dto/dry-run-approval-workflow.input';
|
|
@@ -25,6 +26,7 @@ export declare class WorkflowEngineMutations {
|
|
|
25
26
|
reassignMemberTasks(input: ReassignMemberTasksInput, currentMemberId: string): Promise<readonly TaskReassignmentResultObject[]>;
|
|
26
27
|
reassignTask(input: ReassignTaskInput, currentMemberId: string): Promise<TaskReassignmentResultObject>;
|
|
27
28
|
cancelApprovalInstance(input: CancelApprovalInstanceInput, currentMemberId: string): Promise<ApprovalInstanceEntity>;
|
|
29
|
+
adminCancelApprovalInstance(input: AdminCancelApprovalInstanceInput, currentMemberId: string): Promise<ApprovalInstanceEntity>;
|
|
28
30
|
resubmitApprovalInstance(input: ResubmitApprovalInstanceInput, currentMemberId: string, authContext: BPMAuthContext): Promise<ApprovalInstanceEntity>;
|
|
29
31
|
dryRunApprovalWorkflow(input: DryRunApprovalWorkflowInput): Promise<WorkflowDryRunResultObject>;
|
|
30
32
|
requestAdhocCountersign(taskId: string, target: AdhocTargetInput, comment: string | null, currentMemberId: string): Promise<AdhocDirectiveEntity>;
|
|
@@ -10,6 +10,7 @@ const adhoc_enums_1 = require("./adhoc.enums");
|
|
|
10
10
|
const approval_instance_entity_1 = require("./approval-instance.entity");
|
|
11
11
|
const adhoc_notification_input_1 = require("./dto/adhoc-notification.input");
|
|
12
12
|
const adhoc_target_input_1 = require("./dto/adhoc-target.input");
|
|
13
|
+
const admin_cancel_approval_instance_input_1 = require("./dto/admin-cancel-approval-instance.input");
|
|
13
14
|
const cancel_approval_instance_input_1 = require("./dto/cancel-approval-instance.input");
|
|
14
15
|
const decide_task_input_1 = require("./dto/decide-task.input");
|
|
15
16
|
const dry_run_approval_workflow_input_1 = require("./dto/dry-run-approval-workflow.input");
|
|
@@ -70,6 +71,7 @@ let WorkflowEngineMutations = class WorkflowEngineMutations {
|
|
|
70
71
|
dryRun: input.dryRun,
|
|
71
72
|
fromMemberId: input.fromMemberId,
|
|
72
73
|
reason: input.reason,
|
|
74
|
+
taskIds: input.taskIds,
|
|
73
75
|
toMemberId: input.toMemberId,
|
|
74
76
|
});
|
|
75
77
|
}
|
|
@@ -88,6 +90,13 @@ let WorkflowEngineMutations = class WorkflowEngineMutations {
|
|
|
88
90
|
cancelledByMemberId: currentMemberId,
|
|
89
91
|
});
|
|
90
92
|
}
|
|
93
|
+
async adminCancelApprovalInstance(input, currentMemberId) {
|
|
94
|
+
return this.workflowEngineService.adminCancelApprovalInstance({
|
|
95
|
+
cancelledByMemberId: currentMemberId,
|
|
96
|
+
instanceId: input.instanceId,
|
|
97
|
+
reason: input.reason,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
91
100
|
async resubmitApprovalInstance(input, currentMemberId, authContext) {
|
|
92
101
|
return this.workflowEngineService.resubmitApprovalInstance({
|
|
93
102
|
...input,
|
|
@@ -170,9 +179,12 @@ tslib_1.__decorate([
|
|
|
170
179
|
], WorkflowEngineMutations.prototype, "decideTask", null);
|
|
171
180
|
tslib_1.__decorate([
|
|
172
181
|
(0, graphql_1.Mutation)(() => [task_reassignment_object_1.TaskReassignmentResultObject], {
|
|
173
|
-
description: 'Administrator: moves
|
|
174
|
-
'
|
|
175
|
-
'
|
|
182
|
+
description: 'Administrator: moves the open tasks the source member holds (all of ' +
|
|
183
|
+
'them, or only taskIds) to the target, one transaction per task, one ' +
|
|
184
|
+
'result per task. Set dryRun to ' +
|
|
185
|
+
'report the outcomes without writing. Set taskIds to move only those ' +
|
|
186
|
+
'tasks (ids the member does not hold return no result row); omit it for ' +
|
|
187
|
+
'every open task, and an empty list is refused.',
|
|
176
188
|
}),
|
|
177
189
|
(0, bpm_auth_1.BPMAdminOnly)(),
|
|
178
190
|
tslib_1.__param(0, (0, graphql_1.Args)('input')),
|
|
@@ -203,6 +215,22 @@ tslib_1.__decorate([
|
|
|
203
215
|
tslib_1.__metadata("design:paramtypes", [cancel_approval_instance_input_1.CancelApprovalInstanceInput, String]),
|
|
204
216
|
tslib_1.__metadata("design:returntype", Promise)
|
|
205
217
|
], WorkflowEngineMutations.prototype, "cancelApprovalInstance", null);
|
|
218
|
+
tslib_1.__decorate([
|
|
219
|
+
(0, graphql_1.Mutation)(() => approval_instance_entity_1.ApprovalInstanceEntity, {
|
|
220
|
+
description: 'Administrator: ends a running or returned instance whoever started ' +
|
|
221
|
+
'it. The reason is required; it is recorded on the instance and sent ' +
|
|
222
|
+
'to the initiator as an in-app notification (not sent when the ' +
|
|
223
|
+
'administrator is the initiator). The cancellation is recorded with ' +
|
|
224
|
+
'`cancelledByAdministrator: true` so a host can tell it from the ' +
|
|
225
|
+
'initiator withdrawing.',
|
|
226
|
+
}),
|
|
227
|
+
(0, bpm_auth_1.BPMAdminOnly)(),
|
|
228
|
+
tslib_1.__param(0, (0, graphql_1.Args)('input')),
|
|
229
|
+
tslib_1.__param(1, (0, bpm_auth_1.BPMCurrentMemberId)()),
|
|
230
|
+
tslib_1.__metadata("design:type", Function),
|
|
231
|
+
tslib_1.__metadata("design:paramtypes", [admin_cancel_approval_instance_input_1.AdminCancelApprovalInstanceInput, String]),
|
|
232
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
233
|
+
], WorkflowEngineMutations.prototype, "adminCancelApprovalInstance", null);
|
|
206
234
|
tslib_1.__decorate([
|
|
207
235
|
(0, graphql_1.Mutation)(() => approval_instance_entity_1.ApprovalInstanceEntity),
|
|
208
236
|
tslib_1.__param(0, (0, graphql_1.Args)('input')),
|
|
@@ -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,qBAAqB,EAAE,IAAI;YAC3B,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,EACpB,WAA2B;QAEpD,0EAA0E;QAC1E,2EAA2E;QAC3E,uDAAuD;QACvD,IACE,KAAK,CAAC,YAAY,KAAK,SAAS;YAChC,KAAK,CAAC,YAAY,KAAK,IAAI;YAC3B,CAAC,KAAK,CAAC,2BAA2B,KAAK,SAAS;gBAC9C,KAAK,CAAC,2BAA2B,KAAK,IAAI,CAAC,EAC7C,CAAC;YACD,MAAM,IAAI,4BAAmB,CAC3B,kEAAkE,CACnE,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAC1C;YACE,GAAG,KAAK;YACR,iBAAiB,EAAE,eAAe;SACnC;QACD,sEAAsE;QACtE,qEAAqE;QACrE,EAAE,mBAAmB,EAAE,WAAW,EAAE,CACrC,CAAC;IACJ,CAAC;
|
|
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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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ModuleRef } from '@nestjs/core';
|
|
2
2
|
import { BPMAuthContext } from '../bpm-auth';
|
|
3
|
-
import { InactiveMemberOpenTasksRecord, MemberOpenTaskRecord } from './workflow-engine.service';
|
|
3
|
+
import { InactiveMemberOpenTasksRecord, MemberOpenTaskRecord, StuckApprovalInstanceRecord } from './workflow-engine.service';
|
|
4
4
|
import { ActivityLogEntity } from './activity-log.entity';
|
|
5
5
|
import { AdhocDirectiveEntity } from './adhoc-directive.entity';
|
|
6
6
|
import { ApprovalInstanceEntity } from './approval-instance.entity';
|
|
@@ -32,6 +32,8 @@ export declare class WorkflowEngineQueries {
|
|
|
32
32
|
approvalHistoryTaskCount(currentMemberId: string, instanceState: ApprovalInstanceStateEnum | null, templateIds: readonly string[] | null, templateKey: string | null): Promise<number>;
|
|
33
33
|
memberOpenTasks(memberId: string): Promise<readonly MemberOpenTaskRecord[]>;
|
|
34
34
|
inactiveMembersWithOpenTasks(): Promise<readonly InactiveMemberOpenTasksRecord[]>;
|
|
35
|
+
stuckApprovalInstances(page: number | null, pageSize: number | null): Promise<readonly StuckApprovalInstanceRecord[]>;
|
|
36
|
+
stuckApprovalInstanceCount(): Promise<number>;
|
|
35
37
|
launchableApprovalTemplates(currentMemberId: string, currentAuthContext: BPMAuthContext): Promise<readonly ApprovalTemplateEntity[]>;
|
|
36
38
|
taskDecisions(taskId: string, currentAuthContext: BPMAuthContext): Promise<readonly TaskDecisionEntity[]>;
|
|
37
39
|
taskCandidates(taskId: string, currentAuthContext: BPMAuthContext): Promise<readonly TaskCandidateEntity[]>;
|
|
@@ -8,6 +8,7 @@ const graphql_1 = require("@nestjs/graphql");
|
|
|
8
8
|
const bpm_auth_1 = require("../bpm-auth");
|
|
9
9
|
const identity_service_1 = require("../identity/identity.service");
|
|
10
10
|
const task_reassignment_object_1 = require("./task-reassignment.object");
|
|
11
|
+
const stuck_approval_instance_object_1 = require("./stuck-approval-instance.object");
|
|
11
12
|
const activity_log_entity_1 = require("./activity-log.entity");
|
|
12
13
|
const adhoc_directive_entity_1 = require("./adhoc-directive.entity");
|
|
13
14
|
const approval_instance_entity_1 = require("./approval-instance.entity");
|
|
@@ -119,6 +120,15 @@ let WorkflowEngineQueries = class WorkflowEngineQueries {
|
|
|
119
120
|
}
|
|
120
121
|
return this.workflowEngineService.listInactiveMembersWithOpenTasks((memberIds) => identityService.resolveInactiveMembers(memberIds));
|
|
121
122
|
}
|
|
123
|
+
async stuckApprovalInstances(page, pageSize) {
|
|
124
|
+
return this.workflowEngineService.listStuckApprovalInstances({
|
|
125
|
+
page: page ?? undefined,
|
|
126
|
+
pageSize: pageSize ?? undefined,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
async stuckApprovalInstanceCount() {
|
|
130
|
+
return this.workflowEngineService.countStuckApprovalInstances();
|
|
131
|
+
}
|
|
122
132
|
async launchableApprovalTemplates(currentMemberId, currentAuthContext) {
|
|
123
133
|
return this.workflowEngineService.listLaunchableApprovalTemplates(currentMemberId, currentAuthContext);
|
|
124
134
|
}
|
|
@@ -381,6 +391,30 @@ tslib_1.__decorate([
|
|
|
381
391
|
tslib_1.__metadata("design:paramtypes", []),
|
|
382
392
|
tslib_1.__metadata("design:returntype", Promise)
|
|
383
393
|
], WorkflowEngineQueries.prototype, "inactiveMembersWithOpenTasks", null);
|
|
394
|
+
tslib_1.__decorate([
|
|
395
|
+
(0, graphql_1.Query)(() => [stuck_approval_instance_object_1.StuckApprovalInstanceObject], {
|
|
396
|
+
description: 'Administrator: the RUNNING or RETURNED instances that could not move ' +
|
|
397
|
+
'on to their next stage and still cannot, newest failure first, one ' +
|
|
398
|
+
'row each. Each row says who has to press again now. Always paged: ' +
|
|
399
|
+
'page defaults to 1, pageSize to 20 (at most 100); ' +
|
|
400
|
+
'stuckApprovalInstanceCount gives the total.',
|
|
401
|
+
}),
|
|
402
|
+
(0, bpm_auth_1.BPMAdminOnly)(),
|
|
403
|
+
tslib_1.__param(0, (0, graphql_1.Args)('page', { nullable: true, type: () => graphql_1.Int })),
|
|
404
|
+
tslib_1.__param(1, (0, graphql_1.Args)('pageSize', { nullable: true, type: () => graphql_1.Int })),
|
|
405
|
+
tslib_1.__metadata("design:type", Function),
|
|
406
|
+
tslib_1.__metadata("design:paramtypes", [Object, Object]),
|
|
407
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
408
|
+
], WorkflowEngineQueries.prototype, "stuckApprovalInstances", null);
|
|
409
|
+
tslib_1.__decorate([
|
|
410
|
+
(0, graphql_1.Query)(() => graphql_1.Int, {
|
|
411
|
+
description: 'Administrator: how many instances stuckApprovalInstances pages through.',
|
|
412
|
+
}),
|
|
413
|
+
(0, bpm_auth_1.BPMAdminOnly)(),
|
|
414
|
+
tslib_1.__metadata("design:type", Function),
|
|
415
|
+
tslib_1.__metadata("design:paramtypes", []),
|
|
416
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
417
|
+
], WorkflowEngineQueries.prototype, "stuckApprovalInstanceCount", null);
|
|
384
418
|
tslib_1.__decorate([
|
|
385
419
|
(0, graphql_1.Query)(() => [approval_template_entity_1.ApprovalTemplateEntity]),
|
|
386
420
|
tslib_1.__param(0, (0, bpm_auth_1.BPMCurrentMemberId)()),
|