changed output to string instead of list of strings
authorCherian Mathew <c.mathew@bgbm.org>
Wed, 11 Apr 2012 09:01:56 +0000 (09:01 +0000)
committerCherian Mathew <c.mathew@bgbm.org>
Wed, 11 Apr 2012 09:01:56 +0000 (09:01 +0000)
DataCleaning/workflows/nested/grefine/grefine.t2flow

index 4d130234940d144aceb2efcb99aabdbcd002a84d..f9a3841f26d76af316576827d3a0568539e2ce4a 100755 (executable)
@@ -1,4 +1,4 @@
-<workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.3.0"><dataflow id="37f97407-8a01-47b7-830f-23f861279f08" role="top"><name>Workflow1</name><inputPorts /><outputPorts><port><name>proj_percent</name><annotations /></port><port><name>upload_status</name><annotations /></port><port><name>export</name><annotations /></port></outputPorts><processors><processor><name>Init_Job_Service</name><inputPorts /><outputPorts><port><name>responseBody</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>rest-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.rest.RESTActivity</class><inputMap /><outputMap><map from="responseBody" to="responseBody" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.rest.RESTActivityConfigurationBean xmlns="">\r
+<workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.3.0"><dataflow id="e91435eb-cd87-4519-abf4-f4e0d4b3c461" role="top"><name>Workflow1</name><inputPorts /><outputPorts><port><name>proj_percent</name><annotations /></port><port><name>upload_status</name><annotations /></port><port><name>csv_output</name><annotations /></port><port><name>interaction_answer</name><annotations /></port></outputPorts><processors><processor><name>Init_Job_Service</name><inputPorts /><outputPorts><port><name>responseBody</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>rest-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.rest.RESTActivity</class><inputMap /><outputMap><map from="responseBody" to="responseBody" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.rest.RESTActivityConfigurationBean xmlns="">\r
   <httpMethod>POST</httpMethod>\r
   <urlSignature>http://127.0.0.1:3333/command/core/create-importing-job</urlSignature>\r
   <acceptsHeaderValue>application/json</acceptsHeaderValue>\r
@@ -16,7 +16,7 @@
   <initialDelay>1000</initialDelay>\r
   <maxDelay>5000</maxDelay>\r
   <maxRetries>0</maxRetries>\r
-</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>Parse_Job</name><inputPorts><port><name>jsonStr</name><depth>0</depth></port></inputPorts><outputPorts><port><name>jobID</name><depth>0</depth><granularDepth>0</granularDepth></port></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><map from="jsonStr" to="jsonStr" /></inputMap><outputMap><map from="jobID" to="jobID" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns="">\r
+</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><cross /></strategy></iteration></iterationStrategyStack></processor><processor><name>Parse_Job</name><inputPorts><port><name>jsonStr</name><depth>0</depth></port></inputPorts><outputPorts><port><name>jobID</name><depth>0</depth><granularDepth>0</granularDepth></port></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><map from="jsonStr" to="jsonStr" /></inputMap><outputMap><map from="jobID" to="jobID" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns="">\r
   <inputs>\r
     <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
       <name>jsonStr</name>\r
@@ -77,7 +77,7 @@ JSONParser parser=new JSONParser();
   <initialDelay>1000</initialDelay>\r
   <maxDelay>5000</maxDelay>\r
   <maxRetries>0</maxRetries>\r
-</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><cross><port name="jsonStr" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Upload_Data_Service</name><inputPorts><port><name>jobID</name><depth>0</depth></port><port><name>inputBody</name><depth>0</depth></port></inputPorts><outputPorts /><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>rest-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.rest.RESTActivity</class><inputMap><map from="jobID" to="jobID" /><map from="inputBody" to="inputBody" /></inputMap><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.rest.RESTActivityConfigurationBean xmlns="">\r
+</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><cross><port name="jsonStr" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Upload_Data_Service</name><inputPorts><port><name>jobID</name><depth>0</depth></port><port><name>inputBody</name><depth>0</depth></port></inputPorts><outputPorts /><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>rest-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.rest.RESTActivity</class><inputMap><map from="inputBody" to="inputBody" /><map from="jobID" to="jobID" /></inputMap><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.rest.RESTActivityConfigurationBean xmlns="">\r
   <httpMethod>POST</httpMethod>\r
   <urlSignature>http://127.0.0.1:3333/command/core/importing-controller?controller=core/default-importing-controller&amp;jobID={jobID}&amp;subCommand=load-raw-data</urlSignature>\r
   <acceptsHeaderValue>text/html</acceptsHeaderValue>\r
@@ -100,16 +100,7 @@ JSONParser parser=new JSONParser();
   <initialDelay>1000</initialDelay>\r
   <maxDelay>5000</maxDelay>\r
   <maxRetries>0</maxRetries>\r
-</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><cross><port name="jobID" depth="0" /><port name="inputBody" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>fileurl_value</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.3</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="">\r
-  <value>http://ww2.bgbm.org/temp/biovel/pot_invasive_dc_output.txt</value>\r
-</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.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="">\r
-  <maxJobs>1</maxJobs>\r
-</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="">\r
-  <backoffFactor>1.0</backoffFactor>\r
-  <initialDelay>1000</initialDelay>\r
-  <maxDelay>5000</maxDelay>\r
-  <maxRetries>0</maxRetries>\r
-</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>Parser_Format_Service</name><inputPorts><port><name>jobID</name><depth>0</depth></port></inputPorts><outputPorts /><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>rest-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.rest.RESTActivity</class><inputMap><map from="jobID" to="jobID" /></inputMap><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.rest.RESTActivityConfigurationBean xmlns="">\r
+</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><cross><port name="jobID" depth="0" /><port name="inputBody" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Parser_Format_Service</name><inputPorts><port><name>jobID</name><depth>0</depth></port></inputPorts><outputPorts /><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>rest-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.rest.RESTActivity</class><inputMap><map from="jobID" to="jobID" /></inputMap><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.rest.RESTActivityConfigurationBean xmlns="">\r
   <httpMethod>POST</httpMethod>\r
   <urlSignature>http://127.0.0.1:3333/command/core/importing-controller?controller=core/default-importing-controller&amp;jobID={jobID}&amp;subCommand=initialize-parser-ui&amp;format=text/line-based/*sv</urlSignature>\r
   <acceptsHeaderValue>application/json</acceptsHeaderValue>\r
@@ -178,107 +169,7 @@ JSONParser parser=new JSONParser();
   <initialDelay>1000</initialDelay>\r
   <maxDelay>5000</maxDelay>\r
   <maxRetries>0</maxRetries>\r
-</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><cross><port name="jobID" depth="0" /><port name="inputBody" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Read_Convert_Input</name><inputPorts><port><name>fileurl</name><depth>0</depth></port></inputPorts><outputPorts><port><name>filecontents</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="fileurl" to="fileurl" /></inputMap><outputMap><map from="filecontents" to="filecontents" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">\r
-  <inputs>\r
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
-      <name>fileurl</name>\r
-      <depth>0</depth>\r
-      <mimeTypes>\r
-        <string>'text/plain'</string>\r
-      </mimeTypes>\r
-      <handledReferenceSchemes />\r
-      <translatedElementType>java.lang.String</translatedElementType>\r
-      <allowsLiteralValues>true</allowsLiteralValues>\r
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
-      <name>encoding</name>\r
-      <depth>0</depth>\r
-      <mimeTypes>\r
-        <string>'text/plain'</string>\r
-      </mimeTypes>\r
-      <handledReferenceSchemes />\r
-      <translatedElementType>java.lang.String</translatedElementType>\r
-      <allowsLiteralValues>true</allowsLiteralValues>\r
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
-  </inputs>\r
-  <outputs>\r
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
-      <name>filecontents</name>\r
-      <depth>0</depth>\r
-      <mimeTypes />\r
-      <granularDepth>0</granularDepth>\r
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
-  </outputs>\r
-  <classLoaderSharing>workflow</classLoaderSharing>\r
-  <localDependencies />\r
-  <artifactDependencies />\r
-  <script>BufferedReader getReader (String fileUrl, String encoding) throws IOException {\r
-               InputStreamReader reader;\r
-               try {\r
-                       if (encoding == null) {\r
-                               reader = new FileReader(fileUrl);\r
-                       } else {\r
-                               reader = new InputStreamReader(new FileInputStream(fileUrl),encoding); \r
-                       }\r
-               }\r
-               catch (FileNotFoundException e) {\r
-                       // try a real URL instead\r
-                       URL url = new URL(fileUrl);\r
-                       if (encoding == null) {\r
-                               reader = new InputStreamReader (url.openStream());\r
-                       } else {\r
-                               reader = new InputStreamReader (url.openStream(), encoding);\r
-                       }\r
-               }\r
-               return new BufferedReader(reader);\r
-       }\r
-\r
-\r
-\r
-StringBuffer sb = new StringBuffer(4000);\r
-\r
-if (encoding == void) {\r
-       encoding = null;\r
-}\r
-\r
-BufferedReader in = getReader(fileurl, encoding);\r
-String str;\r
-String lineEnding = System.getProperty("line.separator");\r
-\r
-while ((str = in.readLine()) != null) {\r
-       sb.append(str);\r
-       sb.append(lineEnding);\r
-}\r
-in.close();\r
-String boundary = "----dcBoundary";\r
-String beginStr = "--" + boundary + lineEnding +\r
-"Content-Disposition: form-data; name=\"upload\"; filename=\"dcinput.txt\"" + lineEnding +\r
-"Content-Type: text/plain" + lineEnding + lineEnding;\r
-String endStr = lineEnding + "--" + boundary + "--";\r
-filecontents = beginStr + sb.toString() + endStr;\r
-  \r
-</script>\r
-  <dependencies />\r
-  <localworkerName>net.sourceforge.taverna.scuflworkers.io.TextFileReader</localworkerName>\r
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
-  <annotationAssertions>\r
-    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
-      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.HostInstitution">\r
-        <text>UserNameHere</text>\r
-      </annotationBean>\r
-      <date>2012-03-07 17:18:16.289 CET</date>\r
-      <creators />\r
-      <curationEventList />\r
-    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
-  </annotationAssertions>\r
-</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain></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="">\r
-  <maxJobs>1</maxJobs>\r
-</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="">\r
-  <backoffFactor>1.0</backoffFactor>\r
-  <initialDelay>1000</initialDelay>\r
-  <maxDelay>5000</maxDelay>\r
-  <maxRetries>0</maxRetries>\r
-</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><cross><port name="fileurl" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>create_project</name><inputPorts><port><name>jobID</name><depth>0</depth></port></inputPorts><outputPorts><port><name>projectID</name><depth>0</depth><granularDepth>0</granularDepth></port><port><name>percent</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>dataflow-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.dataflow.DataflowActivity</class><inputMap><map from="jobID" to="jobID" /></inputMap><outputMap><map from="projectID" to="projectID" /><map from="percent" to="percent" /></outputMap><configBean encoding="dataflow"><dataflow ref="7b1fa700-830f-4e0e-a100-1c3b33b9f677" /></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="">\r
+</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><cross><port name="jobID" depth="0" /><port name="inputBody" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>create_project</name><inputPorts><port><name>jobID</name><depth>0</depth></port></inputPorts><outputPorts><port><name>projectID</name><depth>0</depth><granularDepth>0</granularDepth></port><port><name>percent</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>dataflow-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.dataflow.DataflowActivity</class><inputMap><map from="jobID" to="jobID" /></inputMap><outputMap><map from="projectID" to="projectID" /><map from="percent" to="percent" /></outputMap><configBean encoding="dataflow"><dataflow ref="7b1fa700-830f-4e0e-a100-1c3b33b9f677" /></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="">\r
   <maxJobs>1</maxJobs>\r
 </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.Loop</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.LoopConfiguration xmlns="">\r
   <conditionXML>&lt;activity xmlns="http://taverna.sf.net/2008/xml/t2flow"&gt;&lt;raven&gt;&lt;group&gt;net.sf.taverna.t2.activities&lt;/group&gt;&lt;artifact&gt;beanshell-activity&lt;/artifact&gt;&lt;version&gt;1.3&lt;/version&gt;&lt;/raven&gt;&lt;class&gt;net.sf.taverna.t2.activities.beanshell.BeanshellActivity&lt;/class&gt;&lt;inputMap /&gt;&lt;outputMap /&gt;&lt;configBean encoding="xstream"&gt;&lt;net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns=""&gt;&#xD;\r
@@ -411,7 +302,7 @@ if ("true".matches(loop)) {&#xD;
   <initialDelay>1000</initialDelay>\r
   <maxDelay>5000</maxDelay>\r
   <maxRetries>0</maxRetries>\r
-</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><cross><port name="jobID" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>GRefine_Interaction</name><inputPorts><port><name>projectID</name><depth>0</depth></port></inputPorts><outputPorts /><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>interaction-activity</artifact><version>0.1</version></raven><class>net.sf.taverna.t2.activities.interaction.InteractionActivity</class><inputMap><map from="projectID" to="projectID" /></inputMap><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.interaction.InteractionActivityConfigurationBean xmlns="">\r
+</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><cross><port name="jobID" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>GRefine_Interaction</name><inputPorts><port><name>projectID</name><depth>0</depth></port></inputPorts><outputPorts><port><name>answer</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>interaction-activity</artifact><version>0.1.2</version></raven><class>net.sf.taverna.t2.activities.interaction.InteractionActivity</class><inputMap><map from="projectID" to="projectID" /></inputMap><outputMap><map from="answer" to="answer" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.interaction.InteractionActivityConfigurationBean xmlns="">\r
   <inputs>\r
     <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
       <name>projectID</name>\r
@@ -441,7 +332,7 @@ if ("true".matches(loop)) {&#xD;
   <initialDelay>1000</initialDelay>\r
   <maxDelay>5000</maxDelay>\r
   <maxRetries>0</maxRetries>\r
-</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><cross><port name="projectID" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Export_Data_Options</name><inputPorts><port><name>projectID</name><depth>0</depth></port></inputPorts><outputPorts><port><name>options</name><depth>0</depth><granularDepth>0</granularDepth></port></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><map from="projectID" to="projectID" /></inputMap><outputMap><map from="options" to="options" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns="">\r
+</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><cross><port name="projectID" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Delete_Data_Options</name><inputPorts><port><name>projectID</name><depth>0</depth></port></inputPorts><outputPorts><port><name>options</name><depth>0</depth><granularDepth>0</granularDepth></port></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><map from="projectID" to="projectID" /></inputMap><outputMap><map from="options" to="options" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns="">\r
   <inputs>\r
     <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
       <name>projectID</name>\r
@@ -465,7 +356,7 @@ if ("true".matches(loop)) {&#xD;
   <classLoaderSharing>workflow</classLoaderSharing>\r
   <localDependencies />\r
   <artifactDependencies />\r
-  <script>options ="project="  + projectID + "&amp;format=csv&amp;engine={\"facets\":[],\"mode\":\"row-based\"}&amp;contentType=application/x-unknown";</script>\r
+  <script>options="project=" + projectID;</script>\r
   <dependencies />\r
 </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="">\r
   <maxJobs>1</maxJobs>\r
@@ -474,33 +365,152 @@ if ("true".matches(loop)) {&#xD;
   <initialDelay>1000</initialDelay>\r
   <maxDelay>5000</maxDelay>\r
   <maxRetries>0</maxRetries>\r
-</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><cross><port name="projectID" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Export_Data</name><inputPorts><port><name>inputBody</name><depth>0</depth></port><port><name>projectID</name><depth>0</depth></port></inputPorts><outputPorts><port><name>responseBody</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>rest-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.rest.RESTActivity</class><inputMap><map from="projectID" to="projectID" /><map from="inputBody" to="inputBody" /></inputMap><outputMap><map from="responseBody" to="responseBody" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.rest.RESTActivityConfigurationBean xmlns="">\r
-  <httpMethod>POST</httpMethod>\r
-  <urlSignature>http://127.0.0.1:3333/command/core/export-rows/{projectID}.csv</urlSignature>\r
-  <acceptsHeaderValue>text/html</acceptsHeaderValue>\r
-  <contentTypeForUpdates>application/x-www-form-urlencoded</contentTypeForUpdates>\r
-  <outgoingDataFormat>String</outgoingDataFormat>\r
-  <sendHTTPExpectRequestHeader>false</sendHTTPExpectRequestHeader>\r
-  <showRedirectionOutputPort>false</showRedirectionOutputPort>\r
-  <escapeParameters>true</escapeParameters>\r
-  <otherHTTPHeaders />\r
-  <activityInputs>\r
-    <entry>\r
-      <string>projectID</string>\r
-      <java-class>java.lang.String</java-class>\r
-    </entry>\r
-  </activityInputs>\r
-</net.sf.taverna.t2.activities.rest.RESTActivityConfigurationBean></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="">\r
+</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><cross><port name="projectID" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Select_File</name><inputPorts><port><name>title</name><depth>0</depth></port></inputPorts><outputPorts><port><name>selectedFile</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="title" to="title" /></inputMap><outputMap><map from="selectedFile" to="selectedFile" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">\r
+  <inputs>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+      <name>title</name>\r
+      <depth>0</depth>\r
+      <mimeTypes>\r
+        <string>'text/plain'</string>\r
+      </mimeTypes>\r
+      <handledReferenceSchemes />\r
+      <translatedElementType>java.lang.String</translatedElementType>\r
+      <allowsLiteralValues>true</allowsLiteralValues>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+      <name>fileExtensions</name>\r
+      <depth>0</depth>\r
+      <mimeTypes>\r
+        <string>'text/plain'</string>\r
+      </mimeTypes>\r
+      <handledReferenceSchemes />\r
+      <translatedElementType>java.lang.String</translatedElementType>\r
+      <allowsLiteralValues>true</allowsLiteralValues>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+      <name>fileExtLabels</name>\r
+      <depth>0</depth>\r
+      <mimeTypes>\r
+        <string>'text/plain'</string>\r
+      </mimeTypes>\r
+      <handledReferenceSchemes />\r
+      <translatedElementType>java.lang.String</translatedElementType>\r
+      <allowsLiteralValues>true</allowsLiteralValues>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+  </inputs>\r
+  <outputs>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
+      <name>selectedFile</name>\r
+      <depth>0</depth>\r
+      <mimeTypes>\r
+        <string>'text/plain'</string>\r
+      </mimeTypes>\r
+      <granularDepth>0</granularDepth>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
+  </outputs>\r
+  <classLoaderSharing>workflow</classLoaderSharing>\r
+  <localDependencies />\r
+  <artifactDependencies />\r
+  <script>import java.awt.CardLayout;\r
+import java.awt.Image;\r
+import java.awt.Toolkit;\r
+import java.io.File;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import javax.swing.ImageIcon;\r
+import javax.swing.JEditorPane;\r
+import javax.swing.JFileChooser;\r
+import javax.swing.JLabel;\r
+import javax.swing.JPanel;\r
+import javax.swing.filechooser.FileFilter;\r
+\r
+class FileExtFilter extends FileFilter {\r
+\r
+       public FileExtFilter(String ext, String label, boolean includeDir) {\r
+               this.ext = ext;\r
+               this.label = label;\r
+               this.includeDir = includeDir;\r
+       }\r
+\r
+       public String getDescription() {\r
+               return this.label;\r
+       }\r
+\r
+       public boolean accept(File file) {\r
+               if (file.isDirectory() &amp;&amp; includeDir) {\r
+                       return true;\r
+               } else {\r
+                       return file.getName().endsWith(this.ext);\r
+               }\r
+       }\r
+\r
+       String ext, label;\r
+\r
+       boolean includeDir;\r
+}\r
+\r
+if (title == void) {\r
+       title = null;\r
+}\r
+\r
+if ((fileExtensions == void) || (fileExtensions == null)) {\r
+       fileExtensions = "";\r
+}\r
+\r
+if ((fileExtLabels == void) || (fileExtLabels == null)) {\r
+       fileExtLabels = "";\r
+}\r
+\r
+JFileChooser chooser = new JFileChooser();\r
+chooser.setDialogTitle(title);\r
+\r
+String[] fileTypeList = fileExtensions.split(",");\r
+String[] filterLabelList = fileExtLabels.split(",");\r
+\r
+if (fileTypeList != null &amp;&amp; filterLabelList != null &amp;&amp; fileTypeList.length != filterLabelList.length) {\r
+       throw new RuntimeException("The list of extensions and file filter labels must be the same length");\r
+}\r
+\r
+// create the file filters\r
+for (int i = 0; i &lt; fileTypeList.length; i++) {\r
+       FileExtFilter filter = new FileExtFilter(fileTypeList[i], filterLabelList[i], true);\r
+       chooser.setFileFilter(filter);\r
+}\r
+\r
+chooser.showOpenDialog(null);\r
+File file = chooser.getSelectedFile();\r
+selectedFile = file.getAbsolutePath();\r
+</script>\r
+  <dependencies />\r
+  <localworkerName>net.sourceforge.taverna.scuflworkers.ui.SelectFileWorker</localworkerName>\r
+</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.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="">\r
+  <maxJobs>1</maxJobs>\r
+</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="">\r
+  <backoffFactor>1.0</backoffFactor>\r
+  <initialDelay>1000</initialDelay>\r
+  <maxDelay>5000</maxDelay>\r
+  <maxRetries>0</maxRetries>\r
+</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><cross><port name="title" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>title_value</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.3</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="">\r
+  <value>Select Input CSV file</value>\r
+</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.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="">\r
+  <maxJobs>1</maxJobs>\r
+</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="">\r
+  <backoffFactor>1.0</backoffFactor>\r
+  <initialDelay>1000</initialDelay>\r
+  <maxDelay>5000</maxDelay>\r
+  <maxRetries>0</maxRetries>\r
+</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>save_updates</name><inputPorts><port><name>projectID</name><depth>0</depth></port><port><name>save</name><depth>0</depth></port></inputPorts><outputPorts><port><name>export_data</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>dataflow-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.dataflow.DataflowActivity</class><inputMap><map from="projectID" to="projectID" /><map from="save" to="save" /></inputMap><outputMap><map from="export_data" to="export_data" /></outputMap><configBean encoding="dataflow"><dataflow ref="e39565fa-a649-4b7e-9fa3-58921efd4f53" /></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="">\r
   <maxJobs>1</maxJobs>\r
 </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="">\r
   <backoffFactor>1.0</backoffFactor>\r
   <initialDelay>1000</initialDelay>\r
   <maxDelay>5000</maxDelay>\r
   <maxRetries>0</maxRetries>\r
-</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><cross><port name="inputBody" depth="0" /><port name="projectID" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Delete_Data_Options</name><inputPorts><port><name>projectID</name><depth>0</depth></port></inputPorts><outputPorts><port><name>options</name><depth>0</depth><granularDepth>0</granularDepth></port></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><map from="projectID" to="projectID" /></inputMap><outputMap><map from="options" to="options" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns="">\r
+</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><cross><port name="projectID" depth="0" /><port name="save" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Export_Data_Conditional</name><inputPorts><port><name>gref_answer</name><depth>0</depth></port></inputPorts><outputPorts><port><name>save_true</name><depth>1</depth><granularDepth>1</granularDepth></port><port><name>cancel_true</name><depth>1</depth><granularDepth>1</granularDepth></port></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><map from="gref_answer" to="gref_answer" /></inputMap><outputMap><map from="save_true" to="save_true" /><map from="cancel_true" to="cancel_true" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns="">\r
   <inputs>\r
     <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
-      <name>projectID</name>\r
+      <name>gref_answer</name>\r
       <depth>0</depth>\r
       <mimeTypes>\r
         <string>text/plain</string>\r
@@ -512,16 +522,31 @@ if ("true".matches(loop)) {&#xD;
   </inputs>\r
   <outputs>\r
     <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
-      <name>options</name>\r
-      <depth>0</depth>\r
+      <name>save_true</name>\r
+      <depth>1</depth>\r
       <mimeTypes />\r
-      <granularDepth>0</granularDepth>\r
+      <granularDepth>1</granularDepth>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
+      <name>cancel_true</name>\r
+      <depth>1</depth>\r
+      <mimeTypes />\r
+      <granularDepth>1</granularDepth>\r
     </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
   </outputs>\r
   <classLoaderSharing>workflow</classLoaderSharing>\r
   <localDependencies />\r
   <artifactDependencies />\r
-  <script>options="project=" + projectID;</script>\r
+  <script>List save_true = new ArrayList();\r
+List cancel_true = new ArrayList();\r
+\r
+if(gref_answer.equals("save")) {\r
+  save_true.add("save");\r
+} else {\r
+  cancel_true.add("cancel");   \r
+}\r
+\r
+</script>\r
   <dependencies />\r
 </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="">\r
   <maxJobs>1</maxJobs>\r
@@ -530,57 +555,291 @@ if ("true".matches(loop)) {&#xD;
   <initialDelay>1000</initialDelay>\r
   <maxDelay>5000</maxDelay>\r
   <maxRetries>0</maxRetries>\r
-</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><cross><port name="projectID" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor></processors><conditions><condition control="GRefine_Interaction" target="Export_Data" /><condition control="data_upload_status" target="Parser_Format_Service" /><condition control="Parser_Format_Service" target="Update_Format_Service" /><condition control="Update_Format_Service" target="Create_Project_Service" /><condition control="Create_Project_Service" target="create_project" /><condition control="Upload_Data_Service" target="data_upload_status" /><condition control="Export_Data" target="Delete_Data" /></conditions><datalinks><datalink><sink type="processor"><processor>Parse_Job</processor><port>jsonStr</port></sink><source type="processor"><processor>Init_Job_Service</processor><port>responseBody</port></source></datalink><datalink><sink type="processor"><processor>Upload_Data_Service</processor><port>jobID</port></sink><source type="processor"><processor>Parse_Job</processor><port>jobID</port></source></datalink><datalink><sink type="processor"><processor>Upload_Data_Service</processor><port>inputBody</port></sink><source type="processor"><processor>Read_Convert_Input</processor><port>filecontents</port></source></datalink><datalink><sink type="processor"><processor>Parser_Format_Service</processor><port>jobID</port></sink><source type="processor"><processor>Parse_Job</processor><port>jobID</port></source></datalink><datalink><sink type="processor"><processor>Update_Format_Service</processor><port>jobID</port></sink><source type="processor"><processor>Parse_Job</processor><port>jobID</port></source></datalink><datalink><sink type="processor"><processor>Update_Format_Service</processor><port>inputBody</port></sink><source type="processor"><processor>Format_Options</processor><port>options</port></source></datalink><datalink><sink type="processor"><processor>Create_Project_Service</processor><port>jobID</port></sink><source type="processor"><processor>Parse_Job</processor><port>jobID</port></source></datalink><datalink><sink type="processor"><processor>Create_Project_Service</processor><port>inputBody</port></sink><source type="processor"><processor>Format_Options</processor><port>options</port></source></datalink><datalink><sink type="processor"><processor>Read_Convert_Input</processor><port>fileurl</port></sink><source type="processor"><processor>fileurl_value</processor><port>value</port></source></datalink><datalink><sink type="processor"><processor>create_project</processor><port>jobID</port></sink><source type="processor"><processor>Parse_Job</processor><port>jobID</port></source></datalink><datalink><sink type="processor"><processor>data_upload_status</processor><port>jobID</port></sink><source type="processor"><processor>Parse_Job</processor><port>jobID</port></source></datalink><datalink><sink type="processor"><processor>Delete_Data</processor><port>inputBody</port></sink><source type="processor"><processor>Delete_Data_Options</processor><port>options</port></source></datalink><datalink><sink type="processor"><processor>Format_Options</processor><port>jobID</port></sink><source type="processor"><processor>Parse_Job</processor><port>jobID</port></source></datalink><datalink><sink type="processor"><processor>GRefine_Interaction</processor><port>projectID</port></sink><source type="processor"><processor>create_project</processor><port>projectID</port></source></datalink><datalink><sink type="processor"><processor>Export_Data_Options</processor><port>projectID</port></sink><source type="processor"><processor>create_project</processor><port>projectID</port></source></datalink><datalink><sink type="processor"><processor>Export_Data</processor><port>inputBody</port></sink><source type="processor"><processor>Export_Data_Options</processor><port>options</port></source></datalink><datalink><sink type="processor"><processor>Export_Data</processor><port>projectID</port></sink><source type="processor"><processor>create_project</processor><port>projectID</port></source></datalink><datalink><sink type="processor"><processor>Delete_Data_Options</processor><port>projectID</port></sink><source type="processor"><processor>create_project</processor><port>projectID</port></source></datalink><datalink><sink type="dataflow"><port>proj_percent</port></sink><source type="processor"><processor>create_project</processor><port>percent</port></source></datalink><datalink><sink type="dataflow"><port>upload_status</port></sink><source type="processor"><processor>data_upload_status</processor><port>upload_status</port></source></datalink><datalink><sink type="dataflow"><port>export</port></sink><source type="processor"><processor>Export_Data</processor><port>responseBody</port></source></datalink></datalinks><annotations><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
-  <annotationAssertions>\r
-    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
-      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>59260159-db76-468b-9f7c-97a0a2327e2d</identification>\r
-      </annotationBean>\r
-      <date>2012-03-14 14:38:15.329 CET</date>\r
-      <creators />\r
-      <curationEventList />\r
-    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
-  </annotationAssertions>\r
-</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
-  <annotationAssertions>\r
-    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
-      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>70d399e3-0f73-4985-a59c-f55d6ee5f03b</identification>\r
-      </annotationBean>\r
-      <date>2012-03-07 16:51:59.307 CET</date>\r
-      <creators />\r
-      <curationEventList />\r
-    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
-  </annotationAssertions>\r
-</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
-  <annotationAssertions>\r
-    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
-      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>1e83c552-ca41-4587-9c0e-c29c38394bc1</identification>\r
-      </annotationBean>\r
-      <date>2012-03-06 13:51:44.109 CET</date>\r
-      <creators />\r
-      <curationEventList />\r
-    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
-  </annotationAssertions>\r
-</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
-  <annotationAssertions>\r
-    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
-      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>f1b750f3-f2a2-418e-a6b0-93aaf7bec99f</identification>\r
-      </annotationBean>\r
-      <date>2012-03-09 16:37:24.715 CET</date>\r
-      <creators />\r
-      <curationEventList />\r
+</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><cross><port name="gref_answer" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>cancel_updates</name><inputPorts><port><name>cancel</name><depth>0</depth></port><port><name>csvInput</name><depth>0</depth></port></inputPorts><outputPorts><port><name>csvOutput</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>dataflow-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.dataflow.DataflowActivity</class><inputMap><map from="cancel" to="cancel" /><map from="csvInput" to="csvInput" /></inputMap><outputMap><map from="csvOutput" to="csvOutput" /></outputMap><configBean encoding="dataflow"><dataflow ref="94a54de1-457f-4052-99dc-05a8e0855fa3" /></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="">\r
+  <maxJobs>1</maxJobs>\r
+</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="">\r
+  <backoffFactor>1.0</backoffFactor>\r
+  <initialDelay>1000</initialDelay>\r
+  <maxDelay>5000</maxDelay>\r
+  <maxRetries>0</maxRetries>\r
+</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><cross><port name="cancel" depth="0" /><port name="csvInput" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Flatten_List</name><inputPorts><port><name>inputlist</name><depth>2</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.3</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.LocalworkerActivityConfigurationBean xmlns="">\r
+  <inputs>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+      <name>inputlist</name>\r
+      <depth>2</depth>\r
+      <mimeTypes>\r
+        <string>l(l(''))</string>\r
+      </mimeTypes>\r
+      <handledReferenceSchemes />\r
+      <translatedElementType>[B</translatedElementType>\r
+      <allowsLiteralValues>true</allowsLiteralValues>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+  </inputs>\r
+  <outputs>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
+      <name>outputlist</name>\r
+      <depth>1</depth>\r
+      <mimeTypes>\r
+        <string>l('')</string>\r
+      </mimeTypes>\r
+      <granularDepth>1</granularDepth>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
+  </outputs>\r
+  <classLoaderSharing>workflow</classLoaderSharing>\r
+  <localDependencies />\r
+  <artifactDependencies />\r
+  <script>flatten(inputs, outputs, depth) {\r
+       for (i = inputs.iterator(); i.hasNext();) {\r
+           element = i.next();\r
+               if (element instanceof Collection &amp;&amp; depth &gt; 0) {\r
+                       flatten(element, outputs, depth - 1);\r
+               } else {\r
+                       outputs.add(element);\r
+               }\r
+       }\r
+}\r
+\r
+outputlist = new ArrayList();\r
+\r
+flatten(inputlist, outputlist, 1);</script>\r
+  <dependencies />\r
+  <localworkerName>org.embl.ebi.escience.scuflworkers.java.FlattenList</localworkerName>\r
+</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.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="">\r
+  <maxJobs>1</maxJobs>\r
+</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="">\r
+  <backoffFactor>1.0</backoffFactor>\r
+  <initialDelay>1000</initialDelay>\r
+  <maxDelay>5000</maxDelay>\r
+  <maxRetries>0</maxRetries>\r
+</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><cross><port name="inputlist" depth="2" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Merge_String_List_to_a_String</name><inputPorts><port><name>stringlist</name><depth>1</depth></port><port><name>seperator</name><depth>0</depth></port></inputPorts><outputPorts><port><name>concatenated</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="seperator" to="seperator" /><map from="stringlist" to="stringlist" /></inputMap><outputMap><map from="concatenated" to="concatenated" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">\r
+  <inputs>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+      <name>stringlist</name>\r
+      <depth>1</depth>\r
+      <mimeTypes>\r
+        <string>l('text/plain')</string>\r
+      </mimeTypes>\r
+      <handledReferenceSchemes />\r
+      <translatedElementType>java.lang.String</translatedElementType>\r
+      <allowsLiteralValues>true</allowsLiteralValues>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+      <name>seperator</name>\r
+      <depth>0</depth>\r
+      <mimeTypes>\r
+        <string>'text/plain'</string>\r
+      </mimeTypes>\r
+      <handledReferenceSchemes />\r
+      <translatedElementType>java.lang.String</translatedElementType>\r
+      <allowsLiteralValues>true</allowsLiteralValues>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+  </inputs>\r
+  <outputs>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
+      <name>concatenated</name>\r
+      <depth>0</depth>\r
+      <mimeTypes>\r
+        <string>'text/plain'</string>\r
+      </mimeTypes>\r
+      <granularDepth>0</granularDepth>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
+  </outputs>\r
+  <classLoaderSharing>workflow</classLoaderSharing>\r
+  <localDependencies />\r
+  <artifactDependencies />\r
+  <script>String seperatorString = "\n";\r
+if (seperator != void) {\r
+       seperatorString = seperator;\r
+}\r
+StringBuffer sb = new StringBuffer();\r
+for (Iterator i = stringlist.iterator(); i.hasNext();) {\r
+       String item = (String) i.next();\r
+       sb.append(item);\r
+       if (i.hasNext()) {\r
+               sb.append(seperatorString);\r
+       }\r
+}\r
+concatenated = sb.toString();\r
+</script>\r
+  <dependencies />\r
+  <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringListMerge</localworkerName>\r
+</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.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="">\r
+  <maxJobs>1</maxJobs>\r
+</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="">\r
+  <backoffFactor>1.0</backoffFactor>\r
+  <initialDelay>1000</initialDelay>\r
+  <maxDelay>5000</maxDelay>\r
+  <maxRetries>0</maxRetries>\r
+</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><cross><port name="stringlist" depth="1" /><port name="seperator" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>no_seperator</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.3</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="">\r
+  <value />\r
+</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.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="">\r
+  <maxJobs>1</maxJobs>\r
+</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="">\r
+  <backoffFactor>1.0</backoffFactor>\r
+  <initialDelay>1000</initialDelay>\r
+  <maxDelay>5000</maxDelay>\r
+  <maxRetries>0</maxRetries>\r
+</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>Read_Text_File</name><inputPorts><port><name>fileurl</name><depth>0</depth></port></inputPorts><outputPorts><port><name>filecontents</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="fileurl" to="fileurl" /></inputMap><outputMap><map from="filecontents" to="filecontents" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">\r
+  <inputs>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+      <name>fileurl</name>\r
+      <depth>0</depth>\r
+      <mimeTypes>\r
+        <string>'text/plain'</string>\r
+      </mimeTypes>\r
+      <handledReferenceSchemes />\r
+      <translatedElementType>java.lang.String</translatedElementType>\r
+      <allowsLiteralValues>true</allowsLiteralValues>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+      <name>encoding</name>\r
+      <depth>0</depth>\r
+      <mimeTypes>\r
+        <string>'text/plain'</string>\r
+      </mimeTypes>\r
+      <handledReferenceSchemes />\r
+      <translatedElementType>java.lang.String</translatedElementType>\r
+      <allowsLiteralValues>true</allowsLiteralValues>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+  </inputs>\r
+  <outputs>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
+      <name>filecontents</name>\r
+      <depth>0</depth>\r
+      <mimeTypes>\r
+        <string>'text/plain'</string>\r
+      </mimeTypes>\r
+      <granularDepth>0</granularDepth>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
+  </outputs>\r
+  <classLoaderSharing>workflow</classLoaderSharing>\r
+  <localDependencies />\r
+  <artifactDependencies />\r
+  <script>BufferedReader getReader (String fileUrl, String encoding) throws IOException {\r
+               InputStreamReader reader;\r
+               try {\r
+                       if (encoding == null) {\r
+                               reader = new FileReader(fileUrl);\r
+                       } else {\r
+                               reader = new InputStreamReader(new FileInputStream(fileUrl),encoding); \r
+                       }\r
+               }\r
+               catch (FileNotFoundException e) {\r
+                       // try a real URL instead\r
+                       URL url = new URL(fileUrl);\r
+                       if (encoding == null) {\r
+                               reader = new InputStreamReader (url.openStream());\r
+                       } else {\r
+                               reader = new InputStreamReader (url.openStream(), encoding);\r
+                       }\r
+               }\r
+               return new BufferedReader(reader);\r
+       }\r
+\r
+\r
+\r
+StringBuffer sb = new StringBuffer(4000);\r
+\r
+if (encoding == void) {\r
+       encoding = null;\r
+}\r
+\r
+BufferedReader in = getReader(fileurl, encoding);\r
+String str;\r
+String lineEnding = System.getProperty("line.separator");\r
+\r
+while ((str = in.readLine()) != null) {\r
+       sb.append(str);\r
+       sb.append(lineEnding);\r
+}\r
+in.close();\r
+filecontents = sb.toString();\r
+  \r
+</script>\r
+  <dependencies />\r
+  <localworkerName>net.sourceforge.taverna.scuflworkers.io.TextFileReader</localworkerName>\r
+</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.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="">\r
+  <maxJobs>1</maxJobs>\r
+</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="">\r
+  <backoffFactor>1.0</backoffFactor>\r
+  <initialDelay>1000</initialDelay>\r
+  <maxDelay>5000</maxDelay>\r
+  <maxRetries>0</maxRetries>\r
+</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><cross><port name="fileurl" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Read_Convert_Input</name><inputPorts><port><name>csvData</name><depth>0</depth></port></inputPorts><outputPorts><port><name>postInputBody</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="csvData" to="csvData" /></inputMap><outputMap><map from="postInputBody" to="postInputBody" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">\r
+  <inputs>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+      <name>csvData</name>\r
+      <depth>0</depth>\r
+      <mimeTypes>\r
+        <string>'text/plain'</string>\r
+      </mimeTypes>\r
+      <handledReferenceSchemes />\r
+      <translatedElementType>java.lang.String</translatedElementType>\r
+      <allowsLiteralValues>true</allowsLiteralValues>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+  </inputs>\r
+  <outputs>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
+      <name>postInputBody</name>\r
+      <depth>0</depth>\r
+      <mimeTypes />\r
+      <granularDepth>0</granularDepth>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
+  </outputs>\r
+  <classLoaderSharing>workflow</classLoaderSharing>\r
+  <localDependencies />\r
+  <artifactDependencies />\r
+  <script>String lineEnding = System.getProperty("line.separator");\r
+\r
+String boundary = "----dcBoundary";\r
+\r
+String beginStr = "--" + boundary + lineEnding +\r
+"Content-Disposition: form-data; name=\"upload\"; filename=\"dcinput.txt\"" + lineEnding +\r
+"Content-Type: text/plain" + lineEnding + lineEnding;\r
+\r
+String endStr = lineEnding + "--" + boundary + "--";\r
+\r
+postInputBody = beginStr + csvData + endStr;\r
+  \r
+</script>\r
+  <dependencies />\r
+  <localworkerName>net.sourceforge.taverna.scuflworkers.io.TextFileReader</localworkerName>\r
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.HostInstitution">\r
+        <text>UserNameHere</text>\r
+      </annotationBean>\r
+      <date>2012-03-30 10:07:33.683 CEST</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain></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="">\r
+  <maxJobs>1</maxJobs>\r
+</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="">\r
+  <backoffFactor>1.0</backoffFactor>\r
+  <initialDelay>1000</initialDelay>\r
+  <maxDelay>5000</maxDelay>\r
+  <maxRetries>0</maxRetries>\r
+</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><cross><port name="csvData" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor></processors><conditions><condition control="Upload_Data_Service" target="data_upload_status" /><condition control="Update_Format_Service" target="Create_Project_Service" /><condition control="Flatten_List" target="Delete_Data" /><condition control="Create_Project_Service" target="create_project" /><condition control="Parser_Format_Service" target="Update_Format_Service" /><condition control="data_upload_status" target="Parser_Format_Service" /></conditions><datalinks><datalink><sink type="processor"><processor>Parse_Job</processor><port>jsonStr</port></sink><source type="processor"><processor>Init_Job_Service</processor><port>responseBody</port></source></datalink><datalink><sink type="processor"><processor>Upload_Data_Service</processor><port>jobID</port></sink><source type="processor"><processor>Parse_Job</processor><port>jobID</port></source></datalink><datalink><sink type="processor"><processor>Upload_Data_Service</processor><port>inputBody</port></sink><source type="processor"><processor>Read_Convert_Input</processor><port>postInputBody</port></source></datalink><datalink><sink type="processor"><processor>Parser_Format_Service</processor><port>jobID</port></sink><source type="processor"><processor>Parse_Job</processor><port>jobID</port></source></datalink><datalink><sink type="processor"><processor>Update_Format_Service</processor><port>jobID</port></sink><source type="processor"><processor>Parse_Job</processor><port>jobID</port></source></datalink><datalink><sink type="processor"><processor>Update_Format_Service</processor><port>inputBody</port></sink><source type="processor"><processor>Format_Options</processor><port>options</port></source></datalink><datalink><sink type="processor"><processor>Create_Project_Service</processor><port>jobID</port></sink><source type="processor"><processor>Parse_Job</processor><port>jobID</port></source></datalink><datalink><sink type="processor"><processor>Create_Project_Service</processor><port>inputBody</port></sink><source type="processor"><processor>Format_Options</processor><port>options</port></source></datalink><datalink><sink type="processor"><processor>create_project</processor><port>jobID</port></sink><source type="processor"><processor>Parse_Job</processor><port>jobID</port></source></datalink><datalink><sink type="processor"><processor>data_upload_status</processor><port>jobID</port></sink><source type="processor"><processor>Parse_Job</processor><port>jobID</port></source></datalink><datalink><sink type="processor"><processor>Delete_Data</processor><port>inputBody</port></sink><source type="processor"><processor>Delete_Data_Options</processor><port>options</port></source></datalink><datalink><sink type="processor"><processor>Format_Options</processor><port>jobID</port></sink><source type="processor"><processor>Parse_Job</processor><port>jobID</port></source></datalink><datalink><sink type="processor"><processor>GRefine_Interaction</processor><port>projectID</port></sink><source type="processor"><processor>create_project</processor><port>projectID</port></source></datalink><datalink><sink type="processor"><processor>Delete_Data_Options</processor><port>projectID</port></sink><source type="processor"><processor>create_project</processor><port>projectID</port></source></datalink><datalink><sink type="processor"><processor>Select_File</processor><port>title</port></sink><source type="processor"><processor>title_value</processor><port>value</port></source></datalink><datalink><sink type="processor"><processor>save_updates</processor><port>projectID</port></sink><source type="processor"><processor>create_project</processor><port>projectID</port></source></datalink><datalink><sink type="processor"><processor>save_updates</processor><port>save</port></sink><source type="processor"><processor>Export_Data_Conditional</processor><port>save_true</port></source></datalink><datalink><sink type="processor"><processor>Export_Data_Conditional</processor><port>gref_answer</port></sink><source type="processor"><processor>GRefine_Interaction</processor><port>answer</port></source></datalink><datalink><sink type="processor"><processor>cancel_updates</processor><port>cancel</port></sink><source type="processor"><processor>Export_Data_Conditional</processor><port>cancel_true</port></source></datalink><datalink><sink type="processor"><processor>cancel_updates</processor><port>csvInput</port></sink><source type="processor"><processor>Read_Text_File</processor><port>filecontents</port></source></datalink><datalink><sink type="processor"><processor>Merge_String_List_to_a_String</processor><port>stringlist</port></sink><source type="processor"><processor>Flatten_List</processor><port>outputlist</port></source></datalink><datalink><sink type="processor"><processor>Merge_String_List_to_a_String</processor><port>seperator</port></sink><source type="processor"><processor>no_seperator</processor><port>value</port></source></datalink><datalink><sink type="processor"><processor>Read_Text_File</processor><port>fileurl</port></sink><source type="processor"><processor>Select_File</processor><port>selectedFile</port></source></datalink><datalink><sink type="processor"><processor>Read_Convert_Input</processor><port>csvData</port></sink><source type="processor"><processor>Read_Text_File</processor><port>filecontents</port></source></datalink><datalink><sink type="merge"><processor>Flatten_List</processor><port>inputlist</port></sink><source type="processor"><processor>save_updates</processor><port>export_data</port></source></datalink><datalink><sink type="merge"><processor>Flatten_List</processor><port>inputlist</port></sink><source type="processor"><processor>cancel_updates</processor><port>csvOutput</port></source></datalink><datalink><sink type="dataflow"><port>proj_percent</port></sink><source type="processor"><processor>create_project</processor><port>percent</port></source></datalink><datalink><sink type="dataflow"><port>upload_status</port></sink><source type="processor"><processor>data_upload_status</processor><port>upload_status</port></source></datalink><datalink><sink type="dataflow"><port>csv_output</port></sink><source type="processor"><processor>Merge_String_List_to_a_String</processor><port>concatenated</port></source></datalink><datalink><sink type="dataflow"><port>interaction_answer</port></sink><source type="processor"><processor>GRefine_Interaction</processor><port>answer</port></source></datalink></datalinks><annotations><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>fa415c13-16cb-4b7e-b928-8a15c997e6d7</identification>\r
+      </annotationBean>\r
+      <date>2012-04-03 13:29:51.253 CEST</date>\r
+      <creators />\r
+      <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
   </annotationAssertions>\r
 </net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>094db52f-ddd9-482e-8d53-cb7df0f92275</identification>\r
+        <identification>e42b52c8-f890-4777-966a-2e8cd33eccb2</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 13:26:52.45 CET</date>\r
+      <date>2012-04-03 13:28:49.550 CEST</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -589,9 +848,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>ea12aff7-ac6d-4f1a-80e9-2827fd04cef9</identification>\r
+        <identification>ea730a6d-3f2e-48e9-a04d-ba5d92917f40</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 14:25:52.266 CET</date>\r
+      <date>2012-03-06 14:09:01.721 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -600,9 +859,141 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>7cea06b2-30dd-4ca1-b6a4-f95ade6c3db8</identification>\r
+        <identification>f33eff41-d6de-494f-8bbc-69740691b8f9</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 14:33:45.458 CET</date>\r
+      <date>2012-03-07 16:50:06.583 CET</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>1c3be139-e877-41ff-ae3a-30cba6a03406</identification>\r
+      </annotationBean>\r
+      <date>2012-03-06 14:20:55.986 CET</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>047da834-2724-4833-bc5c-828140d48d7e</identification>\r
+      </annotationBean>\r
+      <date>2012-03-13 15:19:13.932 CET</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>7f3d1b6c-8d42-4b6e-9078-899bade7337e</identification>\r
+      </annotationBean>\r
+      <date>2012-03-06 14:24:55.16 CET</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>8b0741bc-dad6-4913-b454-1c26fe5094d2</identification>\r
+      </annotationBean>\r
+      <date>2012-03-09 13:08:27.28 CET</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>07d2543b-1c04-447a-be33-12e5944966be</identification>\r
+      </annotationBean>\r
+      <date>2012-03-09 13:38:31.558 CET</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>886b4c22-92bf-4248-a6ef-fb8d66d0c0c3</identification>\r
+      </annotationBean>\r
+      <date>2012-03-06 13:32:35.828 CET</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>75e28940-856e-48ef-8df9-6ebd22197196</identification>\r
+      </annotationBean>\r
+      <date>2012-03-09 12:47:56.624 CET</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>2db6ea60-7ac1-4149-9d6f-0744e45dc25d</identification>\r
+      </annotationBean>\r
+      <date>2012-03-09 16:43:20.468 CET</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>623ec9e4-4797-4df1-a034-b3e37874e854</identification>\r
+      </annotationBean>\r
+      <date>2012-03-07 15:17:35.557 CET</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>d4ca4bd2-cb12-431f-b4dd-4bab2b9d41c4</identification>\r
+      </annotationBean>\r
+      <date>2012-03-07 14:37:53.301 CET</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>3f98b187-ed3c-4620-a8f1-5265cd36bc66</identification>\r
+      </annotationBean>\r
+      <date>2012-03-09 13:03:14.393 CET</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>2ea6209b-ae9d-4f7a-8def-e9cce8e8b6c8</identification>\r
+      </annotationBean>\r
+      <date>2012-03-09 13:41:57.411 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -622,9 +1013,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>2305466b-1018-4e60-896e-9a952cb1f949</identification>\r
+        <identification>a5401923-1dc9-430e-8a06-6d46a2c47b69</identification>\r
       </annotationBean>\r
-      <date>2012-03-08 17:37:45.5 CET</date>\r
+      <date>2012-03-09 13:51:39.145 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -633,9 +1024,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>67a96d49-6abf-4781-8a88-fc8026cb8b05</identification>\r
+        <identification>211152d4-01e6-4491-b222-9f221c8ab784</identification>\r
       </annotationBean>\r
-      <date>2012-03-13 15:29:41.682 CET</date>\r
+      <date>2012-03-06 14:34:54.685 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -644,9 +1035,42 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>1fbd89ef-8f58-41c2-a760-e91fda60cd17</identification>\r
+        <identification>dc11fa24-04fc-4a03-97f4-f9b6459a1ce9</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 15:37:14.85 CET</date>\r
+      <date>2012-03-07 15:16:22.747 CET</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>37f97407-8a01-47b7-830f-23f861279f08</identification>\r
+      </annotationBean>\r
+      <date>2012-03-14 14:54:01.687 CET</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>b36133fa-9a7c-4e26-b3ff-bc67782b9754</identification>\r
+      </annotationBean>\r
+      <date>2012-03-07 15:25:00.339 CET</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>ac2f7fbd-5e39-453f-b572-ca547ed2680c</identification>\r
+      </annotationBean>\r
+      <date>2012-03-06 14:23:32.659 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -655,9 +1079,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>37a0e9b8-2803-449f-adaa-4bfe32b440ff</identification>\r
+        <identification>e0f86762-c4c3-40f1-b61f-aabe274be8f1</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 12:02:09.363 CET</date>\r
+      <date>2012-03-09 13:02:30.672 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -666,9 +1090,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>7ffe885a-da8f-4df1-b2cf-5150d1e35cb0</identification>\r
+        <identification>ea12aff7-ac6d-4f1a-80e9-2827fd04cef9</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 14:04:30.678 CET</date>\r
+      <date>2012-03-06 14:25:52.266 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -677,9 +1101,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>366ed372-2569-4322-a15b-56d1480658ce</identification>\r
+        <identification>d48e0933-caa4-4fdf-915c-904afadda47f</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 16:50:02.681 CET</date>\r
+      <date>2012-03-07 15:06:00.464 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -688,9 +1112,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>69f681a4-fee2-452e-bf4e-eb8e41d1698b</identification>\r
+        <identification>fc0eeba9-b5aa-4707-812b-8eb57e3848f1</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 15:43:40.468 CET</date>\r
+      <date>2012-03-06 13:37:00.887 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -699,9 +1123,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>d4da4550-9e4f-41eb-9dfa-77fb1336392b</identification>\r
+        <identification>1e83c552-ca41-4587-9c0e-c29c38394bc1</identification>\r
       </annotationBean>\r
-      <date>2012-03-08 17:13:04.589 CET</date>\r
+      <date>2012-03-06 13:51:44.109 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -710,9 +1134,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>68312bb3-0013-4ab6-9486-ebf2a88170e8</identification>\r
+        <identification>70d399e3-0f73-4985-a59c-f55d6ee5f03b</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 14:22:54.225 CET</date>\r
+      <date>2012-03-07 16:51:59.307 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -721,9 +1145,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>8ec54701-98f2-48d0-91a0-a6f1799a514e</identification>\r
+        <identification>625a4542-a30b-4cdd-bf50-f8de9ddbf4c6</identification>\r
       </annotationBean>\r
-      <date>2012-03-14 14:26:41.415 CET</date>\r
+      <date>2012-04-03 13:31:56.668 CEST</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -732,9 +1156,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>7fe1ded7-f5c7-4e8b-a62d-07a3793e5c0f</identification>\r
+        <identification>cbe51b2b-178c-4a0d-8897-261477544590</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 14:29:51.662 CET</date>\r
+      <date>2012-03-07 17:18:20.0 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -743,9 +1167,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>20e484cb-3f89-40b7-ba53-cd88f6ff612d</identification>\r
+        <identification>dcf020ba-60b0-44d0-a748-a65f99e5e682</identification>\r
       </annotationBean>\r
-      <date>2012-03-14 14:11:22.926 CET</date>\r
+      <date>2012-03-06 14:01:30.449 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -754,9 +1178,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>f7616d77-5273-49a0-bbde-e88ad45f9437</identification>\r
+        <identification>ff404630-4a3c-49ac-badd-5bf9f14a8103</identification>\r
       </annotationBean>\r
-      <date>2012-03-13 15:29:48.169 CET</date>\r
+      <date>2012-03-06 14:59:02.673 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -765,9 +1189,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>462e2ef4-893c-4e75-9bb2-d5630f7d1d03</identification>\r
+        <identification>60848516-c260-4b2e-bf95-3e10764e8b98</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 12:00:28.995 CET</date>\r
+      <date>2012-03-06 14:47:14.778 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -776,9 +1200,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>886b4c22-92bf-4248-a6ef-fb8d66d0c0c3</identification>\r
+        <identification>4e411866-59fb-4b59-8a15-c00d7a119d51</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 13:32:35.828 CET</date>\r
+      <date>2012-03-07 17:02:21.575 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -787,9 +1211,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>36aaa03c-c8b6-4c4f-b7b4-83e83edb9e0a</identification>\r
+        <identification>59260159-db76-468b-9f7c-97a0a2327e2d</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 16:53:16.656 CET</date>\r
+      <date>2012-03-14 14:38:15.329 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -798,9 +1222,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>b36133fa-9a7c-4e26-b3ff-bc67782b9754</identification>\r
+        <identification>2305466b-1018-4e60-896e-9a952cb1f949</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 15:25:00.339 CET</date>\r
+      <date>2012-03-08 17:37:45.5 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -809,9 +1233,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>c691c14e-655f-482f-b64f-fa126ffa6c15</identification>\r
+        <identification>64952d46-aeda-4c59-93f4-17747d2d1bca</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 17:02:44.555 CET</date>\r
+      <date>2012-03-06 14:47:26.376 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -820,9 +1244,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>f33eff41-d6de-494f-8bbc-69740691b8f9</identification>\r
+        <identification>bc00a2cd-4caf-4699-9e63-affa8610c161</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 16:50:06.583 CET</date>\r
+      <date>2012-03-06 13:46:03.84 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -831,9 +1255,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>6983de44-4c3a-4a0d-b7cb-072a778d7bb8</identification>\r
+        <identification>bc98e55f-8b60-42f4-8dd4-0878c4f407b3</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 13:39:32.674 CET</date>\r
+      <date>2012-03-06 14:02:13.752 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -842,9 +1266,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>dcf020ba-60b0-44d0-a748-a65f99e5e682</identification>\r
+        <identification>f69246e7-612c-418e-8c3d-1f94aed09a4f</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 14:01:30.449 CET</date>\r
+      <date>2012-03-07 16:59:47.257 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -853,9 +1277,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>464ddd54-aa48-4054-be49-5535d088a977</identification>\r
+        <identification>d35e19de-d446-4289-bab2-cc02c18d2c13</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 13:10:20.72 CET</date>\r
+      <date>2012-03-06 14:28:57.571 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -864,9 +1288,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>75e28940-856e-48ef-8df9-6ebd22197196</identification>\r
+        <identification>7ea8bb9f-9343-46bc-8218-75d88988b79d</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 12:47:56.624 CET</date>\r
+      <date>2012-03-14 14:26:04.190 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -875,9 +1299,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>052cccac-844f-4dba-8726-9ceeaa779533</identification>\r
+        <identification>0cb24cbb-b20d-4920-9fce-cfb7ff84a82d</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 14:49:21.292 CET</date>\r
+      <date>2012-03-07 14:38:48.625 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -886,9 +1310,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>211152d4-01e6-4491-b222-9f221c8ab784</identification>\r
+        <identification>1c82e8a5-01a4-475c-b957-e1377b9e949e</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 14:34:54.685 CET</date>\r
+      <date>2012-04-03 13:33:48.655 CEST</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -897,9 +1321,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>2db6ea60-7ac1-4149-9d6f-0744e45dc25d</identification>\r
+        <identification>41777234-2c05-41b8-b77f-06e47fe427d7</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 16:43:20.468 CET</date>\r
+      <date>2012-03-09 13:04:58.180 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -908,9 +1332,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>96bd8edc-a795-45a0-809c-8068489b97c9</identification>\r
+        <identification>d4da4550-9e4f-41eb-9dfa-77fb1336392b</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 14:46:15.583 CET</date>\r
+      <date>2012-03-08 17:13:04.589 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -919,9 +1343,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>c6ab60db-9455-445c-9afd-0ad67aa1ec9d</identification>\r
+        <identification>f1b750f3-f2a2-418e-a6b0-93aaf7bec99f</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 15:00:01.790 CET</date>\r
+      <date>2012-03-09 16:37:24.715 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -930,9 +1354,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>41777234-2c05-41b8-b77f-06e47fe427d7</identification>\r
+        <identification>b2faaf46-2f5d-4a03-a837-4929348bfda7</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 13:04:58.180 CET</date>\r
+      <date>2012-03-09 16:59:23.594 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -941,9 +1365,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>2ea6209b-ae9d-4f7a-8def-e9cce8e8b6c8</identification>\r
+        <identification>7c286b63-74b7-43fb-befc-5ee0649d20ad</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 13:41:57.411 CET</date>\r
+      <date>2012-03-07 16:54:53.519 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -952,9 +1376,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>3bf6fe2c-dddb-46df-b417-7b6488deab58</identification>\r
+        <identification>7fdd92cb-215b-4478-af7b-a612cdea404a</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 17:17:47.780 CET</date>\r
+      <date>2012-03-06 13:21:38.788 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -963,9 +1387,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>b5186d3f-d362-4400-ba1a-49f3561ebebe</identification>\r
+        <identification>3bf6fe2c-dddb-46df-b417-7b6488deab58</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 13:26:13.317 CET</date>\r
+      <date>2012-03-07 17:17:47.780 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -974,9 +1398,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>37f97407-8a01-47b7-830f-23f861279f08</identification>\r
+        <identification>366ed372-2569-4322-a15b-56d1480658ce</identification>\r
       </annotationBean>\r
-      <date>2012-03-14 14:54:01.687 CET</date>\r
+      <date>2012-03-09 16:50:02.681 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -985,9 +1409,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>7ea8bb9f-9343-46bc-8218-75d88988b79d</identification>\r
+        <identification>05219ba8-482a-4ae7-86de-6481a6886a70</identification>\r
       </annotationBean>\r
-      <date>2012-03-14 14:26:04.190 CET</date>\r
+      <date>2012-03-07 15:20:04.949 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -996,9 +1420,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>ab29db78-1a55-42ae-bdee-1554680a70a1</identification>\r
+        <identification>ea7c1608-1b9b-4565-b929-ff7c9cbd068c</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 13:26:15.526 CET</date>\r
+      <date>2012-04-03 13:26:12.871 CEST</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1007,9 +1431,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>a5401923-1dc9-430e-8a06-6d46a2c47b69</identification>\r
+        <identification>7cea06b2-30dd-4ca1-b6a4-f95ade6c3db8</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 13:51:39.145 CET</date>\r
+      <date>2012-03-07 14:33:45.458 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1018,9 +1442,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>64952d46-aeda-4c59-93f4-17747d2d1bca</identification>\r
+        <identification>09dbfb45-65fc-4e8b-ba80-b48fd2c872a2</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 14:47:26.376 CET</date>\r
+      <date>2012-03-09 13:37:19.409 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1029,9 +1453,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>3f98b187-ed3c-4620-a8f1-5265cd36bc66</identification>\r
+        <identification>7ffe885a-da8f-4df1-b2cf-5150d1e35cb0</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 13:03:14.393 CET</date>\r
+      <date>2012-03-06 14:04:30.678 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1040,9 +1464,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>f5534ac8-a5ef-4d66-b8b3-50e1bddbc61e</identification>\r
+        <identification>ba94cdf1-ac8d-401e-b7cf-05cf33e62f34</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 15:25:14.413 CET</date>\r
+      <date>2012-03-07 13:59:09.736 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1051,9 +1475,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>d708bff3-40c3-460c-9a01-7ce8cae50c66</identification>\r
+        <identification>1208f4a8-6088-4d7a-9ba2-1b28696557f5</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 17:08:56.461 CET</date>\r
+      <date>2012-03-27 14:44:39.271 CEST</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1062,9 +1486,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>623ec9e4-4797-4df1-a034-b3e37874e854</identification>\r
+        <identification>c6ab60db-9455-445c-9afd-0ad67aa1ec9d</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 15:17:35.557 CET</date>\r
+      <date>2012-03-06 15:00:01.790 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1073,9 +1497,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>60848516-c260-4b2e-bf95-3e10764e8b98</identification>\r
+        <identification>6983de44-4c3a-4a0d-b7cb-072a778d7bb8</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 14:47:14.778 CET</date>\r
+      <date>2012-03-06 13:39:32.674 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1084,9 +1508,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>553c311f-92e6-4e9c-97a3-e88a9ce41838</identification>\r
+        <identification>f8cd6827-4671-4cb5-b461-f597e0c04595</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 16:48:59.330 CET</date>\r
+      <date>2012-03-08 17:34:28.408 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1095,9 +1519,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>c0bbaa99-7bd9-42fd-ad20-dd739ad58b13</identification>\r
+        <identification>b5186d3f-d362-4400-ba1a-49f3561ebebe</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 13:13:47.224 CET</date>\r
+      <date>2012-03-09 13:26:13.317 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1106,9 +1530,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>07d2543b-1c04-447a-be33-12e5944966be</identification>\r
+        <identification>d708bff3-40c3-460c-9a01-7ce8cae50c66</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 13:38:31.558 CET</date>\r
+      <date>2012-03-07 17:08:56.461 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1117,9 +1541,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>8b0741bc-dad6-4913-b454-1c26fe5094d2</identification>\r
+        <identification>199306ab-630e-4e5e-b536-430887f7dfe6</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 13:08:27.28 CET</date>\r
+      <date>2012-03-07 14:13:37.818 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1128,9 +1552,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>7c286b63-74b7-43fb-befc-5ee0649d20ad</identification>\r
+        <identification>e91435eb-cd87-4519-abf4-f4e0d4b3c461</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 16:54:53.519 CET</date>\r
+      <date>2012-04-03 16:32:03.751 CEST</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1139,9 +1563,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>dc11fa24-04fc-4a03-97f4-f9b6459a1ce9</identification>\r
+        <identification>c691c14e-655f-482f-b64f-fa126ffa6c15</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 15:16:22.747 CET</date>\r
+      <date>2012-03-09 17:02:44.555 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1150,9 +1574,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>330658b7-bf4d-4aab-b1c4-f5aee4e2e59e</identification>\r
+        <identification>462e2ef4-893c-4e75-9bb2-d5630f7d1d03</identification>\r
       </annotationBean>\r
-      <date>2012-03-08 17:35:33.174 CET</date>\r
+      <date>2012-03-06 12:00:28.995 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1161,9 +1585,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>d48e0933-caa4-4fdf-915c-904afadda47f</identification>\r
+        <identification>7fe1ded7-f5c7-4e8b-a62d-07a3793e5c0f</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 15:06:00.464 CET</date>\r
+      <date>2012-03-07 14:29:51.662 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1172,9 +1596,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>e0f86762-c4c3-40f1-b61f-aabe274be8f1</identification>\r
+        <identification>93437352-9975-42dc-9efa-1424b3effebd</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 13:02:30.672 CET</date>\r
+      <date>2012-03-06 15:14:52.759 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1183,9 +1607,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>9e02e440-aa10-49df-a507-d1e43c7aed8d</identification>\r
+        <identification>36aaa03c-c8b6-4c4f-b7b4-83e83edb9e0a</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 15:15:41.94 CET</date>\r
+      <date>2012-03-07 16:53:16.656 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1194,9 +1618,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>e78fcfc0-0401-4cfd-9c93-55be2acbc321</identification>\r
+        <identification>d2317152-7017-4554-a3d3-43f73dc04b35</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 17:15:30.11 CET</date>\r
+      <date>2012-03-09 13:33:02.44 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1205,9 +1629,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>c70bccac-90bf-4bf8-a801-9bbbf2c1d475</identification>\r
+        <identification>553c311f-92e6-4e9c-97a3-e88a9ce41838</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 15:08:31.559 CET</date>\r
+      <date>2012-03-07 16:48:59.330 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1216,9 +1640,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>de604c9f-f6be-4bef-9e7c-fa12b40c6b0f</identification>\r
+        <identification>8ec54701-98f2-48d0-91a0-a6f1799a514e</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 17:15:11.332 CET</date>\r
+      <date>2012-03-14 14:26:41.415 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1227,9 +1651,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>09dbfb45-65fc-4e8b-ba80-b48fd2c872a2</identification>\r
+        <identification>330658b7-bf4d-4aab-b1c4-f5aee4e2e59e</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 13:37:19.409 CET</date>\r
+      <date>2012-03-08 17:35:33.174 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1238,9 +1662,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>bc00a2cd-4caf-4699-9e63-affa8610c161</identification>\r
+        <identification>6d5effb2-ca3d-4cf3-afb4-d5a836d7ee72</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 13:46:03.84 CET</date>\r
+      <date>2012-03-27 14:49:07.757 CEST</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1249,9 +1673,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>7f3d1b6c-8d42-4b6e-9078-899bade7337e</identification>\r
+        <identification>f7616d77-5273-49a0-bbde-e88ad45f9437</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 14:24:55.16 CET</date>\r
+      <date>2012-03-13 15:29:48.169 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1271,9 +1695,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>b2faaf46-2f5d-4a03-a837-4929348bfda7</identification>\r
+        <identification>67a96d49-6abf-4781-8a88-fc8026cb8b05</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 16:59:23.594 CET</date>\r
+      <date>2012-03-13 15:29:41.682 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1282,9 +1706,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>93437352-9975-42dc-9efa-1424b3effebd</identification>\r
+        <identification>2c4e801f-0148-4534-a2bb-e7ebe8f4ad92</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 15:14:52.759 CET</date>\r
+      <date>2012-04-03 13:25:10.503 CEST</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1293,9 +1717,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>d2317152-7017-4554-a3d3-43f73dc04b35</identification>\r
+        <identification>464ddd54-aa48-4054-be49-5535d088a977</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 13:33:02.44 CET</date>\r
+      <date>2012-03-09 13:10:20.72 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1304,9 +1728,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>ba94cdf1-ac8d-401e-b7cf-05cf33e62f34</identification>\r
+        <identification>69f681a4-fee2-452e-bf4e-eb8e41d1698b</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 13:59:09.736 CET</date>\r
+      <date>2012-03-06 15:43:40.468 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1315,9 +1739,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>54a07560-ef8c-44ad-b63e-ab2e2dd2b912</identification>\r
+        <identification>96bd8edc-a795-45a0-809c-8068489b97c9</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 14:44:35.705 CET</date>\r
+      <date>2012-03-06 14:46:15.583 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1326,9 +1750,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>ea730a6d-3f2e-48e9-a04d-ba5d92917f40</identification>\r
+        <identification>9e02e440-aa10-49df-a507-d1e43c7aed8d</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 14:09:01.721 CET</date>\r
+      <date>2012-03-06 15:15:41.94 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1337,9 +1761,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>cbe51b2b-178c-4a0d-8897-261477544590</identification>\r
+        <identification>c70bccac-90bf-4bf8-a801-9bbbf2c1d475</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 17:18:20.0 CET</date>\r
+      <date>2012-03-06 15:08:31.559 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1348,9 +1772,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>ff404630-4a3c-49ac-badd-5bf9f14a8103</identification>\r
+        <identification>094db52f-ddd9-482e-8d53-cb7df0f92275</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 14:59:02.673 CET</date>\r
+      <date>2012-03-09 13:26:52.45 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1359,9 +1783,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>bc98e55f-8b60-42f4-8dd4-0878c4f407b3</identification>\r
+        <identification>45c42399-b811-4bf6-885e-7a5d0f54b4de</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 14:02:13.752 CET</date>\r
+      <date>2012-03-09 16:50:49.796 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1370,9 +1794,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>1c3be139-e877-41ff-ae3a-30cba6a03406</identification>\r
+        <identification>20e484cb-3f89-40b7-ba53-cd88f6ff612d</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 14:20:55.986 CET</date>\r
+      <date>2012-03-14 14:11:22.926 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1381,9 +1805,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>fc0eeba9-b5aa-4707-812b-8eb57e3848f1</identification>\r
+        <identification>f5534ac8-a5ef-4d66-b8b3-50e1bddbc61e</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 13:37:00.887 CET</date>\r
+      <date>2012-03-07 15:25:14.413 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1392,9 +1816,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>f69246e7-612c-418e-8c3d-1f94aed09a4f</identification>\r
+        <identification>de604c9f-f6be-4bef-9e7c-fa12b40c6b0f</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 16:59:47.257 CET</date>\r
+      <date>2012-03-07 17:15:11.332 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1403,9 +1827,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>7fdd92cb-215b-4478-af7b-a612cdea404a</identification>\r
+        <identification>052cccac-844f-4dba-8726-9ceeaa779533</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 13:21:38.788 CET</date>\r
+      <date>2012-03-07 14:49:21.292 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1414,9 +1838,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>d35e19de-d446-4289-bab2-cc02c18d2c13</identification>\r
+        <identification>68312bb3-0013-4ab6-9486-ebf2a88170e8</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 14:28:57.571 CET</date>\r
+      <date>2012-03-06 14:22:54.225 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1425,9 +1849,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>d4ca4bd2-cb12-431f-b4dd-4bab2b9d41c4</identification>\r
+        <identification>56bc5bfd-9bc7-40f6-9a70-c1acf14e04c7</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 14:37:53.301 CET</date>\r
+      <date>2012-04-03 10:52:11.606 CEST</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1436,9 +1860,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>047da834-2724-4833-bc5c-828140d48d7e</identification>\r
+        <identification>ab29db78-1a55-42ae-bdee-1554680a70a1</identification>\r
       </annotationBean>\r
-      <date>2012-03-13 15:19:13.932 CET</date>\r
+      <date>2012-03-06 13:26:15.526 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1447,9 +1871,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>45c42399-b811-4bf6-885e-7a5d0f54b4de</identification>\r
+        <identification>e78fcfc0-0401-4cfd-9c93-55be2acbc321</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 16:50:49.796 CET</date>\r
+      <date>2012-03-07 17:15:30.11 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1458,9 +1882,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>f8cd6827-4671-4cb5-b461-f597e0c04595</identification>\r
+        <identification>37a0e9b8-2803-449f-adaa-4bfe32b440ff</identification>\r
       </annotationBean>\r
-      <date>2012-03-08 17:34:28.408 CET</date>\r
+      <date>2012-03-06 12:02:09.363 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1469,9 +1893,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>05219ba8-482a-4ae7-86de-6481a6886a70</identification>\r
+        <identification>54a07560-ef8c-44ad-b63e-ab2e2dd2b912</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 15:20:04.949 CET</date>\r
+      <date>2012-03-07 14:44:35.705 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1480,9 +1904,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>4e411866-59fb-4b59-8a15-c00d7a119d51</identification>\r
+        <identification>1fbd89ef-8f58-41c2-a760-e91fda60cd17</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 17:02:21.575 CET</date>\r
+      <date>2012-03-06 15:37:14.85 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1491,9 +1915,9 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>0cb24cbb-b20d-4920-9fce-cfb7ff84a82d</identification>\r
+        <identification>a13b9a01-7273-44c4-a9b5-5618ca4a1b57</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 14:38:48.625 CET</date>\r
+      <date>2012-04-03 13:45:15.47 CEST</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1502,29 +1926,62 @@ if ("true".matches(loop)) {&#xD;
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>199306ab-630e-4e5e-b536-430887f7dfe6</identification>\r
+        <identification>c0bbaa99-7bd9-42fd-ad20-dd739ad58b13</identification>\r
       </annotationBean>\r
-      <date>2012-03-07 14:13:37.818 CET</date>\r
+      <date>2012-03-09 13:13:47.224 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
   </annotationAssertions>\r
-</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2></annotations></dataflow><dataflow id="94a54de1-457f-4052-99dc-05a8e0855fa3" role="nested"><name>Workflow20</name><inputPorts><port><name>cancel</name><depth>0</depth><granularDepth>0</granularDepth><annotations /></port><port><name>csvInput</name><depth>0</depth><granularDepth>0</granularDepth><annotations /></port></inputPorts><outputPorts><port><name>csvOutput</name><annotations /></port></outputPorts><processors><processor><name>passthrough</name><inputPorts><port><name>csvin</name><depth>0</depth></port></inputPorts><outputPorts><port><name>csvout</name><depth>0</depth><granularDepth>0</granularDepth></port></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><map from="csvin" to="csvin" /></inputMap><outputMap><map from="csvout" to="csvout" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns="">\r
+  <inputs>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+      <name>csvin</name>\r
+      <depth>0</depth>\r
+      <mimeTypes>\r
+        <string>text/plain</string>\r
+      </mimeTypes>\r
+      <handledReferenceSchemes />\r
+      <translatedElementType>java.lang.String</translatedElementType>\r
+      <allowsLiteralValues>true</allowsLiteralValues>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+  </inputs>\r
+  <outputs>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
+      <name>csvout</name>\r
+      <depth>0</depth>\r
+      <mimeTypes />\r
+      <granularDepth>0</granularDepth>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
+  </outputs>\r
+  <classLoaderSharing>workflow</classLoaderSharing>\r
+  <localDependencies />\r
+  <artifactDependencies />\r
+  <script>csvout = csvin</script>\r
+  <dependencies />\r
+</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="">\r
+  <maxJobs>1</maxJobs>\r
+</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="">\r
+  <backoffFactor>1.0</backoffFactor>\r
+  <initialDelay>1000</initialDelay>\r
+  <maxDelay>5000</maxDelay>\r
+  <maxRetries>0</maxRetries>\r
+</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><cross><port name="csvin" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor></processors><conditions /><datalinks><datalink><sink type="processor"><processor>passthrough</processor><port>csvin</port></sink><source type="dataflow"><port>csvInput</port></source></datalink><datalink><sink type="dataflow"><port>csvOutput</port></sink><source type="processor"><processor>passthrough</processor><port>csvout</port></source></datalink></datalinks><annotations><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>ac2f7fbd-5e39-453f-b572-ca547ed2680c</identification>\r
+        <identification>94a54de1-457f-4052-99dc-05a8e0855fa3</identification>\r
       </annotationBean>\r
-      <date>2012-03-06 14:23:32.659 CET</date>\r
+      <date>2012-04-03 13:28:16.645 CEST</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
   </annotationAssertions>\r
-</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2></annotations></dataflow><dataflow id="7b1fa700-830f-4e0e-a100-1c3b33b9f677" role="nested"><name>Workflow9</name><inputPorts><port><name>jobID</name><depth>0</depth><granularDepth>0</granularDepth><annotations /></port></inputPorts><outputPorts><port><name>percent</name><annotations /></port><port><name>projectID</name><annotations /></port></outputPorts><processors><processor><name>Create_Project_Status_Service</name><inputPorts><port><name>jobID</name><depth>0</depth></port></inputPorts><outputPorts><port><name>responseBody</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>rest-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.rest.RESTActivity</class><inputMap><map from="jobID" to="jobID" /></inputMap><outputMap><map from="responseBody" to="responseBody" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.rest.RESTActivityConfigurationBean xmlns="">\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2></annotations></dataflow><dataflow id="31fdf50d-202d-439f-b858-6011a70e3d1d" role="nested"><name>Workflow38</name><inputPorts><port><name>jobID</name><depth>0</depth><granularDepth>0</granularDepth><annotations /></port></inputPorts><outputPorts><port><name>upload_status</name><annotations /></port></outputPorts><processors><processor><name>Upload_Status_Service</name><inputPorts><port><name>jobID</name><depth>0</depth></port></inputPorts><outputPorts><port><name>responseBody</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>rest-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.rest.RESTActivity</class><inputMap><map from="jobID" to="jobID" /></inputMap><outputMap><map from="responseBody" to="responseBody" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.rest.RESTActivityConfigurationBean xmlns="">\r
   <httpMethod>POST</httpMethod>\r
   <urlSignature>http://127.0.0.1:3333/command/core/get-importing-job-status?jobID={jobID}</urlSignature>\r
   <acceptsHeaderValue>application/json</acceptsHeaderValue>\r
-  <contentTypeForUpdates>application/xml</contentTypeForUpdates>\r
+  <contentTypeForUpdates>multipart/form-data</contentTypeForUpdates>\r
   <outgoingDataFormat>String</outgoingDataFormat>\r
   <sendHTTPExpectRequestHeader>false</sendHTTPExpectRequestHeader>\r
   <showRedirectionOutputPort>false</showRedirectionOutputPort>\r
@@ -1543,7 +2000,7 @@ if ("true".matches(loop)) {&#xD;
   <initialDelay>1000</initialDelay>\r
   <maxDelay>5000</maxDelay>\r
   <maxRetries>0</maxRetries>\r
-</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><cross><port name="jobID" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Parse_Project</name><inputPorts><port><name>jsonStr</name><depth>0</depth></port></inputPorts><outputPorts><port><name>percent</name><depth>0</depth><granularDepth>0</granularDepth></port><port><name>projectID</name><depth>0</depth><granularDepth>0</granularDepth></port></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><map from="jsonStr" to="jsonStr" /></inputMap><outputMap><map from="projectID" to="projectID" /><map from="percent" to="percent" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns="">\r
+</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><cross><port name="jobID" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Parse_Data_Upload</name><inputPorts><port><name>jsonStr</name><depth>0</depth></port></inputPorts><outputPorts><port><name>upload_ok</name><depth>0</depth><granularDepth>0</granularDepth></port></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><map from="jsonStr" to="jsonStr" /></inputMap><outputMap><map from="upload_ok" to="upload_ok" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns="">\r
   <inputs>\r
     <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
       <name>jsonStr</name>\r
@@ -1564,13 +2021,7 @@ if ("true".matches(loop)) {&#xD;
       <granularDepth>0</granularDepth>\r
     </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
     <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
-      <name>projectID</name>\r
-      <depth>0</depth>\r
-      <mimeTypes />\r
-      <granularDepth>0</granularDepth>\r
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
-      <name>percent</name>\r
+      <name>upload_ok</name>\r
       <depth>0</depth>\r
       <mimeTypes />\r
       <granularDepth>0</granularDepth>\r
@@ -1588,17 +2039,17 @@ import org.json.simple.JSONArray;
 import org.json.simple.JSONObject;\r
 import org.json.simple.parser.ParseException;\r
 \r
-projectID = -1;\r
-percent = 0;\r
+upload_ok = "false";\r
 JSONParser parser=new JSONParser();\r
        try {  \r
            Object obj=parser.parse(jsonStr);\r
            JSONObject jobj=(JSONObject)obj;\r
            JSONObject job = (JSONObject)jobj.get("job");\r
            JSONObject config = (JSONObject)job.get("config");\r
-           JSONObject progress = (JSONObject)config.get("progress");\r
-           percent = progress.get("percent");\r
-           projectID = config.get("projectID");\r
+           boolean hasData = config.get("hasData");\r
+           String state = config.get("state");\r
+           if(hasData &amp;&amp; state.equals("ready"))\r
+               upload_ok="true";\r
        } catch(ParseException pe) {\r
            jsonErr = pe.getMessage();\r
        }  \r
@@ -1613,13 +2064,13 @@ JSONParser parser=new JSONParser();
   <initialDelay>1000</initialDelay>\r
   <maxDelay>5000</maxDelay>\r
   <maxRetries>0</maxRetries>\r
-</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><cross><port name="jsonStr" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor></processors><conditions /><datalinks><datalink><sink type="processor"><processor>Create_Project_Status_Service</processor><port>jobID</port></sink><source type="dataflow"><port>jobID</port></source></datalink><datalink><sink type="processor"><processor>Parse_Project</processor><port>jsonStr</port></sink><source type="processor"><processor>Create_Project_Status_Service</processor><port>responseBody</port></source></datalink><datalink><sink type="dataflow"><port>percent</port></sink><source type="processor"><processor>Parse_Project</processor><port>percent</port></source></datalink><datalink><sink type="dataflow"><port>projectID</port></sink><source type="processor"><processor>Parse_Project</processor><port>projectID</port></source></datalink></datalinks><annotations><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+</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><cross><port name="jsonStr" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor></processors><conditions /><datalinks><datalink><sink type="processor"><processor>Upload_Status_Service</processor><port>jobID</port></sink><source type="dataflow"><port>jobID</port></source></datalink><datalink><sink type="processor"><processor>Parse_Data_Upload</processor><port>jsonStr</port></sink><source type="processor"><processor>Upload_Status_Service</processor><port>responseBody</port></source></datalink><datalink><sink type="dataflow"><port>upload_status</port></sink><source type="processor"><processor>Parse_Data_Upload</processor><port>upload_ok</port></source></datalink></datalinks><annotations><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>5415b66c-0cdb-4425-b654-3347857519ef</identification>\r
+        <identification>a5c16a81-e8fb-4cd3-b620-3b972e1fea15</identification>\r
       </annotationBean>\r
-      <date>2012-03-08 17:25:55.318 CET</date>\r
+      <date>2012-03-09 13:04:55.106 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1628,9 +2079,9 @@ JSONParser parser=new JSONParser();
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>7b1fa700-830f-4e0e-a100-1c3b33b9f677</identification>\r
+        <identification>841ea555-f5f8-4f25-b8f1-c1a28ac1e6f3</identification>\r
       </annotationBean>\r
-      <date>2012-03-08 17:36:57.329 CET</date>\r
+      <date>2012-03-09 13:00:14.572 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1639,9 +2090,9 @@ JSONParser parser=new JSONParser();
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>62dc4167-612a-47f7-9daa-1cc5111355c9</identification>\r
+        <identification>31fdf50d-202d-439f-b858-6011a70e3d1d</identification>\r
       </annotationBean>\r
-      <date>2012-03-08 17:34:26.153 CET</date>\r
+      <date>2012-03-14 14:37:03.161 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1650,18 +2101,107 @@ JSONParser parser=new JSONParser();
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>e1894c1f-5daf-48d9-9aa0-0432bc2e330b</identification>\r
+        <identification>86bf6ca4-201f-450e-bc88-9922b490aa68</identification>\r
       </annotationBean>\r
-      <date>2012-03-08 17:35:06.427 CET</date>\r
+      <date>2012-03-09 13:03:05.472 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
   </annotationAssertions>\r
-</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2></annotations></dataflow><dataflow id="31fdf50d-202d-439f-b858-6011a70e3d1d" role="nested"><name>Workflow38</name><inputPorts><port><name>jobID</name><depth>0</depth><granularDepth>0</granularDepth><annotations /></port></inputPorts><outputPorts><port><name>upload_status</name><annotations /></port></outputPorts><processors><processor><name>Upload_Status_Service</name><inputPorts><port><name>jobID</name><depth>0</depth></port></inputPorts><outputPorts><port><name>responseBody</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>rest-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.rest.RESTActivity</class><inputMap><map from="jobID" to="jobID" /></inputMap><outputMap><map from="responseBody" to="responseBody" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.rest.RESTActivityConfigurationBean xmlns="">\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>d5398ff1-78d8-48ba-ace4-b0daec6ea8a0</identification>\r
+      </annotationBean>\r
+      <date>2012-03-09 13:08:09.391 CET</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>d2599501-a88c-4658-b1d5-889cd67a4844</identification>\r
+      </annotationBean>\r
+      <date>2012-03-09 12:53:00.448 CET</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2></annotations></dataflow><dataflow id="e39565fa-a649-4b7e-9fa3-58921efd4f53" role="nested"><name>Workflow5</name><inputPorts><port><name>projectID</name><depth>0</depth><granularDepth>0</granularDepth><annotations /></port><port><name>save</name><depth>0</depth><granularDepth>0</granularDepth><annotations /></port></inputPorts><outputPorts><port><name>export_data</name><annotations /></port></outputPorts><processors><processor><name>Export_Data</name><inputPorts><port><name>projectID</name><depth>0</depth></port><port><name>inputBody</name><depth>0</depth></port></inputPorts><outputPorts><port><name>responseBody</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>rest-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.rest.RESTActivity</class><inputMap><map from="projectID" to="projectID" /><map from="inputBody" to="inputBody" /></inputMap><outputMap><map from="responseBody" to="responseBody" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.rest.RESTActivityConfigurationBean xmlns="">\r
+  <httpMethod>POST</httpMethod>\r
+  <urlSignature>http://127.0.0.1:3333/command/core/export-rows/{projectID}.csv</urlSignature>\r
+  <acceptsHeaderValue>text/html</acceptsHeaderValue>\r
+  <contentTypeForUpdates>application/x-www-form-urlencoded</contentTypeForUpdates>\r
+  <outgoingDataFormat>String</outgoingDataFormat>\r
+  <sendHTTPExpectRequestHeader>false</sendHTTPExpectRequestHeader>\r
+  <showRedirectionOutputPort>false</showRedirectionOutputPort>\r
+  <escapeParameters>true</escapeParameters>\r
+  <otherHTTPHeaders />\r
+  <activityInputs>\r
+    <entry>\r
+      <string>projectID</string>\r
+      <java-class>java.lang.String</java-class>\r
+    </entry>\r
+  </activityInputs>\r
+</net.sf.taverna.t2.activities.rest.RESTActivityConfigurationBean></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="">\r
+  <maxJobs>1</maxJobs>\r
+</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="">\r
+  <backoffFactor>1.0</backoffFactor>\r
+  <initialDelay>1000</initialDelay>\r
+  <maxDelay>5000</maxDelay>\r
+  <maxRetries>0</maxRetries>\r
+</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><cross><port name="projectID" depth="0" /><port name="inputBody" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Export_Data_Options</name><inputPorts><port><name>projectID</name><depth>0</depth></port></inputPorts><outputPorts><port><name>options</name><depth>0</depth><granularDepth>0</granularDepth></port></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><map from="projectID" to="projectID" /></inputMap><outputMap><map from="options" to="options" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns="">\r
+  <inputs>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+      <name>projectID</name>\r
+      <depth>0</depth>\r
+      <mimeTypes>\r
+        <string>text/plain</string>\r
+      </mimeTypes>\r
+      <handledReferenceSchemes />\r
+      <translatedElementType>java.lang.String</translatedElementType>\r
+      <allowsLiteralValues>true</allowsLiteralValues>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
+  </inputs>\r
+  <outputs>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
+      <name>options</name>\r
+      <depth>0</depth>\r
+      <mimeTypes />\r
+      <granularDepth>0</granularDepth>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
+  </outputs>\r
+  <classLoaderSharing>workflow</classLoaderSharing>\r
+  <localDependencies />\r
+  <artifactDependencies />\r
+  <script>options ="project="  + projectID + "&amp;format=csv&amp;engine={\"facets\":[],\"mode\":\"row-based\"}&amp;contentType=application/x-unknown";</script>\r
+  <dependencies />\r
+</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="">\r
+  <maxJobs>1</maxJobs>\r
+</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="">\r
+  <backoffFactor>1.0</backoffFactor>\r
+  <initialDelay>1000</initialDelay>\r
+  <maxDelay>5000</maxDelay>\r
+  <maxRetries>0</maxRetries>\r
+</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><cross><port name="projectID" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor></processors><conditions /><datalinks><datalink><sink type="processor"><processor>Export_Data</processor><port>projectID</port></sink><source type="dataflow"><port>projectID</port></source></datalink><datalink><sink type="processor"><processor>Export_Data</processor><port>inputBody</port></sink><source type="processor"><processor>Export_Data_Options</processor><port>options</port></source></datalink><datalink><sink type="processor"><processor>Export_Data_Options</processor><port>projectID</port></sink><source type="dataflow"><port>projectID</port></source></datalink><datalink><sink type="dataflow"><port>export_data</port></sink><source type="processor"><processor>Export_Data</processor><port>responseBody</port></source></datalink></datalinks><annotations><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+  <annotationAssertions>\r
+    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
+        <identification>e39565fa-a649-4b7e-9fa3-58921efd4f53</identification>\r
+      </annotationBean>\r
+      <date>2012-04-03 13:20:41.459 CEST</date>\r
+      <creators />\r
+      <curationEventList />\r
+    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
+  </annotationAssertions>\r
+</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2></annotations></dataflow><dataflow id="7b1fa700-830f-4e0e-a100-1c3b33b9f677" role="nested"><name>Workflow9</name><inputPorts><port><name>jobID</name><depth>0</depth><granularDepth>0</granularDepth><annotations /></port></inputPorts><outputPorts><port><name>percent</name><annotations /></port><port><name>projectID</name><annotations /></port></outputPorts><processors><processor><name>Create_Project_Status_Service</name><inputPorts><port><name>jobID</name><depth>0</depth></port></inputPorts><outputPorts><port><name>responseBody</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>rest-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.rest.RESTActivity</class><inputMap><map from="jobID" to="jobID" /></inputMap><outputMap><map from="responseBody" to="responseBody" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.rest.RESTActivityConfigurationBean xmlns="">\r
   <httpMethod>POST</httpMethod>\r
   <urlSignature>http://127.0.0.1:3333/command/core/get-importing-job-status?jobID={jobID}</urlSignature>\r
   <acceptsHeaderValue>application/json</acceptsHeaderValue>\r
-  <contentTypeForUpdates>multipart/form-data</contentTypeForUpdates>\r
+  <contentTypeForUpdates>application/xml</contentTypeForUpdates>\r
   <outgoingDataFormat>String</outgoingDataFormat>\r
   <sendHTTPExpectRequestHeader>false</sendHTTPExpectRequestHeader>\r
   <showRedirectionOutputPort>false</showRedirectionOutputPort>\r
@@ -1680,7 +2220,7 @@ JSONParser parser=new JSONParser();
   <initialDelay>1000</initialDelay>\r
   <maxDelay>5000</maxDelay>\r
   <maxRetries>0</maxRetries>\r
-</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><cross><port name="jobID" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Parse_Data_Upload</name><inputPorts><port><name>jsonStr</name><depth>0</depth></port></inputPorts><outputPorts><port><name>upload_ok</name><depth>0</depth><granularDepth>0</granularDepth></port></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><map from="jsonStr" to="jsonStr" /></inputMap><outputMap><map from="upload_ok" to="upload_ok" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns="">\r
+</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><cross><port name="jobID" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Parse_Project</name><inputPorts><port><name>jsonStr</name><depth>0</depth></port></inputPorts><outputPorts><port><name>percent</name><depth>0</depth><granularDepth>0</granularDepth></port><port><name>projectID</name><depth>0</depth><granularDepth>0</granularDepth></port></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><map from="jsonStr" to="jsonStr" /></inputMap><outputMap><map from="projectID" to="projectID" /><map from="percent" to="percent" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns="">\r
   <inputs>\r
     <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>\r
       <name>jsonStr</name>\r
@@ -1701,7 +2241,13 @@ JSONParser parser=new JSONParser();
       <granularDepth>0</granularDepth>\r
     </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
     <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
-      <name>upload_ok</name>\r
+      <name>projectID</name>\r
+      <depth>0</depth>\r
+      <mimeTypes />\r
+      <granularDepth>0</granularDepth>\r
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>\r
+      <name>percent</name>\r
       <depth>0</depth>\r
       <mimeTypes />\r
       <granularDepth>0</granularDepth>\r
@@ -1719,17 +2265,17 @@ import org.json.simple.JSONArray;
 import org.json.simple.JSONObject;\r
 import org.json.simple.parser.ParseException;\r
 \r
-upload_ok = "false";\r
+projectID = -1;\r
+percent = 0;\r
 JSONParser parser=new JSONParser();\r
        try {  \r
            Object obj=parser.parse(jsonStr);\r
            JSONObject jobj=(JSONObject)obj;\r
            JSONObject job = (JSONObject)jobj.get("job");\r
            JSONObject config = (JSONObject)job.get("config");\r
-           boolean hasData = config.get("hasData");\r
-           String state = config.get("state");\r
-           if(hasData &amp;&amp; state.equals("ready"))\r
-               upload_ok="true";\r
+           JSONObject progress = (JSONObject)config.get("progress");\r
+           percent = progress.get("percent");\r
+           projectID = config.get("projectID");\r
        } catch(ParseException pe) {\r
            jsonErr = pe.getMessage();\r
        }  \r
@@ -1744,35 +2290,13 @@ JSONParser parser=new JSONParser();
   <initialDelay>1000</initialDelay>\r
   <maxDelay>5000</maxDelay>\r
   <maxRetries>0</maxRetries>\r
-</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><cross><port name="jsonStr" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor></processors><conditions /><datalinks><datalink><sink type="processor"><processor>Upload_Status_Service</processor><port>jobID</port></sink><source type="dataflow"><port>jobID</port></source></datalink><datalink><sink type="processor"><processor>Parse_Data_Upload</processor><port>jsonStr</port></sink><source type="processor"><processor>Upload_Status_Service</processor><port>responseBody</port></source></datalink><datalink><sink type="dataflow"><port>upload_status</port></sink><source type="processor"><processor>Parse_Data_Upload</processor><port>upload_ok</port></source></datalink></datalinks><annotations><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
-  <annotationAssertions>\r
-    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
-      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>86bf6ca4-201f-450e-bc88-9922b490aa68</identification>\r
-      </annotationBean>\r
-      <date>2012-03-09 13:03:05.472 CET</date>\r
-      <creators />\r
-      <curationEventList />\r
-    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
-  </annotationAssertions>\r
-</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
-  <annotationAssertions>\r
-    <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
-      <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>d2599501-a88c-4658-b1d5-889cd67a4844</identification>\r
-      </annotationBean>\r
-      <date>2012-03-09 12:53:00.448 CET</date>\r
-      <creators />\r
-      <curationEventList />\r
-    </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
-  </annotationAssertions>\r
-</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
+</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><cross><port name="jsonStr" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor></processors><conditions /><datalinks><datalink><sink type="processor"><processor>Create_Project_Status_Service</processor><port>jobID</port></sink><source type="dataflow"><port>jobID</port></source></datalink><datalink><sink type="processor"><processor>Parse_Project</processor><port>jsonStr</port></sink><source type="processor"><processor>Create_Project_Status_Service</processor><port>responseBody</port></source></datalink><datalink><sink type="dataflow"><port>percent</port></sink><source type="processor"><processor>Parse_Project</processor><port>percent</port></source></datalink><datalink><sink type="dataflow"><port>projectID</port></sink><source type="processor"><processor>Parse_Project</processor><port>projectID</port></source></datalink></datalinks><annotations><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">\r
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>841ea555-f5f8-4f25-b8f1-c1a28ac1e6f3</identification>\r
+        <identification>5415b66c-0cdb-4425-b654-3347857519ef</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 13:00:14.572 CET</date>\r
+      <date>2012-03-08 17:25:55.318 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1781,9 +2305,9 @@ JSONParser parser=new JSONParser();
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>d5398ff1-78d8-48ba-ace4-b0daec6ea8a0</identification>\r
+        <identification>e1894c1f-5daf-48d9-9aa0-0432bc2e330b</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 13:08:09.391 CET</date>\r
+      <date>2012-03-08 17:35:06.427 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1792,9 +2316,9 @@ JSONParser parser=new JSONParser();
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>31fdf50d-202d-439f-b858-6011a70e3d1d</identification>\r
+        <identification>7b1fa700-830f-4e0e-a100-1c3b33b9f677</identification>\r
       </annotationBean>\r
-      <date>2012-03-14 14:37:03.161 CET</date>\r
+      <date>2012-03-08 17:36:57.329 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
@@ -1803,9 +2327,9 @@ JSONParser parser=new JSONParser();
   <annotationAssertions>\r
     <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r
       <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">\r
-        <identification>a5c16a81-e8fb-4cd3-b620-3b972e1fea15</identification>\r
+        <identification>62dc4167-612a-47f7-9daa-1cc5111355c9</identification>\r
       </annotationBean>\r
-      <date>2012-03-09 13:04:55.106 CET</date>\r
+      <date>2012-03-08 17:34:26.153 CET</date>\r
       <creators />\r
       <curationEventList />\r
     </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>\r