Monday, April 07, 2008

BRMS for Drools 5

Also: Introducing Guvnor.

Guvnor is the new name for the BRMS. The term BRMS kind of has an industry meaning that is slightly different from what we call the Drools BRMS (when we say it, we mean the repository and web tools mostly). Hence, the name Guvnor (kind of related to governance - but really, it just sounds cool). On top of that, we are extending guvnor to manage other asset types - which aren't directly related to rules (but that's another story, for another day).

Anyway, the new look guvnor:

Hopefully, we will have snapshots and milestones available for this very shortly.

Here is a quite tour of some of the more interesting features:

1. Web based decision tables:

This is obviously quite different from the spreadsheet based ones, and use a similar approach to the guided editor to help you set up the table to allow people to enter rule data.

The columns are configured just so:

You can also configure lists of values, or use data driven enumerations (just like before):

You can of course mix and match this with other rule types, as not everything is easy to represent in decision tables.

The most interesting feature (to me) is the integrated testing UI. I am a big fan of test driving anything. So, you can do that with rules. You can specify what you expect your results to be for a given scenario. You can narrow that scenario to an individual rule, if you want, or you can exclude rules (you would want to do this if a particular rule had a destructive side effect). You can also simulate dates for checking date effective rules etc.
This sort of scenario based expectation testing works well when your rules focus on the data and the logic on the data, and avoid programmatic logic and external side effects, of course.

What a scenario looks like:

You can see the expectations (which has one failure in this case) and the input data.

Also, you can treat a list of scenarios as a test suite:

And then run it to get unit test like green/red bars (well all love seeing green !):

From this we can also see what percentage of rules were exercised (and thus increase our confidence that we almost know what we are doing !).

I demonstrated this in Melbourne last week, and this really helped clarify to people what it was all about.


  1. It must be british humor. Even though I watch BBC, calling a rule management system Guvnor isn't appealing to me. It would be a shame for business people to think "drools BRMS is a joke" because of the name.

    For the record, I can't think of a better name. maybe ask the drools community for name ideas that are a bit more "business user and sales guy" friendly.

    names that are cool to developers often don't elicit the same kind of affection from bean counters.

  2. I think people already think the name "Drools" is a joke and it's worked out so far already. Must people who I've run Guvnor past already like it. Main thing is it's not a name that people forget, like Drools, which is the main thing.

  3. From the limited experience I have first hand suggesting drools to people. Here is what I see. Developers like the name drools. business users snear at it and think it's a joke. Sadly, sometimes the business guys make the decisions and if they don't like the name, it won't get considered at all. In an ideal world, it shouldn't matter.

  4. Greetings: "The Guvnor" was a real person - though not one of the British Gentility. He was a street brawler, womanizer, boozer and, generally, a "real bad'un that one was."

    Names? Ask the users what name would float their boat. Java was non-descript but better than Oak. Advisor was OK but not cool. JRules sort of bridged the gap. Any number of names come to mind: JBRules, DynaRules (Dynamic Rules leaving the obvious OO part out), MESS (Mark's Expert System Shell - probably not a good one), Super Rules, BRS (British Rule System) or BRB (British Rulebase), HMR (Her Majesty's Rules), BR (Britain Rules) and more of the same kind of thing.

    Bottom line: Drools is already there and the name is being recognized as what it is - a great alternative to paying a $100K entry fee to get a decent BRMS or Rulebased system in-house and working. Keep up the good work and let the other vendors worry about names. :-)


  5. Along the same lines as yaakov. You could take inspiration from some of the cool british shows like coupling, the office, MI5 or classic like monty python. Do a mis-mash and you might get

    Drools Coupling
    Drools MI5
    Drools Monty
    Drools Flying Circus

    I've always liked food names for software projects. Though I wouldn't use Hagus or Rocky Mountain Oysters.

  6. Bravo, guys. After testing BRMS v4 I've been considering making the exact same improvements on my own. Good to know we're on the same wavelength in that regard. Bravo.

  7. "On top of that, we are extending guvnor to manage other asset types - which aren't directly related to rules (but that's another story, for another day)."

    I am looking forward to this day!

  8. I'm interested in testing the new JBRMS (aka Guvnor), but I can't find a place to download it.

    Is there any experimental .war development?

  9. Hi all,
    I built a rules project using the Eclipse IDE (with Drools plugin).
    Now i want to change some rules i created in this projet. I want to use the BRMS for the changes...i did not find any way to acess to my project that normal?

  10. Will there be any user roles in this version?
    We would like to be able to assign roles to different users..
    e.g. usera can write rules, but can't deploy
    userb can deploy to a Test snapshot..

  11. Unfortunately not. The developer who was working on the security stuff left, leaving the work unfinished. So unless any community developers pick this up, it'll probably be in the 5.1 release towards the end of this year.

  12. When will it be possible to download BRMS 5.0?

  13. Is there a preview version of BRMS 5.0 avaible for download? I'm very interest to checkout the new cool features. Thanks.

  14. Is there a way to write a rule over dates using Guvnor?

    Example: WHILE if PaymentDueDate = PaymentPostedDate - 10 THEN alert_User

  15. woolfel shut up you suck