Skip to content

Constructor groups

Ryan Newington edited this page Sep 4, 2025 · 7 revisions

Constructor Groups

Constructor groups provide organization and conditional execution control for attribute constructors. They are an important design consideration for planning efficient business rule implementation.

Purpose and Functions

Constructor groups serve two main functions:

1. Organizational Structure

  • 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

2. Conditional Execution Control

  • Performance optimization: Prevent unnecessary constructor evaluation
  • Business logic: Implement complex conditional workflows
  • Resource management: Reduce processing overhead in large environments

Constructor Groups Without Execution Conditions

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

Constructor Groups With Execution Conditions

Groups with execution conditions provide powerful control over constructor execution:

Execution Logic

  • 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

Example Configuration

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

Execution Modes

Default Mode (Execute All)

  • Standard behavior: All child constructors with met conditions execute
  • Complete processing: Ensures all applicable constructors run
  • Use case: When multiple constructors can execute simultaneously

Exit After First Execution Mode

  • 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)

Performance Considerations

Best Practices

  • 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

Large Environment Optimization

  • 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

Disabling Constructor Groups

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

Important Notes

  • 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

Clone this wiki locally