[rules-users] How to catch Exceptions when firing rules
Knapp, Barry
barry.knapp at railinc.com
Fri Aug 24 11:50:47 EDT 2007
Yang,
If you want to evaluate the remaining rules in the transaction you will
need to catch and handle your errors rather than throw them to the
engine. This is consistent with other products, such as ILog JRules.
If you are catching and handling your own errors, you can always grab
the rule number and exception and add them to your reply.
____________________________________________________
Barry Knapp
Barry.Knapp at RailInc.com
919.651.5039
MSN Messenger barry25 at hotmail.com
From: rules-users-bounces at lists.jboss.org
[mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Yang Song
Sent: Friday, August 24, 2007 11:16 AM
To: Rules Users List
Subject: Re: [rules-users] How to catch Exceptions when firing rules
Thanks a lot for the answer, Mark. But I don't think it makes sense.
Because in some scenarios, you cannot guarantee the consequence part of
rule is 100% correct -- there could be errors happening in run-time
which are hard to predict, especially when a complex action or logic
will be executed as the concequece.
There should at least be some mechanisms to tell whoever fires the rule
that there is something wrong during the rule firing process, then and
he can do something, e.g. create a new session. Also it should enable
the rule firer to catch these exceptions and do the clean up work
silently -- instead of leaving these things on the stderr even cannot be
seen in the logs. This will make the program depending on the JBoss
Rules to be more robust.
What do you think? If JBoss Rules already has the ability to do this
job, can you please let me know?
Thanks again,
Yang
On 8/24/07, Mark Proctor <mproctor at codehaus.org> wrote:
Once an exception is thrown on a conseuqence the current session is
considered invalid. You'll need to add the try catch inside of the
actual consequence.
Mark
Yang Song wrote:
Hi,
Anyone knows how to catch the exception when firing the rules?
I wrapped the session.fireAllRules() method using try...catch, however
it doesn't work: when someone wrote bad code in the rule's action part,
the Exception will be thrown and printed to the stderr, and this will
make the rule engine stop working -- the try...catch outside doesn't
help anything.
If the exception thrown from the rule's action part can be caught
externally, the system can be protected from interrupting Exception.
try {
_log.debug("Firing rules in : " + getName());
session.fireAllRules();
} catch (Exception e) {
_log.info("Error when firing rules: ", e);
}
Thanks,
Yang
________________________________
_______________________________________________
rules-users mailing list
rules-users at lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users at lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20070824/da49055f/attachment.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 1864 bytes
Desc: image003.jpg
Url : http://lists.jboss.org/pipermail/rules-users/attachments/20070824/da49055f/attachment.jpe
More information about the rules-users
mailing list