On Fri, Aug 7, 2009 at 10:33 AM, Kris Nuttycombe<[email protected]> wrote: > Hi, all, > > I'm trying to figure out a way to perform the following pattern match > in a "when" clause in a drl file. This is with Drools 4.x > > I have the following parameterized class (boilerplate omitted): > > abstract class Property<T> { > public String getName() { > //... > } > > public abstract T getValue(); > } > > and subclasses such as > > class BigDecimalProperty extends Property<BigDecimal> { > public BigDecimal getValue() { > //... > } > } > > I then have an interface as such: > > public interface Propertied { > public Set<Property<?>> getProperties(); > } > > and an implementing class: > > class Plan implements Propertied { > //... > } > > In my rules file, I would like to be able to perform the following > pattern match: > > rule "Ensure that plan minimum commitment has been met." > agenda-group "evaluate-balance" > when > $plan: Plan() > $minCommitProperty: BigDecimalProperty(name == > "minimum_commitment", $minCommitment : value) from $plan.properties > then > //... > end > > Of course, this results in a runtime rule compilation exception > complaining of type mismatch. Is there any better way to encode this > match than to add all properties to the working memory, match the > desired property as a first-class object, then match against the plan > with Plan(properties contains $minCommitProperty)?
One addendum - this isn't really a desirable approach since it would mean I would have to segment my working memory on a plan-by-plan basis, as various different minimum commitments. Kris _______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
