Advantage: You don't have to code a handler in each and every consequence.

A very simple strategy to keep on firing, in spite of exceptions:

import org.drools.runtime.rule.ConsequenceException;
while( true ){
    try {
      kSession.fireAllRules();
      break;
    } catch( ConsequenceException e ){
      System.err.println( "### Runtime exception ###" );
      e.printStackTrace( System.err );
    }
}

If your set of rules depends on normal completion of all consequences,
this may fail to produce expected results or worse, depending on where
in the aborted consequence the exception was thrown.

-W


2010/10/13 sumatheja <sumatheja@gmail.com>
Hi Wolfgang,
Whats the advantage of option 2 over 1? Can you give sample code for option 2??


2010/10/13 Wolfgang Laun <wolfgang.laun@gmail.com>
In drl, you could use
  dialect "java"
at outermost level, but one never does, because that's the default.

I'd use option (2).


-W

2010/10/13 sumatheja <sumatheja@gmail.com>
Hi Wolfgang,
                  I am actually writing all the rules in a .drl and importing them into a guvnor. I didn't mention the dialect explicitly anywhere in the code. Is the default dialect MVEL. Is there a way to make one time declaration of dialect in my case instead of declaring it for all the rules.

2010/10/13 Wolfgang Laun <wolfgang.laun@gmail.com>

I'd say you are using
   dialect "mvel"
There is no try/catch statement in MVEL. You have the options:

(1) Use Java, not MVEL.

(2) Surround the fireAllRules() with try/catch and put it in a loop that's terminated
if there is no exception.

-W


2010/10/13 sumatheja <sumatheja@gmail.com>
Hi All,
        I have a set of rules. After firing the rules if an exception occurs in a rule the following rules are not getting evaluated. So i tried writing a try catch block inside the consequence part of the rule, but then i get an error saying "'unable to build the consequence.[Error:was expecting type: java.lang.Object but found type:null]"

Here follows my code


rule 'Test rule'
ruleflow-group "Test Ruleflow"
no-loop
    when
        $c:Car()
        Driver()
       
    then
       try{
          $c.getModel()
          } catch (Exception Ee) {
           System.out.println("caught an exception: "+Ee.toString());
          }
end


However if i remove the try catch block it buils fine.

Can anyone let me know if i'm missing something here.

Thanks in advance :)
--
cheers
Sumatheja



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



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




--
cheers
Sumatheja Dasararaju



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



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




--
cheers
Sumatheja Dasararaju



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