Nested Expressions as Conditions
The Exclude Template can itself be used as a condition in other constraints.
The most common templates used for writing nested constraints are the Exclude and Require
templates. For example you could write the configuration constraint: Product A excludes
(Product B excludes Product C)
.
The Boolean form of this constraint is as follows: A NAND (B NAND C)
.
In the following table, a T (true) means the item is present in the solution. An F (false) means the item is not present or is excluded.
Row | A | B | C | (B AND ! (C)) | A AND ! ( B AND ! (C)) |
---|---|---|---|---|---|
1 |
F |
F |
F |
T |
T |
2 |
F |
F |
T |
T |
T |
3 |
F |
T |
F |
T |
T |
4 |
F |
T |
T |
F |
T |
5 |
T |
F |
F |
T |
F |
6 |
T |
F |
T |
T |
F |
7 |
T |
T |
F |
T |
F |
8 |
T |
T |
T |
F |
T |
The truth table lets you analyze what happens when the user picks items. For example, there are no Product A, Product B, or Product C in the solution. The user picks Product B. You evaluate how the Siebel Product Configurator engine will respond as follows:
-
Picking B means that B is true, so eliminate all rows from the table where B is False. This leaves rows 3, 4, 7, and 8.
-
The engine returns solutions in which all constraints are true, so you can eliminate any of the remaining rows where the whole constraint is false. This means you can eliminate row 7. This leaves rows 3, 4, and 8.
-
Now examine the truth conditions for Product A and Product C in the rows 3. 4, and 8. The table shows that A is false in row 3 and 4 but true in row 8. This means that if the user picks B, then A can be either present or absent. It is not constrained. The table shows that C is false in row 3 but true in rows 4, and 8. This also means that C is not constrained. Thus, the user can pick B without A or C being excluded or required.
If A or C had been true in all three remaining rows, this means A or C is required. If A or C had been false in all three rows, this means A or C is excluded.