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:
True: The option is included in the configuration.
False: The option is not included in the configuration.
Unknown: This means that no decision has been made about the option, and it is neither included in nor excluded from the configuration.
For example, an option is not selected when the configuration session begins or an Integer Feature whose initial value is 0 (zero).
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:
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.
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:
Loads the Model structure and rules data from the database
Checks for incomplete rules and inconsistent logic
Converts the structure and rules data into a format that is usable by the runtime Logic Engine
You generate logic in the General area of the Workbench. For more information, see Logic Generation Status.
When a configuration session begins, all options have an initial logic state of Unknown, with the following exceptions:
Features that have an initial value defined may be either Logic True or Logic False.
See Initial Values.
Logic Rules that use the Defaults relation can cause options to be selected (Logic True) or excluded (Logic False).
See Defaults.
Option Features that have a Minimum Selections set to 1 or greater have an initial logic state of Logic True. This is because at least one of the Feature's Options must be selected to create a valid configuration (in other words, it is required).
Features that have an initial value defined in Configurator Developer have an initial logic state of Logic True.
At runtime, Oracle Configurator keeps track of each option's logic state and determines what is displayed to the end user using the following:
The option's selection state.
For details, see Selection State.
The images that your UI Master Template uses to indicate selection state and display Enhanced Check Boxes and Enhanced Radio Buttons and at runtime.
For details, see Images Section.
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.

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.
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 MessageThe 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 MessageInvalid 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 MessageUnsatisfied 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 MessageExample
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.
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.
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:
An end user selects an option that causes the maximum selections of its parent Feature or BOM Option Class to be exceeded
Any one of the previous selections was made by the end user (that is, its logic state is User 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:
If o1 and o2 are User True and o3 is selected, Oracle Configurator deselects the most recent end user selection and selects o3.
If o1 is User True and o2 is Logic True and the user selects o3, Oracle Configurator deselects o1.
If o2 is being contributed to from another item, both o1 and o2 are User True, and the user selects o3, Oracle Configurator deselects o1.
If both o1 and o2 are Logic True and the user selects o3, there is a contradiction and o3 cannot be made true. In this case, Oracle Configurator displays a violation message.
For more information on logic states, see Configuration Rules and Logic State.