[rules-dev] Re : Drools 4.0.x branch has still some issues with serialization

Edson Tirelli tirelli at post.com
Thu Mar 20 14:45:44 EDT 2008


   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 at 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 at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-dev/attachments/20080320/dc560b69/attachment.html 


More information about the rules-dev mailing list