I am investigating using Drools for our company’s EDI
processing. The 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 custom ruelset?
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 option?
Thank you!
--Dean