On Mon, Sep 20, 2010 at 07:29, Ketan Maheshwari <[email protected]> wrote: > A question to the language developers of Taverna: > Is there a way to verify that the semantics are preserved for a given > workflow when translated from scufl to t2flow/scufl2 syntax?
There's not a programmatic way to detect non-preservation at the moment, but if you check out http://www.mygrid.org.uk/dev/wiki/display/developer/Differences+between+Taverna+1+and+Taverna+2+workflows it will describe which cases do not map 1:1. In Scufl2 we'll try to do scufl-parsing directly (instead of using legacy T1 libraries as of the moment), which should make it easier to give warnings when translating a workflow which can't map 1:1 to Scufl2. As a thumb rule, here are the biggest changes: * Merged links to a port have a predictable, defined order in T2. In T1 it was the first finished upstream execution that got first into the merge. * Iteration strategies are always explicit. Taverna 1 did a kind of auto-generated cross product determined by the order of the connections of the ports. Taverna 2 translation now honours this, and generates an explicit iteration strategy that matches Taverna 1. * Note that T1 had a bug in iteration strategies where if you open a workflow, save it, and then open it again, the order of the ports could be flipped upside down, iterating outermost port first instead of innermost port. We've made the T2 translator read in the such strategies upside-down so that when doing load->run in both Taverna 1 and Taverna 2, it will give the same results. * Coordination links could be used for branching Taverna 1, as Taverna 1 allowed several links to the same input port without having a merge. Only the "first" value received would be passed on. This was used with coordination links to hack a form of branching, by making one branch of the workflow never execute. In Taverna 2 all branches execute, but might be producing/forwarding errors. * On implicit iterations in Taverna 2, the next processors will start executing the first outputs of previous processors, even if the upstream processors are still iterating over the link. To avoid this and finish the full iteration in each processor, add RunAfter-links parallel to each data link. (We could make this an option to SCULFL2 translation) * Errors in an individual iteration will not fail the whole iteration, just that particular iteration. An error document is inserted inplace of the service outputs. This also means that coordination links will be triggered even when there's an error in T2, as the iteration will still finish normally. -- Stian Soiland-Reyes, myGrid team School of Computer Science The University of Manchester ------------------------------------------------------------------------------ Start uncovering the many advantages of virtual appliances and start using them to simplify application deployment and accelerate your shift to cloud computing. http://p.sf.net/sfu/novell-sfdev2dev _______________________________________________ taverna-hackers mailing list [email protected] Web site: http://www.taverna.org.uk Mailing lists: http://www.taverna.org.uk/about/contact-us/ Developers Guide: http://www.taverna.org.uk/developers/
