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(a)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(a)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(a)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(a)gmail.com> a écrit :
>>
>>
>> > Any idea? Please...
>> >
>> > 2010/5/4 Antonio Neto <antoniosouzaneto(a)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(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)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(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users