configurable Annotation

configurable is a CML annotation that controls whether a model element can be configured.

configurable annotation specification: Variable

Annotationconfigurable
Applicable toVariable
Value Type/Valuestrue, false
DescriptionIf the configurable annotation is not explicitly specified, the engine sets it implicitly as true for the variable. If the configurable annotation is explicitly specified as true, the variable is indicated as configurable. The engine sets the value to the variable. If the configurable annotation is explicitly specified as false, the engine doesn’t set a value to the variable.

Example 1 

In this example, the configurable annotation is not specified for the variable (Cable Entry) of the VoltageConnection child products. The defaultValue is not defined.

1type GeneratorSet {
2    relation voltageConnections : VoltageConnection[1..999999];
3}
4type VoltageConnection {
5    string cableEntry = ["Top Entry", "Bottom Entry", "Side Entry"];
6}

Example Description and Configurator Result 

In this example, the configurable annotation is not explicitly specified for the variable cableEntry, but the system considers it as configurable = true by default. As a result, the system sets the "Top Entry" (the first value in the ["Top Entry", "Bottom Entry", "Side Entry"] CML domain) as the initial value for the configurable Cable Entry variable.

Example 2 

In this example, the configurable annotation is specified as true for the variable (Cable Entry) of the VoltageConnection child products. The defaultValue is not specified.

1type GeneratorSet {
2    relation voltageConnections : VoltageConnection[1..999999];
3}
4type VoltageConnection {
5    @(configurable = true)
6    string cableEntry = ["Top Entry", "Bottom Entry", "Side Entry"];
7}

Example Description and Configurator Result 

In this example, the configurable annotation is true for the variable. As a result, the system specifies the variable as configurable and sets the "Top Entry" (the first value in the ["Top Entry", "Bottom Entry", "Side Entry"] CML domain) as the initial value for the Cable Entry.

Example 3 

In this example, the configurable annotation is specified as false for the variable (Cable Entry) of the VoltageConnection child products. The defaultValue is not specified

1type GeneratorSet {
2    relation voltageConnections : VoltageConnection[1..999999];
3}
4type VoltageConnection {
5    @(configurable = false)
6    string cableEntry = ["Top Entry", "Bottom Entry", "Side Entry"];
7}

Example Description and Configurator Result 

In this example, the configurable annotation is false for the variable. As a result, the engine doesn’t configure the variable with an initial value, and it is displayed empty on the Product Configuration UI.

Example 4 

In this example, the configurable is false and defaultValue annotation is true for the variable (Cable Entry) of the VoltageConnection child products.

1type GeneratorSet {
2    relation voltageConnections : VoltageConnection[1..999999];
3}
4type VoltageConnection {
5    @(configurable = true, defaultValue = "Side Entry")
6    string cableEntry = ["Top Entry", "Bottom Entry", "Side Entry"];
7}

Example Description and Configurator Result 

In this example, the system indicates the variable as configurable and sets the "Side Entry" as the initial value for the Cable Entry defined in the defaultValue annotation.

Example 5 

In this example, the configurable and defaultValue annotations are specified for the variable (Cable Entry) of the VoltageConnection child products.

1type GeneratorSet {
2    relation voltageConnections : VoltageConnection[1..999999];
3}
4type VoltageConnection {
5    @(configurable = false, defaultValue = "Side Entry")
6    string cableEntry = ["Top Entry", "Bottom Entry", "Side Entry"];
7}

Example Description and Configurator Result 

In this example, the system sets the "Side Entry" as the initial value for the Cable Entry according to the defaultValue annotation.

Associated ExampleProduct Group StructureApplicable to”CONFIGURABLE” annotationUser ActionEngine ActionUI Behavior
Example 1Individual productVariablenot specifiedConfigure the product containing variableSet the first value from the variable domain as initial value. If the User changes the variable value manually, reset it back to the first value from the variable domain. If the default value is defined in PCM, reset it back to the first value from the variable domain.Display defined by engine variable value as the default value
Example 2. Example 4.Individual productVariableTRUEConfigure the product containing variableSet the first value from the variable domain as initial value. If the User changes the variable value manually, reset it back to the first value from the variable domain. If the default value is defined in PCM, reset it back to the first value from the variable domain. If the defaultValue annotation is specified for the variable, set it as initial value.Display defined by engine variable value as the default value
Example 3. Example 5.Individual productVariableFALSEConfigure the product containing variableSet emptiness for the variable as initial value (If the default value is specified in PCM for the variable, set it as initial value instead of emptiness). If the defaultValue annotation is specified for the variable, set it as initial value (despite of the PCM default value).Display defined by engine or PCM variable value as the default value