[rules-users] Retract in a function

Ronald R. DiFrango ron.difrango at gmail.com
Wed Oct 3 09:01:08 EDT 2007


All,

I have the following function that I call from all of my rules.  When I
execute this function, I need to retract that object from working memory.
The problem is that when I insert the comment line below I get a compiler
error saying that I can only issue a retract on fact handles.

Here is an example of my rule plus the function:

rule "QTY Percentage tolerance - Approval"
    salience -25
    no-loop  true
    when
        rtvHeader : RtvHeader( totalAmount : totalAmount, status not in (
StatusConstants.MATCHED, StatusConstants.APPROVAL) )
        repaymentCode : RepaymentCode( code == "QTY", matchApprv == "Y",
tolDollar ==0, tolPercent != 0, tolPercent : tolPercent )
        qtyOutput : QTYOutput( sumRTVQty : sumRTVQty , sumCmAndRnr :
sumCmAndRnr )
        eval( qtyPercentage(qtyOutput, totalAmount, tolPercent) )
    then
        System.out.println("QTY Percentage tolerance - No Approval");
        rtvHeader.setStatus(StatusConstants.APPROVAL);
        openRTVLines(drools.getWorkingMemory(),
drools.getWorkingMemory().getQueryResults(
"Open RTV Lines" ), StatusConstants.MATCHED_WITHIN_TOLERANCE);
end

function void openRTVLines(WorkingMemory workingMemory, QueryResults
results, String status)
{
    System.out.println( "We have " + results.size() + " Open RTV Lines" );
    for ( Iterator it = results.iterator(); it.hasNext(); ) {
        QueryResult result = ( QueryResult ) it.next();
        DetailLine line = ( DetailLine ) result.get( "line" );
        line.setStatus(status);

        // I need to add this in
        // workingMemory.retract(line);
    }
}

Thanks in advance,

Ron
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20071003/98cbf957/attachment.html 


More information about the rules-users mailing list