Hello,
I want to use StatelessSession with spreadsheet. I wrote few rules in DRL, but I cant do it in spreadsheet. First I want to present rules and class that is used by rules:
public class CProduct {
private String name;
private int value;
public CProduct ()
{
name = "empty";
value = 0;
}
public CProduct (String name, int value)
{
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
Rules:
rule "Case A"
salience 1
activation-group "g1"
when
p : CProduct( name == "A" )
then
System.out.println("Special product: " + p.getName());
end
rule "Case B"
salience 1
activation-group "g1"
when
p : CProduct( name == "B" )
then
System.out.println("Special product: " + p.getName());
end
rule "Case general"
salience 0
activation-group "g1"
when
p : CProduct( )
then
System.out.println("Normal product: " + p.getName());
end
Using stateLessSession, salience, and activation-group I can determine, that only one rule is going to be fired for each CProduct. And with salience param, I can determine priority (it is important to get special products first).
Now I am going to write those rules in spreadsheet. But I can't define rule "Case general".
|
CONDITION |
ACTION |
ACTIVATION-GROUP |
PRIORITY |
|
p:CProduct |
|
|
|
|
name |
System.out.println("$param"); |
|
|
Rules names
|
Product name |
what to print
|
|
|
Case A
|
A
|
Special A
|
G1 |
1 |
Case B
|
B |
Special B |
G1 |
1 |
General case
|
|
normal |
G1 |
0 |
But when I am going to use the spreadsheet, I get this error:
"p cannot be resolved"
Problem disappears, when I fill "Product name" in "General case".
But I want it to be empty, because I want to fire rule "General case" when rules "Case A" & "Case B" won't fire for any object's name.
Thanks, Tom.