Configuration Rules and Logic State

To enforce the rules you define in Configurator Developer, the runtime Oracle Configurator maintains a logic state for all selectable options. A selectable option is any part of a Model that can be added to a configuration. Options can be selected by an Oracle Configurator end user, by either explicitly selecting something or entering a value in an input field, or by the propagation of a rule.

Model nodes that are selectable in a configuration model, and therefore have a logic state, include all types of Features, Feature Options, optional BOM Models, BOM Option Classes, and BOM Standard Items.

In general, an option's logic state can be:

Oracle Configurator and Configurator Developer also use variations of the True and False logic states to identify how an option is included or excluded from a configuration. This is because an option can be added to a configuration or excluded from a configuration either by explicit end-user action (for example, selecting an option), or as a consequence of a configuration rule.

When an end user selects an option, its logic state becomes User True. When the propagation of a rule causes an option to be selected, its logic state becomes Logic True. For example, a Logic Rule states "Option A Implies Option B." When the end user selects Option A, Oracle Configurator selects Option B. Therefore, Option A's logic state is User True while Option B's logic state is Logic True.

When an end user deselects an option that was selected by a rule, the option's logic state is set to User False. Deselecting an option that the end user previously selected sets the option's logic state to Unknown. When an option is excluded by the action of one or more configuration rules, its logic state is set to Logic False (see Things to Consider).

An option's logic state is related to its selection state at runtime. The runtime Oracle Configurator uses this information to determine how to display options and status indicator images in a generated User Interface. For details, see:

Things to Consider

There may be times when an option has a logic state of Logic False but it is still available for selection. This can occur, for example, because of a Defaults Logic Rule or a Maximum Selections relation where the maximum is greater than one. In this case, an option has a logic state of Logic False but the icon used to display the item in the runtime UI make it appear as though its logic state is Unknown (the corresponding selection state is Not Selected). By default, Oracle Configurator does not use the Auto-Excluded icon with such options so your end users do not mistakenly believe that they are unavailable for selection or that selecting them will cause a contradiction message.

A BOM Option Class or Option Feature can be either satisfied or unsatisfied at runtime. These nodes are unsatisfied when they are selected (logic state is either Logic True or User True) but none of their children are selected. In other words, the BOM Option Class or Option Feature still requires input or contains at least one required selection.

To see the default icons that are used to indicate logic state at runtime, refer to Default Selection State and Status Indicator Images.

Generating Logic

At runtime, the Model structure, Model logic, and the runtime UI determine what is available for selection and how information is displayed. Before unit testing or publishing a configuration model, generate Model logic to be sure that it is up-to-date.

Generating logic:

You generate logic in the General area of the Workbench. For more information, see Logic Generation Status.

Initial Logic State

When a configuration session begins, all options have an initial logic state of Unknown, with the following exceptions:

Indicating Logic State in the Runtime User Interface

At runtime, Oracle Configurator keeps track of each option's logic state and determines what is displayed to the end user using the following:

Effectivity and Logic State

Because you can enter an effective date or assign Usages to Model structure nodes in Configurator Developer, there may be times when one or more participants in a rule are not available at runtime. When a node is not available at runtime because of its effectivity, it does not appear in the runtime UI, it is considered by the configuration session to have a logic state of Logic False, and any rules in which the node is a participant behave accordingly.

Consider the Model shown in Effectivity and Logic State.

Effectivity and Logic State

image described in text

You assign an effective date to Feature A and create the following Logic Rule:

Option 1 Requires Option 3

At runtime, the date passed to the configuration session does not match the effective date range assigned to Feature A in Configurator Developer. Therefore, Feature A and its Options do not exist in the configuration, and Option 1 and Option 2 are set to Logic False when the configuration session begins. Option 1 is part of the Logic Rule mentioned above, so Option 3 is also set to Logic False. See The Requires Relation.

Effectivity is discussed in Introduction to Effectivity.

Enforcing Logical Relationships

The rules you create in Oracle Configurator Developer shape the choices an end user can make in the runtime Oracle Configurator. If the end user makes a selection that violates a rule, Oracle Configurator displays a message that describes how the selection affects the configuration as a whole. When a rule is violated, part of the message that appears at runtime is derived from the message you define when creating the rule. For details see Violation Message.

For example, an Oracle Configurator end user sets a Numeric Feature to a value that exceeds its defined maximum. Oracle Configurator displays a message similar to the one shown in Maximum Exceeded Message.

Maximum Exceeded Message

The current value of Inner Diameter is 15. This is above its maximum of 5.

In this case, the end user must enter a new value that is within the defined range for the Feature to continue.

However, Numeric Rules are handled differently. If the user selects values that cause a Numeric Feature to exceed its defined maximum or minimum values, the value of a Total is exceeded, or a Resource is overconsumed, Oracle Configurator displays a message similar to the one shown in Invalid Configuration Message.

Invalid Configuration Message

Invalid Items: The current value of Inner Diameter is 15. This is above its maximum of 5.

Choose OK to proceed or choose Cancel to return to making your selections.

If the end user attempts to save the configuration in this state, or any other state that violates the rules you have established, Oracle Configurator displays a message similar to the one shown in Unsatisfied Configuration Message.

Unsatisfied Configuration Message

Unsatisfied Items: Component BR-90, Test Model M1. Your model is not complete. There are items that need to be selected or adjusted. If you continue, the incomplete model will be saved.

Choose OK to proceed or choose Cancel to return to making your selections.

The end user can save the incomplete configuration by clicking OK.

If the end user attempts to make a change to the configuration that violates one or more other rules, Oracle Configurator displays a contradiction message similar to the one shown in Contradiction Message.

Contradiction Message

Example

There is a contradiction selecting Option A:

You cannot select both Option A and Option C.

If you make this change it will have the following consequences:

Option C will be deselected.

Do you want to make this change?

The end user must either agree to reject the last selection or indicate that the change should be made. In the latter case, the system changes values of other Features, Options, and so on until the configuration is restored to a valid state. (In this example, "You cannot select both Option A and Option C" is the custom violation message defined for the rule that was violated. For details, see Violation Message.)

If an end user's selection triggers a rule that causes an option to become Logic False, it appears as System Excluded in the runtime UI (for details, see Indicating Logic State in the Runtime User Interface.) If an end user then selects the option, Oracle Configurator displays a contradiction message, and the end user must click OK or Cancel before proceeding.

Option Features with a Maximum Selections of 1 and BOM Option Classes that have mutually exclusive children that are User False have a Selection State of Selectable. An end user can select such options without receiving a contradiction message. Selection State is explained in Selection State.

You can also define conditions for displaying options at runtime. For more information, see Defining a Condition for Runtime Display and Behavior.

Unknown Values and Rule Propagation

When the end user starts a new configuration in a deployed Oracle Configurator, many elements in the Model structure have a logic state of Unknown until the user makes a selection. In general, Unknown values within the First Operand side of a rule do not cause the rule to propagate.

If a rule contains multiple participant, and the expression specified involves either the minimum or maximum number of component instances or the operators '+' or '-', the rule propagates when the end user makes a selection. In other words, when a participant within the expression is no longer Unknown.

For example, you create the following Statement Rule:

CONTRIBUTE (A + B) TO D

If both A and B are Unknown, the rule does not propagate. If A, B, or both options are selected, the rule propagates and contributes a value to D.

If the expression in a rule involves the operators '*' or '/', the rule propagates if one rule participant within the expression is not Unknown and has a value of 0, or if all participants within the expression are not Unknown.

Numeric Rules involving Property values do not propagate unless the option with the Property is selected.

When any node that can have a logic state is a participant in a rule and the value of the option is 0 at runtime, its logic state is Unknown and the rule does not propagate until its value changes. For example, you define the following rule:

Option1 = 0 NEGATES Feature2

This rule does not propagate when Option1 is set to zero, regardless of whether it is set to zero by default (that is, it has a value of 0 when the configuration session begins) or it is set to zero by the end user.

To learn which nodes can have a logic state at runtime, see Configuration Rules and Logic State.

Overriding User Selections without Notification

At runtime, there may be times when the runtime Oracle Configurator deselects one of an end user's previous selections but does not display a message to alert the end user of the change.

Oracle Configurator automatically deselects an option in the runtime UI when both of the following are true:

However, Oracle Configurator cannot deselect an option that is a child of a Feature or BOM Option Class if the option was selected by the action of a rule (that is, its logic state is Logic True). If none of the previous selections were made by the end user, no override occurs and Oracle Configurator displays a violation message.

For example, an Option Feature called f1 has a minimum of 1 and a maximum of 2. This Feature contains 3 Options: o1, o2, and o3. The maximum of f1 is reached (2 options are selected) either by end user selection or by the action of a rule. The third option's logic state is Unknown and it is therefore available. When the end user selects the third option, Oracle Configurator may override a previous selection, depending on how the selections were made.

Consider these examples:

For more information on logic states, see Configuration Rules and Logic State.