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