Control UI element visibility and interaction based on user roles, usernames, and process data for granular access control.
Control what users see and edit within the same process instance based on their roles, usernames, or process data. One process definition automatically adapts to different users, providing role-specific interfaces and access control.
Customize UI per role: Different roles see different UI elements within the same process
Enable read-only access: Users view and navigate process instances without making changes
Support concurrent work: Multiple users with different permissions work on the same instance
Adapt dynamically: UI changes in real-time based on user permissions and process data
Use case examples: A loan application where applicants see only input fields, reviewers see approval buttons, and managers see all data but in read-only mode. One process definition serves all roles.
Enable users to view and navigate process instances without modification:
Users can navigate through user tasks and view data
All input fields and buttons are non-interactive
Hide and disable conditions continue to apply
Navigation between tasks remains available
Configuration required: Enable âAllow Read-Only Process Configurationâ in process General settings, then assign View permission to appropriate roles at the swimlane level.
When both hide and disable conditions exist on the same element, disable takes precedence. The element will be shown in a disabled state rather than hidden.
Follow these steps to set up permission-based UI control for your process:
1
Enable multiple executors
Navigate to Process Settings â Permissions tab and enable Allow multiple executors for your swimlane.
Enable multiple executors at the swimlane level
Configure role permissions (Execute, Self-assign, View) for each role that will access this swimlane.
2
Open UI Designer
Navigate to the UI Designer tab and select the component you want to configure with permission-based visibility or interaction controls.
3
Access permissions configuration
In the component properties panel, expand the Permissions section.
Permission configuration interface
4
Add condition
Click the + button next to your desired condition type:
Hide Condition: Available for all component types
Disable Condition: Available for forms, form elements, and buttons
5
Configure condition parameters
Define the permission logic using these parameters:Type: Who the condition applies to
USERNAME: Target specific usernames
ROLE: Target users with specific roles
Operator: How to evaluate the condition
IN: Condition applies when user matches the value
NOT_IN: Condition applies when user does NOT match the value
Value Type: Where permission data comes from
SWIMLANE_OWNER: Current swimlane owner (automatic, no value needed)
PROCESS_DATA: Reference data stored in the process instance
CONFIGURATION_SWIMLANE_ROLE: Use roles configured at swimlane level
Value: The actual permission data (depends on Value Type)
PROCESS_DATA: Process data keypath (e.g., ${app.client.userList})
CONFIGURATION_SWIMLANE_ROLE: Array of role names (e.g., ["ROLE_1", "ROLE_2"])
SWIMLANE_OWNER: Not applicable (determined automatically)
Use CONFIGURATION_SWIMLANE_ROLE for static role-based permissions. Use PROCESS_DATA for dynamic, context-dependent permissions determined during process execution.
6
Save configuration
Click Save to apply your permission-based expression. Test the behavior by accessing the process with different user roles.
To reference users from other swimlanes, explicitly store their information in process data during swimlane transitions:
// Map during swimlane transitions or process start{ "swimlaneOwners": { "frontOffice": "john.doe@company.com", "backOffice": "jane.smith@company.com", "supervisor": "manager@company.com" }}
// Use in permission expression on any swimlane{ "type": "USERNAME", "operator": "IN", "valueType": "PROCESS_DATA", "value": ["${app.swimlaneOwners.frontOffice}"]}
Cross-swimlane owner references require explicit data mapping. Design your process to capture user information during swimlane transitions or use business rules to populate owner data.
Implementation approach:
Add a Business Rule node at the start of each swimlane
Capture the current userâs username
Store it in your process data structure (e.g., swimlaneOwners.{swimlaneName})
Reference this stored data in permission expressions on other swimlanes