Problem/Motivation
The Status node feature (added in #3611246) inlines a status on each node: a label and a set of CSS classes, authored per node.
Requesters want to filter their requests by status, choosing the value from a select list. Filtering makes a status a first-class concept with a stable identity and an enumerable set of values, which the inline model cannot provide: the same status re-typed on several nodes drifts in label and styling, a filter has no single label per value, and each occurrence is translated separately.
Proposed resolution
- Add an orchestra_status configuration entity: a status vocabulary keyed by machine name, carrying its label and a palette class. It is tenant-scoped exactly like a workflow: an empty tenant means shared across all tenants, a tenant id means visible only in that tenant.
- Resolve the statuses available in a tenant (shared plus scoped) through a single catalogue service, so the node editor, the display and the filter all apply the same rule.
- Reduce the Status node feature to a select that references a status by machine name, scoped to the workflow's tenant.
- Store the current status machine name on the process instance as a queryable column, written transactionally through the existing guarded state-transition primitive rather than a separate entity save.
- Add a per-user status filter to the "My requests" page, offering only the statuses actually present in the acting user's own requests.
Remaining tasks
Implementation, kernel and functional tests, example configuration, documentation and French translation.
Issue fork orchestra-3611370
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #3
mably commentedComment #5
mably commented