Permissions and access control
The implementation enforces permission checks in multiple places:- Class-level create rights for create buttons and pickers
- Object-level rights for modify, delete, and history in context menus
- Template accessibility by group matching
Template administration
Template administration supports:- Application and class selection
- Create, edit, and delete templates
- Set or unset default template
- Assign user groups
- Assign precedence
- Define template type —
Create,Update, orPreview Pane
Governance rules
- When user groups are assigned, precedence should be defined
- Precedence conflicts are blocked and reported
- Preview Pane templates are intended for read-focused search preview behavior
- Use group + precedence for role-specific behavior
- Keep a reliable default template as fallback
Recommended implementation patterns
Pattern A: Child records bound to current object
UseObjectSearch with a relation constraint and create defaults:
Pattern B: Relation selection with attribute copy
UseRelationPicker with onChanged and ${selectedObject} values to auto-populate fields when a relation is selected.
Pattern C: Save-time validation rules
UseSaveButton with onBeforeSave and throwError to enforce business rules before persistence.
Pattern D: Script-orchestrated post-processing
UseScriptButton or callScript inside action chains, then refresh affected queries with refresh:<queryKey>.
Pattern E: UI-only computations
Use transient fields (underscore-prefixed_ fields) for temporary values and action-only orchestration.
Common pitfalls and troubleshooting
No template rendered
No template rendered
Check:
- The class has a template of the requested type
- The user belongs to a group that can access the template, or a default fallback exists
Field does not persist
Field does not persist
Likely causes:
- Attribute name mismatch
- Transient field (
_...) used unintentionally - Relation or nested path used where only a single-level attribute is supported
Save button disabled
Save button disabled
Action not executing
Action not executing
Check:
- Malformed JSON in action params
- Condition in
whenresolves to false - Runtime variable name mismatch
- Missing query key referenced by refresh action
Dynamic dataset not refreshing
Dynamic dataset not refreshing
Check:
datasetQueryKeyis configured on theEditableFieldrefreshDataset:<datasetQueryKey>action is used
Relation auto-populate fails
Relation auto-populate fails
Check:
- The selected relation object actually contains the referenced attribute
- Nested relation path correctness
- Use
??fallback for optional values
Script works in test but not in UI
Script works in test but not in UI
Check:
- Script type (
workview_autofillvsworkview_action) - Expected input payload keys
- Execution rights and configured script engine endpoint
Delivery checklist
Before go-live, confirm:- All business-critical classes have Create and Update templates
- Group-based template precedence and defaults are configured intentionally
- All search components have stable
queryKeyvalues where refresh chaining is needed - Save validation rules are implemented with clear user-facing error messages
- Script dependencies (slugs, secrets, bindings) are deployed and tested in target environment
- Permission-sensitive actions (edit, delete, history, create) are tested with representative user roles
- Preview Pane templates are configured for search-heavy roles where relevant
- Transient fields are used only for UI/runtime logic and not for required persisted data
Implementation sequence
For new Caseflow classes, follow this sequence:- Confirm class/attribute model and relation paths with business owners
- Define Create and Update templates, plus Preview Pane where search workflows demand it
- Implement base form fields with
EditableField, including required and regex/validator rules - Add relation handling using
RelationPickerand/orRelatedObjectaliases - Add object and document lists with explicit
queryKeyvalues - Attach save hooks and script actions for business automation
- Validate role-based template access and precedence
- Run UAT with scenario data and production-like permissions
UAT scenario matrix
| Scenario | What to verify |
|---|---|
| Create object | Defaults applied, required fields enforced, save succeeds |
| Update object | Dirty tracking works, save hooks execute in order |
| Relation change | selectedObject-based mapping works, no stale values remain |
| Search refresh | refresh/refreshDocuments/refreshDataset target intended components only |
| Script execution | Success and failure branches behave predictably with user feedback |
| Permission boundaries | Restricted users cannot create/edit/delete outside assigned rights |
| Template fallback | Group-specific template selected correctly; default fallback still available |
Production hardening checklist
- Confirm all critical template actions reference valid query keys
- Confirm all script slugs and required credentials/config are deployed
- Confirm no transient fields (
_...) are used where persistence is required - Confirm document upload defaults map to valid document type and keyword IDs
- Confirm all validation error messages are business-readable
- Confirm delete permissions and destructive actions are tested with least-privileged roles
- Confirm object history visibility requirements with support/audit teams
Handover package
Provide the following to operations teams:- Template catalog by class/type with owners and change authority
- Component usage map — which templates depend on which scripts, actions, and query keys
- Script dependency register — slug, purpose, expected input/output, failure behavior
- Permission model summary — class-level and object-level assumptions
- Troubleshooting runbook aligned to the symptoms above
Change management
For safe iterative changes:- Promote template changes through lower environments with representative data
- Include rollback-ready version snapshots of templates and scripts
- Validate query-key refresh paths after each significant UI/action change
- Run focused regression on create, save, relation picker, and search modules
