[id='rule-engine-con_{context}']

= {RULE_ENGINE}

The {RULE_ENGINE} stores, processes, and evaluates data to execute the business rules or decision models that you define. The basic function of the {RULE_ENGINE} is to match incoming data, or _facts_, to the conditions of rules and determine whether and how to execute the rules.

The {RULE_ENGINE} operates using the following basic components:

* *Rules:* Business rules or DMN decisions that you define. All rules must contain at a minimum the conditions that trigger the rule and the actions that the rule dictates.
* *Facts:* Data that enters or changes in the {RULE_ENGINE} that the {RULE_ENGINE} matches to rule conditions to execute applicable rules.
* *Production memory:* Location where rules are stored in the {RULE_ENGINE}.
* *Working memory:* Location where facts are stored in the {RULE_ENGINE}.
* *Agenda:* Location where activated rules are registered and sorted (if applicable) in preparation for execution.

When a business user or an automated system adds or updates rule-related information in {PRODUCT}, that information is inserted into the working memory of the {RULE_ENGINE} in the form of one or more facts. The {RULE_ENGINE} matches those facts to the conditions of the rules that are stored in the production memory to determine eligible rule executions. (This process of matching facts to rules is often referred to as _pattern matching_.) When rule conditions are met, the {RULE_ENGINE} activates and registers rules in the agenda, where the {RULE_ENGINE} then sorts prioritized or conflicting rules in preparation for execution.

The following diagram illustrates these basic components of the {RULE_ENGINE}:

.Overview of basic {RULE_ENGINE} components
image::rule-engine/rule-engine-inkscape_enterprise.png[align="center"]

For more details and examples of rule and fact behavior in the {RULE_ENGINE}, see xref:inference-and-truth-maintenance_rule-engine[].

These core concepts can help you to better understand other more advanced components, processes, and sub-processes of the {RULE_ENGINE}, and as a result, to design more effective business assets in {PRODUCT}.
