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