90 likes | 255 Views
February 3rd , 2010. KS BRMS. Discalaimer. The GUI for the BRMS is currently not running, and was developed using a outdated framework so fixing is not an option, it will have to be rebuilt
E N D
February 3rd, 2010 KS BRMS
Discalaimer • The GUI for the BRMS is currently not running, and was developed using a outdated framework so fixing is not an option, it will have to be rebuilt • Focus has been diverted from creating executable rules to collecting rules. At this time collected rules are stored in a contextual template format (Requirements) and are not compiled into executable rules • Analysis tools have been deferred to a later release • The Dynamic Fact Finder has not yet been implemented • Rules that provide a result (i.e. not boolean) have not been implemented
Overview of KS BRMS Structure Requirements Define a contextual template for entering a rule Statements Creates a container for requirements to build logic trees BRMS Tree Structure Contextually ambiguous atomic storage of rule tree structure BRMS Fact Finder Provides links to runtime data Drools Execution of rules
Requirements (aka Requirement Components) • Provide a highly constrained rule template for ease of entry • Must have a mapping from the Requirement to the BRMS structure (at this time none of these mapping have been created) • Use Velocity templates to provide a natural language representation of the rule (e.g. must have taken $mincredits credits of $courses.toNatLan(“en”)). Additional Velocity templates can be defined to support multiple contexts (e.g. catalog, concise, etc) and multiple languages. Velocity templates can also be used to define UI entry screens • Can represent a single node in a logic tree or a more complex structure
Statements • Statements are a container of logic that contains a single operator (AND or OR) and 2 or more requirement components • Allows for large logic trees e.g. A and B and (C or D) • Statement Types have a list of Requirement Component Types that are allowed. This creates a contextual list of available Requirement Component Types
BRMS Tree Structure • Stores the logic tree (operators and parens), static data (facts), and dynamic data (facts) and allows you to create agendas which are structured groupings of logic trees that together provide a final decision on whether an action is allowed. • Provides a mechanism for backward chaining. Backward chaining provides the ability to find which conditions need to be met in order to achieve a goal. Most rules engines only provide forward chaining which only allows you to determine what goals you’ve met given a set of conditions.Backward chaining will give us the ability to perform complex analysis on the effect of rule or fact changes and best fit analysis (what learning plan will allow me to complete my degree in the fewest semesters).
BRMS Fact Finder • Facts include execution and definition keys. • Execution keys: contextual runtime pieces of data (e.g. the student id of the student attempting to enroll in a course) • Definition keys: values provided when defining the rule (e.g. the minimum grade in the following rule: “must have achieved a C or higher in MATH151”) • Fact types will be tied to either a global search mechanism or a specific service method • Given a fact type, execution and/or definition keys a piece of data can be retrieved from a given service at runtime or when performing an analysis
Drools (aka JBoss Rules) • Open Source rules engine • KS BRMS rules are compiled into drools rules • Compiled drools are stored in a jackrabbit repository (caching of drools may be possible at each domain) • Execution requires a list of facts and an Agenda ID (agendas are ordered lists of rule trees that are used to evaluate a decision or provide a value for a given action like enrolling in a course or calculating GPA)
Issues with current design • We are storing rules in 3 places (Statements, BRMS, and Drools). Why isn’t this a major synchronization problem? These are all one way translations (Statement -> BRMS -> Drools). The developer’s GUI which will interface directly with the BRMS will not allow editing of rules mapped from Statements. • In theory we might be able to eliminate the BRMS Tree Structure. This would require making vast improvements to the Statement/Requirement Component structures