A business rule system enables these company policies and other operational decisions to be defined, tested, executed and maintained separately from application code.
The system as a whole becomes more easily adaptable with such external business rules, but this does not preclude the usual requirements of QA and other testing.
An article in Computerworld traces rules engines to the early 1990s and to products from the likes of Pegasystems, Fair Isaac Corp, ILOG[1] and eMerge[2] from Sapiens.
This failure to separate the two approaches can lead to problems with the ability to re-use and control both business rules and workflows.
Most Java-based rules engines provide a technical call-level interface, based on the JSR-94 application programming interface (API) standard, in order to allow for integration with different applications, and many rule engines allow for service-oriented integrations through Web-based standards such as WSDL and SOAP.
This business entity model can typically be populated from a variety of sources including XML, POJOs, flat files, etc.
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.
This approach is often easier to implement and maintain, and provides performance advantages over forward or backward chaining systems.
The XACML rule engine, called a Policy Decision Point (PDP), expects a binary Yes/No question e.g. "Can Alice view document D?"