]
Mario Fusco resolved DROOLS-3510.
---------------------------------
Resolution: Explained
The behaviour of suppressing a pattern when it has no constraint cannot be changed also
due to backward compatibility reason. It's easy to workaround this behaviour by adding
a fake constraint always evaluating to true as I demonstrated in the attached
DummyConstraints.xls file.
Decision table unable to generate rule for row with pattern without
constraint
------------------------------------------------------------------------------
Key: DROOLS-3510
URL:
https://issues.redhat.com/browse/DROOLS-3510
Project: Drools
Issue Type: Bug
Components: decision tables
Affects Versions: 7.15.0.Final
Reporter: Andre Piwoni
Assignee: Mario Fusco
Priority: Minor
Attachments: DummyConstraint.xls, MissingConstraint.xls,
failingDecisionTable.xlsx
When second condition refers to a field of a variable bound in first condition and there
exists row/rule without condition constraint than decision table compiler fails to
generate rules. See attachment.
Expected rules to be generated:
{code:java}
rule "Test_1"
when
$factA:FactA(hasSomething == "true")
$numberOfFactsB: Number(this > 0, this <= 1) from accumulate(FactB(x == 1) from
$factA.listOfFactsB,count(1))
then
insert(X);
end
rule "Test_2"
when
$factA:FactA(hasSomething == "true")
$numberOfFactsB: Number(this > 1, this <= 2) from accumulate(FactB(x == 1) from
$factA.listOfFactsB,count(1))
then
insert(X);
end
rule "Test_3"
when
$factA:FactA()
$numberOfFactsB: Number(this > 2, this <= 3) from accumulate(FactB(x == 1) from
$factA.listOfFactsB,count(1))
then
insert(Y);
end
{code}
Also, there does not seem an alternative way to generate following rule using decision
table:
{code:java}
rule "Test"
when
$factA:FactA($factsB: listOfFactsB)
$numberOfFactsB: Number(this > 1) from accumulate(FactB(x == 1) from
$factsB,count(1))
then
insert(Y);
end
{code}