Throwing exceptions in the consequence is not safe and not advisable.
    To stop the rules engine you can use the following statement in your consequence:

drools.halt();

    Use a fact, a call back, or an attribute to identify the problem you detected.

    []s
    Edson

2007/11/15, Ronald R. DiFrango <ron.difrango@gmail.com>:
All,

I have a situation where I want the rules execution to stop processing immediately when it encounters a situation like the following:

rule "Invalid RTV Line"
    salience 100
   
    when
        rtvDetailLine : DetailLine(detailRtvNumber:rtvNumber != null, lineNumber != null )
        rtvHeader : RtvHeader( rtvNumber != detailRtvNumber )
    then
        logger.debug("Invalid RTV Line");
        throw new RuntimeException("Invalid RTV Line");
end   

Basically this is a parent child relationship and under some circumstances the process that feeds data into the rules it corrupts this relationship.  I want to stop the rules process immediately and do nothing further.  As you see above, my first attempt is just throw a runtime exception that is caught/ logged and report by the calling program.  Does this seem like a reasonable approach or is there a better approach to do this?

Ron

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users




--
  Edson Tirelli
  Software Engineer - JBoss Rules Core Developer
  Office: +55 11 3529-6000
  Mobile: +55 11 9287-5646
  JBoss, a division of Red Hat @ www.jboss.com