[rules-users] how "exists" works exactly?

Antonio Neto antoniosouzaneto at gmail.com
Thu May 6 05:33:23 EDT 2010


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

Antonio


2010/5/6 miguel machado <mls.machado at gmail.com>

> Olá Antonio,
>
> // retract all of it just in case
> for (Object fact : ksession.getFactHandles()) {
>   ksession.retract((FactHandle) fact);
> }
>
> Hope this helps.
> _ miguel
>
>
>
> 2010/5/5 Antonio Neto <antoniosouzaneto at 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
>>
>> Antonio
>>
>> 2010/5/5 <fgadrat at 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 at gmail.com> a écrit :
>>>
>>>
>>> > Any idea? Please...
>>> >
>>> > 2010/5/4 Antonio Neto <antoniosouzaneto at 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 at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at 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 at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20100506/116ff18c/attachment.html 


More information about the rules-users mailing list