Oi Miguel,
when I try this in the "doMove" method using the "workingMemory" instead of "ksession" I got this error
Exception in thread "main" java.lang.UnsupportedOperationException: this is implementedby StatefulKnowledgeImpl
at org.drools.reteoo.ReteooWorkingMemory.getFactHandles(ReteooWorkingMemory.java:363)
...
...
Any idea?
Obrigado
Antonio2010/5/6 miguel machado <mls.machado@gmail.com>Olá Antonio,// retract all of it just in casefor (Object fact : ksession.getFactHandles()) {ksession.retract((FactHandle) fact);}Hope this helps._ miguel
2010/5/5 Antonio Neto <antoniosouzaneto@gmail.com>Hi,
Thank you very much for all replies.
I've tried also with not ( EPackage(...)), but the result is the same.
I think that I remove the EClass from the facts in my solution, but they continue in my workingMemory.
How I can see the facts of the workingMemory object (and how remove it)?
Thanks
Best regards
Antonio2010/5/5 <fgadrat@genigraph.fr>
Hi Antonio,
Documentation states that the complement to "not" is "exists", whereas "not" keyword is used to match the absence of a fact (in Working Memory), and "exists" keyword is used to test the existence of one or more facts (in Working memory).
So if you want to test that a fact is not in working memory, then you should use the
not(MyClass()) pattern.
Hope this helps,
Francois.
Antonio Neto <antoniosouzaneto@gmail.com> a écrit :
> Any idea? Please...
>
> 2010/5/4 Antonio Neto <antoniosouzaneto@gmail.com>
>
>> Hi all,
>>
>> I don't know exactly why I have a problem in my "exists" function. I've
>> tried many different ways, but it does not work. Anybody could help me,
>> please?
>>
>>
>> I have the following rules:
>>
>> *rule "diff"
>> when
>> $var1: EReference(name == "employee")
>> $var2: EClass(name == "Company", EAllReferences contains $var1)
>> not (exists( EPackage(EClassifiers contains $var2 ) ))
>> then
>> insertLogical(new IntConstraintOccurrence("diff", 10));
>> end
>>
>> rule "ClassesNotReferenced"
>> when
>> $q1 : EClass();
>> $q2 : EPackage(EClassifiers contains $q1);
>> not( exists ( EReference(EType == $q1) ));
>> then
>> insertLogical(new IntConstraintOccurrence("ClassesNotReferenced",
>> 1, $q1));
>> end*
>>
>>
>> and in my facts (and my EPackage) I have 4 instances of EClass "Company"
>> with a EReference "employee", and another EClass "Person". I still have a
>> "move" that removes EClasses in my Drools Solver.
>>
>> I need to have only one classe "Company" after processing. But it removes
>> only the EClass "Person", when it was supposed to remove one EClass "Person"
>> and 3 ECLasses "Company". Leaving one EClass "Company" in the end.
>>
>> The problem is: when Drools tries to remove a EClass "Person" it thinks
>> that the EClass "Company" does not exists. But in fact there are 3 others.
>>
>> Any clue about it, please ?
>>
>> Thanks
>>
>> Bests regards
>>
>> Antonio
>>
>>
>>
>_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
"To understand what is recursion you must first understand recursion"
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users