When is a Business Rules Engine used

2020-02-22 06:21发布

问题:

When is a Business Rules Engine used?

What is the difference between Business Rules Engines and scripting/configuration/customization

回答1:

Rules engines can do forward and backward chaining as well as inferencing. Check out Fair Isaac Blaze, Drools or iLog for implementations.



回答2:

A business rules engine, or a business rules management system, should be used when you are trying to implement a decision in your code. But not just any decision. A decision that:

  • Involves lots of rules
  • Has rules that change often
  • Has rules that are complex or interact in complex ways (think lots of nested IFs otherwise)
  • Has rules that only someone with domain knowledge can understand/verify
  • Is one that the business people REALLY want to be able to change without your help
  • Involves using predictive analytics / scores as part of the decision making

These are the kinds of decisions that pay off the use of a business rules management system. Don't start with the rules, start with the DECISIONS.

Business rules are verbose (so business people find them easier to read), declarative not procedural and atomic (so they can be stored, managed and reused like data in a database).

More on why to use business rules here in this piece on why I believe in business rules.



回答3:

Business rules engines are typically used to provide customizable "IF some-condidtion THEN do-something" sorts of logic to applications. These types of business rules can trigger certain workflows to execute or bubble up event knowledge to higher level rules, causing them to be evaluated.

Using a rule engine also allows for easier separation of concerns by removing the business logic from your code. Rules engines today typically also offer a front-end where users can add new rules without having to modify scripts inside the application.

Rules engines implement algorithms such as Rete (speaking from Drools experience) that make the task of evaluating the rules quicker. The rule engine also provides forward chaining, backward chaining, hybrid chaining, etc. of rules. However, these could be implemented in a scripting language as well. You can achieve some of the same sorts of things with both approaches, but I believe that it depends on the complexity and number of rules as to which avenue you should choose.

Take a look at this link from the Jess project: http://www.jessrules.com/guidelines.shtml

It provides a step-by-step walk through of questions to ask yourself in order to determine if a rules engine meets your needs, or is overkill.