Siebel Product Administration Guide > Siebel Configurator Rule Assembly Language > About Operators in Rule Assembly Language >

Boolean Operators in Rule Assembly Language


When you specify this type of operator, the Siebel 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 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 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 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 Table 29.

Table 29. Boolean Operators
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.

Table 30 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.

Table 30. Truth Table for Boolean Operators
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

More on the Requires Operator

The requires operator is not an incremental add. For example, you write the constraint req(A, B). If the user picks A and there are no B's in the solution, the Siebel Configurator engine will add at least one B. The next time the user picks A, the engine does not add another B.

If you want to add a B each time an A is added, use the inc() operator.

More on the Logical Equivalence Operator

As a top level constraint, the logical-equivalence operator (eqv()) creates a mutually-requires relationship between its operands. The operands can be either items or sub-expressions. For example eqv([A], [B]) means than if item A is in the solution, then at least one item B must be in the solution. Also, if item B is in the solution, then at least one item A must be in the solution. Note that the relationship between [A] and [B] is noncumulative. (Use the inc() operator to create cumulative-requires relationships.)

For example, the following constraint states that if the quantity of [A]>2, then [B] is required.

eqv(>([A],2),[B])

This expression constrains the solution as follows:

  • If there are more than two A's in the solution, there must be at least one B.
  • If there cannot be any B's in the solution, there cannot be any more than two A's.
  • If B is in the solution, there must be more than two A's.
  • If A is limited to two or less, B is excluded.

More on the Excludes Operator

As a top-level constraint, the excludes operator (excl(A, B)) creates a mutually exclusive relationship. The expression excl([A], [B]) means that if item A is in the solution, item B cannot be in the solution. It also means that if item B is in the solution, item A cannot be in the solution.

The exclude constraint can also be used with sub-expressions. For example, the following constraint excludes item B when item A's quantity is greater than 2. It also prevents item A from being greater than 2 when item B is in the solution.

excl(>([A],2),[B])

Multiple Operands for Require and Exclude Operators

You can use multiple operands in requires and exclude constraints. For example, you could write the following constraint:

excl([A],[B],[C])

This syntax is interpreted by the Siebel Configurator engine as if you had written two constraints:

excl([A],[B])

excl([A],[C])

In other words, [A] excludes both [B] and [C]. Note that [A] is the first operand in both the constraints. Siebel Configurator takes the first operand and creates expressions between it and each remaining operands.

This works the same way for require constraints:

req([A],[B],[C])

This syntax is interpreted by the Siebel Configurator engine as if you had written two constraints:

req([A],[B])

req([A],[C])

In other words, [A] requires both [B] and [C]. There is no limitation on the number of operands you can use in this type of expression.

Siebel Product Administration Guide Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Legal Notices.