Boolean Operators in Rule Assembly Language
When you specify this type of operator, the Siebel Product Configurator engine interprets it as true when the item is in the solution, and as false if the item is not in the solution. If you specify a resource or an arithmetic sub-expression as an operand, the Siebel Product Configurator engine interprets it as true if the expression is greater than zero, and false if the expression is less than or equal to zero.
The requires operator (req()) is an example of this type of operator. The Siebel Product Configurator engine interprets the following constraint to mean item A requires item B. In other words, if A is in the solution, B must be in the solution.
req([A], [B])
The Siebel Product Configurator engine does not interpret this constraint to mean the current quantity of item A requires the same quantity of item B. That constraint would be written as follows:
==([A], [B])
The Boolean operators are shown in the following table.
Operator | Syntax | Properties |
---|---|---|
Not |
|
Logical negation. True when A is false and false when A is true. A can be an item or sub-expression. |
Requires |
|
A implies B. False only when A is true and B is false. B does not require A. However, excluding B, excludes A. A and B can be items or sub-expressions. |
Excludes |
|
A excludes B and B excludes A. Same as "not both A and B." False only when A and B are both true. A and B can be items or sub-expressions. |
And |
|
Both A and B. True only when both A and B are true. When used as a top-level constraint, means that only solutions where both A and B are true are allowed. A and B can be items or sub-expressions. |
Inclusive Or |
|
Either A or B or both. False only when both A and B are false. A and B can be items or sub-expressions. |
Exclusive Or |
|
A or B but not both. A and B must have opposite truth states. False when A and B are either both true or both false. A and B can be items or sub-expressions. |
Logically Equivalent |
|
A requires B and B requires A. True only when A and B are either both true or both false. A and B can be items or sub-expressions. |
The following table provides the truth-state definition of how the Boolean operators work. The first two columns contain the operands A and B. These could be items or arithmetic expressions, in which case A>0 means that A is in the solution.
A >0? | B>0? | req(A, B) | excl(A, B) | and(A, B) | or(A, B) | xor(A, B) | eqv(A, B) |
---|---|---|---|---|---|---|---|
T |
T |
T |
F |
T |
T |
F |
T |
T |
F |
F |
T |
F |
T |
T |
F |
F |
T |
T |
T |
F |
T |
T |
F |
F |
F |
T |
T |
F |
F |
F |
T |