Hi Edson,

Thanks for a quick reply.

Regarding the second second point I will open an issue in JIRA.

Regarding  the first one is that a bug as well? since I haven't assert any of the vehicle instances  I suppose the rule shouldn't fire right? But the rule is firing always.

Thanks,
sudhir.

On Tue, Feb 3, 2009 at 6:49 PM, Edson Tirelli <tirelli@post.com> wrote:

    Regarding 1, it is the expected behavior, since there is no vehicle in the wm whose model is not "bmw".

    Regarding 2, probably a bug. Can you please open a JIRA with a test case?

    []s
    Edson

2009/2/3 Sudhir M <sudhir.cse@gmail.com>
Hi ALL,

We are using drools 4.0.7  for one of our projects. We encountered some issues which I thought are strange.

1. When using FORALL on an entity for which we haven't asserted any of the instances in the working memory the rule always fires. I thought this rule should be evaluted to true only if all the asserted instances satisfy the condition and if we don't insert any of the instances in the working memory it should no fire the rule. Is this the expected behaviour or am I wrong?

  ex: rule "rule1"
when
forall (
Vehicle( model == "bmw" )
)

then
                System.out.println("in forall");end

2. When using 'contains' operator on array or collection of strings its working fine. But when we use it for an array of primitive type double it gives a classcastexception . Is auto boxing not supported? May be this is fine as it mentioned in the documentation that it works only on Objects. I tried using the array of Double objects, here it doesn't throw an excpetion but the rule wasn't firing. The behaviour was same even if I use a collection of Double objects. Is this a bug or am I missing something?

 ex: 
using Array

     rule "OrderArray"
when

Order(valueArray contains 0)

then
             System.out.println("OrderArray");
end.

using Collection


 rule "OrderList"
 when

 Order(valueList contains 0)

 then
             System.out.println("OrderList");
end.

May be for collections I can write it as below 


rule "OrderList"
when

$order : Order( $val:valueList)
              Double(doubleValue   ==0) from $val

then
       System.out.println("OrderList");
end.   but this working but not intuitive as these rules were maintained later by a business user it will be easy for him if we contains and also if we can directly use array instead of collections it would be a great as current BOM uses arrays everywhere.

Thanks,
sudhir.





_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users




--
 Edson Tirelli
 JBoss Drools Core Development
 JBoss, a division of Red Hat @ www.jboss.com

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users