Dr. Paul Dorsey
Dulcian, Inc.
Dulcian’s Business Rules Information Manager (BRIM™) is the first comprehensive business rule-based development environment. A complete system can be built and generated with virtually no traditional coding.
Business rules are articulated and placed into a repository. From the repository, the database and code are automatically generated. Generic applications provide immediate ability to use the system without any traditional application development. They also allow you to validate the quality of the business rules. Once these rules are validated, core applications can be built in far less time than in traditional systems.
Business rules are divided into two categories:
a) Structural business rules: Largely state and time independent and may include everything from “Vice Presidents report to Presidents” to “Employees have mandatory last names”
b) Process business rules: workflow, state dependent rules. Examples include “Only the employee that filled out the time sheet may edit it at a later time.”
A structural rule is one that is defined on the data structure, independent of process. Rules indicating the types of information to be stored and how those information elements interrelate are structural. All information traditionally stored in a relational ERD is structural. An ERD lists the information groupings in the database (entities), the individual information elements (attributes) and (to a limited extent) how the information elements are related (relationships). This is a very limited “grammar” for business rules, but clearly is a type of business rules repository.
Both because of its status as an emerging standard, and its ability to store more complex rules than ERDs, we have chosen to use UML class diagrams for our core structural information. Anything that can be represented in an ERD can be done in UML with the additional advantage of actually reflecting inheritance relationships in UML that are not possible to represent in ERDs.
The UML class diagram information in the structural repository is used to generate a relational database. For each concrete class, a relational table and an associated view are generated. All interaction with the data is done through the associated views.
Object oriented database design usually results in systems with inadequate performance. BRIM™ has overcome that problem with two mechanisms.
a) Redundant storage of inherited attributes and foreign key associations in all relevant tables - For example LastName/FirstName attributes appear in both the Employee and its generalization Person tables. When the FirstName column is updated in either table, the engine keeps the data synchronized. This overcomes the usual performance problem in implementing an object-oriented design in a relational database
b) Redundant storage of data in traditional structures as well as completely generic structures – This generic structure makes the creation of totally generic applications and the support of complex business rules such as multi-lingual data very simple.
Process Rules
A process rule, on the other hand, relates to process or workflow related information. For example, the rules associated with declaring the approval process for an invoice are process rules.
For process rules, we have extended the idea of UML activity diagrams to represent process related information. Process-related information is used to generate PL/SQL packages. Objects passing through states have a procedure generated for each state. At the implementation level, as the object logically passes from state to state, procedures call each other.
The fact that BRIM™ handles manual as well as automatic states means that complex manual processes as well as complex automatic processing of objects are supported.
User Input of
Business Rules
Articulation of the business rules is accomplished using a custom-built Repository Manager written entirely in Java. Users create UML class diagrams and process flows in the Repository Manager. This constitutes the specification of the entire system.
To interact with the generated system, two generic applications have been created: Domain Builder and Object Builder.
The Domain Builder supports domain manipulation for datatypes as well as reference tables (including recursive and multi-lingual reference tables).
The Object Builder allows users to edit and maintain all objects in the database with and without associated process flows.
The only hand coding required to complete most systems is an occasional function that may be needed to validate complex business logic such as validating that debits = credits in a journal entry.
Also some core custom applications can be written to replace the generic BRIM UI for system areas that require a high efficiency interface. However, such applications still have most of their complexity supported by the BRIM engine so are very easy to write. The BRIM API allows these applications to be written using any web or client server based application development tool.
The BRIM™ environment represents a reengineering of the application development process. Systems can be built in a fraction of the time required for traditional systems. The ease of rules entry allows for systems of greater complexity than normal systems. Sophisticated end users can easily maintain the resultant systems.