@rytass/bpm-core-nestjs-module 0.13.5 → 0.14.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.
@@ -34,7 +34,9 @@ export declare enum TaskCandidateStatusEnum {
34
34
  COMPLETED = "COMPLETED",
35
35
  PENDING = "PENDING",
36
36
  SUPERSEDED = "SUPERSEDED",
37
- TRANSFERRED = "TRANSFERRED"
37
+ TRANSFERRED = "TRANSFERRED",
38
+ /** SEQUENTIAL task, not this candidate's turn yet. */
39
+ WAITING = "WAITING"
38
40
  }
39
41
  export declare enum TaskDecisionActionEnum {
40
42
  APPROVED = "APPROVED",
@@ -54,6 +56,8 @@ export declare enum ActivityLogEventTypeEnum {
54
56
  SERVICE_TASK_EXECUTED = "SERVICE_TASK_EXECUTED",
55
57
  SERVICE_TASK_FAILED = "SERVICE_TASK_FAILED",
56
58
  SLA_TRIGGERED = "SLA_TRIGGERED",
59
+ /** A SEQUENTIAL task passed to its next candidate. */
60
+ TASK_CANDIDATE_ACTIVATED = "TASK_CANDIDATE_ACTIVATED",
57
61
  TASK_CREATED = "TASK_CREATED",
58
62
  TASK_DECIDED = "TASK_DECIDED",
59
63
  TOKEN_ADVANCED = "TOKEN_ADVANCED",
@@ -45,6 +45,8 @@ var TaskCandidateStatusEnum;
45
45
  TaskCandidateStatusEnum["PENDING"] = "PENDING";
46
46
  TaskCandidateStatusEnum["SUPERSEDED"] = "SUPERSEDED";
47
47
  TaskCandidateStatusEnum["TRANSFERRED"] = "TRANSFERRED";
48
+ /** SEQUENTIAL task, not this candidate's turn yet. */
49
+ TaskCandidateStatusEnum["WAITING"] = "WAITING";
48
50
  })(TaskCandidateStatusEnum || (exports.TaskCandidateStatusEnum = TaskCandidateStatusEnum = {}));
49
51
  var TaskDecisionActionEnum;
50
52
  (function (TaskDecisionActionEnum) {
@@ -66,6 +68,8 @@ var ActivityLogEventTypeEnum;
66
68
  ActivityLogEventTypeEnum["SERVICE_TASK_EXECUTED"] = "SERVICE_TASK_EXECUTED";
67
69
  ActivityLogEventTypeEnum["SERVICE_TASK_FAILED"] = "SERVICE_TASK_FAILED";
68
70
  ActivityLogEventTypeEnum["SLA_TRIGGERED"] = "SLA_TRIGGERED";
71
+ /** A SEQUENTIAL task passed to its next candidate. */
72
+ ActivityLogEventTypeEnum["TASK_CANDIDATE_ACTIVATED"] = "TASK_CANDIDATE_ACTIVATED";
69
73
  ActivityLogEventTypeEnum["TASK_CREATED"] = "TASK_CREATED";
70
74
  ActivityLogEventTypeEnum["TASK_DECIDED"] = "TASK_DECIDED";
71
75
  ActivityLogEventTypeEnum["TOKEN_ADVANCED"] = "TOKEN_ADVANCED";
@@ -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":"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"}
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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"}
@@ -129,9 +129,26 @@ export declare class WorkflowEngineService {
129
129
  private loadAdhocOperationContext;
130
130
  private recordAdhocDirectiveActivity;
131
131
  private createAdhocTaskForDirective;
132
+ private resolveAdhocTaskCandidates;
132
133
  private spawnCountersignTasksForNode;
133
134
  private hasOpenTasksForTokenNode;
134
135
  private handleAdhocPreApprovalRejection;
136
+ /**
137
+ * Follows a TRANSFERRED task to the task that replaced it, repeatedly, and
138
+ * returns the last one reached. A transfer leaves no pointer on either task
139
+ * row; the link is the `transferredFromTaskId` in the payload of the
140
+ * TASK_CREATED activity written for the replacement. When the trail stops
141
+ * (no such activity, or its task is gone) the last task reached is returned,
142
+ * so a caller sees the transferred row exactly as it did before.
143
+ */
144
+ private readTransferSuccessorTask;
145
+ /**
146
+ * The requester's candidate row on a SEQUENTIAL origin task. A task that was
147
+ * transferred mid-order continues as a replacement that carries only the
148
+ * candidates still to sign, so a requester who already signed is found on an
149
+ * earlier task of the transfer chain instead.
150
+ */
151
+ private readSequentialRequesterCandidate;
135
152
  private readOpenTaskRecipientMemberIds;
136
153
  private dispatchAdhocStageNotifications;
137
154
  private dispatchAdhocCompletionNotifications;
@@ -142,6 +159,14 @@ export declare class WorkflowEngineService {
142
159
  private simulateWorkflowPath;
143
160
  private readDryRunAvailableOutgoingEdges;
144
161
  private evaluateDryRunEdge;
162
+ /**
163
+ * The dry-run assignee of a user task. Only resolvers whose dry run yields
164
+ * real member ids (DIRECT, DYNAMIC_FORM, EXPRESSION and ORG_MANAGER, which
165
+ * reads the initiator snapshot) can be checked against the initiator; the
166
+ * others resolve to placeholders and are left as they are.
167
+ */
168
+ private resolveDryRunAssignment;
169
+ private readDryRunMemberIds;
145
170
  private resolveDryRunAssigneeMemberId;
146
171
  getApprovalInstance(id: string, scope?: WorkflowReadScope): Promise<ApprovalInstanceEntity>;
147
172
  listApprovalInstances(scope?: WorkflowReadScope, options?: ListApprovalInstancesOptions): Promise<readonly ApprovalInstanceEntity[]>;
@@ -183,6 +208,8 @@ export declare class WorkflowEngineService {
183
208
  private advanceTokenToOutgoingNodes;
184
209
  private isNodeEntryConditionMet;
185
210
  private skipNodeByEntryCondition;
211
+ private skipNodeByInitiatorExclusion;
212
+ private skipNode;
186
213
  private readAvailableOutgoingEdges;
187
214
  private evaluateWorkflowEdge;
188
215
  private readLastDecisionContext;
@@ -190,13 +217,45 @@ export declare class WorkflowEngineService {
190
217
  private forkTokenAlongEdges;
191
218
  private completeTokenAtEndNode;
192
219
  private createUserTaskForToken;
220
+ /**
221
+ * Hands a SEQUENTIAL task to the lowest-`sequence` candidate still WAITING.
222
+ * A task without a WAITING candidate (every other policy, and SEQUENTIAL
223
+ * tasks created before candidates were ordered) is left alone.
224
+ */
225
+ private activateNextSequentialCandidate;
226
+ /**
227
+ * Re-resolves the delegation of a candidate whose turn has come. When the
228
+ * delegate already holds another candidate row on the task, the stored values
229
+ * are kept: (task_id, member_id) is unique, and that member signs from the
230
+ * row they already have. On a node that excludes the initiator the stored
231
+ * values are kept as well when the new delegation path would run through the
232
+ * initiator: creation already filtered such paths out, and a delegation added
233
+ * while the candidate waited must not bring them back.
234
+ */
235
+ private resolveActivationDelegation;
193
236
  private markTaskCandidateDecision;
194
237
  private transferTask;
238
+ /**
239
+ * Resolves who gets the node's task. `null` means the node asked to be
240
+ * skipped (`excludeInitiator.whenEmpty = SKIP_NODE`) because the initiator
241
+ * was the only approver — the sole caller creates no task and advances the
242
+ * token instead.
243
+ */
195
244
  private resolveRuntimeTaskCandidates;
196
- private applyDelegationToResolvedCandidates;
245
+ private resolveInitiatorManagerReplacements;
246
+ private buildDelegationContext;
247
+ private delegateResolvedCandidates;
197
248
  private resolveApproverResolver;
198
249
  private resolvePositionCandidates;
199
250
  private resolveInitiatorManagerCandidates;
251
+ /**
252
+ * Walks up the initiator's manager chain, nearest manager first, until a
253
+ * manager whose position level reaches `minPositionLevel` is added. The
254
+ * list is returned nearest manager first.
255
+ */
256
+ private resolveOrgManagerChainCandidates;
257
+ /** Highest position level over the member's active memberships, or `null`. */
258
+ private readMemberPositionLevel;
200
259
  private resolveFallbackAssignee;
201
260
  private resolveManagerMemberIdsFromOrganization;
202
261
  private resolveManagerMemberIdsAtLevel;