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/

Reply via email to