9
February 3rd, 2010 KS BRMS

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

Embed Size (px)

Citation preview

Page 1: 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

February 3rd, 2010

KS BRMS

Page 2: 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

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

Page 3: 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

Overview of KS BRMS Structure

RequirementsDefine a contextual template for entering a rule

StatementsCreates a container for requirements to build logic trees

BRMS Tree StructureContextually ambiguous atomic storage of rule tree structure

BRMS Fact FinderProvides links to runtime data

DroolsExecution of rules

Page 4: 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

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

Page 5: 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

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

Page 6: 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

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).

Page 7: 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

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

Page 8: 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

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)

Page 9: 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

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