Business rules engine
A business rules engine is a
Rule engines typically support rules, facts, priority (score), mutual exclusion, preconditions, and other functions.
Rule engine software is commonly provided as a component of a
IT use case
In any
History
An article in .
Design strategies
Many organizations' rules efforts combine aspects of what is generally considered workflow design with traditional rule design. This failure to separate the two approaches can lead to problems with the ability to re-use and control both business rules and workflows. Design approaches that avoid this quandary separate the role of business rules and workflows as follows:[3]
- Business rules produce knowledge;
- Workflows perform business work.
Concretely, that means that a business rule may do things like detect that a business situation has occurred and raise a business event (typically carried via a messaging infrastructure) or create higher level business knowledge (e.g., evaluating the series of organizational, product, and regulatory-based rules concerning whether or not a loan meets underwriting criteria). On the other hand, a workflow would respond to an event that indicated something such as the overloading of a routing point by initiating a series of activities.
This separation is important because the same business judgment (mortgage meets underwriting criteria) or business event (router is overloaded) can be reacted to by many different workflows. Embedding the work done in response to rule-driven knowledge creation into the rule itself greatly reduces the ability of business rules to be reused across an organization because it makes them work-flow specific.
To create an architecture that employs a business rules engine it is essential to establish the integration between a
Most Java-based rules engines provide a technical call-level interface, based on the
Most rule engines provide the ability to develop a
Most rules engines function as a callable library. However, it is becoming more popular for them to run as a generic process akin to the way that
Types of rule engines
There are a number of different types of rule engines. These types (generally) differ in how Rules are scheduled for execution.
Most rules engines used by businesses are forward chaining, which can be further divided into two classes:
- The first class processes so-called production/inference rules. These types of rules are used to represent behaviors of the type IF condition THEN action. For example, such a rule could answer the question: "Should this customer be allowed a mortgage?" by executing rules of the form "IF some-condition THEN allow-customer-a-mortgage".
- The other type of rule engine processes so-called reaction/Event condition action rules. The reactive rule engines detect and react to incoming events and process event patterns. For example, a reactive rule engine could be used to alert a manager when certain items are out of stock.
The biggest difference between these types is that production rule engines execute when a user or application invokes them, usually in a stateless manner. A reactive rule engine reacts automatically when events occur, usually in a stateful manner. Many (and indeed most) popular commercial rule engines have both production and reaction rule capabilities, although they might emphasize one class over another. For example, most business rules engines are primarily production rules engines, whereas complex event processing rules engines emphasize reaction rules.
In addition, some rules engines support backward chaining. In this case a rules engine seeks to resolve the facts to fit a particular goal. It is often referred to as being goal driven because it tries to determine if something exists based on existing information.
Another kind of rule engine automatically switches between back- and forward-chaining several times during a reasoning run, e.g. the Internet Business Logic system, which can be found by searching the web.
A fourth class of rules engine might be called a deterministic engine. These rules engines may forgo both forward chaining and backward chaining, and instead utilize domain-specific language approaches to better describe policy. This approach is often easier to implement and maintain, and provides performance advantages over forward or backward chaining systems.
There are some circumstance where
Rules engines for access control / authorization
One common use case for rules engines is standardized access control to applications. OASIS defines a rules engine architecture and standard dedicated to access control called XACML (eXtensible Access Control Markup Language). One key difference between a XACML rule engine and a business rule engine is the fact that a XACML rule engine is stateless and cannot change the state of any data. The XACML rule engine, called a Policy Decision Point (PDP), expects a binary Yes/No question e.g. "Can Alice view document D?" and returns a decision e.g. Permit / deny.
See also
- Business rule
- Production system
- Inference engine
- Rete algorithm
- Ripple-down rules
- Business rule management system
- Semantic reasoner
- Workflow engine
- Business Process Execution Language (BPEL)
- List of BPEL engines
- List of BPMN 2.0 engines
References
- ^
"Do you know where all of your company's business rules are?". Computerworld. 39 (21). IDG Enterprise (published 2005-05-23): 25. 23 May 2005. ISSN 0010-4841. Retrieved 2014-02-02.
Rules engines have been around since the early 1990s when companies such as Pegasystems Inc. in Cambridge, Mass., Fair Isaac Corp. in Minneapolis and ILOG in Mountain View, Calif., sold them. They were typically used in rules-heavy industries such as finance and insurance. Over the past few years, however, many vendors have entered the market, and more companies are looking at rules engines as a way to gain greater flexibility in business operations.
- ^ "eMerge Rule-based software development platform".
- ^ Is Your Rules Engine Event-Driven? Retrieved from http://www.sapiens-tech.com/iDuneDownload.dll?GetFile?AppId=225&FileID=216581&Anchor=&ext=.pdf Archived 2018-09-30 at the Wayback Machine.
- ^ "The DARL language". Archived from the original on 2018-09-01. Retrieved 2018-09-01.
Bibliography
- Taylor, James; Raden, Neil (2007). Smart (Enough) Systems. Prentice Hall. ISBN 0-13-234796-2.
- David Linthicum (2007-02-14). "Rules Engines and SOA". InfoWorld, 2007-02-14. Retrieved on 2009-09-23 from http://www.infoworld.com/d/architecture/rules-engines-and-soa-158.