-
Notifications
You must be signed in to change notification settings - Fork 4
Constructor groups
Ryan Newington edited this page Sep 4, 2025
·
7 revisions
Constructor groups provide organization and conditional execution control for attribute constructors. They are an important design consideration for planning efficient business rule implementation.
Constructor groups serve two main functions:
- UI navigation: Group related constructors for easier management in the ACMA editor
- Logical grouping: Organize constructors by functional area or business purpose
- Visual clarity: Improve readability and maintainability of complex configurations
- Performance optimization: Prevent unnecessary constructor evaluation
- Business logic: Implement complex conditional workflows
- Resource management: Reduce processing overhead in large environments
Groups without execution conditions function purely as organizational containers:
- UI organization: Provide collapsible sections in the ACMA editor
- No execution impact: Do not affect constructor logic or performance
- Navigation aid: Help administrators locate and manage related constructors
Groups with execution conditions provide powerful control over constructor execution:
- Prerequisite evaluation: Group conditions must pass before child constructors are evaluated
- Cascading conditions: Individual constructors still evaluate their own conditions
- Performance benefit: Bypasses entire groups when conditions aren't met
Personnel Changes Group
├── Execution Conditions
│ └── Object Change Rule: On object add OR update
├── Email Constructor
│ └── Execution Conditions
│ └── Attribute Change Rule: firstName or lastName changed
└── Display Name Constructor
└── Execution Conditions
└── Attribute Presence Rule: firstName and lastName present
In this example:
- The group only processes during add or update operations
- Individual constructors have additional specific conditions
- Updates that don't involve personnel changes bypass the entire group
- Standard behavior: All child constructors with met conditions execute
- Complete processing: Ensures all applicable constructors run
- Use case: When multiple constructors can execute simultaneously
- Early termination: Stops processing after first successful constructor execution
- Conflict resolution: Prevents multiple constructors from modifying the same attribute
- Use case: Multiple constructors setting different values for the same attribute under different conditions
Example scenario:
Email Address Group (Exit after first execution)
├── Primary Email Constructor (if preferredEmail is present)
├── Standard Email Constructor (if firstName and lastName present)
└── Fallback Email Constructor (if employeeID present)
- Strategic grouping: Use execution conditions on groups to eliminate unnecessary processing
- Condition hierarchy: Place broader conditions at the group level, specific conditions on constructors
- Testing importance: Thoroughly test group and constructor interactions
- Critical for scale: Essential in environments with many objects and complex rules
- Processing efficiency: Well-designed groups significantly improve export performance
- Resource management: Reduces CPU and memory usage during synchronization
Groups can be disabled for administrative purposes:
- Testing scenarios: Temporarily disable functionality for troubleshooting
- Maintenance mode: Prevent certain operations during system maintenance
- Diagnostic purposes: Isolate issues by selectively disabling groups
- Phased deployment: Gradually enable functionality in production environments
- Complete bypass: Disabled groups never execute, regardless of conditions
- Child impact: All child constructors are effectively disabled
- No cascading: Disabling a group doesn't affect other groups or constructors