8.2 Why the Configuration Model is not satisfied
An exemplary starting situation after a configuration, that means after selecting Values for the Configuration Attributes:
Fig. 8-5: An exemplary initial state after a configuration
All Attributes are satisfied. But - as shown the Consequences - the Configuration Model as a whole is not satisfied yet. Why not?
Get the Consequences:
### Get consequences
GET {{baseUrl}}/engine/v2/session/configuration/consequence
X-SESSION-ID: {{sessionId}}
Content-Type: application/json
A section of the Consequences:
{
"isConfigurationSatisfied": false,
"canAttributeContributeToConfigurationSatisfaction": [
{
"localId": "Tubeless",
"sharedConfigurationModelId": "TechnicalShared",
"componentPath": []
},
{
"localId": "SpareWheel",
"componentPath": ["Automobile"]
}
],
"choiceConsequences": [
{
"attributeId": {
"localId": "CarSize",
"componentPath": []
},
"isSatisfied": true,
"cardinality": {
"lowerBound": 1,
"upperBound": 1
},
"values": [
{
"choiceValueId": "Big",
"possibleDecisionStates": [
"Included"
]
},
Each of the Attributes is satisfied but the Configuration Model is not satisfied ("isConfigurationSatisfied": false). The Consequences provide the indication that the two optional Attributes can contribute to satisfying the Configuration Model: "Tubeless" and "SpareWheel".
This is caused by Rule 16, which requires that either the Component Attribute "SpareWheel" is selected or the Boolean Attribute "Tubeless" is set to "true".
{
"constraintId": "Rule16:TubelessTiresWithoutSpereWheel",
"textualConstraint": "shared::TechnicalShared::Tubeless OR SpareWheel"
}
"No" is now selected for "Tubeless". This has the effect that the "SpareWheel" component is implicitly included, as seen in figure 8-6.
Fig. 8-6: "Tubeless" explicitly selected and "SpareWheel" implicitly included
Now the question again: Why is the Configuration Model not satisfied?
POST {{baseUrl}}/engine/v2/session/configuration/consequence/explain/why-not-satisfied
X-SESSION-ID: {{sessionId}}
Content-Type: application/json
{
"type": "Configuration"
}
The response:
{
"type": "ExplainConflict",
"title": "ExplainConflict",
"status": 409,
"detail": ""
}
Since the Configuration Model is now satisfied, the request "Why NOT satisfied Configuration" provides the status code 409 with the title "ExplainConflict".
A little section of the Consequences shows the state of the Configuration Model:
{
"isConfigurationSatisfied": true,
"canAttributeContributeToConfigurationSatisfaction": [],
"choiceConsequences": [
{
"attributeId": {
"localId": "CarSize",
"componentPath": []
},
"isSatisfied": true,
...