Knowledgebase Partitioning
This is an experimental feature, and is subject to changes in the future.
The classic Rete algorithm is usually executed using a single thread. Although, as confirmed
in by Dr. Forgy in his development of Rete, the algorithm itself is parallelizable. The Drools
implementation of the ReteOO algorithm (RETE tailored for object-oriented systems) supports
coarse grained parallelization through rulebase partitioning.
When this option is enabled, the rulebase will be partitioned into several independent
partitions. A pool of worker threads will be used to propagate facts through the partitions. The
implementation guarantees that at most one worker thread will be executing tasks for a given
partition, but that multiple partitions may be "active" at a single point in time.
Everything involving knowledgebase partitioning should be transparent, except that all
working memory actions (i.e., insert/retract/modify) are executed assynchronously.
This feature enables parallel LHS evaluation, but does not change the behavior of rule
firing. Rules will continue to fire sequentially, according to the conflict resolution
strategy.