Thanks Scott. But I now think it's more complicated than that. After BJ's comment I spent nearly all of today going through the code (ServiceDispatcher.java and friends) to try to answer my question. I had hoped to avoid doing that, for what I thought was a simple question.
It's looking like it wasn't a simple question after all. In the example you give, nothing after the "in-validate" event will be run (assuming all have run-on-error="false"). However if instead we set run-on-error="true" everywhere, then once the in-validate action has an error, validation of the IN data will be skipped, and the main service will *not* be run, but all the other SECAs will be run. Not what I would have expected. I intend continuing through ServiceDispatcher and friends tomorrow. Once I'm done, I'll write up something that will hopefully help the next person who has questions about secas and errors/failures. Cheers, Anne. On 6 September 2011 17:47, Scott Gray <[email protected]> wrote: > run-on-error="true", run this eca service even when the main service flow > contains an error condition > ignore-error="true", do not allow an error return from this service to cause > an error condition in the main service flow > > For example if you have a "validate" event eca with ignore-error="false" that > when executed it returns an error, and you then you have an "invoke" event > eca with run-on-error="false" then this eca will not be executed because an > error condition exists. > > Regards > Scott > > On 6/09/2011, at 11:56 AM, Anne wrote: > >> Does anyone know how "run-on-error" (eca tag) and "ignore-error" >> (action tag) attributes work for a SECA that is set to run at invoke >> time? The documentation's wording suggests to me it is talking about a >> commit or return SECA. >> >> Cheers, >> Anne. >> >> On 2 September 2011 15:35, Anne <[email protected]> wrote: >>> Hi >>> >>> I've successfully added secas many times before, but only on actions >>> that run after the service, such as "return" or "commit" events. I now >>> need an "invoke" seca, and it isn't working the way I expected. So I >>> re-read the documentation, and all that did was confuse me. :-( >>> Searching the mailing list showed me plenty of examples that did make >>> sense, but only for "return" or "commit" events, so they didn't help >>> me at all. >>> >>> At http://ofbiz.apache.org/docs/services.html#ECAs it says for the eca >>> tag "run-on-error Should this ECA run if there is an error in the >>> service". I know the service it refers to is the one named in the eca >>> tag. But if the event is set to invoke, the action service is run >>> before the eca service is invoked. Does this mean the run-on-error >>> attribute is irrelevant for an invoke event? >>> >>> Further down in the same page it says for the action tag "ignore-error >>> Ignore any errors caused by the action service. If true the error >>> will cause the original service to fail. Default true.". Does this >>> mean, if ignore-error is true and the "invoke" action service returns >>> an error, that: >>> >>> 1) the eca service will not be run, and an error will be returned ( I >>> think not, as the attribute name would then be wrong)? OR >>> >>> 2) the eca service will not be run, but a failure will be returned? OR >>> >>> 3) the eca service will be run, but a failure (or error) will be >>> returned no matter the result of the eca service? OR >>> >>> 4) the eca service will be run, and the return will be whatever the >>> eca service returns >>> >>> >>> What I'm trying to do is use a seca to check some things and not run >>> the main service if the seca action service fails/errors. Perhaps I >>> should be doing this on "auth" or "in-validate" events, but I'll still >>> need a better understanding of "run-on-error" and "ignore-error". >>> >>> Anyone able to explain? >>> >>> Cheers, >>> Anne. >>> >>> >>> >>> -- >>> Coherent Software Australia Pty Ltd >>> PO Box 2773 >>> Cheltenham Vic 3192 >>> Phone: (03) 9585 6788 >>> Fax: (03) 9585 1086 >>> Web: http://www.cohsoft.com.au/ >>> Email: [email protected] >>> >>> Bonsai ERP, the all-inclusive ERP system >>> http://www.bonsaierp.com.au/ >>> >> >> >> >> -- >> Coherent Software Australia Pty Ltd >> PO Box 2773 >> Cheltenham Vic 3192 >> Phone: (03) 9585 6788 >> Fax: (03) 9585 1086 >> Web: http://www.cohsoft.com.au/ >> Email: [email protected] >> >> Bonsai ERP, the all-inclusive ERP system >> http://www.bonsaierp.com.au/ > > -- Coherent Software Australia Pty Ltd PO Box 2773 Cheltenham Vic 3192 Phone: (03) 9585 6788 Fax: (03) 9585 1086 Web: http://www.cohsoft.com.au/ Email: [email protected] Bonsai ERP, the all-inclusive ERP system http://www.bonsaierp.com.au/
