Monday, June 25, 2012

Guvnor - Guided Decision Table Audit Log

The web-guided decision table editor in Guvnor now contains a configurable audit log to record additions, deletions and modifications made to the table.


The user can enable any of the following authoring events:-
  • Add row
  • Delete row
  • Add column
  • Delete column
  • Edit column
By default no events are captured, however simply clicking on the "Audit Log" button within the decision table editor a panel is displayed from which any combination of events can be configured.

Furthermore entries can be annotated with an explanation or deleted (although deleted entries remain in the underlying repository).

Drools & jBPM Drop in Centre - This Friday @ Red Hat Summit

This Friday the 29th of June we have an all day "Drop In" centre, that is open to everyone. Room 105 Hynes Convention Centre. The Drools&jBPM team will be there coding all day and discussing designs and future plans, you are all welcome to come by and code with us, or just ask some questions. There will be no formal talks or presentations, it's just an opportunity to hang out and code.

Sunday, June 24, 2012

Roadef 2012 first results for B datasets with Planner

The Google ROADEF research competition ended 2 weeks ago and I had too little time to submit an entry with Drools Planner.
However, I 've done a few quick tries on the B instances the last 2 weekends to test the just-in-time selectors:
  • 300 seconds single-threaded on JDK 6 on my 2 year old computer
  • Entity tabu search with size 7, minimalAcceptedSelection 2000
  • With the new just-in-time selectors enabled.
Update: I 've updated the results on 1-JUL-2012 to include the memory footprint fix.

Here are Planner's results on the B instances, which are notorious for their large problem scale:

Instance Hard Score Soft score Better than original
B10 - 3 747 407 470  51 %
B20 - 1 059 414 398  80 %
B30   - 163 774 53697 %
B40 - 4 677 922 31649 %
B50   - 923 842 56893 %
B60 - 9 525 882 69125 %
B70- 15 313 722 82260 %
B80 - 1 214 588 65491 %
B90- 15 885 640 05632 %
B100- 18 814 086 53155 %
Average63 %

Note that the original solution is not some random solution, but already a feasible solution. This means the machine resource utilization would be 63% better on average by using Drools Planner.

All instances were solved in their entirety: I didn't need to result to partitioning like some of the other contestants to be able to solve them.
All instances require 1 GB memory or less, but the results above are done with 2 GB memory, because the biggest instance (B10) gives better results with a heap slightly bigger then 1 GB.

Note that the solver configuration hasn't been thoroughly tweaked. Now, with the end of the competition, that the other contestants are also opening their ideas (and hopefully their code), it will be interesting to see what we can learn from each other. I 've already had some conversations with the excellent Kaho team last week and I 'll be experimenting with some of their suggestions.

Saturday, June 23, 2012

Drools and jBPM workshop for Washington DC completley sold out!!! AGAIN!!!!

After the success of our sold out Drools & jBPM workshop extravaganza in New York, we thought there was no way it could be topped. We couldn't be more wrong. The Drools & jBPM workshop in Washington DC a few days later also sold out. With a room capacity of 100, we filled every seat and had to bring in more chairs. The room had large swivel chairs in a half hexagon shape, giving it a "War Room" like feel - how fitting :)

Thanks again for all those that made this possible. We'll upload slides soon.

Friday, June 22, 2012

FLOSS Weekly Drools Planner interview

FLOSS Weekly - a weekly live podcast about Open Source and Free Software - will do a live interview with me about Drools Planner this Wednesday Thursday.

It's this 27-JUN-2012 at 9:30 San Fransisco / 12:30 New York / 17:30 London / 18:30 Brussels.
It's this 28-JUN-2012 at 9:00 San Fransisco / 12:00 New York / 17:00 London / 18:00 Brussels.

Watch it live on TWiT (at that time).

There's also a chat from which the hosts take live questions: irc.twit.tv channel #twitlive

Update: the interview has been moved from Wednesday to Thursday and half an hour earlier.

Tuesday, June 19, 2012

Drools and jBPM workshop for New York completley sold out!!!

The Drools and jBPM workshop for New York completley sold out, every seat taken :)

Next stop Washington DC, where I hear numbers have gone through the roof.

Here are some photo's so you can see what you are missing.



Tuesday, June 12, 2012

Drools&jBPM Drop in Centre at JBoss World (Open to All)

Now you have another reason to come to JBoss World, as if you didn't already have too many  on your list :)

On Friday the 29th of June we'll have an all day drop in centre for Drools & jBPM. We'll be having an all day team meeting and codeathon which will be open to the public. Anyone can attend, you DO NOT need  Red HaT Summit tickets to attend. You can come along and hang out with us for the whole day and code, or just drop in for a bit and we'll help you with your questions.

Monday, June 11, 2012

Drools & jBPM Workshops : June : WDC NYC

Only a week to go, and spaces are filling up fast. If you want to go, register ASAP.
------

JBoss BRMS (Drools and jBPM) Workshops


Drools 5, the upstream for JBoss BRMS, is a Business Logic integration Platform, and provides a unified and integrated platform for Rules, Workflow and Event Processing. It's been designed from the ground up so that each aspect is a first class citizen, with no compromises. Drools may be easily used with jBPM, a flexible business process management suite.
Want to learn more?
Join us for one of two complimentary full day, hands-on workshop on Drools and jBPM, where we will cover:

  • The ecosystem that encompasses the Drools open source project and the JBoss BRMS
  • Benefits of rules systems, business workflows, and specific challenges
  • The history of rules systems, where they are going, and the current state of the art
  • Various features of the BRMS via a hands on demo
  • BPMN 2.0 and the future of Business Process Management
Be prepared to work hands-on with the tools, meet the team behind the engine, and have your questions answered. This event will give you unparalleled access to industry-recognized leaders in the rules community.
There are two dates to choose from:
Speakers:
Jim Tyrrell, Principle JBoss Solution Architect, Red Hat
Mark Proctor, Drools Project Lead and Founder, Red Hat
Edson Tirelli, Senior Software Engineer, Red Hat
Kris Verlaenen, jBPM Lead Engineer, Red Hat
Prakash Aradhya, Senior Product Manager, Red Hat
*Attendees are responsible for bringing their own laptop to this event. Please make sure your laptop has the ability to copy files from a USB, which will provide the software for the hands-on sessions, and have JDK 1.6 already installed.
Register now as space is limited. We look forward to seeing you there!

Sunday, June 10, 2012

Just in time selectors in Planner

As part of the Selector rewrite for Drools Planner 5.5.0.Beta1, I am introducing the option to have the selectors create each move just in time. When scaling out, this reduces the memory footprint and increases score calculation per second.

When a selector is set to just in time, instead of creating each Move as part of a move list, the selector only creates a Move just before it's evaluated. So Moves that aren't evaluated aren't created. And after a Move is evaluated it might be forgotten immediately.

The old selectors had 2 options in random mode:
  • AbstractMoveFactory: all the Moves are created at the start of the step and shuffled.
  • CachedMoveFactory: all the Moves are created at the start of the phase. They are shuffled at the beginning of the step.
The new selectors will have 4 options in random mode:
  • cacheType = JUST_IN_TIME: a move is randomly created just before it's evaluated.
  • cacheType = STEP: all the Moves are created at the start of the step and shuffled.
  • cacheType = PHASE: all the Moves are created at the start of the phase. They are shuffled at the beginning of the step.
  • cacheType = SOLVER: all the Moves are created at the start of the solver. They are shuffled at the beginning of the step.
So let's take a look at the difference between the old CachedMoveFactory approach and the new JUST_IN_TIME cacheType approach. I ran a prototype for this locally and it's looking good.

With the old selectors (phase cached and step shuffled):


With the new selectors (configured with cacheType JUST_IN_TIME and random):


The new selector's result looks much better, doesn't it?
Especially in the case with acceptedSelection 100, it's much faster because it doesn't have to shuffle the big moveList between every 100 score calculations.
However, before you get your hopes up to much: this only results in a slight increase of the best score (in this use case in this scale) - and that's because of the catch. The real gain - I suspect - is memory consumption and GC activity. I 'll be benchmarking that later.


What's the catch?
The catch is that a just-in-time random selector does not guarantee to select distinct moves. Unlike a shuffled cached selector, which does guarantee that every Move will be selected exactly once (after which it is depleted), a just-in-time random selector might select the same Move multiple times and is never depleted. In practice, this means that some scaled down use case will prefer shuffling, so Planner will still implement that when cacheType != JUST_IN_TIME. In fact, Planner might be able to deduce the best setting automatically (based on the selector size and acceptedSelection setting).


The new code is currently masked out on master. Over the next few weekends I 'll be stabilizing this new code and increase unit test coverage. Once it's stable, I'll push the changes that replace the old code with the new code. The use of a custom MoveFactory will still be supported too.
As part of the selector rewrite, the selector configuration will be smaller and easier (with good defaults), but also more customizable and powerful (for tweaking or research).

Thursday, June 07, 2012

Drools & jBPM Workshops : June : WDC NYC

JBoss BRMS (Drools and jBPM) Workshops

Drools 5, the upstream for JBoss BRMS, is a Business Logic integration Platform, and provides a unified and integrated platform for Rules, Workflow and Event Processing. It's been designed from the ground up so that each aspect is a first class citizen, with no compromises. Drools may be easily used with jBPM, a flexible business process management suite.
Want to learn more?
Join us for one of two complimentary full day, hands-on workshop on Drools and jBPM, where we will cover:
  • The ecosystem that encompasses the Drools open source project and the JBoss BRMS
  • Benefits of rules systems, business workflows, and specific challenges
  • The history of rules systems, where they are going, and the current state of the art
  • Various features of the BRMS via a hands on demo
  • BPMN 2.0 and the future of Business Process Management

Be prepared to work hands-on with the tools, meet the team behind the engine, and have your questions answered. This event will give you unparalleled access to industry-recognized leaders in the rules community.
There are two dates to choose from:

Speakers:
Jim Tyrrell, Principle JBoss Solution Architect, Red Hat
Mark Proctor, Drools Project Lead and Founder, Red Hat
Edson Tirelli, Senior Software Engineer, Red Hat
Kris Verlaenen, jBPM Lead Engineer, Red Hat
Prakash Aradhya, Senior Product Manager, Red Hat
*Attendees are responsible for bringing their own laptop to this event. Please make sure your laptop has the ability to copy files from a USB, which will provide the software for the hands-on sessions, and have JDK 1.6 already installed.
Register now as space is limited. We look forward to seeing you there!

Wednesday, June 06, 2012

OpenShift running Drools Planner

Eric has put Drools Planner's webexamples war on OpenShift. This is a very nice proof that Planner and Drools run in the cloud without any modification or extra configuration.

Read his blog post and learn how to deploy Planner to your own OpenShift instance.

Guvnor translations move to Zanata

We have completed the preliminary steps to move Guvnor translations to Zanata.

This should open up the possibility for the community to contribute translations more easily.

Getting started couldn't be any more simple: register your JBoss login at Zanata and request membership to one of the language translation teams. More details are available here.

It's early days and we no doubt have a lot to learn how best to integrate translations made in Zanata into our continuous integration processes. For the time being we plan to only pull translations from Zanata during the release cycle.

Come join the party, feedback and help make Guvnor better.

Monday, June 04, 2012

Quick start with Drools Planner

I've posted an article on DZone's javalobby yesterday:

Resource optimization: Quick start with Drools Planner

Vote it up if you like it :)

Sunday, June 03, 2012

Matrix benchmarking in Planner

Thanks to a pull request by Lukas, Planner 5.5.0.Beta1 will support Matrix benchmarking.

Matrix benchmarking is benchmarking a combination of value sets. For example: benchmark 4 planningEntityTabuSize values (5, 7, 11 and 13) combined with 3 minimalAcceptedSelection values (500, 1000 and 2000), resulting in 12 solver configurations.

To reduce the verbosity of such a benchmark configuration, you can use a Freemarker template for the benchmark configuration:

<plannerBenchmark>
  ...

  <inheritedSolverBenchmark>
    ...
  </inheritedSolverBenchmark>

<#list [5, 7, 11, 13] as planningEntityTabuSize>
<#list [500, 1000, 2000] as minimalAcceptedSelection>
  <solverBenchmark>
    <name>entityTabu ${planningEntityTabuSize} acceptedSelection ${minimalAcceptedSelection}</name>
    <solver>
      <localSearch>
        <selector>
          <selector>
            <moveFactoryClass>...CloudComputerChangeMoveFactory</moveFactoryClass>
          </selector>
          <selector>
            <moveFactoryClass>...CloudProcessSwapMoveFactory</moveFactoryClass>
          </selector>
        </selector>
        <acceptor>
          <planningEntityTabuSize>${planningEntityTabuSize}</planningEntityTabuSize>
        </acceptor>
        <forager>
          <minimalAcceptedSelection>${minimalAcceptedSelection}</minimalAcceptedSelection>
        </forager>
      </localSearch>
    </solver>
  </solverBenchmark>
</#list>
</#list>
</plannerBenchmark>

Notice how easy it is to add 7 additional minimalAcceptedSelection values, resulting in 300 solving configurations instead.