All,
I have the following rule which uses the collect function:
rule "Invalid RR Line"
salience 100
when
rrDetailLine : DetailLine(detailKeyRecNo:keyRecNo != null, lineNumber != null )
rrHeader : ArrayList( size == 0 ) from collect(RrHeader( keyRecNo != detailKeyRecNo ))
then
// logger.debug("Invalid RR Line: " + rrHeader.size());
logger.debug("Invalid RR Line: " +
rrDetailLine.getKeyRecNo());
logger.debug("Invalid RR Line: " + rrDetailLine.getLineNumber());
drools.halt();
end
What I am seeing is that if I only have 1 RrHeader in working memory this rule fails. Th reason I know that there is an RrHeader object is that I change the rule to the following:
rule "Invalid RR Line"
salience 100
when
rrDetailLine : DetailLine(detailKeyRecNo:keyRecNo != null, lineNumber != null )
rrHeader : RrHeader( keyRecNo != detailKeyRecNo )
then
// logger.debug("Invalid RR Line: " + rrHeader.size());
logger.debug("Invalid RR Line: " + rrDetailLine.getKeyRecNo());
logger.debug("Invalid RR Line: " +
rrDetailLine.getLineNumber());
drools.halt();
end
And it worked just fine.
Thoughts?
Ron