Tuesday, October 30, 2007

Drools BRMS version two design and ideas

Hi folks

After delivering 4.0.3 Michael and I had some conversations about adding more features and a complete re-design of the BRMS web interface. Basically we are looking at how to break things up into "perspectives" kind of like eclipse has (but simpler), just to make it easier to present the user with the information they need for their current work example:
  1. BA type users (no package configuration, follow templates, read only sometimes etc)
  2. Developers (configure stuff - eventually should only need eclipse so this doesn't have to be too strong on the web side)
  3. Admins/operator types (migrate, security setup etc).

Nothing that complex, but we do need to have it scale up and down to these skill levels.

I think we can do something like merging the previous BRMS organization with the new tree feature. We do like the tree/explorer motif, fairly familiar to most people and easy to make it filterable based on both server side and user settings. Also, its more like ideas that the jboss web console is moving to.

The new package feature



Also with this refactory we will enable I18n internationalization then people can easily edit the bundle file/config to add they own language setting. Other key features like rule based authorization and custom queries are also some of the new features.

We are messing around with a few designs and also very receptive on ideas and feature requests you can find our task list on Jira and suggest something, also you can ping the dev mailing list on rules-dev@lists.jboss.org

The new BRMS design concept

Monday, October 29, 2007

Drools and SBVR

During my time at the Business Rules Forum and RuleML I met a big company, one of America's largest medical insurance companies, and they are very interested in funding a SBVR authoring environment for Drools, possible utilising the existing (but inactive) SBeaVer project. For those that don't know SBVR is a standard for representing rules using a structured natural language approach.

We are currently looking to create a group of stake holders, managed by the existing SBVR group, who would be interested in funding this work to make a usable reference implementation authoring environment for the SBVR spec. If you are interested and able to help, or know someone that might be interested and able to help, then please email me mproctor a@t redhat d0t com. The idea is to finding initial phased funding for the work and to provide an ongoing maintenance fund. The SBVR group are currently evaluating a number of 3rd parties to undertake this development effort, once funding has been resolved.

Wednesday, October 24, 2007

Business Rules Forum - Quick Notes

As Mark mentioned in a previous blog, we are attending the 10th Business Rules Forum in Orlando. Tuesday (October 23rd) was the first presentations day and I had the opportunity to watch a few interesting presentations.

In the morning I watched the keynote with Ronald Ross: "The Hitchhicker's guide: from Business Rules to Enterprise Decisioning"
It was an interesting presentation whose keyword, as emphasized by Ron was "balance". He presented the needs to change the current focus:
  • from BPM to balanced Enterprise Decision Management
  • from Data Quality and Accessibility to balanced Decision Deployment
  • from Business Rules to Balanced Decisions

The real deal, in his words is to understand that Business Rules are the means to an end, and as such we need to stop focusing and justifying the means and start focusing and justifying the ends, i.e., the implementation and deployment of complete Enterprise Decisioning solutions.
Another point I thought was also interesting was his statement, that I completely agree, that the decisions we need to automate are not the big strategic and broad company decisions, but the small, frequent, everyday, thousands of operational decisions, as these are the ones that will give us the greatest returns and allow us to quickly answer to trend changes.

Another great presentation I attended and worth mentioning was "Business Rules, Decision Management and Smarter Systems" by Neil Raden and James Taylor, authors of the recently released "Smart (enough) Systems".
They are very good presenters and talked a lot about what are "Smart (enough) Systems", the challenges and opportunities, but again, the highlight point for me was the realization that today, at least 80% of the decisions made everyday in a business environment are what they call "hidden decisions". I.e., the small decisions manually taken by people involved in the business that are not documented and automated that inevitably lead to inconsistencies and unpredictability on the business results.
The idea is that expert decisions will continue to be made by experts for a long time still, some big/broad decisions will continue to be made by people in charge, but to ensure consistency, predictability, trusted statistics and allow business optimization, these hidden decisions need to be uncovered and automated.

The other presentation I would like to mention and that was in my opinion the best presentation so far in the event was Stephen Hendrick's (IDC Group VP) keynote: "Intelligent Process Automation: The Key to Business Process Optimization".
Stephen presented us with the big picture for the coming years. Where to go, from a business process optimization perspective, what are the challenges and the gains of implementing IPA, a few success cases of companies that already have IPA solutions in place and an illustration case of what may happen to those that don't.
In his words, the key IPA constructs are:
- Event Processing
- Decisioning
- Advanced Analytics
He also emphasized that solutions for all the key constructs above already exist, but we still fail in delivering completely integrated solutions that minimize risks and maximize gains of customers implementing them.

At least, we know that us in Drools development are heading to the right direction. As you probably know, we are tackling the Event Processing and the BPM integration side in our solution and improving our rules engine product to become more than a rules engine: a real Enterprise Decisioning tool in a complete Behavioral Modeling platform.
Anyone interested in helping us with the Advanced Analytics side? :)

Happy Drooling,

Tuesday, October 23, 2007

Drools 4.0.3 Released

We just released Drools v4.0.3. This is a minor release with a few improvements on existing features and some bug fixes.

Release Notes - JBoss Drools - Version 4.0.3

We would like to really thanks all the contributors that helped on getting this release out. From those contributing patches and docs, to those testing and reporting bugs and providing feedback. The list is a bit long to post all names here and I may incur in a mistake forgetting someone, so our open public thank you to you all!

Follows the release notes.

Happy Drooling
Drools Team


  • [JBRULES-1264] - NPE at BaseObjectClassFieldExtractor.getLongValue with null fields

  • [JBRULES-1266] - Composite facts types (OR, AND) not rendering correctly

  • [JBRULES-1272] - DSL : String index out of range: -1

  • [JBRULES-1279] - Memory leak in release 4.0.2

  • [JBRULES-1281] - ExecutorService cannot be shared

  • [JBRULES-1282] - Problems uploading models etc. into the BRMS

  • [JBRULES-1283] - Unable to serialize rule base ( NotSerializableException: org.drools.base.FireAllRulesRuleBaseUpdateListener)

  • [JBRULES-1295] - DSL Mapping files does not support comments and empty lines

Feature Request


Sunday, October 21, 2007

Business Rules Forum

Edson and myself are at the Business Rules Forum 2007 conference. We arrived yesterday and have settled into the hotel, which btw is really nice. If anyone else is here and wants to chat tech stuff, just ping us. Also if anyone is up for it maybe we can organise a pub crawl for a drink or three :)


Tuesday, October 09, 2007

Drools 4.0.2 Released

We just released Drools v4.0.2. This is a minor release with a few improvements on existing features and several bug fixes. We also included a lot of new documentation, specially in the examples section.
Important: there is one backward compatibility break when using Rule Flow. If you use Rule Flow, please check the section 1.2.5 of the manual for details.

We would like to really thanks all the contributors that helped on getting this release out. From those contributing patches and docs, to those testing and reporting bugs and providing feedback. The list is a bit long to post all names here and I may incur in a mistake forgetting someone, so our open public thank you to you all!

This is now the stable version of Drools and from now on, we expect to only release eventual bug fixes in this branch. We are starting now the development of the new major release of Drools and new features shall all be added to it.

For those curious about what is coming, please check previous posts on this blog. Mark's slides presented at Synasc also talk about several things we want to do for the coming versions.

Follows the release notes.

Happy Drooling
Drools Team

Release Notes


  • [ JBRULES-779 ] Better error reporting in the GUI
  • [ JBRULES-996 ] Admin screen option to remove archive items
  • [ JBRULES-1210 ] Implement support to multi-pattern accumulate to the XML parser.

Feature Request

  • [ JBRULES-910 ] upgrade GWT to 1.4
  • [ JBRULES-944 ] Support in Rule Workbench for custom colors
  • [ JBRULES-1040 ] Multi-pattern accumulate support
  • [ JBRULES-1098 ] Add action support in ruleflow
  • [ JBRULES-1107 ] Support for multiple pattern in accumulate source pattern
  • [ JBRULES-1118 ] Add support for rf, xml and dsrl into drools-ant task
  • [ JBRULES-1138 ] MVEL code completion does not work for nested expressions
  • [ JBRULES-1155 ] In Decision Table actions, cannot reference variables that were not referenced in LHS
  • [ JBRULES-1165 ] StatelessSessionResult should have getGlobal
  • [ JBRULES-1175 ] soundslike operator
  • [ JBRULES-1178 ] trivial jbrms issues
  • [ JBRULES-1183 ] Add global support in ruleflow
  • [ JBRULES-1184 ] Refresh snapshot binaries if needed
  • [ JBRULES-1185 ] Add support to RuleBase events on the Event Support system
  • [ JBRULES-1189 ] Auto coercion of String to date in MVEL actions
  • [ JBRULES-1196 ] Cannot specify file and dir paths with spaces using RuleAgent properties file
  • [ JBRULES-1198 ] Add a launch shortcut for debugging drools applications
  • [ JBRULES-1201 ] Allow rule agent to pick up DRL files and compile as needed
  • [ JBRULES-1227 ] Add drools-analytics support to drools-ant
  • [ JBRULES-1228 ] Enums to allow reference to another fields value
  • [ JBRULES-1236 ] Sort getters alphabetically in drop-down
  • [ JBRULES-1241 ] Dynamic rules should be able to lock for a series of updates and fireAllRules should be optional
  • [ JBRULES-1252 ] DrlDumper does not dump import functions
  • [ JBRULES-1255 ] add alternating coloured rows for rule analysis reporting and allow for user provided css
  • [ JBRULES-1256 ] publish source jars with maven
  • [ JBRULES-1257 ] Add Banking Example from John Dunning


  • [ JBRULES-723 ] Eclipse plugin detects error inconsistently and without location information
  • [ JBRULES-1013 ] Two functions with Janino compiler end up with out of memory error
  • [ JBRULES-1100 ] BRMS Bug on view source in weblogic
  • [ JBRULES-1124 ] Code completion does not work for 'with' blocks
  • [ JBRULES-1141 ] context assist no longer works for functions in the drl.
  • [ JBRULES-1144 ] Toggling breakpoint gives an exception
  • [ JBRULES-1145 ] Break points do not work at all
  • [ JBRULES-1146 ] No variables are shown for Debug points
  • [ JBRULES-1148 ] Out of memory exception asserting more than 100 facts
  • [ JBRULES-1151 ] Bulding sources from root folder fails
  • [ JBRULES-1152 ] my unit tests are hanging with drools 4.0.1
  • [ JBRULES-1153 ] Accumulate/Collect can't be used in queries
  • [ JBRULES-1154 ] ClassCastException retrieving query parameters
  • [ JBRULES-1156 ] WorkingMemoryFileLogger is raising NPE for rules containing unbalanced OR CEs
  • [ JBRULES-1157 ] threads using one ruleset throws exception
  • [ JBRULES-1159 ] Function calls or static method calls do not work for the MVEL dialect
  • [ JBRULES-1164 ] DSL is not working well when mapping includes ()
  • [ JBRULES-1166 ] BRL not rendering inpattern eval() correctly (for a predicate)
  • [ JBRULES-1169 ] PredicateConstraint and/or MVEL Constraint issue?
  • [ JBRULES-1170 ] ClassCastException using dynamic salience
  • [ JBRULES-1171 ] Nested accessors in "from" clause are not supported in depth more then 2
  • [ JBRULES-1172 ] In nested accessors "this" keyword is required in front
  • [ JBRULES-1174 ] debug steps into "when" statement
  • [ JBRULES-1177 ] Problem when adding dynamic rules to networks with shared AlphaNodes
  • [ JBRULES-1179 ] Premature rule execution
  • [ JBRULES-1180 ] java.lang.ClassCastException: org.drools.reteoo.RightInputAdapterNode
  • [ JBRULES-1182 ] serialized rules using MVEL depend on a compiler class
  • [ JBRULES-1187 ] Bug in guided editor when you add a boolean restriction field
  • [ JBRULES-1190 ] Can't use "=" in a DSL expression
  • [ JBRULES-1191 ] compilation error when consequence has no space between rule mappings
  • [ JBRULES-1193 ] Getting org.mvel.PropertyAccessException in rule flow actions when using class names without package
  • [ JBRULES-1202 ] primitive types all return Longs for getValue
  • [ JBRULES-1203 ] Shadow facts of final classes not working correctly
  • [ JBRULES-1204 ] Problem with memberOf and/or eval used in collect statement
  • [ JBRULES-1205 ] AND works in a rule, but OR gives a classCastException
  • [ JBRULES-1207 ] RuleBase serialization does not handle the process field
  • [ JBRULES-1208 ] Errors for some OR junctions in LHS conditional elements
  • [ JBRULES-1211 ] Rules with accumulators cannot be serialized
  • [ JBRULES-1212 ] Rete throws NoClassDefFoundError when asserting facts with classess loaded by inaccessible classloader.
  • [ JBRULES-1217 ] RuleFlow Editor -> Constraint Editor -> Imports Editor context help
  • [ JBRULES-1220 ] Integration with jBPM does not work
  • [ JBRULES-1221 ] org.drools.base.accumulators.CountAccumulateFunction error when building a package with rules including an accumulate construct in Drools BRMS 4.0.1
  • [ JBRULES-1223 ] Concurrent problem in MVEL
  • [ JBRULES-1224 ] regular expressions inside mvel expressions require escaping
  • [ JBRULES-1231 ] Functions do not get added to new BRMS package when package imported from drl file
  • [ JBRULES-1239 ] Fix class loaders so that creating multiple rulebase with separate class loader hirarchy works
  • [ JBRULES-1240 ] Remove Dialect state from PackageBuilderConfiguration
  • [ JBRULES-1244 ] Ruleflows should have a package name
  • [ JBRULES-1245 ] class cast exception
  • [ JBRULES-1248 ] requires an 'value' attribute, but it can't be null
  • [ JBRULES-1253 ] drools-examples-drl does not work under Java 6 as-is


Just Java 2007 Slides (Part II)

As mentioned in a previous blog, last Friday a did a second presentation at Just Java 2007 Conference in Brazil. This time the presentation was a higher level presentation discussing Drools BRMS and where it can help improve corporate software solutions by leveraging the Business Rules.
After the presentation I had the opportunity to talk to several of the attendances and the feedback was very good. Thanks to all that attended and I hope you enjoyed.

Here you can find the slides (in Portuguese) I used during the presentation.

Happy Drooling

Monday, October 08, 2007

Great External Articles/Blogs.

Some great external material is starting to appear around the web now for Drools 4.0

Does your bad Java code need help? (from Rules and Flow) (Paul Browne)
Gives an intro into the new rule flow stuff using the Number Guess example.

Deploying JBoss Drools BRMS on Weblogic (Paul Browne)
Details how to get Drools setup and running on Weblogic

Banking on DROOLS - Part 1 (John Dunning)
Detailed step by step tutorial on using Drools to solve simple bank account management problems.

15th ACM Multimedia Conference and Machine Learning

From Sep. 23rd to Sep. 28th I visited several sessions of the 15th ACM Multimedia Conference in Augsburg, Germany. I have a feeling that researchers are trying desperately to make computers automatically understand the semantic of images and videos. A lot of papers in the conference were on image segmentation and image annotation, there was a whole-afternoon-session, all the presentations were more or less on image annotation powered by machine learning, lots and lots of Bayesian network, Markov fields stuff. The best paper award went to the paper "Correlative Multi-Label Video Annotation" written by Guo-Jun Qi (USTC China),
Xian-Sheng Hua (Microsoft Research Asia), Yong Rui (Microsoft China R&D Group), Jinhui Tang(USTC China), Tao Mei (Microsoft Research Asia) and Hong-Jiang Zhang (Microsoft Adv. Tech. Center) (See the picture). Artificial intelligence plays the central roll here. Here is the page for the session "Tutorial on Bayesian Methods for Multimedia Signal Processing".

There was a very interesting presentation session for open source projects, the winner of the best open source software was Hop, a new functional programming language designed for Web 2.0. The paper can be found here. The Hop guys coined the web broker concept. A web broker sits between multimedia content providers and users, and provides elegant solution to highly interactive web application (such as web gallery, web media player, etc) programming. Hop is not designed for n-tier web application programming, however.

PS: Sorry for the delay of evaluation of the Drools Puzzle Round 2. I think Dr. Starke, the winner of last round, is too busy these days. I have not heard from him for long. But eventually the submissions will be evaluated by Dr. Starke, and the third round will come out. I will have more time for community activities from November on, so if till then there is still no result for the second round, I will evaluate the submissions and get the Drools Puzzle on track again.

Semantic wiki, large machine learning and rules

Ten years ago the semantic web was no more than an ambitious speculation for there lacked a knowledge base providing enough reliable semantics to the content of the internet. Since six years ago we have been having the Wikipedia and researchers soon found that it can be utilized as the general knowledge base for semantic web. Together with large scale machine learning, the potential of semantic web is being unleashed. Currently in the Institute AIFB of University Karlsruhe, Germany, Semantic MediaWiki is under heavy development and there's lots happening in this area. Here is the slides of a presentation made by the Ph.D candidate Mr. Denny Vrandecic from university of Karlsruhe. The presentation was made in the Semantic Web 2.0 Conference, 2007, Seoul. More research papers can be found in the AIFB home page. Ontology modeling is in Drools' roadmap, hopefully in the future there will be a Drools module which can effectively and efficiently extract and make use of the semantics flowing in the web.

The Semantic Web in Ten Passages written by Prof. Harold Boley well describes what the Semantic Web is, which problem it tries to attack and the challenge it faces. A recommended reading if you are not familiar with the Semantic Web.

Thursday, October 04, 2007

Just Java 2007 Slides

Yesterday (October 3rd) I had the pleasure to speak to a awesome audience at the Just Java 2007 Conference in Brazil. The presentation was oriented to a technical audience and as such, I had the opportunity to show rules being written on the fly as suggested by the audience during the demo and it was a great experience (at least for me) :).

Here you can find the slides (in Portuguese) I used during the presentation.
Here you can find the latest docs for the Drools examples, including a version of the Sudoku we used during the presentation.

Thanks to all the attendants. I hope you enjoyed.

Tomorrow (October 5th) I will do another presentation, this time focusing on a broader vision of the architecture of systems using rules engines and how it fits modern solution architectures, like SOA. For those interested, presentation will happen at 01:00 PM on Auditory 1.

Wednesday, October 03, 2007

How to have your emails ignored

As the Drools mailing list volume increases I thought I'd make a tongue in cheek etiquette guide to go on the mailing lists info page, http://labs.jboss.com/drools/lists.html. We aren't really that formal or strict yet, but hopefully it will help keep the traffic noise down as we grow. Feed back welcome :)

How to have your emails ignored:
  1. Start the email with "URGENT"
  2. Tell everyone how desparate you and how you need an immediate response for your really important project.
  3. Don't wait a minimum of 3 days and resend your email within minutes of hours.
  4. Send emails directly to mailing list members, especially the developers.
  5. Paste pages of code and then say "it doesn't work, please help".
  6. Paste a long stack trace and say "it doesn't work, please help".
  7. Start your email with "please sirs" or include "do the needful".
  8. Ask dumb questions that are in the manual.
  9. Ask basic java questions.
  10. Ask questions about JRules
  11. Reply to an existing thread but starting a new topic
  12. Start your email with "I'm a member of the drools mailinglist, so please answer me"
  13. General begging and pleading
  14. Say some thing to the effect of "Please tell me how I can call a function on the LHS. (hurry my assignment is due today!)"

Monday, October 01, 2007

Synasc 2007 slides

Kris and I are back from Synasc 2007, which was in Romania this year. We gave two presentations this year the general sessions and the main track. The general session focused on future R&D, like temporal reasoning and uncertainty. While the main track did a Drools feature over view with a focus on rule flow.

Here are the presentations, in pdf format:

Drools Examples Documentation Gets Beefed Up

One of the issues constantly raised to us is that lack of documented examples, with the 4.0.2 release out this week this is no longer the case :) We documented most of the examples provided with the project, in detail. These examples cover much of the core behaviour and functionality of the engine. Feedback on this documentation, before we do 4.0.2, would be very much welcome :)

Hudson builds our code base on each commit, so you can get the latest examples documentation build from trunk here: