SECA on invoke, and error handling

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
13 messages Options
Reply | Threaded
Open this post in threaded view
|

SECA on invoke, and error handling

Anne Jessel
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/
Reply | Threaded
Open this post in threaded view
|

Re: SECA on invoke, and error handling

Anne Jessel
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/
Reply | Threaded
Open this post in threaded view
|

Re: SECA on invoke, and error handling

BJ Freeman
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/
>>
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: SECA on invoke, and error handling

Scott Gray-2
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
Reply | Threaded
Open this post in threaded view
|

Re: SECA on invoke, and error handling

Anne Jessel
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/
Reply | Threaded
Open this post in threaded view
|

Re: SECA on invoke, and error handling

BJ Freeman
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/
>>
>>
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: SECA on invoke, and error handling

Scott Gray-2
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
Reply | Threaded
Open this post in threaded view
|

Re: SECA on invoke, and error handling

Anne Jessel
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/
Reply | Threaded
Open this post in threaded view
|

Re: SECA on invoke, and error handling

BJ Freeman
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/
>>
>>
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: SECA on invoke, and error handling

Jacques Le Roux
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/
>


Reply | Threaded
Open this post in threaded view
|

Re: SECA on invoke, and error handling

BJ Freeman
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/
>>
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: SECA on invoke, and error handling

Jacques Le Roux
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/
>>>
>>
>>
>>

Reply | Threaded
Open this post in threaded view
|

Re: SECA on invoke, and error handling

Anne Jessel
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/