James Taylor of Decision Management Solutions and Claye Greene of Technology Blue present some advice and best practices on adopting open source business rules for decision management. The webinar recording is available here: http://decisionmanagement.omnovia.com/archives/64461
2. Your presenters Claye Greene Managing DirectorTechnology Blue 15 years of decision-centric solution experience Decision Management strategist SOA practitioner Kristy Sanders Principal ConsultantTechnology Blue 15 years of decision-centric solution experience Decision Management architect and developer Drools practitioner Senior project leader and client liaison
3. Decision Management An approach or business discipline for automating and improving decision-making It improves day to day business results by Supporting Automating and Improving operational decisions It builds on existing enterprise applications to put data to work manage uncertainty increase transparency give the business control
12. Introduction Assessing the value of open source solutions: the debate is longstanding, and the considerations are well-known. Introduction Is the solution easier to customize? Are there established, proven best-practices and solutions? Is it scalable, maintainable and performing? Is the product mature enough? Will it reduce my overall cost of ownership? Are there available resources to assist me? Can I reduce my dependency on vendors? Is there quality support available?
14. Introduction Open source maturity From stand alone, to integration, to enterprise Introduction Maturity Time
15. Introduction Ready for prime time? First, the strategic considerations. Decision Management requires a different perspective. Open source reasons are not wholly applicable. Introduction
24. Best practice 1: Debunk the myths Myth #1 Open source solutions cost less Proven methodologies, practices and standards are key to lower TCO. Best practice 1: Debunk the myths Open source COTS Cost License Development Maintain TCO Perspective estimates from technical-oriented solution (estimated 92% TLC)
25. Best practice 1: Debunk the myths Myth #2 Open source solutions are easier to customize While customizations might be easier, the cost of maintenance can skyrocket. Just because you can, doesn’t mean you should. Customize judiciously. Best practice 1: Debunk the myths $
26. Best practice 1: Debunk the myths Myth # 3 Free exchange of solutions, components and applications Decision Management enables strategic advantage over the competition. Our strategic advantage is our livelihood. Not all things are worth sharing. Best practice 1: Debunk the myths
28. Best practice 2: Know your audience Technically-oriented implementation Best practice 2: Know your audience Business-oriented implementation
29. Best practice 2: Know your audience The business should play a critical path role in the BRMS solution. Don’t forget about the “Business” in Business Rules Management Systems Best practice 2: Know your audience
34. Don’t move your legacy application to a new platform.You are here to better manage your decisions, not manage more code. Best practice 3: Remember why you are here
36. Best practice 4: Avoid common rule writing pitfalls rule "initialize cross sell products" when $req:CISCrossSellProductServiceRequest(type=="web") $log:Logger() then $log.info("rule fired: initialize cross sell products" ); ArrayList productList = $req.getProductList(); for (int i = 0; i< productList.size(); i++) { Product p = (Product)productList.get(i); calculateDaysSinceLastCS(p.lastCSDate); if (p.daysSinceLastCS <= p.minDaysBetweenCS) { p.eligibleForCrossSell = true; } else { p.eligibleForCrossSell = false; } $log.info(" eligibleForCrossSell =“ + p.eligibleForCrossSell ); } update($req); end Best practice 4: Avoid common rule writing pitfalls Original Rule Illustrative example
37. Best practice 4: Avoid common rule writing pitfalls Best practice 4: Avoid common rule writing pitfalls Make rules atomic rule "initialize cross sell products" when $req:CISCrossSellProductServiceRequest(type=="web") $log:Logger() then $log.info("rule fired: initialize cross sell products" ); ArrayList productList = $req.getProductList(); for (int i = 0; i< productList.size(); i++) { Product p = (Product)productList.get(i); calculateDaysSinceLastCS(p.lastCSDate); if (p.daysSinceLastCS <= p.minDaysBetweenCS) { p.eligibleForCrossSell = true; } else { p.eligibleForCrossSell = false; } $log.info(" eligibleForCrossSell =“ + p.eligibleForCrossSell ); } update($req); end Illustrative example
38. Best practice 4: Avoid common rule writing pitfalls rule "initialize cross sell products" when $req:CISCrossSellProductServiceRequest(type=="web") $log:Logger() then $log.info("rule fired: initialize cross sell products" ); ArrayList productList = $req.getProductList(); for (int i = 0; i< productList.size(); i++) { Product p = (Product)productList.get(i); calculateDaysSinceLastCS(p.lastCSDate); if (p.daysSinceLastCS <= p.minDaysBetweenCS) { p.eligibleForCrossSell = true; } else { p.eligibleForCrossSell = false; } $log.info(" eligibleForCrossSell =“ + p.eligibleForCrossSell ); } update($req); end Best practice 4: Avoid common rule writing pitfalls No nested if statements Illustrative example
39. Best practice 4: Avoid common rule writing pitfalls rule "initialize cross sell products" when $req:CISCrossSellProductServiceRequest(type=="web") $log:Logger() then $log.info("rule fired: initialize cross sell products" ); ArrayList productList = $req.getProductList(); for (int i = 0; i< productList.size(); i++) { Product p = (Product)productList.get(i); calculateDaysSinceLastCS(p.lastCSDate); if (p.daysSinceLastCS <= p.minDaysBetweenCS) { p.eligibleForCrossSell = true; } else { p.eligibleForCrossSell = false; } $log.info(" eligibleForCrossSell =“ + p.eligibleForCrossSell ); } update($req); end Best practice 4: Avoid common rule writing pitfalls No business logic in functions Illustrative example
40. Best practice 4: Avoid common rule writing pitfalls rule "initialize cross sell products" when $req:CISCrossSellProductServiceRequest(type=="web") $log:Logger() then $log.info("rule fired: initialize cross sell products" ); ArrayList productList = $req.getProductList(); for (int i = 0; i< productList.size(); i++) { Product p = (Product)productList.get(i); calculateDaysSinceLastCS(p.lastCSDate); if (p.daysSinceLastCS <= p.minDaysBetweenCS) { p.eligibleForCrossSell = true; } else { p.eligibleForCrossSell = false; } $log.info(" eligibleForCrossSell =“ + p.eligibleForCrossSell ); } update($req); end Best practice 4: Avoid common rule writing pitfalls Use event listeners Illustrative example
41. Best practice 4: Avoid common rule writing pitfalls rule "initialize cross sell products" when $req:CISCrossSellProductServiceRequest(type=="web") $log:Logger() then $log.info("rule fired: initialize cross sell products" ); ArrayList productList = $req.getProductList(); for (int i = 0; i< productList.size(); i++) { Product p = (Product)productList.get(i); calculateDaysSinceLastCS(p.lastCSDate); if (p.daysSinceLastCS <= p.minDaysBetweenCS) { p.eligibleForCrossSell = true; } else { p.eligibleForCrossSell = false; } $log.info(" eligibleForCrossSell =“ + p.eligibleForCrossSell ); } update($req); end Best practice 4: Avoid common rule writing pitfalls Flatten object model Illustrative example
42. Best practice 4: Avoid common rule writing pitfalls rule “calculate days since last cross sell" when $req:CISCrossSellProductServiceRequest(type=="web") $product:Product(daysSinceLastCS == 0) then int days = (today.getTime() - $product.getTime()) / (1000L*60L*60L*24L); modify( $product ) { setDaysSinceLastCS(days) }; end rule “determine if eligibile for cross sell" when $req:CISCrossSellProductServiceRequest(type=="web") $product:Product(daysSinceLastCS > 0, daysSinceLastCS <= minDaysBetweenCS) then modify( $product ) { setEligibileForCrossSell(true) }; end Best practice 4: Avoid common rule writing pitfalls Refactored When in doubt, increase rule count and reduce rule complexity
44. Best practice 5: Preserve the past to predict the future Best practice 5: Preserve the past to predict the future Tracking, storing and analyzing decision outcome data is critical to creating smarter businesses. Drools Flow allows for the capture and storage of meaningful rule invocation data Business rules are update to improve the consistency, precision and efficiency of decisioning Business process Rule Author Customer Interaction Rule invocation data Determine Eligibility Analyze and adjust Rule Repository Business Intelligence Data Warehouse Customer Retention Business Analytics strategically address forecasted trends, opportunities and challenges Business Analytics
46. Best practice 6: Consider your environment Standalone or integrated? Knowing how you will use Drools is critical to making the right design decisions. Best practice 6: Consider your environment
Little decisions add up so focus on operational or front-line decision makingThe purpose of information is to decide so put your data and analytics to workYou cannot afford to lock up your logic so externalize it as business rulesNo answer, no matter how good, is static so experiment, challenge, simulate, learnDecision Making is a process to be managed
Answers to these questions are top priority for executives considering open source solutions.
Not an all inclusive list, but represents the common reasons.
This is general, but beginning to introduce Decision Management.
The past few years have seen open source Decision Management solutions reach a level of viability that these same considerations become critical for decision-makers.But Decision Management requires a deeper level of consideration. Traditional open source factors are not wholly applicable when considering open source Decision Management adoption. Making the right choice requires a new perspective with both tactical and strategic focus.Common Decision Management business objectives such as increased collaboration, business ownership, reduced IT spending are completely dependent on not only the technology selection, but the tactical implementation of the technology as well.
Fortunately, viable solutions such as JBoss Drools have come available at a time in which decision-makers can base their technology selection on a plethora of open source lessons learned and real-world pros and cons.
How do we balance benefits of Open Source Decision Management with the benefits of Decision Management?Throughout our JBoss Drools implementation experience, we have worked with clients to balance the expectations of open source solutions with S.M.A.R.T. business objectives. We have transformed our experience into a list of best practices for implementing JBoss Drools. However this list is wholly applicable to any open source Decision Management technology.Our best practices are strategic and tactical – you have to make good decisions about how you’re using the technology, else lose the value of either open source or decision management.
Many implementers find that total cost of ownership can actually be higher with open source DM solutions.“Free is not free”Open source is free, as in “freedom”, not free, as in “gratis”.Gartner announced measurements of 92% of total lifetime costs are spent in maintenance; only 8% in development.Research shows there is much more parity than believed
Just because you can, doesn’t mean you should.Many implementers go overboard with the customizations just because they can, not because they should.While customizations might be easier, the cost of maintenance can skyrocket.
Business rules are business assets that can be authored and maintained by either technical or business resources.Regardless of who “owns” the implementation, business rules should always be understandable by subject matter experts.Business rules are easily written by java coders. This can lead to not keeping the business first because it’s easier, faster, etc for developers to just write the code. But this obviously doesn’t empower the business. If your goal is to empower the business, use the tools and technologies that JBoss provides to truly empower the business (make mention of guvnor (sp?) here).
1. Related to slide 19drools technical environment is very technical Easy to make it too complex Easy to end up with one large collection of rules that business people can't read, let alone understand 2. Refactored rule slidetakeaway (when in doubt, write more simpler rules)When it comes to knowing your audience, the business should always play a critical role in solution maintenance. In fact, when we look at common reasons why BRMS projects fail, we see a trend. Notice that the technology capabilities is rarely an issue. Most often it is related to not strategically and tactically engaging the business in the solution.The bottom line, don’t forget about the “Business” in Business Rules Management Systems.
Decision Management Solutions can help youFind the right decisions to apply business rules, analyticsImplement a decision management blueprintDefine a strategy for business rule or analytic adoptionYou are welcome to email me directly, james at decision management solutions.com or you can go to decision management solutions.com / learn more. There you’ll find links to contact me, check out the blog and find more resources for learning about Decision Management.