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/

Reply via email to