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: [hidden email] Bonsai ERP, the all-inclusive ERP system http://www.bonsaierp.com.au/ |
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 <[hidden email]> 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: [hidden email] > > 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: [hidden email] Bonsai ERP, the all-inclusive ERP system http://www.bonsaierp.com.au/ |
best docs are in
framework\service\src\org\ofbiz\service\eca\ServiceEcaAction.java and framework\service\src\org\ofbiz\service\eca\ServiceEcaRule.java Anne sent the following on 9/5/2011 4:56 PM: > 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 <[hidden email]> 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: [hidden email] >> >> Bonsai ERP, the all-inclusive ERP system >> http://www.bonsaierp.com.au/ >> > > > |
In reply to this post by Anne Jessel
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 <[hidden email]> 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: [hidden email] >> >> 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: [hidden email] > > Bonsai ERP, the all-inclusive ERP system > http://www.bonsaierp.com.au/ smime.p7s (3K) Download Attachment |
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 <[hidden email]> 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 <[hidden email]> 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: [hidden email] >>> >>> 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: [hidden email] >> >> 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: [hidden email] Bonsai ERP, the all-inclusive ERP system http://www.bonsaierp.com.au/ |
Also if the parameter is not specifically set false, it is evaluated true.
Anne sent the following on 9/6/2011 3:19 AM: > 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 <[hidden email]> 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 <[hidden email]> 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: [hidden email] >>>> >>>> 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: [hidden email] >>> >>> Bonsai ERP, the all-inclusive ERP system >>> http://www.bonsaierp.com.au/ >> >> > > > |
In reply to this post by Anne Jessel
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 <[hidden email]> 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 <[hidden email]> 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: [hidden email] >>>> >>>> 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: [hidden email] >>> >>> 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: [hidden email] > > Bonsai ERP, the all-inclusive ERP system > http://www.bonsaierp.com.au/ smime.p7s (3K) Download Attachment |
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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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: [hidden email] >>>>> >>>>> 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: [hidden email] >>>> >>>> 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: [hidden email] >> >> 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: [hidden email] Bonsai ERP, the all-inclusive ERP system http://www.bonsaierp.com.au/ |
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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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: [hidden email] >>>>>> >>>>>> 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: [hidden email] >>>>> >>>>> 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: [hidden email] >>> >>> Bonsai ERP, the all-inclusive ERP system >>> http://www.bonsaierp.com.au/ >> >> > > > |
Administrator
|
In reply to this post by Anne Jessel
Thanks Anne,
I don't see a better place either. Jacques From: "Anne" <[hidden email]> > 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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> 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: [hidden email] >>>>>> >>>>>> 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: [hidden email] >>>>> >>>>> 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: [hidden email] >>> >>> 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: [hidden email] > > Bonsai ERP, the all-inclusive ERP system > http://www.bonsaierp.com.au/ > |
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" <[hidden email]> >> 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 <[hidden email]> 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 <[hidden email]> >>>> 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 <[hidden email]> 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: [hidden email] >>>>>>> >>>>>>> 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: [hidden email] >>>>>> >>>>>> 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: [hidden email] >>>> >>>> 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: [hidden email] >> >> Bonsai ERP, the all-inclusive ERP system >> http://www.bonsaierp.com.au/ >> > > > |
Administrator
|
It's already in FAQ, and there is a link to Service Engine (SECA) in the page
Jacques From: "BJ Freeman" <[hidden email]> > 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" <[hidden email]> >>> 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 <[hidden email]> 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 <[hidden email]> >>>>> 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 <[hidden email]> 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: [hidden email] >>>>>>>> >>>>>>>> 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: [hidden email] >>>>>>> >>>>>>> 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: [hidden email] >>>>> >>>>> 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: [hidden email] >>> >>> Bonsai ERP, the all-inclusive ERP system >>> http://www.bonsaierp.com.au/ >>> >> >> >> |
I added it to the misc portion of the faq, because I didn't have a
better idea. I thought of adding it to the service engine page, but I don't have permissions to edit that one. Thanks everyone. Cheers, Anne. On 14 September 2011 18:54, Jacques Le Roux <[hidden email]> wrote: > It's already in FAQ, and there is a link to Service Engine (SECA) in the > page > > Jacques > > From: "BJ Freeman" <[hidden email]> >> >> 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" <[hidden email]> >>>> >>>> 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 <[hidden email]> >>>> 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 <[hidden email]> >>>>>> 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 <[hidden email]> 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: [hidden email] >>>>>>>>> >>>>>>>>> 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: [hidden email] >>>>>>>> >>>>>>>> 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: [hidden email] >>>>>> >>>>>> 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: [hidden email] >>>> >>>> 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: [hidden email] Bonsai ERP, the all-inclusive ERP system http://www.bonsaierp.com.au/ |
Free forum by Nabble | Edit this page |