I am working on this project in phases. The initial phase is to label all of my current
logic as either core code, trading partner specific code, or customer specific code. Once
these three levels are determined, we will be recreating standard versions of the first
two in a rules engine, perhaps all in one package. Then at each customer we will
implements a package that has their specific requirements.
Looking at your responses below I have more explaining to do.
1) We are considering pulling the standard code and trading partner rules out into a
cloud, off the customer's site, so that we do not have deployment issues that we have
today. But we would allow the specific customer rules to execute on their local server. So
at a minimum I would need to do two packages (one for the rules in the cloud and the
second for the rules on their server). Perhaps I still need to understand the
relationship of a .drl file to a package, though in my mind this is a 1 to 1
2) I hear you on the responsibility part for giving our users the ability to author
their own rules in Guvnor. Thinking back to the last three points in my original mail
I'm really looking to balance which way would be best to expose this to our customers
(guvnor vs. DTs). Perhaps there is more I need to understand about the limitations of
each. If I understood your response to #4 below it is that I would want to create one
decision table for a logical rule (whether that rule is one simple if then else or it is a
longer case statements). That being said, would I then have 40 spreadsheets for them to
manage and change for the different logical rules? How would that be from a performance
standpoint? Is there a process to take these 40 spreadsheets and convert them into one
.drl file? Or are they each then a .drl file? From a performance standpoint, are these
loaded from spreadsheet each time a user runs an EDI load? Or are they made binary once
(or whenever there are changes) and thus not having to "recompile" each time?
You might read from this that the idea of packaging for production is something I'm
still struggling to understand. If anyone has a good source to show an example of actual
distribution that would be cool. I've been reading through the manuals and everything
seems to stop with the examples as being .java and .drl files.
Thank you for your assistance.
From: rules-users-bounces(a)lists.jboss.org [mailto:firstname.lastname@example.org] On
Behalf Of Michael Anstis
Sent: Thursday, September 16, 2010 11:40 AM
To: Rules Users List
Subject: Re: [rules-users] Looking for a place to start with drools
Of course you could leverage the benefits of using Drools to directly replace your
hard-coded logic first and leave the enhancements around permitting your users to define
their own rules to a later date rather than push into one release; if time is a concern.
Would the Drools road be any more different than allowing your users to define their own
hard-coded rules now using a proprietary mechanism?
> 1. How would you package these types of rules? I have
three categories as stated above and it seems logical that I would package them in that
manner. However within each group there are logical groupings of rules. In the customer
rules I may have a couple dozen on how to populate a field that deals with adding comments
and another couple dozen having to deal with setting certain fields with specific codes
that are based upon incoming data. Two quite different logical areas within our software.
Horses for courses. Nothing stopping you deploying multiple packages if need be, but
it'll be harder to try and make course grained packages more fine grained if you later
wish you'd done this from the start.
> 2. How would you deal with the GUI? Is Guvnor truly
something I can setup in a way that my end users can manipulate without
"damaging" the custom ruleset?
With power comes responsibility. If users are given the power to define their own custom
rules they have to take responsibility for damaging them too. There is the ability to run
tests against rules in Guvnor, but that won't stop somebody from mucking them up.
I'd recommend providing for UAT. I don't what exposure your clients have to
"testing" new features now..
> 3. Within Guvnor, how would you handle the possibility of
there being over 2,000 fields to choose from to form a rule?
I believe there is functionality in 5.1 for Working Sets that allow subsets of fields\fact
types to be exposed.
> 4. What is the performance hit if we were to make each
customer rule part of once decision table or another? Would you even consider this as an
One decision table for all users at all customers? One DT per rule is normally the intent,
or did I misunderstand.
On 16 September 2010 15:00, Gustavo Tenrreiro
I ve only been working with Drools for about a couple of months.
My first impression was that it was a great tool and very
straightforward. But as I got deeper into it, I found a lot of
gotchas, and things I didn't quite understand how they worked ( for
many I still don't ). Finding definitive answers to those questions
has been hard. Even though this forum, as well as the IRC chat are
very helpful, the flow of information is somewhat limited.
If what you are doing has some complexity beyond the simple examples
provided by the documentation, and sample code, then you will probably
get stuck at some point, and burn a lot of time trying to figure out
So if you are on a tight budget that requires tight deadlines using
Drools to replace your existing code would be a high risk proposition
On the other hand, the Drools's potential to simplify, and streamline
my system is great. if I manage to get it to do what I want it to do
it would be a huge win for my organization, and the Drools system
would be mostly responsible for that.
So to summarise, jumping into the Drools bandwagon would be an
"educated bet", but a bet nonetheless.
Hope that helps.
2010/9/16 Dean Whisnant <email@example.com<mailto:firstname.lastname@example.org>>:
I am investigating using Drools for our company's EDI processing.
nature of our software system is that each of our clients (dozens) has a
full distribution of our base software and in the past we would make custom
changes to that base software at each of their sites based upon their
trading partners and business needs. For the most part these changes
involved nothing more than if-then statements for rather simple logic, but
that would become complicated at certain customers where there were large
numbers of trading partners and specific customer needs. In general we saw
2,000 lines of code swell to 4-6,000 lines of code.
We are in the process of rewriting this portion of our code and are
entertaining using drools to allow us to 1) create a standard ruleset, 2)
create a ruleset specific to a trading partner (many customers share some
common trading partners), and 3) create a customer business ruleset that
they can maintain through some GUI tool (Guvnor).
So far, I've created a sample java program that has classes representing
some of our data files (UniData environment using uniobjects) and have been
working with a single .drl file to test out general rules. I appear to be
able to write just about any rule I've needed in the past with no issues,
including rules that spawn processes within my native software.
These are my questions:
1. How would you package these types of rules? I have three
categories as stated above and it seems logical that I would package them in
that manner. However within each group there are logical groupings of
rules. In the customer rules I may have a couple dozen on how to populate a
field that deals with adding comments and another couple dozen having to
deal with setting certain fields with specific codes that are based upon
incoming data. Two quite different logical areas within our software.
2. How would you deal with the GUI? Is Guvnor truly something I can
setup in a way that my end users can manipulate without "damaging" the
3. Within Guvnor, how would you handle the possibility of there being
over 2,000 fields to choose from to form a rule?
4. What is the performance hit if we were to make each customer rule
part of once decision table or another? Would you even consider this as an
rules-users mailing list
rules-users mailing list