Variability Modeling > Making decisions for a product model > How the status of variants and variation points can be set > How the status of a variant can be set - decision set editor
  
How the status of a variant can be set - decision set editor
A Variant has a Status that can be set to Included, Excluded or Undecided. When a Product Model is created, it is the Status of a Variant that determines whether that Variant is removed or not.
You can set the Status of Variants through the Decision Set Editor or the Variant Selector. This topic covers using the Decision Set Editor.
The most direct way of setting the Status of a Variant is by setting the Decision of that Variant. Assuming that the Variant does not have a parameter and the Status of a Variant is not affected by any other Variants or Variation Points:
When you set the Decision of a Variant to Undecided, Modeler sets the Status of the Variant to Undecided.
When you set the Decision of a Variant to Exclude, Modeler sets Status of the Variant to Excluded.
When you set the Decision of a Variant to Include, Modeler sets Status of the Variant to Included.
When a Variant has a parameter, as indicated by text shown in the Value column, setting or changing the value of the Variant sets the Status of the Variant to Included.
Setting the Status of a Variant can also change the Status of other Variants and Variation Points in the Decision Set, that is, Variants and Variation Points that are linked to the Variant through Requires relationships, Excludes relationships and Alternative Choices:
Modeler sets the Status of a Variant to Included when it is required (through a Requires link) by an Included Variant or Variation Point.
Modeler sets the Status of a Variant to Excluded:
When it is excluded (through an Excludes link) by an Included Variant or Variation Point.
When it requires (through a Requires link) an Excluded Variant or Variation Point.
When part of an Alternative Choice group:
Modeler sets the Status of a Variant to Excluded if the maximum multiplicity of the Alternative Choice has been reached through other included Variants in the group.
Modeler sets the Status of a Variant to Included if the Variant needs to be included to reach the minimum multiplicity of the Alternative Choice.
Modeler sets the Status of a Variant to Excluded when it is linked (through an optional or mandatory Variability Dependency link) to an Excluded Variation Point.
Modeler sets the Status of a Variant to Included when it is linked (through a mandatory Variability Dependency link) to an Included Variation Point.
This topic has the following worked examples that use the Decision Set Editor to show how the Status of a Variant can be set:
Setting the Status of a Variant through a Decision.
Setting the Status of a Variant that has a parameter.
Setting the Status of a Variant through a Requires relationship.
Setting the Status of a Variant through an Excludes relationship.
Setting the Status of a Variant through the multiplicity of an Alternative Choice.
Setting the Status of a Variant through its Variation Point.
Note that sometimes the combination of Decisions, Requires relationships, Excludes relationships and Alternative Choice multiplicities may result in the Status of a Variant needing to be set to both Included and Excluded. When this happens, the Status of the Variant whose Decision was last changed is set to Inconsistent. For information about resolving inconsistencies, see Resolving inconsistencies in a decision set - decision set editor.
Setting the status of a variant through a decision
The Status of a Variant can be set through its Decision.
In this example we have opened the Decision Set Editor and can see that no Decision has been made for Variant1 (its Decision is set to Undecided) and the Status of Variant1 is Undecided.
We set the Decision of Variant1 to Include and can see that the Status of Variant1 is set to Included.
Note that we set the Decision by clicking the cell and then selecting the required Decision.
We now set the Decision of Variant1 to Exclude and can see that the Status of Variant1 is now set to Excluded.
Setting the status of a variant that has a parameter
The Status of a Variant can be set through its parameter:
When the Decision of a Variant is Undecided and it has a parameter that has a default value:
Changing the value of the parameter sets the Status to Include.
Setting the Decision to Include sets the Status to Include.
When the Decision of a Variant is Undecided and it has a parameter with no default value:
Setting a value for the parameter sets the Status to Include.
Setting the Decision to Include does not set the Status to Include, because the Variant requires a value to be set for its parameter.
In this example Variation Point1 is linked to three Variants.
We create a Decision Set and open the Decision Set Editor.
The Value column indicates whether a Variant has a parameter:
Variant1 has a parameter that has a default value of 50, as indicated by 50 appearing in the Value column.
Variant2 has a parameter with no default value, as indicated by <x> appearing in the Value column.
Variant3 does not have a parameter, as indicated by the empty cell in the Value column.
Initially the Decision for each Variant is Undecided and the Status of each Variant is Undecided.
We set the Decision of each Variant to Include. The Status of Variant1 is set to Included because it has a default value. The Status of Variant2 remains as Undecided because it does not have a value set for its parameter.
We set the value of the Variant2 parameter to 55 and the Decision Set Editor sets the Status of Variant2 to Included. The button appears because a value has been set for the parameter.
For Variant1 we change the default value of 50 to 100. The button appears because the value has been changed from its default value.
We now click the two buttons and can see that the Variant1 value returns to the default value of 50 and the Variant2 value returns to <x>.
We return to the starting point of this example by setting the Decision of each Variant to Undecided.
We set the parameter value of Variant1 to 200 without changing the Decision from Undecided. The value of the Variant1 parameter has been changed from its default value, so the Decision Set Editor sets the Status of Variant1 to Included.
We set the parameter value of Variant2 to 300 without changing the Decision from Undecided. A value for the Variant2 parameter has been set, so the Decision Set Editor sets the Status of Variant2 to Included.
Setting the status of a variant through a requires relationship
The Status of a Variant can be set to Included or Excluded when it is linked to other Variants through a Requires relationship.
A Requires relationship models that the inclusion of a Variant (or Variation Point) requires the inclusion of another Variant (or Variation Point).
In this example we can see that Variant1 requires Variant2.
We open the Decision Set Editor and can see no that no Decision has been made for Variant1 or Variant2 and for both Variants the Status is Undecided.
We now set the Decision of Variant1 to Include and can see the Status of Variant1 is set to Included. Variant1 requires Variant2, so Modeler sets the Status of Variant2 to Included.
Notice that the Included By column for Variant2 reports that it is included because of Variant1. When a Variant is included because it is required by another Variant or Variation Point, the Included By column of the Variant shows the requiring Variant or Variation Point.
We now set the Decision of Variant1 to Exclude and can see that this has no affect on Variant2. Variant2 is affected by Variant1 only when the Status of Variant1 is Included.
However, if we set the Decision of Variant1 to undecided and the Decision of Variant2 to Excluded, we can see that Modeler sets the Status of Variant1 to Excluded. Modeler sets the Status of Variant1 to Excluded because if it was included it would require Variant2 to be included as well and Variant2 is set to Excluded.
Note that if a Requires relationship is bidirectional, the rules of the Requires relationship apply in both directions: if the Status of one item is set to Included, Modeler sets the Status of the linked item to Included; if the Status of one item is set to Excluded, Modeler sets the Status of the linked item to Excluded
Setting the status of a variant through an excludes relationship
The Status of a Variant can be set to Excluded when it is linked to other Variants through Excludes relationships.
An Excludes relationship models that the inclusion of a Variant (or Variation Point) requires the exclusion of another Variant (or Variation Point).
In this example we can see that Variant1 excludes Variant2. This relationship is bi-directional so Variant2 also excludes Variant1.
We open the Decision Set Editor and can see no that no Decision has been made for Variant1 or Variant2 and for both Variants the Status is Undecided.
We now set the Decision of Variant1 to Include and can see the Status of Variant1 is set to Included. Variant1 excludes Variant2, so Modeler sets the Status of Variant2 to Excluded.
Notice that the Excluded By column for Variant2 reports that it is excluded because of Variant1. When a Variant is excluded because it is excluded by another Variant or Variation Point, the Excluded By column of the Variant shows the excluding Variant or Variation Point.
We now set the Decision of Variant1 to Exclude and can see that this has no affect on Variant2. Variant2 is affected by Variant1 only when the Status of Variant1 is Included.
Setting the status of a variant through the multiplicity of an alternative choice
The Status of a Variant can be set to Excluded or Included through the multiplicity of an Alternative Choice.
The multiplicity of an Alternative Choice specifies that the minimum and maximum number of Variants that must be included through that Alternative Choice.
In this example we can see the multiplicity of the Alternative Choice is 1..1, which means the minimum number of Variants that must be included is one, and the maximum number of Variants that must be included is also one.
We open the Decision Set Editor and can see no that no Decision has been made for Variant1, Variant2 or Variant3, and for each case the Status is Undecided.
We set the Decision of Variant1 to Include and can see the Status of Variant1 is set to Included. The Alternative Choice has a maximum of one included Variant, so Modeler sets the Status of Variant2 and Variant3 to Excluded.
Notice that the Excluded By column for Variant2 and Variant3 reports that they are excluded because of Alternative Choice1. When a Variant is excluded because of the multiplicity of an Alternative Choice, the Excluded By column of the Variant shows the excluding Alternative Choice.
We set the Decision of Variant1 to Exclude and can see the Status of Variant1 is set to Excluded. The Status of Variant2 and Variant3 are set to Undecided, because either Variant2 or Variant3 can be included.
We now set the Decision of Variant2 to Exclude and can see that the Status of Variant2 is set to Excluded. Modeler sets the Status of Variant3 to Included because Variant3 must now be included to achieve the minimum multiplicity of 1.
Notice that the Included By column for Variant3 reports that it is included because of Alternative Choice1.
Setting the status of a variant through its variation point
The Status of a Variant is set to Excluded when it is linked (through an optional or mandatory Variability Dependency link) to a Variation Point whose Status is set to Excluded.
The Status of a Variant is set to Included when it is linked (through a mandatory Variability Dependency link) to a Variation Point whose Status is set to Included.
In this example we can see that Variant1 is connected to Variation Point1 using an optional Variability Dependency and Variant2 is connected to Variation Point1 using a mandatory Variability Dependency.
Note that Variation Point2, Variant3 and Variant4 are used only to set the Status of Variation Point1 to either Excluded or Included.
We open the Decision Set Editor and can see that the Status of Variation Point1, Variant1 and Variant2 are Undecided.
We set the Status of Variation Point1 to Excluded by setting the Decision of Variant3 to Include:
Modeler sets the Status of Variant3 to Included.
Variant3 excludes Variation Point1, so Modeler sets the Status of Variation Point1 to Excluded.
Variant1 and Variant2 are linked to Variation Point1 using Variability Dependencies, so Modeler sets the Status of Variant1 and Variant2 to Excluded.
Notice that the Included By and Excluded By columns show why Modeler has set each Status.
We now set the Status of Variation Point1 to Included by setting the Decision of Variant3 to Undecided and the Decision of Variant4 to Include:
Modeler sets the Status of Variant4 to Included.
Variant4 requires Variation Point1, so Modeler sets the Status of Variation Point1 to Included.
Variant1 is linked to Variation Point1 using an optional Variability Dependency, so Modeler does not change its Status.
Variant2 is linked to Variation Point1 using a mandatory Variability Dependency, so Modeler sets its Status to Included.
Notice again that the Included By and Excluded By columns show why Modeler has set each Status.