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

!(A)

Logical negation. True when A is false and false when A is true. A can be an item or sub-expression.

Requires

req(A, B)

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

excl(A, B)

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

and(A, B)

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

or(A, B)

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

xor(A, B)

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

eqv(A, B)

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