split Annotation

split is a Constraint Modeling Language (CML) annotation that specifies whether the instances of the type should be split or not.

Annotationsplit
Applicable toType
Value Type/Valuestrue, false
DescriptionIf split isn’t specified, there are multiple instances of the same type in the relationship with different quantities. If the split is specified as true, there can be multiple instances of the type, and the quantity of each instance is always 1. If the split is specified as false, there is only one instance in the relationship. If the user adds more instances, the engine adds more quantity to the existing instance.

The split operation creates line items before constraint and message rules evaluate. Validation rules can’t prevent the split. To restrict quantity, use cardinality constraints or the @(singleton) annotation instead.

Note

Example 1 

In this example, the split annotation isn’t specified for the type (Model).

1type FESBAGeneratorSet {
2    relation models : Model;
3}
4type Model;

Example Description and Configurator Result 

In this example, the system allows the multiple instances of the Model type with different quantities defined by the user.

Example 2 

In this example, the split annotation is specified as true for the type (Model).

1type FESBAGeneratorSet {
2    relation models : Model;
3}
4@(split = true)
5type Model;

Example Description and Configurator Result 

In this example, the annotation split = true specifies that the multiple Model instances are split into individual items with fixed quantity 1.

Example 3 

In this example, the split annotation is specified as false for the type (Model).

1type FESBAGeneratorSet {
2    relation models : Model;
3}
4@(split = false)
5type Model;

Use @(split=false) when the line item record must persist across configuration changes and record continuity matters for your business process. The @(split=false) annotation prevents the configurator from deleting and recreating existing line item records when the quantity or selection changes. When you apply @(split=false), the configurator updates the quantity on the existing record instead of replacing it with a new one. This preserves the record ID and any data associated with it.

Example Description and Configurator Result 

In this example, the system allows one instance of the Model type with different quantity defined by the user.

If there are multiple products of type Model (for example, FESBA 900kW and FESBA 1500kW), the user can add both models to the configuration and adjust the quantity for each one. However, the user can’t add additional separate instances of the same product (for example, to configure unique instances with different variable values).

Note

split Configuration Settings 

Product Group Structure”split” annotationEngine Actionuser ActionUI Behavior
Product ClassificationTRUEAdd multiple productsN/AN/A
Product ClassificationTRUEN/ASelecting or adding the product multiple times manuallyMultiple instances created (qty = 1 each). User can add more instances, but can’t change quantity per instance.
Product ClassificationFALSEAdd multiple productsN/AOne instance created with qty > 1. User can change the quantity of this instance, but can’t add more instances.
Product ClassificationFALSEN/ASelecting or adding the product multiple times manuallyOne instance created with qty = 1. User can change the quantity of this instance, but can’t add more instances.
Product Classification(empty)Add multiple productsN/AOne instance created with qty > 1. User can change quantity and can add more instances.
Product Classification(empty)N/ASelecting or adding the product multiple times manuallyOne instance created with qty = 1. User can change quantity and can add more instances.
Individual ProductTRUEAdd multiple productsN/AMultiple line items created, but Configurator displays only one instance. Users cannot modify quantity for that instance.
Individual ProductTRUEN/ASelecting or adding the product manuallyOne instance created with qty = 1. Users cannot change quantity.
Individual ProductFALSEAdd multiple products One instance created with qty > 1. Users can’t modify quantity for that instance.
Individual ProductFALSEN/ASelecting or adding the product manuallyOne instance created with qty = 1. Users can modify quantity for that instance.
Individual Product(empty)Add multiple products One instance created with qty > 1. Users can’t modify quantity for that instance.
Individual Product(empty)N/ASelecting or adding the product manuallyOne instance created with qty = 1. Users can modify quantity for that instance.