Hi,
I managed to get something working for Compound Value Restrictions
using in using my own code, but I'd still rather not do it in code so
that it is easier for the business to write.
I added a function:
function boolean isIn(String value, String values) {
System.out.println("value:" + value + " values:" + values);
String[] parts = values.split(",");
List<String> partsList = new ArrayList();
for(String part : parts) {
partsList.add(part.trim());
}
return partsList.contains(value);
}
then in the rule table script part i did an eval:
eval(isIn($risk.getCoverType(), "$param"))
The above worked for me but I'd rather write
covertype in
and not have to write a function and eval statement.
Thanks
David
On 5 February 2011 09:05, David Smith <mail(a)davesmith.me.uk> wrote:
Hi,
I am pocing/learning drools and I am trying to implements Compound Value Restrictions
using 'In' in a decision table.
I can do this in a rule like
rule "CoverType Example"
when
$risk : Data( coverType in ("A","B", "C",
"D"))
then
result.add("CoverType was one of A, B C or D");
end
I can also implement this in a decision table in a long winded fashion
Condition, Action
Data, result
coverType, add("$param")
A, CoverType was one of A, B C or D
B, CoverType was one of A, B C or D
C, CoverType was one of A, B C or D
D, CoverType was one of A, B C or D
Is there a compact way to do this using a Compound Value Restriction using in?
Something like:
Condition, Action
Data, result
coverType in, add("$param")
"A,B,C,D", CoverType was one of A, B C or D
What goes in the script part "coverType in"?
The number of items in the list can be variable, so don't want to write something
that has $1, $2, $3, $4
Thanks
David