t2-server 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,92 @@
1
+ = Changes log for the T2 Ruby Gem
2
+
3
+ == Version 0.5.1
4
+
5
+ * Fix horror typo in Server#set_run_input.
6
+ * Expand test coverage to include more diverse workflows.
7
+ * Reformat LICENCE and CHANGES as rdoc files.
8
+
9
+ == Version 0.5.0
10
+
11
+ * Make the require file consistent with the gem name.
12
+ * Fix run_workflow --input switch for values containing colons.
13
+ * Require rubygems in all scripts.
14
+ * Updates to RDoc options.
15
+ * Rename executables with a consistant name pattern.
16
+ * Convert t2-delete-all-runs script to be more flexible.
17
+ * Change the Run#get_output method to correctly return a list.
18
+ * Stop t2-run-workflow from deleting runs automatically.
19
+ * Install the scripts as part of the gem.
20
+ * Fix inconsistencies in the Server API.
21
+ * Updates to the test suite to reflect recent library updates.
22
+ * Move to LibXML for parsing server responses.
23
+
24
+ == Version 0.2.1
25
+
26
+ * Don't pollute global namespace with REXML stuff.
27
+
28
+ == Version 0.2.0
29
+
30
+ * Removed a test that seems to behave oddly.
31
+ * Add capabilities for https and basic auth.
32
+ * Use a single http connection per server.
33
+
34
+ == Version 0.1.1
35
+
36
+ * Add baclava input functionality to run_workflow script.
37
+ * Add baclava output functionality to the Run API.
38
+ * Add baclava output functionality to run_workflow script.
39
+ * Document attributes in Server and Run classes.
40
+
41
+ == Version 0.1.0
42
+
43
+ * Update the Run#mkdir method to cope with nested directories.
44
+ * Add code to the String class to operate on file paths.
45
+ * Use strip_path methods to sanitize inputs.
46
+ * Add exceptions for the Server class to raise and rescue.
47
+ * Add code to handle exceptions to the Server class.
48
+ * Add exceptions and handlers for the Run class.
49
+ * Add exception handling code to the example scripts.
50
+ * Consolidate all PUT operations into one method.
51
+ * Add top level test suite driver and first testcase.
52
+ * Move to a Rake based build system.
53
+ * Add a testcase for the Server.
54
+ * Add a testcase for the Run class.
55
+ * Rakefile rules to run rdoc over the source files.
56
+ * Add rdoc comments to the top-level module.
57
+ * Add rdoc comments to the exception classes.
58
+ * Add rdoc comments to the Run class.
59
+ * Add rdoc comments to the Server class.
60
+
61
+ == Version 0.0.4
62
+
63
+ * Rationalize methods doing HTTP GETs into one.
64
+ * Add an example script to print server infomation.
65
+ * Cope with double slashes (//) in URI paths.
66
+ * Update documentation and version numbers.
67
+
68
+ == Version 0.0.3
69
+
70
+ * Update the workflow wrapping fragment.
71
+ * Fix getting of output data in root working dir.
72
+
73
+ == Version 0.0.2
74
+
75
+ * Server#runs now returns an array not a hash.
76
+ * Expose the newly added time attributes for runs.
77
+ * Add a method to return a run instance given a UUID.
78
+ * Update Run#ls to return separate lists of 'dirs' and 'files'
79
+
80
+ == Version 0.0.1
81
+
82
+ * Update project config boiler-plate
83
+ * First cut of T2 Server Ruby API.
84
+ * Added gemspec file to project.
85
+ * Add an example script to delete all runs on a server.
86
+ * Add an example script to run a workflow.
87
+
88
+ == About this CHANGES file
89
+
90
+ This file is, at least in part, generated by the following command:
91
+
92
+ $ git log --pretty=format:"* %s" --reverse --no-merges <commit-hash>..
@@ -5,16 +5,16 @@ All rights reserved.
5
5
  Redistribution and use in source and binary forms, with or without
6
6
  modification, are permitted provided that the following conditions are met:
7
7
 
8
- * Redistributions of source code must retain the above copyright notice,
9
- this list of conditions and the following disclaimer.
8
+ * Redistributions of source code must retain the above copyright notice,
9
+ this list of conditions and the following disclaimer.
10
10
 
11
- * Redistributions in binary form must reproduce the above copyright notice,
12
- this list of conditions and the following disclaimer in the documentation
13
- and/or other materials provided with the distribution.
11
+ * Redistributions in binary form must reproduce the above copyright notice,
12
+ this list of conditions and the following disclaimer in the documentation
13
+ and/or other materials provided with the distribution.
14
14
 
15
- * Neither the names of The University of Manchester nor the names of its
16
- contributors may be used to endorse or promote products derived from this
17
- software without specific prior written permission.
15
+ * Neither the names of The University of Manchester nor the names of its
16
+ contributors may be used to endorse or promote products derived from this
17
+ software without specific prior written permission.
18
18
 
19
19
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
20
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -1,7 +1,7 @@
1
1
  = Taverna[http://www.taverna.org.uk/] 2 Server Interaction Gem
2
2
 
3
3
  Authors:: Robert Haines
4
- Gem Version:: 0.5.0
4
+ Gem Version:: 0.5.1
5
5
  API Version:: 2.2a1
6
6
  Contact:: mailto:rhaines@manchester.ac.uk
7
7
  URL:: http://taverna.sourceforge.net/
@@ -43,7 +43,7 @@ require 't2-server/run'
43
43
  # Taverna 2 Server instance.
44
44
  module T2Server
45
45
  # The version of this library
46
- GEM_VERSION = "0.5.0"
46
+ GEM_VERSION = "0.5.1"
47
47
  # The version of the Taverna 2 Server API that this library can interface with
48
48
  API_VERSION = "2.2a1"
49
49
  end
@@ -233,7 +233,7 @@ module T2Server
233
233
  run = run(run)
234
234
  end
235
235
 
236
- path = "#{@links[:runs]}/#{run.run}/#{run.inputs}/input/#{input}"
236
+ path = "#{@links[:runs]}/#{run.uuid}/#{run.inputs}/input/#{input}"
237
237
  set_attribute(path, Fragments::RUNINPUTVALUE % value, "application/xml")
238
238
  rescue AttributeNotFoundError => e
239
239
  if get_runs.has_key? run.uuid
@@ -37,7 +37,7 @@ class TestRun < Test::Unit::TestCase
37
37
  def test_run
38
38
  # connection
39
39
  assert_nothing_raised(T2Server::ConnectionError) do
40
- @run = T2Server::Run.create($address, $wkf)
40
+ @run = T2Server::Run.create($address, $wkf_hello)
41
41
  end
42
42
 
43
43
  # test bad state code
@@ -65,5 +65,50 @@ class TestRun < Test::Unit::TestCase
65
65
 
66
66
  # deletion
67
67
  assert(@run.delete)
68
+
69
+ # run that need inputs
70
+ @run = T2Server::Run.create($address, $wkf_input)
71
+
72
+ assert_nothing_raised(T2Server::AttributeNotFoundError) do
73
+ @run.set_input("input", 10)
74
+ end
75
+
76
+ @run.start
77
+ assert(@run.running?)
78
+ assert_nothing_raised(T2Server::RunStateError) do
79
+ @run.wait
80
+ end
81
+
82
+ # run that returns list of lists
83
+ @run = T2Server::Run.create($address, $wkf_lists)
84
+ @run.start
85
+ assert(@run.running?)
86
+ assert_nothing_raised(T2Server::RunStateError) do
87
+ @run.wait
88
+ end
89
+ assert_equal(@run.get_output("Output"), [["triangular green rabbit ",
90
+ "triangular red cat "], ["circular green rabbit ", "circular red cat "],
91
+ ["square green rabbit ", "square red cat "]])
92
+
93
+ # run with baclava input and output
94
+ @run = T2Server::Run.create($address, $wkf_input)
95
+
96
+ assert_nothing_raised(T2Server::AttributeNotFoundError) do
97
+ @run.upload_baclava_file($baclava_in)
98
+ end
99
+
100
+ assert_nothing_raised(T2Server::AttributeNotFoundError) do
101
+ @run.set_baclava_output
102
+ end
103
+
104
+ @run.start
105
+ assert(@run.running?)
106
+ assert_nothing_raised(T2Server::RunStateError) do
107
+ @run.wait
108
+ end
109
+
110
+ assert_nothing_raised(T2Server::AttributeNotFoundError) do
111
+ output = @run.get_baclava_output
112
+ end
68
113
  end
69
114
  end
@@ -43,7 +43,7 @@ class TestServer < Test::Unit::TestCase
43
43
 
44
44
  # run creation
45
45
  assert_nothing_raised(T2Server::T2ServerError) do
46
- @run = @server.create_run($wkf)
46
+ @run = @server.create_run($wkf_hello)
47
47
  end
48
48
 
49
49
  # capacity
@@ -51,7 +51,7 @@ class TestServer < Test::Unit::TestCase
51
51
  assert_instance_of(Fixnum, limit)
52
52
  assert_raise(T2Server::ServerAtCapacityError) do
53
53
  limit.times do
54
- @server.create_run($wkf)
54
+ @server.create_run($wkf_hello)
55
55
  end
56
56
  end
57
57
 
@@ -45,11 +45,15 @@ else
45
45
  puts "\nSkipping tests that require a Taverna 2 Server instance..."
46
46
  $address = ""
47
47
  end
48
- $wkf = File.read("test/workflows/hello.t2flow")
49
48
 
50
49
  # the testcases to run
51
50
  require 'tc_paths'
52
51
  if $address != ""
52
+ $wkf_hello = File.read("test/workflows/hello.t2flow")
53
+ $wkf_input = File.read("test/workflows/pipelined_list_iteration_902021.t2flow")
54
+ $wkf_lists = File.read("test/workflows/demonstration_of_configurable_iteration_114130.t2flow")
55
+ $baclava_in = "test/workflows/list_input.baclava"
56
+
53
57
  require 'tc_server'
54
58
  require 'tc_run'
55
59
  end
@@ -0,0 +1,335 @@
1
+ <workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.2.0"><dataflow id="be152f54-e4a7-4324-9ce6-44438c5daed7" role="top"><name>Demonstrationofconfigurableiteration</name><inputPorts /><outputPorts><port><name>Output</name><annotations /></port></outputPorts><processors><processor><name>Colours</name><inputPorts /><outputPorts><port><name>value</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>stringconstant-activity</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class><inputMap /><outputMap><map from="value" to="value" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
2
+ <value>red ,green ,</value>
3
+ </net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
4
+ <maxJobs>1</maxJobs>
5
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
6
+ <backoffFactor>1.0</backoffFactor>
7
+ <initialDelay>0</initialDelay>
8
+ <maxDelay>0</maxDelay>
9
+ <maxRetries>0</maxRetries>
10
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross /></strategy></iteration></iterationStrategyStack></processor><processor><name>Animals</name><inputPorts /><outputPorts><port><name>value</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>stringconstant-activity</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class><inputMap /><outputMap><map from="value" to="value" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
11
+ <value>cat ,rabbit ,</value>
12
+ </net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
13
+ <maxJobs>1</maxJobs>
14
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
15
+ <backoffFactor>1.0</backoffFactor>
16
+ <initialDelay>0</initialDelay>
17
+ <maxDelay>0</maxDelay>
18
+ <maxRetries>0</maxRetries>
19
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross /></strategy></iteration></iterationStrategyStack></processor><processor><name>Shapes</name><inputPorts /><outputPorts><port><name>value</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>stringconstant-activity</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class><inputMap /><outputMap><map from="value" to="value" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
20
+ <value>square ,circular ,triangular ,</value>
21
+ </net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
22
+ <maxJobs>1</maxJobs>
23
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
24
+ <backoffFactor>1.0</backoffFactor>
25
+ <initialDelay>0</initialDelay>
26
+ <maxDelay>0</maxDelay>
27
+ <maxRetries>0</maxRetries>
28
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross /></strategy></iteration></iterationStrategyStack></processor><processor><name>ColoursLisr</name><inputPorts><port><name>string</name><depth>0</depth></port></inputPorts><outputPorts><port><name>split</name><depth>1</depth><granularDepth>1</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="string" to="string" /></inputMap><outputMap><map from="split" to="split" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
29
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.SplitByRegex</localworkerName>
30
+ <script>List split = new ArrayList();
31
+ if (!string.equals("")) {
32
+ String regexString = ",";
33
+ if (regex != void) {
34
+ regexString = regex;
35
+ }
36
+ String[] result = string.split(regexString);
37
+ for (int i = 0; i &lt; result.length; i++) {
38
+ split.add(result[i]);
39
+ }
40
+ }
41
+ </script>
42
+ <dependencies />
43
+ <classLoaderSharing>workflow</classLoaderSharing>
44
+ <localDependencies />
45
+ <artifactDependencies />
46
+ <inputs>
47
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
48
+ <handledReferenceSchemes />
49
+ <translatedElementType>java.lang.String</translatedElementType>
50
+ <allowsLiteralValues>true</allowsLiteralValues>
51
+ <name>string</name>
52
+ <depth>0</depth>
53
+ <mimeTypes>
54
+ <string>'text/plain'</string>
55
+ </mimeTypes>
56
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
57
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
58
+ <handledReferenceSchemes />
59
+ <translatedElementType>java.lang.String</translatedElementType>
60
+ <allowsLiteralValues>true</allowsLiteralValues>
61
+ <name>regex</name>
62
+ <depth>0</depth>
63
+ <mimeTypes>
64
+ <string>'text/plain'</string>
65
+ </mimeTypes>
66
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
67
+ </inputs>
68
+ <outputs>
69
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
70
+ <granularDepth>1</granularDepth>
71
+ <name>split</name>
72
+ <depth>1</depth>
73
+ <mimeTypes>
74
+ <string>l('text/plain')</string>
75
+ </mimeTypes>
76
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
77
+ </outputs>
78
+ </net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
79
+ <maxJobs>1</maxJobs>
80
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
81
+ <backoffFactor>1.0</backoffFactor>
82
+ <initialDelay>1000</initialDelay>
83
+ <maxDelay>5000</maxDelay>
84
+ <maxRetries>0</maxRetries>
85
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="string" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>AnimalsList</name><inputPorts><port><name>string</name><depth>0</depth></port></inputPorts><outputPorts><port><name>split</name><depth>1</depth><granularDepth>1</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="string" to="string" /></inputMap><outputMap><map from="split" to="split" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
86
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.SplitByRegex</localworkerName>
87
+ <script>List split = new ArrayList();
88
+ if (!string.equals("")) {
89
+ String regexString = ",";
90
+ if (regex != void) {
91
+ regexString = regex;
92
+ }
93
+ String[] result = string.split(regexString);
94
+ for (int i = 0; i &lt; result.length; i++) {
95
+ split.add(result[i]);
96
+ }
97
+ }
98
+ </script>
99
+ <dependencies />
100
+ <classLoaderSharing>workflow</classLoaderSharing>
101
+ <localDependencies />
102
+ <artifactDependencies />
103
+ <inputs>
104
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
105
+ <handledReferenceSchemes />
106
+ <translatedElementType>java.lang.String</translatedElementType>
107
+ <allowsLiteralValues>true</allowsLiteralValues>
108
+ <name>string</name>
109
+ <depth>0</depth>
110
+ <mimeTypes>
111
+ <string>'text/plain'</string>
112
+ </mimeTypes>
113
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
114
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
115
+ <handledReferenceSchemes />
116
+ <translatedElementType>java.lang.String</translatedElementType>
117
+ <allowsLiteralValues>true</allowsLiteralValues>
118
+ <name>regex</name>
119
+ <depth>0</depth>
120
+ <mimeTypes>
121
+ <string>'text/plain'</string>
122
+ </mimeTypes>
123
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
124
+ </inputs>
125
+ <outputs>
126
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
127
+ <granularDepth>1</granularDepth>
128
+ <name>split</name>
129
+ <depth>1</depth>
130
+ <mimeTypes>
131
+ <string>l('text/plain')</string>
132
+ </mimeTypes>
133
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
134
+ </outputs>
135
+ </net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
136
+ <maxJobs>1</maxJobs>
137
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
138
+ <backoffFactor>1.0</backoffFactor>
139
+ <initialDelay>1000</initialDelay>
140
+ <maxDelay>5000</maxDelay>
141
+ <maxRetries>0</maxRetries>
142
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="string" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>ShapesList</name><inputPorts><port><name>string</name><depth>0</depth></port></inputPorts><outputPorts><port><name>split</name><depth>1</depth><granularDepth>1</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="string" to="string" /></inputMap><outputMap><map from="split" to="split" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
143
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.SplitByRegex</localworkerName>
144
+ <script>List split = new ArrayList();
145
+ if (!string.equals("")) {
146
+ String regexString = ",";
147
+ if (regex != void) {
148
+ regexString = regex;
149
+ }
150
+ String[] result = string.split(regexString);
151
+ for (int i = 0; i &lt; result.length; i++) {
152
+ split.add(result[i]);
153
+ }
154
+ }
155
+ </script>
156
+ <dependencies />
157
+ <classLoaderSharing>workflow</classLoaderSharing>
158
+ <localDependencies />
159
+ <artifactDependencies />
160
+ <inputs>
161
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
162
+ <handledReferenceSchemes />
163
+ <translatedElementType>java.lang.String</translatedElementType>
164
+ <allowsLiteralValues>true</allowsLiteralValues>
165
+ <name>string</name>
166
+ <depth>0</depth>
167
+ <mimeTypes>
168
+ <string>'text/plain'</string>
169
+ </mimeTypes>
170
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
171
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
172
+ <handledReferenceSchemes />
173
+ <translatedElementType>java.lang.String</translatedElementType>
174
+ <allowsLiteralValues>true</allowsLiteralValues>
175
+ <name>regex</name>
176
+ <depth>0</depth>
177
+ <mimeTypes>
178
+ <string>'text/plain'</string>
179
+ </mimeTypes>
180
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
181
+ </inputs>
182
+ <outputs>
183
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
184
+ <granularDepth>1</granularDepth>
185
+ <name>split</name>
186
+ <depth>1</depth>
187
+ <mimeTypes>
188
+ <string>l('text/plain')</string>
189
+ </mimeTypes>
190
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
191
+ </outputs>
192
+ </net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
193
+ <maxJobs>1</maxJobs>
194
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
195
+ <backoffFactor>1.0</backoffFactor>
196
+ <initialDelay>1000</initialDelay>
197
+ <maxDelay>5000</maxDelay>
198
+ <maxRetries>0</maxRetries>
199
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="string" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Concatenate_two_strings</name><inputPorts><port><name>string1</name><depth>0</depth></port><port><name>string2</name><depth>0</depth></port></inputPorts><outputPorts><port><name>output</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.2</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="string2" to="string2" /><map from="string1" to="string1" /></inputMap><outputMap><map from="output" to="output" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
200
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
201
+ <script>output = string1 + string2;</script>
202
+ <dependencies />
203
+ <classLoaderSharing>workflow</classLoaderSharing>
204
+ <localDependencies />
205
+ <artifactDependencies />
206
+ <inputs>
207
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
208
+ <handledReferenceSchemes />
209
+ <translatedElementType>java.lang.String</translatedElementType>
210
+ <allowsLiteralValues>true</allowsLiteralValues>
211
+ <name>string1</name>
212
+ <depth>0</depth>
213
+ <mimeTypes>
214
+ <string>'text/plain'</string>
215
+ </mimeTypes>
216
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
217
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
218
+ <handledReferenceSchemes />
219
+ <translatedElementType>java.lang.String</translatedElementType>
220
+ <allowsLiteralValues>true</allowsLiteralValues>
221
+ <name>string2</name>
222
+ <depth>0</depth>
223
+ <mimeTypes>
224
+ <string>'text/plain'</string>
225
+ </mimeTypes>
226
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
227
+ </inputs>
228
+ <outputs>
229
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
230
+ <granularDepth>0</granularDepth>
231
+ <name>output</name>
232
+ <depth>0</depth>
233
+ <mimeTypes>
234
+ <string>'text/plain'</string>
235
+ </mimeTypes>
236
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
237
+ </outputs>
238
+ </net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
239
+ <maxJobs>1</maxJobs>
240
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
241
+ <backoffFactor>1.0</backoffFactor>
242
+ <initialDelay>1000</initialDelay>
243
+ <maxDelay>5000</maxDelay>
244
+ <maxRetries>0</maxRetries>
245
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><dot><port name="string1" depth="0" /><port name="string2" depth="0" /></dot></strategy></iteration></iterationStrategyStack></processor><processor><name>ShapeAnimals</name><inputPorts><port><name>string2</name><depth>0</depth></port><port><name>string1</name><depth>0</depth></port></inputPorts><outputPorts><port><name>output</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.2</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="string2" to="string2" /><map from="string1" to="string1" /></inputMap><outputMap><map from="output" to="output" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
246
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
247
+ <script>output = string1 + string2;</script>
248
+ <dependencies />
249
+ <classLoaderSharing>workflow</classLoaderSharing>
250
+ <localDependencies />
251
+ <artifactDependencies />
252
+ <inputs>
253
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
254
+ <handledReferenceSchemes />
255
+ <translatedElementType>java.lang.String</translatedElementType>
256
+ <allowsLiteralValues>true</allowsLiteralValues>
257
+ <name>string1</name>
258
+ <depth>0</depth>
259
+ <mimeTypes>
260
+ <string>'text/plain'</string>
261
+ </mimeTypes>
262
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
263
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
264
+ <handledReferenceSchemes />
265
+ <translatedElementType>java.lang.String</translatedElementType>
266
+ <allowsLiteralValues>true</allowsLiteralValues>
267
+ <name>string2</name>
268
+ <depth>0</depth>
269
+ <mimeTypes>
270
+ <string>'text/plain'</string>
271
+ </mimeTypes>
272
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
273
+ </inputs>
274
+ <outputs>
275
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
276
+ <granularDepth>0</granularDepth>
277
+ <name>output</name>
278
+ <depth>0</depth>
279
+ <mimeTypes>
280
+ <string>'text/plain'</string>
281
+ </mimeTypes>
282
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
283
+ </outputs>
284
+ </net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
285
+ <maxJobs>1</maxJobs>
286
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
287
+ <backoffFactor>1.0</backoffFactor>
288
+ <initialDelay>1000</initialDelay>
289
+ <maxDelay>5000</maxDelay>
290
+ <maxRetries>0</maxRetries>
291
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="string1" depth="0" /><port name="string2" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor></processors><conditions /><datalinks><datalink><sink type="processor"><processor>ColoursLisr</processor><port>string</port></sink><source type="processor"><processor>Colours</processor><port>value</port></source></datalink><datalink><sink type="processor"><processor>AnimalsList</processor><port>string</port></sink><source type="processor"><processor>Animals</processor><port>value</port></source></datalink><datalink><sink type="processor"><processor>ShapesList</processor><port>string</port></sink><source type="processor"><processor>Shapes</processor><port>value</port></source></datalink><datalink><sink type="processor"><processor>Concatenate_two_strings</processor><port>string1</port></sink><source type="processor"><processor>ColoursLisr</processor><port>split</port></source></datalink><datalink><sink type="processor"><processor>Concatenate_two_strings</processor><port>string2</port></sink><source type="processor"><processor>AnimalsList</processor><port>split</port></source></datalink><datalink><sink type="processor"><processor>ShapeAnimals</processor><port>string2</port></sink><source type="processor"><processor>Concatenate_two_strings</processor><port>output</port></source></datalink><datalink><sink type="processor"><processor>ShapeAnimals</processor><port>string1</port></sink><source type="processor"><processor>ShapesList</processor><port>split</port></source></datalink><datalink><sink type="dataflow"><port>Output</port></sink><source type="processor"><processor>ShapeAnimals</processor><port>output</port></source></datalink></datalinks><annotations><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
292
+ <annotationAssertions>
293
+ <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
294
+ <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.FreeTextDescription">
295
+ <text>This workflow shows the use of the iteration strategy editor to ensure that only relevant combinations of inputs are used during an implicit iteration.</text>
296
+ </annotationBean>
297
+ <date>2009-06-29 15:44:05.675 BST</date>
298
+ <creators />
299
+ <curationEventList />
300
+ </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
301
+ </annotationAssertions>
302
+ </net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
303
+ <annotationAssertions>
304
+ <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
305
+ <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.Author">
306
+ <text>Tom Oinn</text>
307
+ </annotationBean>
308
+ <date>2009-06-29 15:44:05.675 BST</date>
309
+ <creators />
310
+ <curationEventList />
311
+ </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
312
+ </annotationAssertions>
313
+ </net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
314
+ <annotationAssertions>
315
+ <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
316
+ <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
317
+ <identification>be152f54-e4a7-4324-9ce6-44438c5daed7</identification>
318
+ </annotationBean>
319
+ <date>2010-07-04 18:12:25.361 BST</date>
320
+ <creators />
321
+ <curationEventList />
322
+ </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
323
+ </annotationAssertions>
324
+ </net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
325
+ <annotationAssertions>
326
+ <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
327
+ <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.DescriptiveTitle">
328
+ <text>Demonstration of configurable iteration</text>
329
+ </annotationBean>
330
+ <date>2009-06-29 15:44:05.675 BST</date>
331
+ <creators />
332
+ <curationEventList />
333
+ </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
334
+ </annotationAssertions>
335
+ </net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain></annotations></dataflow></workflow>
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <b:dataThingMap xmlns:b="http://org.embl.ebi.escience/baclava/0.1alpha">
3
+ <b:dataThing key="input">
4
+ <b:myGridDataDocument lsid="" syntactictype="'text/plain'">
5
+ <s:metadata xmlns:s="http://org.embl.ebi.escience/xscufl/0.1alpha">
6
+ <s:mimeTypes>
7
+ <s:mimeType>text/plain</s:mimeType>
8
+ </s:mimeTypes>
9
+ </s:metadata>
10
+ <b:dataElement lsid="">
11
+ <b:dataElementData>MTA=</b:dataElementData>
12
+ </b:dataElement>
13
+ </b:myGridDataDocument>
14
+ </b:dataThing>
15
+ </b:dataThingMap>
16
+
@@ -0,0 +1,303 @@
1
+ <workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.2.0"><dataflow id="fd34324d-de34-4a5f-9b12-13059a9fb1a4" role="top"><name>Pipelined_list_iteration</name><inputPorts><port><name>input</name><depth>0</depth><granularDepth>0</granularDepth><annotations><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
2
+ <annotationAssertions>
3
+ <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
4
+ <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.ExampleValue">
5
+ <text>150</text>
6
+ </annotationBean>
7
+ <date>2009-12-15 19:41:02.598 GMT</date>
8
+ <creators />
9
+ <curationEventList />
10
+ </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
11
+ </annotationAssertions>
12
+ </net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
13
+ <annotationAssertions>
14
+ <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
15
+ <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.FreeTextDescription">
16
+ <text>Number of elements to generate</text>
17
+ </annotationBean>
18
+ <date>2009-12-15 19:40:52.84 GMT</date>
19
+ <creators />
20
+ <curationEventList />
21
+ </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
22
+ </annotationAssertions>
23
+ </net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain></annotations></port></inputPorts><outputPorts><port><name>out</name><annotations /></port></outputPorts><processors><processor><name>List_Emitter</name><inputPorts><port><name>count</name><depth>0</depth></port></inputPorts><outputPorts><port><name>list</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.2</version></raven><class>net.sf.taverna.t2.activities.beanshell.BeanshellActivity</class><inputMap><map from="count" to="count" /></inputMap><outputMap><map from="list" to="list" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns="">
24
+ <script>List list = new ArrayList();
25
+ int icount = Integer.parseInt(count);
26
+
27
+ for (int i=0;i&lt;icount;i++) {
28
+ list.add(String.valueOf(i));
29
+ }</script>
30
+ <dependencies />
31
+ <classLoaderSharing>workflow</classLoaderSharing>
32
+ <localDependencies />
33
+ <artifactDependencies />
34
+ <inputs>
35
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
36
+ <handledReferenceSchemes />
37
+ <translatedElementType>java.lang.String</translatedElementType>
38
+ <allowsLiteralValues>true</allowsLiteralValues>
39
+ <name>count</name>
40
+ <depth>0</depth>
41
+ <mimeTypes>
42
+ <string>text/plain</string>
43
+ </mimeTypes>
44
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
45
+ </inputs>
46
+ <outputs>
47
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
48
+ <granularDepth>1</granularDepth>
49
+ <name>list</name>
50
+ <depth>1</depth>
51
+ <mimeTypes />
52
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
53
+ </outputs>
54
+ </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.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
55
+ <maxJobs>1</maxJobs>
56
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
57
+ <backoffFactor>1.0</backoffFactor>
58
+ <initialDelay>1000</initialDelay>
59
+ <maxDelay>5000</maxDelay>
60
+ <maxRetries>0</maxRetries>
61
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="count" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Concat</name><inputPorts><port><name>input</name><depth>0</depth></port></inputPorts><outputPorts><port><name>output</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.2</version></raven><class>net.sf.taverna.t2.activities.beanshell.BeanshellActivity</class><inputMap><map from="input" to="input" /></inputMap><outputMap><map from="output" to="output" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns="">
62
+ <script>String output = input + "XXX"</script>
63
+ <dependencies />
64
+ <classLoaderSharing>workflow</classLoaderSharing>
65
+ <localDependencies />
66
+ <artifactDependencies />
67
+ <inputs>
68
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
69
+ <handledReferenceSchemes />
70
+ <translatedElementType>java.lang.String</translatedElementType>
71
+ <allowsLiteralValues>true</allowsLiteralValues>
72
+ <name>input</name>
73
+ <depth>0</depth>
74
+ <mimeTypes>
75
+ <string>text/plain</string>
76
+ </mimeTypes>
77
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
78
+ </inputs>
79
+ <outputs>
80
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
81
+ <granularDepth>0</granularDepth>
82
+ <name>output</name>
83
+ <depth>0</depth>
84
+ <mimeTypes />
85
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
86
+ </outputs>
87
+ </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.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
88
+ <maxJobs>1</maxJobs>
89
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
90
+ <backoffFactor>1.0</backoffFactor>
91
+ <initialDelay>1000</initialDelay>
92
+ <maxDelay>5000</maxDelay>
93
+ <maxRetries>0</maxRetries>
94
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="input" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Concatenate_two_strings</name><inputPorts><port><name>string1</name><depth>0</depth></port><port><name>string2</name><depth>0</depth></port></inputPorts><outputPorts><port><name>output</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.2</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="string2" to="string2" /><map from="string1" to="string1" /></inputMap><outputMap><map from="output" to="output" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
95
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
96
+ <script>output = string1 + string2;</script>
97
+ <dependencies />
98
+ <classLoaderSharing>workflow</classLoaderSharing>
99
+ <localDependencies />
100
+ <artifactDependencies />
101
+ <inputs>
102
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
103
+ <handledReferenceSchemes />
104
+ <translatedElementType>java.lang.String</translatedElementType>
105
+ <allowsLiteralValues>true</allowsLiteralValues>
106
+ <name>string1</name>
107
+ <depth>0</depth>
108
+ <mimeTypes>
109
+ <string>'text/plain'</string>
110
+ </mimeTypes>
111
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
112
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
113
+ <handledReferenceSchemes />
114
+ <translatedElementType>java.lang.String</translatedElementType>
115
+ <allowsLiteralValues>true</allowsLiteralValues>
116
+ <name>string2</name>
117
+ <depth>0</depth>
118
+ <mimeTypes>
119
+ <string>'text/plain'</string>
120
+ </mimeTypes>
121
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
122
+ </inputs>
123
+ <outputs>
124
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
125
+ <granularDepth>0</granularDepth>
126
+ <name>output</name>
127
+ <depth>0</depth>
128
+ <mimeTypes>
129
+ <string>'text/plain'</string>
130
+ </mimeTypes>
131
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
132
+ </outputs>
133
+ </net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
134
+ <maxJobs>1</maxJobs>
135
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
136
+ <backoffFactor>1.0</backoffFactor>
137
+ <initialDelay>1000</initialDelay>
138
+ <maxDelay>5000</maxDelay>
139
+ <maxRetries>0</maxRetries>
140
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="string1" depth="0" /><port name="string2" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Concatenate_two_strings_2</name><inputPorts><port><name>string1</name><depth>0</depth></port><port><name>string2</name><depth>0</depth></port></inputPorts><outputPorts><port><name>output</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.2</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="string2" to="string2" /><map from="string1" to="string1" /></inputMap><outputMap><map from="output" to="output" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
141
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
142
+ <script>output = string1 + string2;</script>
143
+ <dependencies />
144
+ <classLoaderSharing>workflow</classLoaderSharing>
145
+ <localDependencies />
146
+ <artifactDependencies />
147
+ <inputs>
148
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
149
+ <handledReferenceSchemes />
150
+ <translatedElementType>java.lang.String</translatedElementType>
151
+ <allowsLiteralValues>true</allowsLiteralValues>
152
+ <name>string1</name>
153
+ <depth>0</depth>
154
+ <mimeTypes>
155
+ <string>'text/plain'</string>
156
+ </mimeTypes>
157
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
158
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
159
+ <handledReferenceSchemes />
160
+ <translatedElementType>java.lang.String</translatedElementType>
161
+ <allowsLiteralValues>true</allowsLiteralValues>
162
+ <name>string2</name>
163
+ <depth>0</depth>
164
+ <mimeTypes>
165
+ <string>'text/plain'</string>
166
+ </mimeTypes>
167
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
168
+ </inputs>
169
+ <outputs>
170
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
171
+ <granularDepth>0</granularDepth>
172
+ <name>output</name>
173
+ <depth>0</depth>
174
+ <mimeTypes>
175
+ <string>'text/plain'</string>
176
+ </mimeTypes>
177
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
178
+ </outputs>
179
+ </net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
180
+ <maxJobs>1</maxJobs>
181
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
182
+ <backoffFactor>1.0</backoffFactor>
183
+ <initialDelay>1000</initialDelay>
184
+ <maxDelay>5000</maxDelay>
185
+ <maxRetries>0</maxRetries>
186
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="string1" depth="0" /><port name="string2" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Concatenate_two_strings_3</name><inputPorts><port><name>string1</name><depth>0</depth></port><port><name>string2</name><depth>0</depth></port></inputPorts><outputPorts><port><name>output</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.2</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="string2" to="string2" /><map from="string1" to="string1" /></inputMap><outputMap><map from="output" to="output" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
187
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
188
+ <script>output = string1 + string2;</script>
189
+ <dependencies />
190
+ <classLoaderSharing>workflow</classLoaderSharing>
191
+ <localDependencies />
192
+ <artifactDependencies />
193
+ <inputs>
194
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
195
+ <handledReferenceSchemes />
196
+ <translatedElementType>java.lang.String</translatedElementType>
197
+ <allowsLiteralValues>true</allowsLiteralValues>
198
+ <name>string1</name>
199
+ <depth>0</depth>
200
+ <mimeTypes>
201
+ <string>'text/plain'</string>
202
+ </mimeTypes>
203
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
204
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
205
+ <handledReferenceSchemes />
206
+ <translatedElementType>java.lang.String</translatedElementType>
207
+ <allowsLiteralValues>true</allowsLiteralValues>
208
+ <name>string2</name>
209
+ <depth>0</depth>
210
+ <mimeTypes>
211
+ <string>'text/plain'</string>
212
+ </mimeTypes>
213
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
214
+ </inputs>
215
+ <outputs>
216
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
217
+ <granularDepth>0</granularDepth>
218
+ <name>output</name>
219
+ <depth>0</depth>
220
+ <mimeTypes>
221
+ <string>'text/plain'</string>
222
+ </mimeTypes>
223
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
224
+ </outputs>
225
+ </net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
226
+ <maxJobs>1</maxJobs>
227
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
228
+ <backoffFactor>1.0</backoffFactor>
229
+ <initialDelay>1000</initialDelay>
230
+ <maxDelay>5000</maxDelay>
231
+ <maxRetries>0</maxRetries>
232
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="string1" depth="0" /><port name="string2" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>boo</name><inputPorts /><outputPorts><port><name>value</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>stringconstant-activity</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class><inputMap /><outputMap><map from="value" to="value" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
233
+ <value>boo</value>
234
+ </net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
235
+ <maxJobs>1</maxJobs>
236
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
237
+ <backoffFactor>1.0</backoffFactor>
238
+ <initialDelay>1000</initialDelay>
239
+ <maxDelay>5000</maxDelay>
240
+ <maxRetries>0</maxRetries>
241
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy /></iteration></iterationStrategyStack></processor><processor><name>xxx</name><inputPorts /><outputPorts><port><name>value</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>stringconstant-activity</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class><inputMap /><outputMap><map from="value" to="value" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
242
+ <value>xxx</value>
243
+ </net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
244
+ <maxJobs>1</maxJobs>
245
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
246
+ <backoffFactor>1.0</backoffFactor>
247
+ <initialDelay>1000</initialDelay>
248
+ <maxDelay>5000</maxDelay>
249
+ <maxRetries>0</maxRetries>
250
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy /></iteration></iterationStrategyStack></processor><processor><name>sdfds</name><inputPorts /><outputPorts><port><name>value</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>stringconstant-activity</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class><inputMap /><outputMap><map from="value" to="value" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
251
+ <value>sdfds</value>
252
+ </net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
253
+ <maxJobs>1</maxJobs>
254
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
255
+ <backoffFactor>1.0</backoffFactor>
256
+ <initialDelay>1000</initialDelay>
257
+ <maxDelay>5000</maxDelay>
258
+ <maxRetries>0</maxRetries>
259
+ </net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.2</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy /></iteration></iterationStrategyStack></processor></processors><conditions /><datalinks><datalink><sink type="processor"><processor>List_Emitter</processor><port>count</port></sink><source type="dataflow"><port>input</port></source></datalink><datalink><sink type="processor"><processor>Concat</processor><port>input</port></sink><source type="processor"><processor>List_Emitter</processor><port>list</port></source></datalink><datalink><sink type="processor"><processor>Concatenate_two_strings</processor><port>string1</port></sink><source type="processor"><processor>Concat</processor><port>output</port></source></datalink><datalink><sink type="processor"><processor>Concatenate_two_strings</processor><port>string2</port></sink><source type="processor"><processor>boo</processor><port>value</port></source></datalink><datalink><sink type="processor"><processor>Concatenate_two_strings_2</processor><port>string1</port></sink><source type="processor"><processor>Concatenate_two_strings</processor><port>output</port></source></datalink><datalink><sink type="processor"><processor>Concatenate_two_strings_2</processor><port>string2</port></sink><source type="processor"><processor>xxx</processor><port>value</port></source></datalink><datalink><sink type="processor"><processor>Concatenate_two_strings_3</processor><port>string1</port></sink><source type="processor"><processor>Concatenate_two_strings_2</processor><port>output</port></source></datalink><datalink><sink type="processor"><processor>Concatenate_two_strings_3</processor><port>string2</port></sink><source type="processor"><processor>sdfds</processor><port>value</port></source></datalink><datalink><sink type="dataflow"><port>out</port></sink><source type="processor"><processor>Concatenate_two_strings_3</processor><port>output</port></source></datalink></datalinks><annotations><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
260
+ <annotationAssertions>
261
+ <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
262
+ <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.FreeTextDescription">
263
+ <text>Perform multiple iterations of services in order to show pipelining</text>
264
+ </annotationBean>
265
+ <date>2009-12-15 19:42:21.971 GMT</date>
266
+ <creators />
267
+ <curationEventList />
268
+ </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
269
+ </annotationAssertions>
270
+ </net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
271
+ <annotationAssertions>
272
+ <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
273
+ <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.Author">
274
+ <text>Ian Dunlop, Stian Soiland-Reyes</text>
275
+ </annotationBean>
276
+ <date>2009-12-15 19:42:01.488 GMT</date>
277
+ <creators />
278
+ <curationEventList />
279
+ </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
280
+ </annotationAssertions>
281
+ </net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
282
+ <annotationAssertions>
283
+ <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
284
+ <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.DescriptiveTitle">
285
+ <text>Pipelined list iteration</text>
286
+ </annotationBean>
287
+ <date>2009-12-15 19:42:12.907 GMT</date>
288
+ <creators />
289
+ <curationEventList />
290
+ </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
291
+ </annotationAssertions>
292
+ </net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
293
+ <annotationAssertions>
294
+ <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
295
+ <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
296
+ <identification>fd34324d-de34-4a5f-9b12-13059a9fb1a4</identification>
297
+ </annotationBean>
298
+ <date>2010-07-04 18:19:17.425 BST</date>
299
+ <creators />
300
+ <curationEventList />
301
+ </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
302
+ </annotationAssertions>
303
+ </net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2></annotations></dataflow></workflow>
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: t2-server
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 5
9
- - 0
10
- version: 0.5.0
9
+ - 1
10
+ version: 0.5.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Robert Haines
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-22 00:00:00 +01:00
18
+ date: 2010-10-29 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -60,7 +60,8 @@ extensions: []
60
60
 
61
61
  extra_rdoc_files:
62
62
  - README.rdoc
63
- - LICENCE
63
+ - LICENCE.rdoc
64
+ - CHANGES.rdoc
64
65
  files:
65
66
  - bin/t2-server-info
66
67
  - bin/t2-delete-runs
@@ -74,10 +75,14 @@ files:
74
75
  - test/tc_server.rb
75
76
  - test/tc_paths.rb
76
77
  - test/tc_run.rb
78
+ - test/workflows/list_input.baclava
79
+ - test/workflows/pipelined_list_iteration_902021.t2flow
80
+ - test/workflows/demonstration_of_configurable_iteration_114130.t2flow
77
81
  - test/workflows/hello.t2flow
78
82
  - test/ts_t2server.rb
79
83
  - README.rdoc
80
- - LICENCE
84
+ - LICENCE.rdoc
85
+ - CHANGES.rdoc
81
86
  has_rdoc: true
82
87
  homepage: http://www.taverna.org.uk/
83
88
  licenses: []