This paper is an introduction to domain independent Business Rules Engine and scope of designing it using Python parsing with XML. This aims to capture policies, rules and facts of the business and combine them to evaluate and draw conclusions and then perform specific actions based on the results. The rules engine takes the traditional separation of business logic and presentation in an n-tier architecture one step further by externalizing business logic. An important part of the project will involve developing interfaces for the rules engine. Another major challenge would be to develop a domain independent system that is a system that supports multiple domains of operation and behaves according to the user inputs.
Before starting this project, it will be good to have a look at open source business rule engine like DROOLS to have a more detailed information about rules, rule engine and rule editor. Rules are business logic written by a domain expert. There should be an API, which should load Rules in the execution environment. Rules use FACTS (Data Objects) as data source to execute the business logic. So there should be another API to pass Facts into rules. Rules take FACTS only at run time. We should be able to place FACTS into run time via an API. When facts are placed into the runtime memory, rules check whether the condition specified in them matches with the FACT data. if data matches, rule starts executing the logics.
To develop a domain independent Rules Engine, first define a flexible XML format for FACTS. Design of XML should be so good that, irrespective of the data size and data types of the attributes, we should be able configure any facts. Also there should be an interface to map the FACT to a database table along with the filter condition to extract relevant data from database. API to store rule engine results should be designed in such a way that rules are able to place the results in the API, and API saves the data into a database table mapped in API.