I am looking for patterns to help satisfy the ability to process a large number of composite VOs through a series of Tasks where each task has a set of rules and each rule may have 0..3 calculators (related calculations). Some of these rules dictate whether or not the VO goes to the next Task or gets kicked out into a "needs attention" queue.
Each VO can be one of a number of different types (currently approximately 6 different types). Each different type will have a slightly different set of Rules and Calculations applied at each Task stage.
I will need the Task to have an "entry", "activity", and "exit" phase.
The Process Manager farms out each VO to a new thread on a machine in a clustered environment. I know that there are Rules Engines; however, it seems that they are most useful if the Rules change frequently by the business users. In this system, the Rules and related Calculators will rarely change, and changes will be dictated thru change requests.
I have considered employing the Value Object Assembler to create the composite VOs, the Value List Handler to handle the iternation over the VOs, The Abstract Factory pattern to load the correct family of Rules and related Calculators (based on the VO type), the Chain of Responsibility combined with the Command Pattern to step through each Rule and apply the appropriate calculators, and finally a Listener Pattern so the Process Manager can be notified that the process is complete. The really neat thing is the lifecycle of this entire process can span an entire month.
The main difficulty in my plan, as I can see currently, is that the CoR pattern doesn't seem to lend itself to processing the VO in each Task with the complete set of Rules/Calculators it needs (which is the entire set of Rules and Calculators) rather, the VO gets processed by just the one Rule within the set that is the only one "Responsible" for that particular VO type.
Any suggests or critism about my plan would be most appreciated. If I should use a Rules Engine, what is a good one? Or, does this require something other than a Rules Engine. How would BPEL play into the scheme of things?
I would appreciate any help, or insight, into this situation.