Re: [rules-users] collection question

2010-07-21 Thread javaj

Thanks everyone for your suggestions.  I agree with Earnie that Steve's
example is very clean and works like a charm.

J
-- 
View this message in context: 
http://drools-java-rules-engine.46999.n3.nabble.com/collection-question-tp982769p984439.html
Sent from the Drools - User mailing list archive at Nabble.com.
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


[rules-users] collection question

2010-07-20 Thread javaj

I'm trying to write a rule to add an object to a collection if the collection
already contained a certain object with a specific attribute.

I developed a small example so maybe that will make more sense:

Use Case: In a product shipping applicaiton, anytime a product with the name
"cd1" is in the shipping order, a bonus product named "bonus_cd" needs to be
added to the shipping order.  The bonus cd should not be added if it's
already in the shipping order.

Shipping Order:

public class ShippingOrder {

private Set products;

public ShippingOrder() {}

public Set getProducts() {
return products;
}

public void setProducts(Set products) {
this.products = products;
}

}

Product:

public class Product {

private String name;

public Product(){}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}


Rule:

rule "AddBonusCd"

when
$so : ShippingOrder()
$productList : ArrayList(size == 1) from collect( Product(name 
matches
"cd1|bonus_cd") from $so.products)
then
System.out.println("Adding Bonus Cd");

Set productSet = new 
HashSet($so.getProducts());

Product bonusCd = new Product();
bonusCd.setName("bonus_cd");
productSet.add(bonusCd);

modify($so) {
setProducts(productSet);
}
end

The Shipping Order object is inserted as the fact.

The rule is valid if only cd1 or cd_bonus is in the shipping order.  I only
want the rule to run when cd1 is in the product set but cd_bonus is not. 
Makes sense?

Thanks,
J
-- 
View this message in context: 
http://drools-java-rules-engine.46999.n3.nabble.com/collection-question-tp982769p982769.html
Sent from the Drools - User mailing list archive at Nabble.com.
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users