Last session today at the EBRC was my pal Christian (from ILOG) talking about production rules - Production Rule Representation (PRR - no link yet but the BMI Domain Task Force is here) and Rule Interchange Format (RIF). Christian began by outlining two different use cases - one for RIF and one for PRR. His RIF use case was around mortgage processing. Rules for loan rates must ripple from wholesale lenders to lenders to brokers. RIF would work well here as it would allow a wholesale lender to pass a RIF document with its new rules out to people who could then use those rules in whatever rule engine they have. His PRR case was more general application development, especially when a platform has not been selected. Developers might be working on their object model while developers and analysts are trying to model rules (rules being a valid "model" for MDA of course). At this point the requirement is to identify rules, map them to the classes they modify and reference and perhaps start defining conditions and actions for those. When a platform is selected, support for PRR by both the modeling tool and the business rules management system (BRMS) would allow those rules to be moved between the modeling and production environments.
- PRR is an OMG standard to provide a formal, platform-independent meta model for production rules, allowing them to become 1st class objects in UML, allow design-time interchange and become part of the MDA.
- RIF is a W3C standard to provide an XML-based language for exchange of rules between execution environments - runtime persistence and interchange
Christian discussed PRR's support for inferencing and sequential execution of rules and its model to allow for extension of other kinds of rules (event-condition action for instance). The rules map to UML classes and Behaviors. Rules can be defined with any expression language but the standard contains a (non-normative) expression language based on the Object Constraint Language (OCL). He briefly discussed RIF as an interchange format, a subset of which supports the classes in PRR. Christian then walked through the meta model (which you can find here).