The rule base is generated by compiling the .drl file and then stored in a serialized form
in a blob in the database.
When a process instance needs to compute task assignments, it pulls the stored rule base
from the db, creates a new working memory and requests the authorization seeder for
seeding objects.
The seeder is a generic interface that is implemented by a bean in my business domain of
which the main method just returns a list of Objects to be asserted into the working
memory (as static facts). In my case it returns the list of Individuals. All 3000 of them,
actually, therefore my attempt to keep a live working memory during the life time of the
process instance... Which fails because of the sheer size of it. (Serialization stack
overflow... I tried to use the JBoss serializer but JBoss Rules does not have an interface
that works with JBoss serialization...)
Then the BPM engine asserts wrappers (more simplified objects) for all existing swimlane
instances and their pooled actors. Fires the rules and re-aligns the process swimlane and
task instances with the content of the working memory.
So the rules import the business objects and the interfaces of the simplified swimlanes
and pooled actors. The latter are in the api of my BPM engine.
This means that the space the rules live in is entirely abstracted from the specific
library that implemented the rule engine. Just thought that would make it more generic. Of
course the rule language and rule base compilation is dedicated for JBoss Rules.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3962626#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...