You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2015/02/23 11:04:54 UTC

[09/79] [partial] incubator-taverna-language git commit: Revert "temporarily empty repository"

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/c08405cb/taverna-scufl2-t2flow/src/test/resources/as.txt
----------------------------------------------------------------------
diff --git a/taverna-scufl2-t2flow/src/test/resources/as.txt b/taverna-scufl2-t2flow/src/test/resources/as.txt
new file mode 100644
index 0000000..323db46
--- /dev/null
+++ b/taverna-scufl2-t2flow/src/test/resources/as.txt
@@ -0,0 +1,274 @@
+WorkflowBundle 'Workflow1'
+  MainWorkflow 'Workflow1'
+  Workflow 'Workflow1'
+    Out 'asdasd'
+    Processor 'Concatenate_two_strings'
+      In 'string1'
+      In 'string2'
+      Out 'output'
+    Processor 'Concatenate_two_strings_2'
+      In 'string1'
+      In 'string2'
+      Out 'output'
+    Processor 'Concatenate_two_strings_3'
+      In 'string1'
+      In 'string2'
+      Out 'output'
+    Processor 'Concatenate_two_strings_4'
+      In 'string1'
+      In 'string2'
+      Out 'output'
+    Processor 'Create_Lots_Of_Strings'
+      Out 'strings'
+    Processor 'Echo_List'
+      In 'inputlist'
+      Out 'outputlist'
+    Processor 'String_constant'
+      Out 'value'
+    Processor 'Workflow19'
+      In 'lk'
+      Out 'String_constant_value'
+      Out 'kk'
+    Links
+      'Concatenate_two_strings:output' -> 'Workflow19:lk'
+      'Concatenate_two_strings_2:output' -> 'Concatenate_two_strings:string2'
+      'Concatenate_two_strings_3:output' -> 'Echo_List:inputlist'
+      'Concatenate_two_strings_4:output' -> 'Echo_List:inputlist'
+      'Create_Lots_Of_Strings:strings' -> 'Concatenate_two_strings:string1'
+      'Create_Lots_Of_Strings:strings' -> 'Concatenate_two_strings_2:string1'
+      'Create_Lots_Of_Strings:strings' -> 'Concatenate_two_strings_2:string2'
+      'Echo_List:outputlist' -> 'asdasd'
+      'String_constant:value' -> 'Concatenate_two_strings_3:string2'
+      'String_constant:value' -> 'Concatenate_two_strings_4:string1'
+      'Workflow19:String_constant_value' -> 'Concatenate_two_strings_4:string2'
+      'Workflow19:kk' -> 'Concatenate_two_strings_3:string1'
+  Workflow 'Workflow19'
+    In 'lk'
+    Out 'String_constant_value'
+    Out 'kk'
+    Processor 'Concatenate_two_strings'
+      In 'string1'
+      In 'string2'
+      Out 'output'
+    Processor 'String_constant'
+      Out 'value'
+    Processor 'string1_value'
+      Out 'value'
+    Links
+      'Concatenate_two_strings:output' -> 'kk'
+      'String_constant:value' -> 'String_constant_value'
+      'lk' -> 'Concatenate_two_strings:string2'
+      'string1_value:value' -> 'Concatenate_two_strings:string1'
+    Controls
+      block 'String_constant' until 'Concatenate_two_strings' finish
+  MainProfile 'taverna-2.1.0'
+  Profile 'taverna-2.1.0'
+    Activity 'Concatenate_two_strings'
+      Type <http://ns.taverna.org.uk/2010/activity/beanshell>
+      In 'string1'
+      In 'string2'
+      Out 'output'
+    Activity 'Concatenate_two_strings1'
+      Type <http://ns.taverna.org.uk/2010/activity/beanshell>
+      In 'string1'
+      In 'string2'
+      Out 'output'
+    Activity 'Concatenate_two_strings_2'
+      Type <http://ns.taverna.org.uk/2010/activity/beanshell>
+      In 'string1'
+      In 'string2'
+      Out 'output'
+    Activity 'Concatenate_two_strings_3'
+      Type <http://ns.taverna.org.uk/2010/activity/beanshell>
+      In 'string1'
+      In 'string2'
+      Out 'output'
+    Activity 'Concatenate_two_strings_4'
+      Type <http://ns.taverna.org.uk/2010/activity/beanshell>
+      In 'string1'
+      In 'string2'
+      Out 'output'
+    Activity 'Create_Lots_Of_Strings'
+      Type <http://ns.taverna.org.uk/2010/activity/beanshell>
+      Out 'strings'
+    Activity 'Echo_List'
+      Type <http://ns.taverna.org.uk/2010/activity/beanshell>
+      In 'inputlist'
+      Out 'outputlist'
+    Activity 'String_constant'
+      Type <http://ns.taverna.org.uk/2010/activity/constant>
+      Out 'value'
+    Activity 'String_constant1'
+      Type <http://ns.taverna.org.uk/2010/activity/constant>
+      Out 'value'
+    Activity 'Workflow19'
+      Type <http://ns.taverna.org.uk/2010/activity/nested-workflow>
+      In 'lk'
+      Out 'String_constant_value'
+      Out 'kk'
+    Activity 'string1_value'
+      Type <http://ns.taverna.org.uk/2010/activity/constant>
+      Out 'value'
+    ProcessorBinding 'Concatenate_two_strings'
+      Activity 'Concatenate_two_strings'
+      Processor 'Workflow1:Concatenate_two_strings'
+      InputPortBindings
+        'string1' -> 'string1'
+        'string2' -> 'string2'
+      OutputPortBindings
+        'output' -> 'output'
+    ProcessorBinding 'Concatenate_two_strings1'
+      Activity 'Concatenate_two_strings1'
+      Processor 'Workflow19:Concatenate_two_strings'
+      InputPortBindings
+        'string1' -> 'string1'
+        'string2' -> 'string2'
+      OutputPortBindings
+        'output' -> 'output'
+    ProcessorBinding 'Concatenate_two_strings_2'
+      Activity 'Concatenate_two_strings_2'
+      Processor 'Workflow1:Concatenate_two_strings_2'
+      InputPortBindings
+        'string1' -> 'string1'
+        'string2' -> 'string2'
+      OutputPortBindings
+        'output' -> 'output'
+    ProcessorBinding 'Concatenate_two_strings_3'
+      Activity 'Concatenate_two_strings_3'
+      Processor 'Workflow1:Concatenate_two_strings_3'
+      InputPortBindings
+        'string1' -> 'string1'
+        'string2' -> 'string2'
+      OutputPortBindings
+        'output' -> 'output'
+    ProcessorBinding 'Concatenate_two_strings_4'
+      Activity 'Concatenate_two_strings_4'
+      Processor 'Workflow1:Concatenate_two_strings_4'
+      InputPortBindings
+        'string1' -> 'string1'
+        'string2' -> 'string2'
+      OutputPortBindings
+        'output' -> 'output'
+    ProcessorBinding 'Create_Lots_Of_Strings'
+      Activity 'Create_Lots_Of_Strings'
+      Processor 'Workflow1:Create_Lots_Of_Strings'
+      OutputPortBindings
+        'strings' -> 'strings'
+    ProcessorBinding 'Echo_List'
+      Activity 'Echo_List'
+      Processor 'Workflow1:Echo_List'
+      InputPortBindings
+        'inputlist' -> 'inputlist'
+      OutputPortBindings
+        'outputlist' -> 'outputlist'
+    ProcessorBinding 'String_constant'
+      Activity 'String_constant'
+      Processor 'Workflow1:String_constant'
+      OutputPortBindings
+        'value' -> 'value'
+    ProcessorBinding 'String_constant1'
+      Activity 'String_constant1'
+      Processor 'Workflow19:String_constant'
+      OutputPortBindings
+        'value' -> 'value'
+    ProcessorBinding 'Workflow19'
+      Activity 'Workflow19'
+      Processor 'Workflow1:Workflow19'
+      InputPortBindings
+        'lk' -> 'lk'
+      OutputPortBindings
+        'String_constant_value' -> 'String_constant_value'
+        'kk' -> 'kk'
+    ProcessorBinding 'string1_value'
+      Activity 'string1_value'
+      Processor 'Workflow19:string1_value'
+      OutputPortBindings
+        'value' -> 'value'
+    Configuration 'Concatenate_two_strings'
+      Type <http://ns.taverna.org.uk/2010/activity/beanshell#Config>
+      Configures 'activity/Concatenate_two_strings'
+        {"derivedFrom":"http://ns.taverna.org.uk/2010/activity/localworker/org.embl.ebi.escience.scuflworkers.java.StringConcat","script":"output = string1 + string2;"}
+    Configuration 'Concatenate_two_strings-proc'
+      Type <http://ns.taverna.org.uk/2010/scufl2#ProcessorConfig>
+      Configures 'processor/Concatenate_two_strings'
+        {}
+    Configuration 'Concatenate_two_strings-proc1'
+      Type <http://ns.taverna.org.uk/2010/scufl2#ProcessorConfig>
+      Configures 'processor/Concatenate_two_strings'
+        {}
+    Configuration 'Concatenate_two_strings1'
+      Type <http://ns.taverna.org.uk/2010/activity/beanshell#Config>
+      Configures 'activity/Concatenate_two_strings1'
+        {"derivedFrom":"http://ns.taverna.org.uk/2010/activity/localworker/org.embl.ebi.escience.scuflworkers.java.StringConcat","script":"output = string1 + string2;"}
+    Configuration 'Concatenate_two_strings_2'
+      Type <http://ns.taverna.org.uk/2010/activity/beanshell#Config>
+      Configures 'activity/Concatenate_two_strings_2'
+        {"derivedFrom":"http://ns.taverna.org.uk/2010/activity/localworker/org.embl.ebi.escience.scuflworkers.java.StringConcat","script":"output = string1 + string2;"}
+    Configuration 'Concatenate_two_strings_2-proc'
+      Type <http://ns.taverna.org.uk/2010/scufl2#ProcessorConfig>
+      Configures 'processor/Concatenate_two_strings_2'
+        {}
+    Configuration 'Concatenate_two_strings_3'
+      Type <http://ns.taverna.org.uk/2010/activity/beanshell#Config>
+      Configures 'activity/Concatenate_two_strings_3'
+        {"derivedFrom":"http://ns.taverna.org.uk/2010/activity/localworker/org.embl.ebi.escience.scuflworkers.java.StringConcat","script":"output = string1 + string2;"}
+    Configuration 'Concatenate_two_strings_3-proc'
+      Type <http://ns.taverna.org.uk/2010/scufl2#ProcessorConfig>
+      Configures 'processor/Concatenate_two_strings_3'
+        {}
+    Configuration 'Concatenate_two_strings_4'
+      Type <http://ns.taverna.org.uk/2010/activity/beanshell#Config>
+      Configures 'activity/Concatenate_two_strings_4'
+        {"derivedFrom":"http://ns.taverna.org.uk/2010/activity/localworker/org.embl.ebi.escience.scuflworkers.java.StringConcat","script":"output = string1 + string2;"}
+    Configuration 'Concatenate_two_strings_4-proc'
+      Type <http://ns.taverna.org.uk/2010/scufl2#ProcessorConfig>
+      Configures 'processor/Concatenate_two_strings_4'
+        {}
+    Configuration 'Create_Lots_Of_Strings'
+      Type <http://ns.taverna.org.uk/2010/activity/beanshell#Config>
+      Configures 'activity/Create_Lots_Of_Strings'
+        {"derivedFrom":"http://ns.taverna.org.uk/2010/activity/localworker/org.embl.ebi.escience.scuflworkers.java.EmitLotsOfStrings","script":"List strings = new ArrayList();\nfor (int i = 0; i < 40; i++) {\n\tstrings.add(\"String\" + i);\n}\n"}
+    Configuration 'Create_Lots_Of_Strings-proc'
+      Type <http://ns.taverna.org.uk/2010/scufl2#ProcessorConfig>
+      Configures 'processor/Create_Lots_Of_Strings'
+        {}
+    Configuration 'Echo_List'
+      Type <http://ns.taverna.org.uk/2010/activity/beanshell#Config>
+      Configures 'activity/Echo_List'
+        {"derivedFrom":"http://ns.taverna.org.uk/2010/activity/localworker/org.embl.ebi.escience.scuflworkers.java.EchoList","script":"outputlist = inputlist;"}
+    Configuration 'Echo_List-proc'
+      Type <http://ns.taverna.org.uk/2010/scufl2#ProcessorConfig>
+      Configures 'processor/Echo_List'
+        {}
+    Configuration 'String_constant'
+      Type <http://ns.taverna.org.uk/2010/activity/constant#Config>
+      Configures 'activity/String_constant'
+        {"string":"Add your own value here"}
+    Configuration 'String_constant-proc'
+      Type <http://ns.taverna.org.uk/2010/scufl2#ProcessorConfig>
+      Configures 'processor/String_constant'
+        {}
+    Configuration 'String_constant-proc1'
+      Type <http://ns.taverna.org.uk/2010/scufl2#ProcessorConfig>
+      Configures 'processor/String_constant'
+        {}
+    Configuration 'String_constant1'
+      Type <http://ns.taverna.org.uk/2010/activity/constant#Config>
+      Configures 'activity/String_constant1'
+        {"string":"Add your own value here"}
+    Configuration 'Workflow19'
+      Type <http://ns.taverna.org.uk/2010/activity/nested-workflow#Config>
+      Configures 'activity/Workflow19'
+        {"nestedWorkflow":"Workflow19"}
+    Configuration 'Workflow19-proc'
+      Type <http://ns.taverna.org.uk/2010/scufl2#ProcessorConfig>
+      Configures 'processor/Workflow19'
+        {}
+    Configuration 'string1_value'
+      Type <http://ns.taverna.org.uk/2010/activity/constant#Config>
+      Configures 'activity/string1_value'
+        {"string":"kjkj"}
+    Configuration 'string1_value-proc'
+      Type <http://ns.taverna.org.uk/2010/scufl2#ProcessorConfig>
+      Configures 'processor/string1_value'
+        {}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/c08405cb/taverna-scufl2-t2flow/src/test/resources/beanshell-deps.t2flow
----------------------------------------------------------------------
diff --git a/taverna-scufl2-t2flow/src/test/resources/beanshell-deps.t2flow b/taverna-scufl2-t2flow/src/test/resources/beanshell-deps.t2flow
new file mode 100755
index 0000000..3d52c25
--- /dev/null
+++ b/taverna-scufl2-t2flow/src/test/resources/beanshell-deps.t2flow
@@ -0,0 +1,47 @@
+<workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.3.0"><dataflow id="9a455aad-8690-4a1a-862b-a5d5feee84cf" role="top"><name>Workflow1</name><inputPorts /><outputPorts /><processors><processor><name>A_C_workflow</name><inputPorts /><outputPorts /><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>beanshell-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.beanshell.BeanshellActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns="">
+  <inputs />
+  <outputs />
+  <classLoaderSharing>workflow</classLoaderSharing>
+  <localDependencies>
+    <string>libraryA.jar</string>
+    <string>libraryC.jar</string>
+  </localDependencies>
+  <artifactDependencies />
+  <script>A C workflow</script>
+  <dependencies />
+</net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+  <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="
 ">
+  <backoffFactor>1.0</backoffFactor>
+  <initialDelay>1000</initialDelay>
+  <maxDelay>5000</maxDelay>
+  <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy /></iteration></iterationStrategyStack></processor><processor><name>B_system</name><inputPorts /><outputPorts /><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>beanshell-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.beanshell.BeanshellActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns="">
+  <inputs />
+  <outputs />
+  <classLoaderSharing>system</classLoaderSharing>
+  <localDependencies>
+    <string>libraryB.jar</string>
+  </localDependencies>
+  <artifactDependencies />
+  <script>A C workflow</script>
+  <dependencies />
+</net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+  <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="
 ">
+  <backoffFactor>1.0</backoffFactor>
+  <initialDelay>1000</initialDelay>
+  <maxDelay>5000</maxDelay>
+  <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy /></iteration></iterationStrategyStack></processor></processors><conditions /><datalinks /><annotations><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
+  <annotationAssertions>
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
+        <identification>9a455aad-8690-4a1a-862b-a5d5feee84cf</identification>
+      </annotationBean>
+      <date>2011-09-02 12:07:29.382 BST</date>
+      <creators />
+      <curationEventList />
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
+  </annotationAssertions>
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2></annotations></dataflow></workflow>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/c08405cb/taverna-scufl2-t2flow/src/test/resources/component_simple.t2flow
----------------------------------------------------------------------
diff --git a/taverna-scufl2-t2flow/src/test/resources/component_simple.t2flow b/taverna-scufl2-t2flow/src/test/resources/component_simple.t2flow
new file mode 100644
index 0000000..e240e38
--- /dev/null
+++ b/taverna-scufl2-t2flow/src/test/resources/component_simple.t2flow
@@ -0,0 +1,35 @@
+<workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-digitalpreservation-2.5.0"><dataflow id="b521b6df-57f3-4eed-8536-c4c1a044dfcc" role="top"><name>Workflow1</name><inputPorts><port><name>doc1</name><depth>0</depth><granularDepth>0</granularDepth><annotations /></port><port><name>doc2</name><depth>0</depth><granularDepth>0</granularDepth><annotations /></port></inputPorts><outputPorts><port><name>docOut</name><lastPredictedDepth>0</lastPredictedDepth><annotations /></port></outputPorts><processors><processor><name>combiner</name><inputPorts><port><name>metricDocument1</name><depth>0</depth></port><port><name>metricDocument2</name><depth>0</depth></port></inputPorts><outputPorts><port><name>combinedMetricDocument</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.component</group><artifact>component-activity</artifact><version>1.5</version></raven><class>ne
 t.sf.taverna.t2.component.ComponentActivity</class><inputMap><map from="metricDocument1" to="metricDocument1" /><map from="metricDocument2" to="metricDocument2" /></inputMap><outputMap><map from="combinedMetricDocument" to="combinedMetricDocument" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.component.ComponentActivityConfigurationBean xmlns="">
+  <registryBase>http://www.myexperiment.org</registryBase>
+  <familyName>SCAPE Utility Components</familyName>
+  <componentName>MeasuresDocCombiner</componentName>
+  <componentVersion>1</componentVersion>
+</net.sf.taverna.t2.component.ComponentActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.5</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+  <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.5</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.5</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.5</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="
 ">
+  <backoffFactor>1.0</backoffFactor>
+  <initialDelay>1000</initialDelay>
+  <maxDelay>5000</maxDelay>
+  <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.5</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="metricDocument1" depth="0" /><port name="metricDocument2" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor></processors><conditions /><datalinks><datalink><sink type="processor"><processor>combiner</processor><port>metricDocument1</port></sink><source type="dataflow"><port>doc1</port></source></datalink><datalink><sink type="processor"><processor>combiner</processor><port>metricDocument2</port></sink><source type="dataflow"><port>doc2</port></source></datalink><datalink><sink type="dataflow"><por
 t>docOut</port></sink><source type="processor"><processor>combiner</processor><port>combinedMetricDocument</port></source></datalink></datalinks><annotations><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
+  <annotationAssertions>
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
+        <identification>b521b6df-57f3-4eed-8536-c4c1a044dfcc</identification>
+      </annotationBean>
+      <date>2014-06-30 10:56:39.855 UTC</date>
+      <creators />
+      <curationEventList />
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
+  </annotationAssertions>
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
+  <annotationAssertions>
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
+        <identification>242c7677-5908-4036-8bb5-9deb56f00d3f</identification>
+      </annotationBean>
+      <date>2014-06-30 10:47:40.365 UTC</date>
+      <creators />
+      <curationEventList />
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
+  </annotationAssertions>
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2></annotations></dataflow></workflow>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/c08405cb/taverna-scufl2-t2flow/src/test/resources/dataflow_link_then_merge.t2flow
----------------------------------------------------------------------
diff --git a/taverna-scufl2-t2flow/src/test/resources/dataflow_link_then_merge.t2flow b/taverna-scufl2-t2flow/src/test/resources/dataflow_link_then_merge.t2flow
new file mode 100644
index 0000000..62206b6
--- /dev/null
+++ b/taverna-scufl2-t2flow/src/test/resources/dataflow_link_then_merge.t2flow
@@ -0,0 +1,66 @@
+<workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.2.0"><dataflow id="aaecfd60-6456-4573-a25c-bcb841050601" role="top"><name>Workflow1</name><inputPorts /><outputPorts><port><name>a</name><annotations /></port><port><name>b</name><annotations /></port></outputPorts><processors><processor><name>Echo_List</name><inputPorts><port><name>inputlist</name><depth>1</depth></port></inputPorts><outputPorts><port><name>outputlist</name><depth>1</depth><granularDepth>1</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="inputlist" to="inputlist" /></inputMap><outputMap><map from="outputlist" to="outputlist" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurati
 onBean xmlns="">
+  <localworkerName>org.embl.ebi.escience.scuflworkers.java.EchoList</localworkerName>
+  <script>outputlist = inputlist;</script>
+  <dependencies />
+  <classLoaderSharing>workflow</classLoaderSharing>
+  <localDependencies />
+  <artifactDependencies />
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>[B</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>inputlist</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+      <granularDepth>1</granularDepth>
+      <name>outputlist</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+  </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+  <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="
 ">
+  <backoffFactor>1.0</backoffFactor>
+  <initialDelay>1000</initialDelay>
+  <maxDelay>5000</maxDelay>
+  <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="inputlist" depth="1" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>a</name><inputPorts /><outputPorts><port><name>value</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>stringconstant-activity</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class><inputMap /><outputMap><map from="value" to="value" />
 </outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
+  <value>a</value>
+</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+  <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="
 ">
+  <backoffFactor>1.0</backoffFactor>
+  <initialDelay>1000</initialDelay>
+  <maxDelay>5000</maxDelay>
+  <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy /></iteration></iterationStrategyStack></processor><processor><name>b</name><inputPorts /><outputPorts><port><name>value</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>stringconstant-activity</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class><inputMap /><outputMap><map from="value" to="value" /></outputMap><configBean encoding="xstream"><net.sf.taverna.
 t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
+  <value>b</value>
+</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
+  <maxJobs>1</maxJobs>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="
 ">
+  <backoffFactor>1.0</backoffFactor>
+  <initialDelay>1000</initialDelay>
+  <maxDelay>5000</maxDelay>
+  <maxRetries>0</maxRetries>
+</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy /></iteration></iterationStrategyStack></processor></processors><conditions /><datalinks><datalink><sink type="dataflow"><port>b</port></sink><source type="processor"><processor>b</processor><port>value</port></source></datalink><datalink><sink type="merge"><port>b</port></sink><source type="processor"><processor>a</processor><port>value</port></source></datalink><datalink><sink type="merge"><processor>Echo_List</processor><port>inputlist</port></sink><source type="processor"><processor>b</processor><port>value</port></source></datalink><datalin
 k><sink type="merge"><processor>Echo_List</processor><port>inputlist</port></sink><source type="processor"><processor>a</processor><port>value</port></source></datalink><datalink><sink type="dataflow"><port>a</port></sink><source type="processor"><processor>Echo_List</processor><port>outputlist</port></source></datalink></datalinks><annotations><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
+  <annotationAssertions>
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
+        <identification>aaecfd60-6456-4573-a25c-bcb841050601</identification>
+      </annotationBean>
+      <date>2010-10-29 09:52:34.321 BST</date>
+      <creators />
+      <curationEventList />
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
+  </annotationAssertions>
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2></annotations></dataflow></workflow>
\ No newline at end of file