Thanks for you effort Anne.
Anne sent the following on 9/12/2011 7:43 PM: > 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/ >> >> > > >
