@rytass/bpm-core-shared 0.22.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 +66 -0
- package/README.md +14 -4
- package/package.json +1 -1
- package/src/lib/field-access-lint.d.ts +30 -8
- package/src/lib/field-access-lint.js +121 -49
- package/src/lib/field-access-lint.js.map +1 -1
- package/src/lib/field-access-matrix.d.ts +34 -9
- package/src/lib/field-access-matrix.js +65 -16
- package/src/lib/field-access-matrix.js.map +1 -1
- package/src/lib/field-access.d.ts +37 -1
- package/src/lib/field-access.js +71 -15
- package/src/lib/field-access.js.map +1 -1
- package/src/lib/form.d.ts +6 -2
- package/src/lib/form.js +5 -2
- package/src/lib/form.js.map +1 -1
- package/src/lib/workflow-command.js +9 -4
- package/src/lib/workflow-command.js.map +1 -1
- package/src/lib/workflow-graph.d.ts +62 -7
- package/src/lib/workflow-graph.js +210 -7
- package/src/lib/workflow-graph.js.map +1 -1
- package/src/lib/workflow-toolset.js +101 -30
- package/src/lib/workflow-toolset.js.map +1 -1
- package/src/lib/workflow.d.ts +55 -3
- package/src/lib/workflow.js +48 -16
- package/src/lib/workflow.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,69 @@
|
|
|
1
|
+
## 0.24.0 (2026-11-14)
|
|
2
|
+
|
|
3
|
+
### ๐ Features
|
|
4
|
+
|
|
5
|
+
- **bpm-core:** page the stuck approval instance list ([6cd50975](https://github.com/Rytass/BPMCore/commit/6cd50975))
|
|
6
|
+
- **bpm-core-react:** mount the stuck approval instances page like the other admin pages ([fc19c298](https://github.com/Rytass/BPMCore/commit/fc19c298))
|
|
7
|
+
- let reassignMemberTasks take an optional list of task ids ([4b3c22a1](https://github.com/Rytass/BPMCore/commit/4b3c22a1))
|
|
8
|
+
- **shared:** let a manager chain continue an earlier chain or skip when its start already qualifies ([fbcd813c](https://github.com/Rytass/BPMCore/commit/fbcd813c))
|
|
9
|
+
|
|
10
|
+
### ๐ฉน Fixes
|
|
11
|
+
|
|
12
|
+
- **bpm-core:** tell the initiator of an administrator cancel only after it commits ([2fca97e7](https://github.com/Rytass/BPMCore/commit/2fca97e7))
|
|
13
|
+
- **bpm-core:** export the administrator cancel input like the other workflow inputs ([988981ae](https://github.com/Rytass/BPMCore/commit/988981ae))
|
|
14
|
+
|
|
15
|
+
### ๐ฅ Performance
|
|
16
|
+
|
|
17
|
+
- **workflow-engine:** index the ADVANCE_FAILED rows the stuck list reads ([2cf16d8d](https://github.com/Rytass/BPMCore/commit/2cf16d8d))
|
|
18
|
+
|
|
19
|
+
### โค๏ธ Thank You
|
|
20
|
+
|
|
21
|
+
- Chia Yu Pai @fantasywind
|
|
22
|
+
- Kai-Chieh Yang
|
|
23
|
+
|
|
24
|
+
## 0.23.0 (2026-11-14)
|
|
25
|
+
|
|
26
|
+
### ๐ Features
|
|
27
|
+
|
|
28
|
+
- **form-data-source:** locate approver-fill VALUE_NOT_RESOLVED on its field or cell ([1a17907a](https://github.com/Rytass/BPMCore/commit/1a17907a))
|
|
29
|
+
- **shared:** add column mode to field access matrix ([d0658f54](https://github.com/Rytass/BPMCore/commit/d0658f54))
|
|
30
|
+
- **bpm-core-client:** expose host error code on BPMGraphQLRequestError ([3a388721](https://github.com/Rytass/BPMCore/commit/3a388721))
|
|
31
|
+
- **workflow-command:** keep column grants in field access matrix ([ce50a7b0](https://github.com/Rytass/BPMCore/commit/ce50a7b0))
|
|
32
|
+
- **bpm-core-react:** pass column-mode table access to approver fill ([c4fcb87d](https://github.com/Rytass/BPMCore/commit/c4fcb87d))
|
|
33
|
+
- **bpm-core-react:** add per-table access to form renderer ([98cd5208](https://github.com/Rytass/BPMCore/commit/98cd5208))
|
|
34
|
+
- **field-access:** reject publish when a table dependent column is not opened ([a4f64372](https://github.com/Rytass/BPMCore/commit/a4f64372))
|
|
35
|
+
- **field-access:** export dependency break helper for column fills ([d25212c6](https://github.com/Rytass/BPMCore/commit/d25212c6))
|
|
36
|
+
- **field-access:** allow approver-filled data-source columns in column mode ([3b8cb06a](https://github.com/Rytass/BPMCore/commit/3b8cb06a))
|
|
37
|
+
- **field-access:** lint per-column fill conflicts and approver data sources ([2d081bb2](https://github.com/Rytass/BPMCore/commit/2d081bb2))
|
|
38
|
+
- **field-access:** read per-column fill units for table fields ([996bffcc](https://github.com/Rytass/BPMCore/commit/996bffcc))
|
|
39
|
+
- **workflow-engine:** expose recordTaskAutoDecisionFailed on the engine token ([40d69180](https://github.com/Rytass/BPMCore/commit/40d69180))
|
|
40
|
+
- **instance-event:** expose admin list and retry resolvers ([4cbb84ac](https://github.com/Rytass/BPMCore/commit/4cbb84ac))
|
|
41
|
+
- **instance-event:** purge delivered rows past retention ([69d19f9a](https://github.com/Rytass/BPMCore/commit/69d19f9a))
|
|
42
|
+
- **instance-event:** schedule periodic delivery scans ([ac9b7dc3](https://github.com/Rytass/BPMCore/commit/ac9b7dc3))
|
|
43
|
+
- **instance-event:** deliver on commit via subscriber ([53641feb](https://github.com/Rytass/BPMCore/commit/53641feb))
|
|
44
|
+
- **instance-event:** add outbox delivery service ([b7ddcd3f](https://github.com/Rytass/BPMCore/commit/b7ddcd3f))
|
|
45
|
+
- **instance-event:** add outbox event writer ([fd891be4](https://github.com/Rytass/BPMCore/commit/fd891be4))
|
|
46
|
+
- **instance-event:** add lifecycle event outbox and observer wiring ([74dcdffd](https://github.com/Rytass/BPMCore/commit/74dcdffd))
|
|
47
|
+
- **workflow-engine:** add pre-decision host guard for submit, resubmit and decide ([8d450dd3](https://github.com/Rytass/BPMCore/commit/8d450dd3))
|
|
48
|
+
- **form:** add HOST_RULE issue reason with optional host code ([3d58779d](https://github.com/Rytass/BPMCore/commit/3d58779d))
|
|
49
|
+
- **shared:** allow REQUIRED on approver-filled boolean fields ([2b669b75](https://github.com/Rytass/BPMCore/commit/2b669b75))
|
|
50
|
+
- **instances:** filter approval instances by template key ([18d496c7](https://github.com/Rytass/BPMCore/commit/18d496c7))
|
|
51
|
+
- **conditions:** optionally read unfilled form fields as null ([958d3be6](https://github.com/Rytass/BPMCore/commit/958d3be6))
|
|
52
|
+
- **template:** add a HOST_ONLY launch mode to template versions ([d83db05e](https://github.com/Rytass/BPMCore/commit/d83db05e))
|
|
53
|
+
- **initiator:** let a host add customFields to the built snapshot ([609bc5ab](https://github.com/Rytass/BPMCore/commit/609bc5ab))
|
|
54
|
+
- **inbox:** filter inbox and approval history by template ([6870883a](https://github.com/Rytass/BPMCore/commit/6870883a))
|
|
55
|
+
- **migrations:** add the host integration round schema ([34eef9b2](https://github.com/Rytass/BPMCore/commit/34eef9b2))
|
|
56
|
+
|
|
57
|
+
### ๐ฉน Fixes
|
|
58
|
+
|
|
59
|
+
- **workflow-engine:** report only changed keys to the resubmit guard ([53d7bdb2](https://github.com/Rytass/BPMCore/commit/53d7bdb2))
|
|
60
|
+
- **field-access:** lint column-mode fills of data-source columns ([314ba31d](https://github.com/Rytass/BPMCore/commit/314ba31d))
|
|
61
|
+
- **field-access:** keep column-mode fills out of whole-field write paths ([dca765de](https://github.com/Rytass/BPMCore/commit/dca765de))
|
|
62
|
+
|
|
63
|
+
### โค๏ธ Thank You
|
|
64
|
+
|
|
65
|
+
- Chia Yu Pai @fantasywind
|
|
66
|
+
|
|
1
67
|
## 0.22.0 (2026-11-13)
|
|
2
68
|
|
|
3
69
|
### ๐ Features
|
package/README.md
CHANGED
|
@@ -70,10 +70,20 @@ without a `mode` normalize to `single`; `radio` is always single and
|
|
|
70
70
|
`POSITION`). The `POSITION` fallback type is not released yet (it landed after
|
|
71
71
|
`v0.16.2`); older engines reject it at run time.
|
|
72
72
|
`ORG_MANAGER_CHAIN` also takes `startFrom` (`OrgManagerChainStart`: the
|
|
73
|
-
initiator, the person picked in a form field,
|
|
74
|
-
earlier stage
|
|
75
|
-
|
|
76
|
-
|
|
73
|
+
initiator, the person picked in a form field, the person who approved an
|
|
74
|
+
earlier stage, or `CHAIN_CONTINUATION` to continue an earlier manager-chain
|
|
75
|
+
stage by `nodeId`), `startPositionLevel` (managers below it are walked past)
|
|
76
|
+
and `skipWhenStartReached` (skip the whole stage when the start person's own
|
|
77
|
+
position level already reaches `minPositionLevel`); all are optional. A
|
|
78
|
+
continuation only signs managers above the level the earlier stage actually
|
|
79
|
+
reached, and skips the stage when that level already reaches its own
|
|
80
|
+
`minPositionLevel`. `CHAIN_CONTINUATION` and `skipWhenStartReached: true`
|
|
81
|
+
exclude each other, and a notify node may use neither
|
|
82
|
+
(`readOrgManagerChainIssue`); `readChainContinuationSourceIssues` checks the
|
|
83
|
+
earlier stage. An engine that knows `startFrom` but not `CHAIN_CONTINUATION`
|
|
84
|
+
refuses it by name; an engine from before `startFrom` ignores `startFrom` and
|
|
85
|
+
`startPositionLevel` and climbs from the initiator, and one from before
|
|
86
|
+
`skipWhenStartReached` ignores that key and runs the stage as before.
|
|
77
87
|
- Service task actions (`ServiceAction`) have three types. The workflow engine
|
|
78
88
|
executes all three at run time:
|
|
79
89
|
- `NOTIFY`: `channels`, `recipients` (an `ApproverResolver`), optional
|
package/package.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { FormDefinitionSchema, FormFieldDefinition } from './form';
|
|
2
|
+
import { FieldAccessFillUnit } from './field-access';
|
|
2
3
|
import type { FieldAccessDisplay, FieldAccessEntry, FieldAccessFill, UserTaskNode, WorkflowDefinition } from './workflow';
|
|
3
4
|
import { isOnOwnParallelBranch, readReachableWorkflowNodeIds, readWorkflowParallelBranchSets } from './workflow-reachability';
|
|
4
5
|
export { isOnOwnParallelBranch, readReachableWorkflowNodeIds, readWorkflowParallelBranchSets, };
|
|
@@ -10,7 +11,7 @@ export { isOnOwnParallelBranch, readReachableWorkflowNodeIds, readWorkflowParall
|
|
|
10
11
|
* filled it in) stays in the backend: it needs the expression sources of
|
|
11
12
|
* every node, which the matrix does not show.
|
|
12
13
|
*/
|
|
13
|
-
export type FieldAccessIssueCode = 'applicantRuleReadsApproverFilled' | 'approverFilledFieldDataSource' | 'approverFilledFieldFileUpload' | 'approverFilledFieldFormRule' | 'approverFilledMultipleFillNodesOnPath' | '
|
|
14
|
+
export type FieldAccessIssueCode = 'applicantRuleReadsApproverFilled' | 'approverFilledFieldDataSource' | 'approverFilledFieldFileUpload' | 'approverFilledFieldFormRule' | 'approverFilledMultipleFillNodesOnPath' | 'approverFilledTableDataSourceColumn' | 'fieldAccessAutoApprove' | 'fieldAccessDuplicate' | 'fieldAccessFillHidden' | 'fieldAccessGroupPolicy' | 'fieldAccessInvalid' | 'fieldAccessManagerChainReached' | 'fieldAccessSkipNode' | 'fieldAccessUnknownField' | 'legacyFieldPermissions' | 'setFormFieldApproverFilled';
|
|
14
15
|
export interface FieldAccessIssue {
|
|
15
16
|
readonly code: FieldAccessIssueCode;
|
|
16
17
|
/** The top-level fields the issue is about, the offending one first. */
|
|
@@ -24,9 +25,11 @@ export interface FieldAccessIssue {
|
|
|
24
25
|
* Why a user task node cannot let its approver fill fields in: a decision
|
|
25
26
|
* shared by several approvers (`PARALLEL_ALL` / `QUORUM`) has no single
|
|
26
27
|
* filler, and a node that can approve or skip itself would pass without
|
|
27
|
-
* anybody filling anything in.
|
|
28
|
+
* anybody filling anything in. A manager chain that skips itself when its
|
|
29
|
+
* start person already reaches its level (`skipWhenStartReached`, or a
|
|
30
|
+
* continuation of an earlier chain) can pass the same way.
|
|
28
31
|
*/
|
|
29
|
-
export type UserTaskFillConflict = 'autoApprove' | 'groupPolicy' | 'skipNode';
|
|
32
|
+
export type UserTaskFillConflict = 'autoApprove' | 'groupPolicy' | 'managerChainReached' | 'skipNode';
|
|
30
33
|
export declare function readUserTaskFillConflicts(node: UserTaskNode): readonly UserTaskFillConflict[];
|
|
31
34
|
export declare const FIELD_ACCESS_DISPLAYS: readonly FieldAccessDisplay[];
|
|
32
35
|
export declare const FIELD_ACCESS_FILLS: readonly FieldAccessFill[];
|
|
@@ -83,9 +86,10 @@ export declare function readDefinitionFieldAccessIssues(definition: WorkflowDefi
|
|
|
83
86
|
* Why a form field cannot be one an approver fills in, as the issues the
|
|
84
87
|
* publish lint reports once it is: a form-level rule (`required` / `hidden`
|
|
85
88
|
* set to `true`, the others set at all โ `required: false` and
|
|
86
|
-
* `hidden: false`, what the form editor writes for "off", are not rules)
|
|
87
|
-
*
|
|
88
|
-
* when the field can be filled
|
|
89
|
+
* `hidden: false`, what the form editor writes for "off", are not rules) or a
|
|
90
|
+
* file upload. A data source, or a table with a data-source column, can be
|
|
91
|
+
* filled in by the approver (ADR 27 ยง4(b)). Empty when the field can be filled
|
|
92
|
+
* in.
|
|
89
93
|
*/
|
|
90
94
|
export declare function readFormFieldFillIssues(field: FormFieldDefinition): readonly FieldAccessIssue[];
|
|
91
95
|
/**
|
|
@@ -101,13 +105,31 @@ export declare function readFormFieldFillIssues(field: FormFieldDefinition): rea
|
|
|
101
105
|
* stricter.
|
|
102
106
|
*/
|
|
103
107
|
export declare function referencesFormField(expression: string, fieldKey: string): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* A data-source column of a column-mode table that reads another column of the
|
|
110
|
+
* same table (ADR 27 ยง4.3) while the approver may fill in the read column but
|
|
111
|
+
* not this one. Once the read column changes, this column still holds the
|
|
112
|
+
* value its old source gave.
|
|
113
|
+
*/
|
|
114
|
+
export interface FieldAccessDependencyBreak {
|
|
115
|
+
readonly fieldKey: string;
|
|
116
|
+
readonly sourceColumnKey: string;
|
|
117
|
+
readonly dependentColumnKey: string;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Every column the approver may fill in that a data-source column of the same
|
|
121
|
+
* table reads, while that data-source column is not open to the same node.
|
|
122
|
+
* A table granted whole is skipped: every column of it is then open. An
|
|
123
|
+
* EXPRESSION source counts only through a `row` reference, the way the cell
|
|
124
|
+
* reads its own row. Empty when `schema` is null.
|
|
125
|
+
*/
|
|
126
|
+
export declare function readFieldAccessDependencyBreaks(schema: FormDefinitionSchema | null, units: readonly FieldAccessFillUnit[]): readonly FieldAccessDependencyBreak[];
|
|
104
127
|
/**
|
|
105
128
|
* The issues read against the form the definition is bound to, in
|
|
106
129
|
* publish-lint order: a `fieldKey` that is not a top-level field of the form,
|
|
107
130
|
* an approver-filled field the form will not let anybody fill in
|
|
108
131
|
* (`readFormFieldFillIssues`, once per field however many nodes fill it in),
|
|
109
|
-
*
|
|
110
|
-
* fail), and an applicant's rule that reads an approver-filled field โ the
|
|
132
|
+
* and an applicant's rule that reads an approver-filled field โ the
|
|
111
133
|
* rule is evaluated against the submitted form, where that field is still
|
|
112
134
|
* empty, and the evaluation silently compares against nothing.
|
|
113
135
|
*/
|
|
@@ -8,6 +8,7 @@ exports.createWorkflowCoRunReader = createWorkflowCoRunReader;
|
|
|
8
8
|
exports.readDefinitionFieldAccessIssues = readDefinitionFieldAccessIssues;
|
|
9
9
|
exports.readFormFieldFillIssues = readFormFieldFillIssues;
|
|
10
10
|
exports.referencesFormField = referencesFormField;
|
|
11
|
+
exports.readFieldAccessDependencyBreaks = readFieldAccessDependencyBreaks;
|
|
11
12
|
exports.readFormFieldAccessIssues = readFormFieldAccessIssues;
|
|
12
13
|
const form_1 = require("./form");
|
|
13
14
|
const field_access_1 = require("./field-access");
|
|
@@ -29,6 +30,9 @@ function readUserTaskFillConflicts(node) {
|
|
|
29
30
|
...(((_d = node.data.excludeInitiator) === null || _d === void 0 ? void 0 : _d.whenEmpty) === 'SKIP_NODE'
|
|
30
31
|
? ['skipNode']
|
|
31
32
|
: []),
|
|
33
|
+
...((0, workflow_graph_1.canUserTaskBeSkippedByManagerChain)(node)
|
|
34
|
+
? ['managerChainReached']
|
|
35
|
+
: []),
|
|
32
36
|
];
|
|
33
37
|
}
|
|
34
38
|
const FILL_CONFLICT_ISSUES = {
|
|
@@ -40,6 +44,10 @@ const FILL_CONFLICT_ISSUES = {
|
|
|
40
44
|
code: 'fieldAccessGroupPolicy',
|
|
41
45
|
message: workflow_graph_1.WORKFLOW_LINT_MESSAGES.fieldAccessGroupPolicy,
|
|
42
46
|
},
|
|
47
|
+
managerChainReached: {
|
|
48
|
+
code: 'fieldAccessManagerChainReached',
|
|
49
|
+
message: workflow_graph_1.WORKFLOW_LINT_MESSAGES.fieldAccessManagerChainReached,
|
|
50
|
+
},
|
|
43
51
|
skipNode: {
|
|
44
52
|
code: 'fieldAccessSkipNode',
|
|
45
53
|
message: workflow_graph_1.WORKFLOW_LINT_MESSAGES.fieldAccessSkipNode,
|
|
@@ -57,6 +65,33 @@ exports.FIELD_ACCESS_FILLS = [
|
|
|
57
65
|
'OPTIONAL',
|
|
58
66
|
'REQUIRED',
|
|
59
67
|
];
|
|
68
|
+
/**
|
|
69
|
+
* Whether a stored `columns` list is one the publish lint accepts: a non-empty
|
|
70
|
+
* array of column entries with a non-blank, unique `columnKey` and a `fill` of
|
|
71
|
+
* `OPTIONAL` or `REQUIRED`. Absent means whole-field mode and is valid.
|
|
72
|
+
*/
|
|
73
|
+
const isFieldAccessColumnsValid = (columns) => {
|
|
74
|
+
if (columns === undefined) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
if (!Array.isArray(columns) || columns.length === 0) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
const columnKeys = columns.map((column) => isPlainRecord(column) && typeof column['columnKey'] === 'string'
|
|
81
|
+
? column['columnKey']
|
|
82
|
+
: undefined);
|
|
83
|
+
return (columns.every((column) => isPlainRecord(column) &&
|
|
84
|
+
typeof column['columnKey'] === 'string' &&
|
|
85
|
+
column['columnKey'].trim() !== '' &&
|
|
86
|
+
(column['fill'] === 'OPTIONAL' || column['fill'] === 'REQUIRED')) && new Set(columnKeys).size === columnKeys.length);
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Whether two fill-unit column sets share a unit: a whole-field unit (`null`)
|
|
90
|
+
* overlaps every column, and two columns overlap only when they are the same.
|
|
91
|
+
*/
|
|
92
|
+
const doFillUnitsOverlap = (left, right) => left.some((leftColumn) => right.some((rightColumn) => leftColumn === null ||
|
|
93
|
+
rightColumn === null ||
|
|
94
|
+
leftColumn === rightColumn));
|
|
60
95
|
/**
|
|
61
96
|
* Whether a stored entry is one the publish lint accepts. Stricter than
|
|
62
97
|
* `readNodeFieldAccess`, which the engine reads with: a blank `fieldKey`
|
|
@@ -67,7 +102,8 @@ function isFieldAccessEntryValid(entry) {
|
|
|
67
102
|
typeof entry['fieldKey'] === 'string' &&
|
|
68
103
|
entry['fieldKey'].trim() !== '' &&
|
|
69
104
|
exports.FIELD_ACCESS_DISPLAYS.some((display) => display === entry['display']) &&
|
|
70
|
-
exports.FIELD_ACCESS_FILLS.some((fill) => fill === entry['fill'])
|
|
105
|
+
exports.FIELD_ACCESS_FILLS.some((fill) => fill === entry['fill']) &&
|
|
106
|
+
isFieldAccessColumnsValid(entry['columns']));
|
|
71
107
|
}
|
|
72
108
|
/**
|
|
73
109
|
* One user task node's issues, in publish-lint order: the deprecated
|
|
@@ -118,7 +154,7 @@ function readNodeFieldAccessIssues(node) {
|
|
|
118
154
|
];
|
|
119
155
|
}
|
|
120
156
|
const fieldKeys = entries.map((entry) => entry.fieldKey);
|
|
121
|
-
const
|
|
157
|
+
const fillableFieldKeys = (0, field_access_1.readNodeFillGrantFieldKeys)(node);
|
|
122
158
|
return [
|
|
123
159
|
...legacyIssues,
|
|
124
160
|
...fieldKeys
|
|
@@ -131,14 +167,14 @@ function readNodeFieldAccessIssues(node) {
|
|
|
131
167
|
nodeIds: [nodeId],
|
|
132
168
|
})),
|
|
133
169
|
...(0, field_access_1.readNodeFieldAccess)(node)
|
|
134
|
-
.filter((entry) => entry.
|
|
170
|
+
.filter((entry) => entry.display === 'HIDE' && fillableFieldKeys.has(entry.fieldKey))
|
|
135
171
|
.map((entry) => ({
|
|
136
172
|
code: 'fieldAccessFillHidden',
|
|
137
173
|
fieldKeys: [entry.fieldKey],
|
|
138
174
|
message: workflow_graph_1.WORKFLOW_LINT_MESSAGES.fieldAccessFillHidden(nodeId, entry.fieldKey),
|
|
139
175
|
nodeIds: [nodeId],
|
|
140
176
|
})),
|
|
141
|
-
...(
|
|
177
|
+
...(fillableFieldKeys.size > 0 ? readUserTaskFillConflicts(node) : []).map((conflict) => ({
|
|
142
178
|
code: FILL_CONFLICT_ISSUES[conflict].code,
|
|
143
179
|
fieldKeys: [],
|
|
144
180
|
message: FILL_CONFLICT_ISSUES[conflict].message(nodeId),
|
|
@@ -211,19 +247,26 @@ function readDefinitionFieldAccessIssues(definition) {
|
|
|
211
247
|
const userTasks = definition.nodes.filter((node) => node.type === 'userTask');
|
|
212
248
|
const canBothRun = createWorkflowCoRunReader(definition);
|
|
213
249
|
const pathIssues = [...approverFilled].flatMap((fieldKey) => {
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
250
|
+
// One filler per (fieldKey, columnKey): two nodes filling different
|
|
251
|
+
// columns of one table never overwrite each other (ADR 27 ยง4(a)).
|
|
252
|
+
const fillers = userTasks
|
|
253
|
+
.map((node) => ({
|
|
254
|
+
nodeId: node.id,
|
|
255
|
+
columnKeys: (0, field_access_1.readNodeFillUnits)(node)
|
|
256
|
+
.filter((unit) => unit.fieldKey === fieldKey)
|
|
257
|
+
.map((unit) => unit.columnKey),
|
|
258
|
+
}))
|
|
259
|
+
.filter((filler) => filler.columnKeys.length > 0);
|
|
260
|
+
return fillers.flatMap((filler, index) => fillers
|
|
220
261
|
.slice(index + 1)
|
|
221
|
-
.filter((
|
|
222
|
-
.
|
|
262
|
+
.filter((other) => other.nodeId !== filler.nodeId &&
|
|
263
|
+
doFillUnitsOverlap(filler.columnKeys, other.columnKeys) &&
|
|
264
|
+
canBothRun(filler.nodeId, other.nodeId))
|
|
265
|
+
.map((other) => ({
|
|
223
266
|
code: 'approverFilledMultipleFillNodesOnPath',
|
|
224
267
|
fieldKeys: [fieldKey],
|
|
225
|
-
message: workflow_graph_1.WORKFLOW_LINT_MESSAGES.approverFilledMultipleFillNodesOnPath(fieldKey, nodeId,
|
|
226
|
-
nodeIds: [nodeId,
|
|
268
|
+
message: workflow_graph_1.WORKFLOW_LINT_MESSAGES.approverFilledMultipleFillNodesOnPath(fieldKey, filler.nodeId, other.nodeId),
|
|
269
|
+
nodeIds: [filler.nodeId, other.nodeId],
|
|
227
270
|
})));
|
|
228
271
|
});
|
|
229
272
|
return [...writeIssues, ...pathIssues];
|
|
@@ -232,9 +275,10 @@ function readDefinitionFieldAccessIssues(definition) {
|
|
|
232
275
|
* Why a form field cannot be one an approver fills in, as the issues the
|
|
233
276
|
* publish lint reports once it is: a form-level rule (`required` / `hidden`
|
|
234
277
|
* set to `true`, the others set at all โ `required: false` and
|
|
235
|
-
* `hidden: false`, what the form editor writes for "off", are not rules)
|
|
236
|
-
*
|
|
237
|
-
* when the field can be filled
|
|
278
|
+
* `hidden: false`, what the form editor writes for "off", are not rules) or a
|
|
279
|
+
* file upload. A data source, or a table with a data-source column, can be
|
|
280
|
+
* filled in by the approver (ADR 27 ยง4(b)). Empty when the field can be filled
|
|
281
|
+
* in.
|
|
238
282
|
*/
|
|
239
283
|
function readFormFieldFillIssues(field) {
|
|
240
284
|
const { fieldKey } = field;
|
|
@@ -248,22 +292,11 @@ function readFormFieldFillIssues(field) {
|
|
|
248
292
|
...workflow_graph_1.APPROVER_FILLED_FORM_RULES.filter((rule) => rule === 'required' || rule === 'hidden'
|
|
249
293
|
? field[rule] === true
|
|
250
294
|
: field[rule] !== undefined).map((rule) => issue('approverFilledFieldFormRule', workflow_graph_1.WORKFLOW_LINT_MESSAGES.approverFilledFieldFormRule(fieldKey, rule))),
|
|
251
|
-
...((0, form_1.isFormDataSourceFieldDefinition)(field)
|
|
252
|
-
? [
|
|
253
|
-
issue('approverFilledFieldDataSource', workflow_graph_1.WORKFLOW_LINT_MESSAGES.approverFilledFieldDataSource(fieldKey)),
|
|
254
|
-
]
|
|
255
|
-
: []),
|
|
256
295
|
...(field.type === 'file_upload'
|
|
257
296
|
? [
|
|
258
297
|
issue('approverFilledFieldFileUpload', workflow_graph_1.WORKFLOW_LINT_MESSAGES.approverFilledFieldFileUpload(fieldKey)),
|
|
259
298
|
]
|
|
260
299
|
: []),
|
|
261
|
-
...((0, form_1.isTableFieldDefinition)(field) &&
|
|
262
|
-
field.columns.some(form_1.isFormDataSourceFieldDefinition)
|
|
263
|
-
? [
|
|
264
|
-
issue('approverFilledTableDataSourceColumn', workflow_graph_1.WORKFLOW_LINT_MESSAGES.approverFilledTableDataSourceColumn(fieldKey)),
|
|
265
|
-
]
|
|
266
|
-
: []),
|
|
267
300
|
];
|
|
268
301
|
}
|
|
269
302
|
/**
|
|
@@ -279,22 +312,64 @@ function readFormFieldFillIssues(field) {
|
|
|
279
312
|
* stricter.
|
|
280
313
|
*/
|
|
281
314
|
function referencesFormField(expression, fieldKey) {
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
315
|
+
return referencesRootedKey(expression, '(?:formData|form)', fieldKey);
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* The same match as `referencesFormField`, for an arbitrary root: `root` is a
|
|
319
|
+
* regex alternation (`(?:formData|form)`, `row`) placed before `.key` or
|
|
320
|
+
* `["key"]`. The root may not be preceded by an identifier character or a dot.
|
|
321
|
+
*/
|
|
322
|
+
function referencesRootedKey(expression, root, key) {
|
|
323
|
+
const escapedKey = key.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
|
|
324
|
+
const rootPattern = `(?<![\\p{L}\\p{N}_.])${root}\\s*`;
|
|
286
325
|
return [
|
|
287
|
-
new RegExp(`${
|
|
288
|
-
new RegExp(`${
|
|
326
|
+
new RegExp(`${rootPattern}\\.\\s*${escapedKey}(?![\\p{L}\\p{N}_])`, 'u'),
|
|
327
|
+
new RegExp(`${rootPattern}\\[\\s*["']${escapedKey}["']\\s*\\]`, 'u'),
|
|
289
328
|
].some((pattern) => pattern.test(expression));
|
|
290
329
|
}
|
|
330
|
+
const readDependentColumnKeys = (table, sourceColumnKey) => table.columns
|
|
331
|
+
.filter((column) => (0, form_1.isFormDataSourceFieldDefinition)(column) &&
|
|
332
|
+
column.dataSource.bindings.some(({ from }) => from.kind === 'ROW_FIELD'
|
|
333
|
+
? from.columnKey === sourceColumnKey
|
|
334
|
+
: from.kind === 'EXPRESSION' &&
|
|
335
|
+
referencesRootedKey(from.expression, 'row', sourceColumnKey)))
|
|
336
|
+
.map((column) => column.fieldKey);
|
|
337
|
+
/**
|
|
338
|
+
* Every column the approver may fill in that a data-source column of the same
|
|
339
|
+
* table reads, while that data-source column is not open to the same node.
|
|
340
|
+
* A table granted whole is skipped: every column of it is then open. An
|
|
341
|
+
* EXPRESSION source counts only through a `row` reference, the way the cell
|
|
342
|
+
* reads its own row. Empty when `schema` is null.
|
|
343
|
+
*/
|
|
344
|
+
function readFieldAccessDependencyBreaks(schema, units) {
|
|
345
|
+
if (schema === null) {
|
|
346
|
+
return [];
|
|
347
|
+
}
|
|
348
|
+
const wholeFieldKeys = new Set(units
|
|
349
|
+
.filter(({ columnKey }) => columnKey === null)
|
|
350
|
+
.map(({ fieldKey }) => fieldKey));
|
|
351
|
+
return schema.fields.flatMap((field) => {
|
|
352
|
+
if (!(0, form_1.isTableFieldDefinition)(field) ||
|
|
353
|
+
wholeFieldKeys.has(field.fieldKey)) {
|
|
354
|
+
return [];
|
|
355
|
+
}
|
|
356
|
+
const openColumnKeys = new Set(units.flatMap(({ fieldKey, columnKey }) => fieldKey === field.fieldKey && columnKey !== null ? [columnKey] : []));
|
|
357
|
+
return [...openColumnKeys].flatMap((sourceColumnKey) => readDependentColumnKeys(field, sourceColumnKey)
|
|
358
|
+
.filter((dependentColumnKey) => dependentColumnKey !== sourceColumnKey &&
|
|
359
|
+
!openColumnKeys.has(dependentColumnKey))
|
|
360
|
+
.map((dependentColumnKey) => ({
|
|
361
|
+
dependentColumnKey,
|
|
362
|
+
fieldKey: field.fieldKey,
|
|
363
|
+
sourceColumnKey,
|
|
364
|
+
})));
|
|
365
|
+
});
|
|
366
|
+
}
|
|
291
367
|
/**
|
|
292
368
|
* The issues read against the form the definition is bound to, in
|
|
293
369
|
* publish-lint order: a `fieldKey` that is not a top-level field of the form,
|
|
294
370
|
* an approver-filled field the form will not let anybody fill in
|
|
295
371
|
* (`readFormFieldFillIssues`, once per field however many nodes fill it in),
|
|
296
|
-
*
|
|
297
|
-
* fail), and an applicant's rule that reads an approver-filled field โ the
|
|
372
|
+
* and an applicant's rule that reads an approver-filled field โ the
|
|
298
373
|
* rule is evaluated against the submitted form, where that field is still
|
|
299
374
|
* empty, and the evaluation silently compares against nothing.
|
|
300
375
|
*/
|
|
@@ -313,18 +388,6 @@ function readFormFieldAccessIssues(definition, schema) {
|
|
|
313
388
|
message: workflow_graph_1.WORKFLOW_LINT_MESSAGES.fieldAccessUnknownField(node.id, fieldKey),
|
|
314
389
|
nodeIds: [node.id],
|
|
315
390
|
})));
|
|
316
|
-
const requiredBooleanIssues = userTasks.flatMap((node) => (0, field_access_1.readNodeFieldAccess)(node)
|
|
317
|
-
.filter(({ fieldKey, fill }) => {
|
|
318
|
-
var _a;
|
|
319
|
-
return fill === 'REQUIRED' &&
|
|
320
|
-
((_a = fieldsByKey.get(fieldKey)) === null || _a === void 0 ? void 0 : _a.type) === 'boolean';
|
|
321
|
-
})
|
|
322
|
-
.map(({ fieldKey }) => ({
|
|
323
|
-
code: 'approverFilledRequiredBoolean',
|
|
324
|
-
fieldKeys: [fieldKey],
|
|
325
|
-
message: workflow_graph_1.WORKFLOW_LINT_MESSAGES.approverFilledRequiredBoolean(node.id, fieldKey),
|
|
326
|
-
nodeIds: [node.id],
|
|
327
|
-
})));
|
|
328
391
|
const approverFilled = (0, field_access_1.readApproverFilledFieldKeys)(definition);
|
|
329
392
|
const applicantRuleIssues = ((_b = schema === null || schema === void 0 ? void 0 : schema.fields) !== null && _b !== void 0 ? _b : [])
|
|
330
393
|
.filter((field) => !approverFilled.has(field.fieldKey))
|
|
@@ -345,10 +408,19 @@ function readFormFieldAccessIssues(definition, schema) {
|
|
|
345
408
|
const field = fieldsByKey.get(fieldKey);
|
|
346
409
|
return field === undefined ? [] : readFormFieldFillIssues(field);
|
|
347
410
|
});
|
|
411
|
+
// A column the approver fills in whose data-source dependent the same node
|
|
412
|
+
// leaves open would keep its upstream value after the approver changes its
|
|
413
|
+
// source, so the publish refuses it (ADR 27 ยง4.3).
|
|
414
|
+
const dependencyIssues = userTasks.flatMap((node) => readFieldAccessDependencyBreaks(schema, (0, field_access_1.readNodeFillUnits)(node)).map(({ fieldKey, sourceColumnKey, dependentColumnKey }) => ({
|
|
415
|
+
code: 'approverFilledTableDataSourceColumn',
|
|
416
|
+
fieldKeys: [fieldKey],
|
|
417
|
+
message: workflow_graph_1.WORKFLOW_LINT_MESSAGES.approverFilledTableDataSourceColumn(node.id, fieldKey, sourceColumnKey, dependentColumnKey),
|
|
418
|
+
nodeIds: [node.id],
|
|
419
|
+
})));
|
|
348
420
|
return [
|
|
349
421
|
...unknownFieldIssues,
|
|
350
422
|
...fieldIssues,
|
|
351
|
-
...
|
|
423
|
+
...dependencyIssues,
|
|
352
424
|
...applicantRuleIssues,
|
|
353
425
|
];
|
|
354
426
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-access-lint.js","sourceRoot":"","sources":["../../../../../libs/shared/src/lib/field-access-lint.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"field-access-lint.js","sourceRoot":"","sources":["../../../../../libs/shared/src/lib/field-access-lint.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,30 @@
|
|
|
1
1
|
import { FieldAccessIssue, UserTaskFillConflict } from './field-access-lint';
|
|
2
|
-
import type
|
|
3
|
-
import type { FieldAccessEntry, WorkflowDefinition } from './workflow';
|
|
2
|
+
import { type FormDefinitionSchema, type FormFieldDefinition } from './form';
|
|
3
|
+
import type { FieldAccessColumnEntry, FieldAccessEntry, FieldAccessFill, WorkflowDefinition } from './workflow';
|
|
4
4
|
/**
|
|
5
5
|
* What a cell of the field access matrix offers. `DEFAULT` writes nothing for
|
|
6
|
-
* the node, so the field falls back to the derived value
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* the node, so the field falls back to the derived value. `SHOW`, `HIDE`,
|
|
7
|
+
* `FILL_OPTIONAL` and `FILL_REQUIRED` each stand for one whole-field
|
|
8
|
+
* `FieldAccessEntry` (`fill` other than `NONE` is always shown, since a hidden
|
|
9
|
+
* fill cannot be published). `COLUMNS` stands for a column-mode entry (ADR 27
|
|
10
|
+
* ยง4(a)) on a table field, whose fillable columns are set per column through
|
|
11
|
+
* `updateFieldAccessColumnFill`; it may hold zero columns while being edited.
|
|
9
12
|
*/
|
|
10
|
-
export type FieldAccessChoice = 'DEFAULT' | 'FILL_OPTIONAL' | 'FILL_REQUIRED' | 'HIDE' | 'SHOW';
|
|
13
|
+
export type FieldAccessChoice = 'DEFAULT' | 'FILL_OPTIONAL' | 'FILL_REQUIRED' | 'HIDE' | 'SHOW' | 'COLUMNS';
|
|
11
14
|
export declare const FIELD_ACCESS_CHOICES: readonly FieldAccessChoice[];
|
|
12
15
|
/**
|
|
13
16
|
* What a viewer at one place in the flow gets for a field. `FILL` is the
|
|
14
17
|
* applicant's own field; `NOT_SHOWN` is an approver-filled field nobody has
|
|
15
18
|
* filled in yet, which BPM leaves off the screen; `HIDDEN` is a node that
|
|
16
|
-
* chose to hide the field (display only, never a permission)
|
|
19
|
+
* chose to hide the field (display only, never a permission); `FILL_COLUMNS`
|
|
20
|
+
* is a node that lets its approver fill some columns of a table.
|
|
17
21
|
*/
|
|
18
|
-
export type FieldAccessEffective = 'FILL' | 'FILL_OPTIONAL' | 'FILL_REQUIRED' | 'HIDDEN' | 'NOT_SHOWN' | 'READ_ONLY';
|
|
22
|
+
export type FieldAccessEffective = 'FILL' | 'FILL_COLUMNS' | 'FILL_OPTIONAL' | 'FILL_REQUIRED' | 'HIDDEN' | 'NOT_SHOWN' | 'READ_ONLY';
|
|
23
|
+
/** One column of a table field, as the matrix lists it under the table row. */
|
|
24
|
+
export interface FieldAccessMatrixTableColumn {
|
|
25
|
+
readonly columnKey: string;
|
|
26
|
+
readonly label: string;
|
|
27
|
+
}
|
|
19
28
|
/**
|
|
20
29
|
* Why a cell reads the way it does: the node lists the field (`EXPLICIT`), an
|
|
21
30
|
* ordinary field every node sees read-only (`APPLICANT_FIELD`), an
|
|
@@ -49,6 +58,8 @@ export interface FieldAccessMatrixCell {
|
|
|
49
58
|
/** The fill choices this cell cannot take, for the node or the field. */
|
|
50
59
|
readonly disabledChoices: readonly FieldAccessChoice[];
|
|
51
60
|
readonly effective: FieldAccessEffective;
|
|
61
|
+
/** The fillable columns of a column-mode entry; empty for any other cell. */
|
|
62
|
+
readonly columnFills: readonly FieldAccessColumnEntry[];
|
|
52
63
|
readonly explicit: FieldAccessEntry | null;
|
|
53
64
|
readonly nodeId: string;
|
|
54
65
|
readonly reason: FieldAccessCellReason;
|
|
@@ -68,6 +79,8 @@ export interface FieldAccessMatrixRow {
|
|
|
68
79
|
/** Publish-blocking issues that name this field. */
|
|
69
80
|
readonly issues: readonly FieldAccessIssue[];
|
|
70
81
|
readonly notices: readonly FieldAccessNotice[];
|
|
82
|
+
/** The columns a table field offers per-column access for; empty otherwise. */
|
|
83
|
+
readonly tableColumns: readonly FieldAccessMatrixTableColumn[];
|
|
71
84
|
}
|
|
72
85
|
export interface FieldAccessMatrix {
|
|
73
86
|
readonly columns: readonly FieldAccessMatrixColumn[];
|
|
@@ -79,8 +92,20 @@ export interface FieldAccessMatrix {
|
|
|
79
92
|
readonly rows: readonly FieldAccessMatrixRow[];
|
|
80
93
|
}
|
|
81
94
|
export declare function readFieldAccessChoice(entry: FieldAccessEntry | null): FieldAccessChoice;
|
|
82
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
* The entry a choice writes for the field, or `null` for `DEFAULT`. `COLUMNS`
|
|
97
|
+
* writes an empty column list, which the publish lint rejects until a column
|
|
98
|
+
* is checked, so the drawer must not apply it on its own.
|
|
99
|
+
*/
|
|
83
100
|
export declare function readFieldAccessEntryForChoice(fieldKey: string, choice: FieldAccessChoice): FieldAccessEntry | null;
|
|
101
|
+
/**
|
|
102
|
+
* The entry after one column of a table field is set to `fill`, or cleared
|
|
103
|
+
* when `fill` is `NONE`. The other columns keep their fill and order; a
|
|
104
|
+
* whole-field entry (no `columns`) starts from an empty column list.
|
|
105
|
+
*/
|
|
106
|
+
export declare function updateFieldAccessColumnFill(entry: FieldAccessEntry | null, fieldKey: string, columnKey: string, fill: FieldAccessFill): FieldAccessEntry;
|
|
107
|
+
/** The table columns a field offers per-column access for; none for other fields. */
|
|
108
|
+
export declare function readTableColumns(field: FormFieldDefinition): readonly FieldAccessMatrixTableColumn[];
|
|
84
109
|
/**
|
|
85
110
|
* The designer's field access matrix: one row per top-level form field, one
|
|
86
111
|
* column per user task in flow order, and in each cell the node's explicit
|