Hello; I'm using Drools 5.2.0-SNAPSHOT. I have a StatefulKnowledgeSession spawned from a KnowledgeBase whose KnowledgeBaseConfiguration is set up to use equality, not identity for (as I understand it) testing to see whether a fact is in the base or not.
I have this verified with a (nasty) assert statement (I didn't see any other way to get the KnowledgeBaseConfiguration out, which looks like an API omission to me): assert ((InternalRuleBase)(( KnowledgeBaseImpl)sks.getKnowledgeBase()).getRuleBase()).getConfiguration().getAssertBehaviour().equals(AssertBehaviour.EQUALITY); OK, so the internal knowledge base is using equality. I stick some facts in via insert. Then I serialize the session using all the right classes from org.drools.marshalling. I choose the full serialization mode. As I understand it, this means that the knowledge base and the facts will all be serialized. I am aware of the fact that all facts will get new identities. At some point in the future, I deserialize the session (successfully). When I take the same object that I inserted, and call statefulSession.getFactHandle(myObject), I get null back. This is despite the fact that my object has an equals() method, and that the equals() method is heavily unit tested (and simple). That is, despite the fact that the KnowledgeBase is confirmed to use equality, not identity, there does not seem to be a way to test if the session contains a particular fact. It's like identity is still being used. Am I overlooking something obvious? Thanks, Laird
_______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
