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"