Friday, 6 November 2015
IBM Operational Decision Manager Rules - A Voyage of Discovery
This week, I mainly be learning about ODM Rules.
Specifically, I've been going through the process to build an end-to-end Rules development/test environment, comprising Rule Designer (RD), Decision Center (DC) and Decision Server (DC), in order that I can test the process of applying the latest 22.214.171.124 fix pack to all three components.
I'll be documenting this in a future post, but, as part of my journey, I needed to create a simple Rules application ( RuleApp ) that I could develop in RD, synchronise ( publish ) to DC and then deploy to DS.
To achieve that, I needed to get the language right in my head.
This picture certainly helped: -
Source: Overview: Decision Server Rules
plus this: -
At the core of a rule-based solution, you have a client application requesting a decision from a rule application. There can be many decision points required of the rule application by the client application. At each decision point, business rules packaged as rulesets are used to express policies for how decisions are made. A rule application is deployed to Rule Execution Server as a RuleApp. Each RuleApp contains one or more rulesets, each corresponding to a decision.
So we have a Rule Application ( RuleApp ) containing one or more RuleSets, with each RuleSet corresponding to a specific decision.
The RuleApp is authored in Rule Designer, published / synchronised to Decision Center ( aka Rules Team Server or RES ) and then deployed to Decision Server ( aka Rules Execution Server or RES ).
For the record, in Rule Designer ( which is an Eclipse-based IDE ), I created a Rule Project within which I created my Business Rule ( sayHello.brl ) and a corresponding Rule Flow ( ruleflow.rfl ). This I exported as a RuleSet, which resulted in a .JAR file for future reuse.
I even went as far as creating a Utility Bill of Materials (BOM), which comprises some plain ole Java code to allow my Rule to write a message to the SystemOut.log file of the WAS server hosting the RES.
Again, I'll write about this process in a future post ....