8.1 Why is an Attribute not satisfied
An exemplary starting situation after a configuration, that means after selecting Values for the Configuration Attributes:
Fig. 8-1: An exemplary initial state after a configuration
We assume that this state has been saved so that it can be reloaded later. Before such loading, changes are made to the Configuration Model - usually by other people. For example, the Attribute "Customer category" is to be given a different cardinality as shown in the figures 8-2 and 8-3.
Fig. 8-2: The Attribute "Customer category" with optional assignment
Fig. 8-3: The Attribute "Customer category" with mandatory assignment
Assumption:
During the restoring of the Configuration State shown above, this change in the declaration of the Attribute "Customer category" is not taken into account.
During the restoring the following request with a Multiple Decision is executed:
PUT {{baseUrl}}/engine/v2/session/configuration/decision/many
X-SESSION-ID: {{sessionId}}
Content-Type: application/json
{
"mode": {
"type": "DropExistingDecisions",
"conflictResolution": {
"type": "Manual",
"includeConstraintsInConflictExplanation": true
}
},
"choiceDecisions": [
{
"type": "Choice",
"attributeId": {
"localId": "SalesRegion",
"sharedConfigurationModelId": "SalesShared",
"componentPath": []
},
"choiceValueId": "China",
"state": "Included"
},
{
"type": "Choice",
"attributeId": {
"localId": "CarSize",
},
"choiceValueId": "Big",
"state": "Included"
},
{
"type": "Choice",
"attributeId": {
"localId": "Usage",
"sharedConfigurationModelId": "TechnicalShared",
"componentPath": []
},
"choiceValueId": "Off road",
"state": "Included"
},
{
"type": "Choice",
"attributeId": {
"localId": "Size",
"sharedConfigurationModelId": "TechnicalShared",
"componentPath": []
},
"choiceValueId": "18 inch",
"state": "Included"
},
{
"type": "Choice",
"attributeId": {
"localId": "Colour",
"componentPath": ["Automobile"]
},
"choiceValueId": "Grey",
"state": "Included"
},
{
"type": "Choice",
"attributeId": {
"localId": "Power",
"componentPath": ["Automobile", "Engine"]
},
"choiceValueId": "300 KW",
"state": "Included"
},
{
"type": "Choice",
"attributeId": {
"localId": "FuelType",
"componentPath": ["Automobile", "Engine"]
},
"choiceValueId": "Diesel",
"state": "Included"
},
{
"type": "Choice",
"attributeId": {
"localId": "NumberOfWheels",
"componentPath": ["Automobile"]
},
"choiceValueId": "2",
"state": "Included"
}
],
"numericDecisions": [],
"booleanDecisions": [],
"componentDecisions": []
}
A section of the Consequences:
{
"consequences": {
"isConfigurationSatisfied": false,
"canAttributeContributeToConfigurationSatisfaction": [],
"choiceConsequences": [],
"numericConsequences": [],
"booleanConsequences": [],
"componentConsequences": []
},
The configuration is not satisfied. Why it is not satisfied? The response of the following route indicates the cause:
POST {{baseUrl}}/engine/v2/session/configuration/consequence/explain/why-not-satisfied
X-SESSION-ID: {{sessionId}}
Content-Type: application/json
{
"type": "Attribute",
"attributeId": {
"localId": "CustomerCategory",
"sharedConfigurationModelId": "SalesShared",
"componentPath": []
}
}
Response:
{
"constraintExplanations": [
{
"causedByCardinalities": [
{
"type": "Cardinality",
"attributeId": {
"localId": "CustomerCategory",
"sharedConfigurationModelId": "SalesShared",
"componentPath": []
}
}
],
"causedByRules": []
}
],
"decisionExplanations": []
}
The Cardinality of the "CustomerCategory" Attribute that was changed to (1:1) is not satisfied because no Value was assigned.
A possible visual representation of this state is the orange marker on the right-hand side of the select box, as shown in figure 8-4.
Fig. 8-4: The "Customer category" select box marked as "not satisfied"