Thanks for reporting. I opened a ticket for that.
http://jira.jboss.com/jira/browse/JBRULES-1521
We will include the fix on 4.0.6.
[]s
Edson
2008/3/20, siddhartha banik <siddhartha.banik(a)gmail.com>:
Hi Group Members,
In Drools 4.0.5 release most of the bugs with *"Working Memory
serialization"* are fixed. But still the feature has few bugs.
The bug scenario :
1. Create a rule Base & Working Memory (Stateful Session).
2. Assert some objects in Working Memory & call fireAll()
3. Serialize both Rule Base & Working Memory.
4. De Serialize Rule Base & Working Memory.
5. Remove Pkg/rule from Rule Base.
6. Serialize both Rule Base & Working Memory.
7. De Serialize Rule Base & Working Memory. --------->* In this step
Working Memory De Serialization fails with
java.lang.ClassNotFoundException.
*8. Assert some more objects in Working Memory & call fireAll()
I have tested the scenario using *"MarshallingTest.java"* from Drools
Codebase. In the *
MarshallingTest.testSerializeAddRemove_NoClassDefFoundError()* test case,
I have appended bellow mentioned code snippet at end:
ruleBase = (RuleBase) serializeIn( serializedRulebase );
session = ruleBase.newStatefulSession( new ByteArrayInputStream(
serializedSession ) ); *// throws java.lang.ClassNotFoundExceptionException
* results = (List) session.getGlobal( "results" );
InternalFactHandle stilton5 = (InternalFactHandle) session.insert(
new Cheese( "stilton", 30 ) );
InternalFactHandle brie5 = (InternalFactHandle) session.insert(
new Cheese( "brie", 30 ) );
InternalFactHandle bob7 = (InternalFactHandle) session.insert( new
Person( "bob", 30 ) );
InternalFactHandle bob8 = (InternalFactHandle) session.insert( new
Person( "bob", 40 ) );
session.fireAllRules();
assertEquals( 8,
results.size() );
assertEquals( bob7.getObject(),
results.get( 6 ) );
assertEquals( bob8.getObject(),
results.get( 7 ) );
serializedSession = null;
serializedRulebase = null;
serializedSession = serializeOut( session );
serializedRulebase = serializeOut( ruleBase );
session.dispose();
*One more bug is:* Can not serialize Working Memory if Rule contains *
Accumulate* or *Collect* Conditional element. Because, both of them have
nested static class "*AccumulateMemory*" & "*CollectMemory*"
respectively,
which are not serializable.
We want to use Drools in our project with its *"Working Memory
serialization"* feature to maintain state of Rule Engine between
executions. So Fix of All bugs related to *"Working Memory
serialization"*feature is very important for us.
Thanks
Siddhartha
_______________________________________________
rules-dev mailing list
rules-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev
--
Edson Tirelli
JBoss Drools Core Development
Office: +55 11 3529-6000
Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @
www.jboss.com