If the error is caused by the occasional failure, such as due to
network variations, etc, then you can improve this by setting the
Retry setting on services that call over the network:

http://www.mygrid.org.uk/dev/wiki/display/taverna/Advanced+workflow+configuration+video#Advancedworkflowconfigurationvideo-Retries


However, if the service for certain values always will fail, you would
need a "filter/replace error" shim. This is unfortunately not
currently easy to do with Beanshell script as Taverna by default
prevents execution on data with errors.


When we earlier talked to some users about what options they wanted
for error handling, we considered:
a) Removing errors from the list  (skipping them)
b) Replacing errors with a replacement input value, e.g.
"myStandardGene", empty string, etc.
c) Replacing calls on errors with a replacement output value, e.g. "--
ERROR HERE!!--"

The consideration was not conclusive, but roughly each of these come
with issues:
a) Breaks the order of the list - result in position 5 might now come
from position 7 in incoming list (5 & 6 were errors) - which makes it
hard to use with later dot products

b) Not sure which "fake input" would work well in many cases - and
could end up with "fake data" sneaking its way into the results

c) "Error message" values could be passed on to the next service,
which don't know it's an error, and falls over with new errors or
strange outputs, but these are no longer linked back to original
error.


As engineers we thought that we could address c) by giving out the
replacement output as "An error with a replacement value". The service
which could fail would have an error handling configuration with "[x]
Substitute errors with __my_value______"

Thus the default for downstream services would be to fail (as of now)
- but with a possible error handling configuration to "[x] Allow error
replacement values" which would run using the provided replacement
value.  We were not sure if the outputs of such processors should then
be normal values or "errors with replacement values".

We did not proceed with implementing any of these options, as they
seemed to require a fair bit of effort and raised more open questions.



Now - for your case I assume that as you are just concatenating
strings as the final step, you are not overly concerned with these
workflow implications for the general case, as you only want to deal
with or handling the errors that have occurred before giving a single
line-separated string back to the user.

This is the kind of practical use case that we would have needed back
then - this is much simpler to implement, but would unfortunately
require writing a Taverna plugin or patch.

I've registered this as a New Feature request:
http://www.mygrid.org.uk/dev/issues/browse/T2-1991
.. but I can't give any promises as to when it would be implemented.


The only workaround I can think of would be to use the "Failover"
mechanism - specifying an alternate service to the one that
occasionally fails. Unfortunately the Taverna 2 user interface does
not yet show this feature -
http://www.mygrid.org.uk/dev/issues/browse/T2-294 suggests creating
that processor in Taverna 1 and then use Copy and Paste. See
http://www.mygrid.org.uk/usermanual1.7/workbench_windows.html#ame_alternate_processors
for Taverna 1 documentation.



See attached where I have manually edited the .t2flow to add a string
constant as an alternate service to "Sometime fails". (Note that the
alternate service would need to provide values for all the service
outputs - and at the same list depth)




On Fri, Sep 9, 2011 at 10:03, Marta Villegas <[email protected]> wrote:
> Hi,
>
> I'm using "merge string list to a string" component to concatenate a list of
> outputs in most of our workflows. We do that because it's more user friendly
> to copy that output with all results than coping each element of the list.
> We work with lists with more than 500 elements.
>
> The problem comes when some elements have an error, then "merge string list"
> is not able to create the concatenation and gives an error.
> Here I attach an example workflow that shows the problem...
>
> the exected result without errors would be a list like:
> String0
> String1
> String2
> String3
> ....
>
> with errors the result now is:
> [an error message]
>
> I would like to have:
> String0
> String1
> [error]
> String3
> ....
>
> Is there any way to do this?
>
> Thanks in advance.
>
>
> --
> Marta Villegas
> [email protected]
>
> ------------------------------------------------------------------------------
> Why Cloud-Based Security and Archiving Make Sense
> Osterman Research conducted this study that outlines how and why cloud
> computing security and archiving is rapidly being adopted across the IT
> space for its ease of implementation, lower cost, and increased
> reliability. Learn more. http://www.accelacomm.com/jaw/sfnl/114/51425301/
> _______________________________________________
> taverna-users mailing list
> [email protected]
> [email protected]
> Web site: http://www.taverna.org.uk
> Mailing lists: http://www.taverna.org.uk/about/contact-us/
>
>



-- 
Stian Soiland-Reyes, myGrid team
School of Computer Science
The University of Manchester

Attachment: merge_string_list_with_errors_4.t2flow
Description: Binary data

------------------------------------------------------------------------------
Why Cloud-Based Security and Archiving Make Sense
Osterman Research conducted this study that outlines how and why cloud
computing security and archiving is rapidly being adopted across the IT 
space for its ease of implementation, lower cost, and increased 
reliability. Learn more. http://www.accelacomm.com/jaw/sfnl/114/51425301/
_______________________________________________
taverna-users mailing list
[email protected]
[email protected]
Web site: http://www.taverna.org.uk
Mailing lists: http://www.taverna.org.uk/about/contact-us/

Reply via email to