It's already in FAQ, and there is a link to Service Engine (SECA) in the page
Jacques
From: "BJ Freeman" <[email protected]>
oops this is the one I meant to suggest the link to service engine and FAQ
Jacques Le Roux sent the following on 9/13/2011 10:24 PM:
Thanks Anne,
I don't see a better place either.
Jacques
From: "Anne" <[email protected]>
I've added a page to the wiki at
https://cwiki.apache.org/confluence/display/OFBIZ/SECAs+and+Error+and+Failure+Management
summarising my findings on secas and error/failure handling.
I couldn't find an obvious place to link to it from, so as yet there
are no links to it from anywhere else in the wiki. Does anyone have
any suggestions? If no one has a better idea, I could add a link from
the Misc section of the FAQ.
Comments/corrections/suggestions welcome.
Cheers,
Anne.
On 6 September 2011 20:58, Scott Gray <[email protected]> wrote:
The main service will never run if an error condition exists, I don't
think that is something I would consider unexpected. I'm not really
sure why the context validation is skipped but I don't think it
matters much since the main service won't be run anyway. But anyway,
just consider the main service to be set as run-on-error="false"
permanently.
Aside from this there is the whole issue of transactions to consider,
if a service error results in a transaction rollback then that will
effect all other service calls executed within the same transaction.
Regards
Scott
On 6/09/2011, at 10:19 PM, Anne wrote:
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/
--
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/