t2-server 0.5.3 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGES.rdoc CHANGED
@@ -1,5 +1,18 @@
1
1
  = Changes log for the T2 Ruby Gem
2
2
 
3
+ == Version 0.6.0
4
+
5
+ * Add a new API call Run#get_output_ports
6
+ * Remove Run#ls from the API.
7
+ * Refactor the code that builds output port lists.
8
+ * Update and streamline test suite.
9
+ * Parameterize the Rakefile for use in CI.
10
+ * Return dates as instances of class Time.
11
+ * Allow expiry dates to be specified in human readable formats.
12
+ * Workaround for CXF bug upon server start-up.
13
+ * t2-run-workflow: accept files as inputs.
14
+ * Tabulate run information.
15
+
3
16
  == Version 0.5.3
4
17
 
5
18
  * Fix an issue with singleton value/empty list confusion for output ports.
data/README.rdoc CHANGED
@@ -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.3
4
+ Gem Version:: 0.6.0
5
5
  API Version:: 2.2a1
6
6
  Contact:: mailto:rhaines@manchester.ac.uk
7
7
  URL:: http://taverna.sourceforge.net/
data/bin/t2-run-workflow CHANGED
@@ -35,29 +35,9 @@ require 'rubygems'
35
35
  require 't2-server'
36
36
  require 'optparse'
37
37
 
38
- # go through the outputs and either print the contents
39
- # out or save them to a file.
40
- # if the output is a list, it appears as a directory so
41
- # all the individual entries must be grabbed from there.
42
- def get_outputs(run, refs)
43
- # get a list of the outputs
44
- lists, items = run.ls("out")
45
-
46
- # go through the lists
47
- lists.each do |l|
48
- print " #{l} -> "
49
- p run.get_output("#{l}", refs)
50
- end
51
-
52
- # go through the singletons
53
- items.each do |i|
54
- print " #{i} -> "
55
- p run.get_output("#{i}", refs)
56
- end
57
- end
58
-
59
38
  # set up options
60
39
  inputs = {}
40
+ files = {}
61
41
  wkf_file = ""
62
42
  output_refs = false
63
43
  baclava_out = ""
@@ -76,6 +56,11 @@ opts = OptionParser.new do |opt|
76
56
  input, value = val.chomp.split(':', 2)
77
57
  inputs[input] = value
78
58
  end
59
+ opt.on("-f INPUT:FILE", "--input-file=INPUT:FILE",
60
+ "Set input port INPUT to use the contents of FILE as its input") do |val|
61
+ input, filename = val.chomp.split(':', 2)
62
+ files[input] = filename
63
+ end
79
64
  opt.on("-b BACLAVA", "--baclava-in=BACLAVA", "Set baclava file for input port values") do |val|
80
65
  inputs[:baclava] = val
81
66
  end
@@ -143,6 +128,12 @@ else
143
128
  puts "Set input '#{input}' to #{value}"
144
129
  run.set_input(input, value)
145
130
  end
131
+
132
+ files.each do |input, file|
133
+ name = file.split("/")[-1];
134
+ puts "Set input '#{input}' to use file '#{name}'"
135
+ run.upload_input_file(input, file)
136
+ end
146
137
  end
147
138
 
148
139
  # output baclava?
@@ -170,8 +161,12 @@ if exitcd == 0
170
161
  end
171
162
  puts "Baclava file written to '#{baclava_out}'"
172
163
  else
164
+ # go through the outputs and print them out
173
165
  puts "Outputs:"
174
- get_outputs(run, output_refs)
166
+ run.get_output_ports.each do |o|
167
+ print " #{o} -> "
168
+ p run.get_output("#{o}", output_refs)
169
+ end
175
170
  end
176
171
  end
177
172
 
data/bin/t2-server-info CHANGED
@@ -34,6 +34,7 @@
34
34
  require 'rubygems'
35
35
  require 't2-server'
36
36
  require 'optparse'
37
+ require 'hirb'
37
38
 
38
39
  opts = OptionParser.new do |opt|
39
40
  opt.banner = "Usage: t2-server-info [options] server-address"
@@ -70,10 +71,12 @@ begin
70
71
  runs = server.runs
71
72
  print "No. of runs: #{runs.length}\n"
72
73
  if runs.length > 0
73
- print " Run list: #{runs[0].uuid} - #{runs[0].expiry}\n"
74
- runs[1..-1].each do |run|
75
- print " #{run.uuid} - #{run.expiry}\n"
76
- end
74
+ puts (Hirb::Helpers::ObjectTable.render runs,
75
+ :fields=>[:uuid, :status, :expiry],
76
+ :headers=>{:uuid=>'Run ID', :status=>'Status', :expiry=>'Expiry time (local)'},
77
+ :filters=>{:expiry=>[:strftime, "%H:%M:%S %d/%m/%Y"]},
78
+ :max_fields=>{:expiry=>19},
79
+ :description=>false)
77
80
  end
78
81
  rescue T2Server::T2ServerError => e
79
82
  puts e
data/lib/t2-server/run.rb CHANGED
@@ -32,6 +32,7 @@
32
32
 
33
33
  require 'rubygems'
34
34
  require 'libxml'
35
+ require 'time'
35
36
 
36
37
  module T2Server
37
38
 
@@ -136,6 +137,15 @@ module T2Server
136
137
  @server.set_run_input_file(self, input, filename)
137
138
  end
138
139
 
140
+ # :call-seq:
141
+ # run.get_output_ports -> list
142
+ #
143
+ # Return a list of all the output ports
144
+ def get_output_ports
145
+ lists, items = _ls_ports("out")
146
+ items + lists
147
+ end
148
+
139
149
  # :call-seq:
140
150
  # run.get_output(output, refs=false) -> string or list
141
151
  #
@@ -163,19 +173,24 @@ module T2Server
163
173
  # :call-seq:
164
174
  # run.expiry -> string
165
175
  #
166
- # Return the expiry time of this run. It is formatted as an ISO-8601
167
- # timestamp.
176
+ # Return the expiry time of this run as an instance of class Time.
168
177
  def expiry
169
- @server.get_run_attribute(@uuid, @links[:expiry])
178
+ Time.parse(@server.get_run_attribute(@uuid, @links[:expiry]))
170
179
  end
171
180
 
172
181
  # :call-seq:
173
182
  # run.expiry=(time) -> bool
174
183
  #
175
184
  # Set the expiry time of this run to _time_. The format of _time_ should
176
- # be an ISO-8601 timestamp.
177
- def expiry=(date)
178
- @server.set_run_attribute(@uuid, @links[:expiry], date)
185
+ # be something that the Ruby Time class can parse. If the value given does
186
+ # not specify a date then today's date will be assumed. If a time/date in
187
+ # the past is specified, the expiry time will not be changed.
188
+ def expiry=(time)
189
+ # need to massage the xmlschema format slightly as the server cannot
190
+ # parse timezone offsets with a colon (eg +00:00)
191
+ date_str = Time.parse(time).xmlschema(2)
192
+ date_str = date_str[0..-4] + date_str[-2..-1]
193
+ @server.set_run_attribute(@uuid, @links[:expiry], date_str)
179
194
  end
180
195
 
181
196
  # :call-seq:
@@ -363,44 +378,6 @@ module T2Server
363
378
  @server.get_run_attribute(@uuid, "#{@links[:wdir]}/#{@baclava_out}")
364
379
  end
365
380
 
366
- # :call-seq:
367
- # run.ls(dir="") -> [[dirs], [objects]]
368
- #
369
- # List a directory in the run's workspace on the server. If _dir_ is left
370
- # blank then / is listed. As there is no concept of changing into a
371
- # directory (_cd_) in Taverna Server then all paths passed into _ls_
372
- # should be full paths starting at "root". The contents of a directory are
373
- # returned as a list of two lists, "directories" and "objects"
374
- # respectively. In the case of listing the contents of the "out"
375
- # directory, the "directories" returned by _ls_ are actually output port
376
- # names and their contents are the values held by these ports. If there
377
- # are multiple values listed then that port represents a list. If there
378
- # are further directories below a port name then it is a list of lists.
379
- def ls(dir="")
380
- dir.strip_path!
381
- dir_list = @server.get_run_attribute(@uuid, "#{@links[:wdir]}/#{dir}")
382
-
383
- # compile a list of directory entries stripping the
384
- # directory name from the front of each filename
385
- dirs = []
386
- files = []
387
-
388
- begin
389
- doc = XML::Document.string(dir_list)
390
-
391
- doc.find(XPaths::DIR, Namespaces::MAP).each {|e| dirs << e.content.split('/')[-1]}
392
- doc.find(XPaths::FILE, Namespaces::MAP).each {|e| files << e.content.split('/')[-1]}
393
- rescue XML::Error => xmle
394
- # We expect to get a DOCUMENT_EMPTY error in some cases. All others
395
- # should be re-raised.
396
- if xmle.code != XML::Error::DOCUMENT_EMPTY
397
- raise xmle
398
- end
399
- end
400
-
401
- [dirs, files]
402
- end
403
-
404
381
  # :call-seq:
405
382
  # run.initialized? -> bool
406
383
  #
@@ -428,35 +405,81 @@ module T2Server
428
405
  # :call-seq:
429
406
  # run.create_time -> string
430
407
  #
431
- # Get the creation time of this run formatted as an ISO-8601 timestamp.
408
+ # Get the creation time of this run as an instance of class Time.
432
409
  def create_time
433
- @server.get_run_attribute(@uuid, @links[:createtime])
410
+ Time.parse(@server.get_run_attribute(@uuid, @links[:createtime]))
434
411
  end
435
412
 
436
413
  # :call-seq:
437
414
  # run.start_time -> string
438
415
  #
439
- # Get the start time of this run formatted as an ISO-8601 timestamp.
416
+ # Get the start time of this run as an instance of class Time.
440
417
  def start_time
441
- @server.get_run_attribute(@uuid, @links[:starttime])
418
+ Time.parse(@server.get_run_attribute(@uuid, @links[:starttime]))
442
419
  end
443
420
 
444
421
  # :call-seq:
445
422
  # run.finish_time -> string
446
423
  #
447
- # Get the finish time of this run formatted as an ISO-8601 timestamp.
424
+ # Get the finish time of this run as an instance of class Time.
448
425
  def finish_time
449
- @server.get_run_attribute(@uuid, @links[:finishtime])
426
+ Time.parse(@server.get_run_attribute(@uuid, @links[:finishtime]))
450
427
  end
451
428
 
452
429
  private
430
+
431
+ # List a directory in the run's workspace on the server. If dir is left
432
+ # blank then / is listed. As there is no concept of changing into a
433
+ # directory (cd) in Taverna Server then all paths passed into _ls_ports
434
+ # should be full paths starting at "root". The contents of a directory are
435
+ # returned as a list of two lists, "lists" and "values" respectively.
436
+ def _ls_ports(dir="", top=true)
437
+ dir.strip_path!
438
+ dir_list = @server.get_run_attribute(@uuid, "#{@links[:wdir]}/#{dir}")
439
+
440
+ # compile a list of directory entries stripping the
441
+ # directory name from the front of each filename
442
+ lists = []
443
+ values = []
444
+
445
+ begin
446
+ doc = XML::Document.string(dir_list)
447
+
448
+ doc.find(XPaths::DIR, Namespaces::MAP).each do |e|
449
+ if top
450
+ lists << e.content.split('/')[-1]
451
+ else
452
+ index = (e.attributes['name'].to_i - 1)
453
+ lists[index] = e.content.split('/')[-1]
454
+ end
455
+ end
456
+
457
+ doc.find(XPaths::FILE, Namespaces::MAP).each do |e|
458
+ if top
459
+ values << e.content.split('/')[-1]
460
+ else
461
+ index = (e.attributes['name'].to_i - 1)
462
+ values[index] = e.content.split('/')[-1]
463
+ end
464
+ end
465
+ rescue XML::Error => xmle
466
+ # We expect to get a DOCUMENT_EMPTY error in some cases. All others
467
+ # should be re-raised.
468
+ if xmle.code != XML::Error::DOCUMENT_EMPTY
469
+ raise xmle
470
+ end
471
+ end
472
+
473
+ [lists, values]
474
+ end
475
+
453
476
  def _get_output(output, refs=false, top=true)
454
477
  output.strip_path!
455
478
 
456
479
  # if at the top level we need to check if the port represents a list
457
480
  # or a singleton value
458
481
  if top
459
- lists, items = ls("out")
482
+ lists, items = _ls_ports("out")
460
483
  if items.include? output
461
484
  if refs
462
485
  return "#{@server.uri}/rest/runs/#{@uuid}/#{@links[:wdir]}/out/#{output}"
@@ -467,7 +490,7 @@ module T2Server
467
490
  end
468
491
 
469
492
  # we're not at the top level so look at the contents of the output port
470
- lists, items = ls("out/#{output}")
493
+ lists, items = _ls_ports("out/#{output}", false)
471
494
 
472
495
  # build up lists of results
473
496
  result = []
@@ -79,7 +79,9 @@ module T2Server
79
79
  @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
80
80
  end
81
81
 
82
- @links = parse_description(get_attribute(@rest_path))
82
+ # add a slash to the end of this address to work around this bug:
83
+ # http://www.mygrid.org.uk/dev/issues/browse/TAVSERV-113
84
+ @links = parse_description(get_attribute("#{@rest_path}/"))
83
85
  #@links.each {|key, val| puts "#{key}: #{val}"}
84
86
 
85
87
  # get max runs
data/lib/t2-server.rb CHANGED
@@ -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.3"
46
+ GEM_VERSION = "0.6.0"
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
data/test/tc_run.rb CHANGED
@@ -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_hello)
40
+ @run = T2Server::Run.create($address, $wkf_pass)
41
41
  end
42
42
 
43
43
  # test bad state code
@@ -45,11 +45,13 @@ class TestRun < Test::Unit::TestCase
45
45
  @run.wait
46
46
  end
47
47
 
48
- # test mkdir and ls
48
+ # test mkdir
49
49
  assert(@run.mkdir("test"))
50
- assert_equal(@run.ls, [["test"], []])
51
50
 
52
- # start, state and wait
51
+ # set input, start, check state and wait
52
+ assert_nothing_raised(T2Server::AttributeNotFoundError) do
53
+ @run.set_input("IN", "Hello, World!")
54
+ end
53
55
  @run.start
54
56
  assert(@run.running?)
55
57
  assert_nothing_raised(T2Server::RunStateError) do
@@ -58,7 +60,7 @@ class TestRun < Test::Unit::TestCase
58
60
 
59
61
  # exitcode and output
60
62
  assert_instance_of(Fixnum, @run.exitcode)
61
- assert_equal(@run.get_output("Message"), "Hello, World!")
63
+ assert_equal(@run.get_output("OUT"), "Hello, World!")
62
64
  assert_raise(T2Server::AccessForbiddenError) do
63
65
  @run.get_output("wrong!")
64
66
  end
@@ -66,11 +68,11 @@ class TestRun < Test::Unit::TestCase
66
68
  # deletion
67
69
  assert(@run.delete)
68
70
 
69
- # run that need inputs
70
- @run = T2Server::Run.create($address, $wkf_input)
71
+ # run with file input
72
+ @run = T2Server::Run.create($address, $wkf_pass)
71
73
 
72
74
  assert_nothing_raised(T2Server::AttributeNotFoundError) do
73
- @run.set_input("input", 10)
75
+ @run.upload_input_file("IN", $file_input)
74
76
  end
75
77
 
76
78
  @run.start
@@ -78,6 +80,7 @@ class TestRun < Test::Unit::TestCase
78
80
  assert_nothing_raised(T2Server::RunStateError) do
79
81
  @run.wait
80
82
  end
83
+ assert_equal(@run.get_output("OUT"), "Hello, World!")
81
84
 
82
85
  # run that returns list of lists, some empty, using baclava for input
83
86
  @run = T2Server::Run.create($address, $wkf_lists)
@@ -90,13 +93,14 @@ class TestRun < Test::Unit::TestCase
90
93
  assert_nothing_raised(T2Server::RunStateError) do
91
94
  @run.wait
92
95
  end
96
+ assert_equal(@run.get_output_ports, ["SINGLE", "MANY"])
93
97
  assert_equal(@run.get_output("SINGLE"), [])
94
- assert_equal(@run.get_output("MANY"), [[], [["Hello", ""]], [[], ["test"],
95
- []], [["boo"]]])
98
+ assert_equal(@run.get_output("MANY"),
99
+ [[["boo"]], [["", "Hello"]], [], [[], ["test"], []]])
96
100
 
97
101
  # run with baclava output
98
- @run = T2Server::Run.create($address, $wkf_hello)
99
-
102
+ @run = T2Server::Run.create($address, $wkf_pass)
103
+ @run.set_input("IN", "Some input...")
100
104
  assert_nothing_raised(T2Server::AttributeNotFoundError) do
101
105
  @run.set_baclava_output
102
106
  end
data/test/tc_server.rb CHANGED
@@ -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_hello)
46
+ @run = @server.create_run($wkf_pass)
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_hello)
54
+ @server.create_run($wkf_pass)
55
55
  end
56
56
  end
57
57
 
data/test/ts_t2server.rb CHANGED
@@ -33,26 +33,32 @@
33
33
  require 'test/unit'
34
34
  require 't2-server'
35
35
 
36
- # get a server address to test - 30 second timeout
37
- print "\nPlease supply a valid Taverna 2 Server address.\n\nNOTE that these " +
38
- "tests will fully load the server and then delete all the runs that it " +
39
- "has permission to do so - if you are not using security ALL runs will be " +
40
- "deleted!\n(leave blank to skip tests): "
41
- $stdout.flush
42
- if select([$stdin], [], [], 30)
43
- $address = $stdin.gets.chomp
36
+ # check for a server address passed through on the command line
37
+ if ARGV.size != 0:
38
+ $address = ARGV[0]
39
+ puts "Using server at #{$address}"
44
40
  else
45
- puts "\nSkipping tests that require a Taverna 2 Server instance..."
46
- $address = ""
41
+ # get a server address to test - 30 second timeout
42
+ print "\nPlease supply a valid Taverna 2 Server address.\n\nNOTE that " +
43
+ "these tests will fully load the server and then delete all the runs " +
44
+ "that it has permission to do so - if you are not using security ALL " +
45
+ "runs will be deleted!\n(leave blank to skip tests): "
46
+ $stdout.flush
47
+ if select([$stdin], [], [], 30)
48
+ $address = $stdin.gets.chomp
49
+ else
50
+ puts "\nSkipping tests that require a Taverna 2 Server instance..."
51
+ $address = ""
52
+ end
47
53
  end
48
54
 
49
55
  # the testcases to run
50
56
  require 'tc_paths'
51
57
  if $address != ""
52
- $wkf_hello = File.read("test/workflows/hello.t2flow")
53
- $wkf_input = File.read("test/workflows/pipelined_list_iteration_902021.t2flow")
58
+ $wkf_pass = File.read("test/workflows/pass_through.t2flow")
54
59
  $wkf_lists = File.read("test/workflows/empty_list.t2flow")
55
60
  $list_input = "test/workflows/empty_list_input.baclava"
61
+ $file_input = "test/workflows/in.txt"
56
62
 
57
63
  require 'tc_server'
58
64
  require 'tc_run'
@@ -1,23 +1,23 @@
1
- <workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.2.0"><dataflow id="373bb615-7dd3-46b4-9e3c-ee38e7460403" role="top"><name>Workflow1</name><inputPorts><port><name>MANY_IN</name><depth>3</depth><granularDepth>3</granularDepth><annotations /></port><port><name>SINGLE_IN</name><depth>1</depth><granularDepth>1</granularDepth><annotations /></port></inputPorts><outputPorts><port><name>MANY</name><annotations /></port><port><name>SINGLE</name><annotations /></port></outputPorts><processors /><conditions /><datalinks><datalink><sink type="dataflow"><port>MANY</port></sink><source type="dataflow"><port>MANY_IN</port></source></datalink><datalink><sink type="dataflow"><port>SINGLE</port></sink><source type="dataflow"><port>SINGLE_IN</port></source></datalink></datalinks><annotations><annotation_chain_2_2 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.IdentificationAssertion">
5
- <identification>536f469a-fd80-4efa-8d76-6cb2514123ec</identification>
6
- </annotationBean>
7
- <date>2010-11-04 18:00:12.867 GMT</date>
8
- <creators />
9
- <curationEventList />
10
- </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
11
- </annotationAssertions>
12
- </net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 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.IdentificationAssertion">
16
- <identification>373bb615-7dd3-46b4-9e3c-ee38e7460403</identification>
17
- </annotationBean>
18
- <date>2010-11-09 13:50:13.127 GMT</date>
19
- <creators />
20
- <curationEventList />
21
- </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
22
- </annotationAssertions>
1
+ <workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.2.0"><dataflow id="373bb615-7dd3-46b4-9e3c-ee38e7460403" role="top"><name>Workflow1</name><inputPorts><port><name>MANY_IN</name><depth>3</depth><granularDepth>3</granularDepth><annotations /></port><port><name>SINGLE_IN</name><depth>1</depth><granularDepth>1</granularDepth><annotations /></port></inputPorts><outputPorts><port><name>MANY</name><annotations /></port><port><name>SINGLE</name><annotations /></port></outputPorts><processors /><conditions /><datalinks><datalink><sink type="dataflow"><port>MANY</port></sink><source type="dataflow"><port>MANY_IN</port></source></datalink><datalink><sink type="dataflow"><port>SINGLE</port></sink><source type="dataflow"><port>SINGLE_IN</port></source></datalink></datalinks><annotations><annotation_chain_2_2 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.IdentificationAssertion">
5
+ <identification>536f469a-fd80-4efa-8d76-6cb2514123ec</identification>
6
+ </annotationBean>
7
+ <date>2010-11-04 18:00:12.867 GMT</date>
8
+ <creators />
9
+ <curationEventList />
10
+ </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
11
+ </annotationAssertions>
12
+ </net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 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.IdentificationAssertion">
16
+ <identification>373bb615-7dd3-46b4-9e3c-ee38e7460403</identification>
17
+ </annotationBean>
18
+ <date>2010-11-09 13:50:13.127 GMT</date>
19
+ <creators />
20
+ <curationEventList />
21
+ </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
22
+ </annotationAssertions>
23
23
  </net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2></annotations></dataflow></workflow>
@@ -1,86 +1,86 @@
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="MANY_IN">
4
- <b:myGridDataDocument lsid="" syntactictype="l(l(l('null')))">
5
- <s:metadata xmlns:s="http://org.embl.ebi.escience/xscufl/0.1alpha" />
6
- <b:partialOrder lsid="" type="list">
7
- <b:relationList>
8
- <b:relation parent="0" child="1" />
9
- <b:relation parent="1" child="2" />
10
- <b:relation parent="2" child="3" />
11
- </b:relationList>
12
- <b:itemList>
13
- <b:partialOrder lsid="" type="list" index="0">
14
- <b:relationList />
15
- <b:itemList>
16
- <b:partialOrder lsid="" type="list" index="0">
17
- <b:relationList />
18
- <b:itemList>
19
- <b:dataElement lsid="" index="0">
20
- <b:dataElementData>Ym9v</b:dataElementData>
21
- </b:dataElement>
22
- </b:itemList>
23
- </b:partialOrder>
24
- </b:itemList>
25
- </b:partialOrder>
26
- <b:partialOrder lsid="" type="list" index="1">
27
- <b:relationList />
28
- <b:itemList>
29
- <b:partialOrder lsid="" type="list" index="0">
30
- <b:relationList>
31
- <b:relation parent="0" child="1" />
32
- </b:relationList>
33
- <b:itemList>
34
- <b:dataElement lsid="" index="0">
35
- <b:dataElementData />
36
- </b:dataElement>
37
- <b:dataElement lsid="" index="1">
38
- <b:dataElementData>SGVsbG8=</b:dataElementData>
39
- </b:dataElement>
40
- </b:itemList>
41
- </b:partialOrder>
42
- </b:itemList>
43
- </b:partialOrder>
44
- <b:partialOrder lsid="" type="list" index="2">
45
- <b:relationList />
46
- <b:itemList />
47
- </b:partialOrder>
48
- <b:partialOrder lsid="" type="list" index="3">
49
- <b:relationList>
50
- <b:relation parent="0" child="1" />
51
- <b:relation parent="1" child="2" />
52
- </b:relationList>
53
- <b:itemList>
54
- <b:partialOrder lsid="" type="list" index="0">
55
- <b:relationList />
56
- <b:itemList />
57
- </b:partialOrder>
58
- <b:partialOrder lsid="" type="list" index="1">
59
- <b:relationList />
60
- <b:itemList>
61
- <b:dataElement lsid="" index="0">
62
- <b:dataElementData>dGVzdA==</b:dataElementData>
63
- </b:dataElement>
64
- </b:itemList>
65
- </b:partialOrder>
66
- <b:partialOrder lsid="" type="list" index="2">
67
- <b:relationList />
68
- <b:itemList />
69
- </b:partialOrder>
70
- </b:itemList>
71
- </b:partialOrder>
72
- </b:itemList>
73
- </b:partialOrder>
74
- </b:myGridDataDocument>
75
- </b:dataThing>
76
- <b:dataThing key="SINGLE_IN">
77
- <b:myGridDataDocument lsid="" syntactictype="l('null')">
78
- <s:metadata xmlns:s="http://org.embl.ebi.escience/xscufl/0.1alpha" />
79
- <b:partialOrder lsid="" type="list">
80
- <b:relationList />
81
- <b:itemList />
82
- </b:partialOrder>
83
- </b:myGridDataDocument>
84
- </b:dataThing>
85
- </b:dataThingMap>
86
-
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="MANY_IN">
4
+ <b:myGridDataDocument lsid="" syntactictype="l(l(l('null')))">
5
+ <s:metadata xmlns:s="http://org.embl.ebi.escience/xscufl/0.1alpha" />
6
+ <b:partialOrder lsid="" type="list">
7
+ <b:relationList>
8
+ <b:relation parent="0" child="1" />
9
+ <b:relation parent="1" child="2" />
10
+ <b:relation parent="2" child="3" />
11
+ </b:relationList>
12
+ <b:itemList>
13
+ <b:partialOrder lsid="" type="list" index="0">
14
+ <b:relationList />
15
+ <b:itemList>
16
+ <b:partialOrder lsid="" type="list" index="0">
17
+ <b:relationList />
18
+ <b:itemList>
19
+ <b:dataElement lsid="" index="0">
20
+ <b:dataElementData>Ym9v</b:dataElementData>
21
+ </b:dataElement>
22
+ </b:itemList>
23
+ </b:partialOrder>
24
+ </b:itemList>
25
+ </b:partialOrder>
26
+ <b:partialOrder lsid="" type="list" index="1">
27
+ <b:relationList />
28
+ <b:itemList>
29
+ <b:partialOrder lsid="" type="list" index="0">
30
+ <b:relationList>
31
+ <b:relation parent="0" child="1" />
32
+ </b:relationList>
33
+ <b:itemList>
34
+ <b:dataElement lsid="" index="0">
35
+ <b:dataElementData />
36
+ </b:dataElement>
37
+ <b:dataElement lsid="" index="1">
38
+ <b:dataElementData>SGVsbG8=</b:dataElementData>
39
+ </b:dataElement>
40
+ </b:itemList>
41
+ </b:partialOrder>
42
+ </b:itemList>
43
+ </b:partialOrder>
44
+ <b:partialOrder lsid="" type="list" index="2">
45
+ <b:relationList />
46
+ <b:itemList />
47
+ </b:partialOrder>
48
+ <b:partialOrder lsid="" type="list" index="3">
49
+ <b:relationList>
50
+ <b:relation parent="0" child="1" />
51
+ <b:relation parent="1" child="2" />
52
+ </b:relationList>
53
+ <b:itemList>
54
+ <b:partialOrder lsid="" type="list" index="0">
55
+ <b:relationList />
56
+ <b:itemList />
57
+ </b:partialOrder>
58
+ <b:partialOrder lsid="" type="list" index="1">
59
+ <b:relationList />
60
+ <b:itemList>
61
+ <b:dataElement lsid="" index="0">
62
+ <b:dataElementData>dGVzdA==</b:dataElementData>
63
+ </b:dataElement>
64
+ </b:itemList>
65
+ </b:partialOrder>
66
+ <b:partialOrder lsid="" type="list" index="2">
67
+ <b:relationList />
68
+ <b:itemList />
69
+ </b:partialOrder>
70
+ </b:itemList>
71
+ </b:partialOrder>
72
+ </b:itemList>
73
+ </b:partialOrder>
74
+ </b:myGridDataDocument>
75
+ </b:dataThing>
76
+ <b:dataThing key="SINGLE_IN">
77
+ <b:myGridDataDocument lsid="" syntactictype="l('null')">
78
+ <s:metadata xmlns:s="http://org.embl.ebi.escience/xscufl/0.1alpha" />
79
+ <b:partialOrder lsid="" type="list">
80
+ <b:relationList />
81
+ <b:itemList />
82
+ </b:partialOrder>
83
+ </b:myGridDataDocument>
84
+ </b:dataThing>
85
+ </b:dataThingMap>
86
+
@@ -0,0 +1 @@
1
+ Hello, World!
@@ -0,0 +1,12 @@
1
+ <workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.2.0"><dataflow id="b14e490b-927b-4e5e-9bb5-6c9b3da4ab2c" role="top"><name>Workflow1</name><inputPorts><port><name>IN</name><depth>0</depth><granularDepth>0</granularDepth><annotations /></port></inputPorts><outputPorts><port><name>OUT</name><annotations /></port></outputPorts><processors /><conditions /><datalinks><datalink><sink type="dataflow"><port>OUT</port></sink><source type="dataflow"><port>IN</port></source></datalink></datalinks><annotations><annotation_chain_2_2 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.IdentificationAssertion">
5
+ <identification>b14e490b-927b-4e5e-9bb5-6c9b3da4ab2c</identification>
6
+ </annotationBean>
7
+ <date>2010-11-22 13:37:10.158 GMT</date>
8
+ <creators />
9
+ <curationEventList />
10
+ </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
11
+ </annotationAssertions>
12
+ </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: 13
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 5
9
- - 3
10
- version: 0.5.3
8
+ - 6
9
+ - 0
10
+ version: 0.6.0
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-11-09 00:00:00 +00:00
18
+ date: 2011-03-10 00:00:00 +00:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -50,6 +50,22 @@ dependencies:
50
50
  version: 1.1.4
51
51
  type: :runtime
52
52
  version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ name: hirb
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 15
62
+ segments:
63
+ - 0
64
+ - 4
65
+ - 0
66
+ version: 0.4.0
67
+ type: :runtime
68
+ version_requirements: *id003
53
69
  description: This gem provides access to the Taverna 2 Server REST interface from Ruby.
54
70
  email: rhaines@manchester.ac.uk
55
71
  executables:
@@ -75,10 +91,10 @@ files:
75
91
  - test/tc_server.rb
76
92
  - test/tc_paths.rb
77
93
  - test/tc_run.rb
78
- - test/workflows/pipelined_list_iteration_902021.t2flow
94
+ - test/workflows/pass_through.t2flow
79
95
  - test/workflows/empty_list_input.baclava
80
96
  - test/workflows/empty_list.t2flow
81
- - test/workflows/hello.t2flow
97
+ - test/workflows/in.txt
82
98
  - test/ts_t2server.rb
83
99
  - README.rdoc
84
100
  - LICENCE.rdoc
@@ -1,21 +0,0 @@
1
- <workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.2.0"><dataflow id="b9556b39-8656-4a17-bf5c-37de30fe7df3" role="top"><name>Workflow1</name><inputPorts /><outputPorts><port><name>Message</name><annotations /></port></outputPorts><processors><processor><name>Hello</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>Hello, World!</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>1000</initialDelay>
8
- <maxDelay>5000</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 /></iteration></iterationStrategyStack></processor></processors><conditions /><datalinks><datalink><sink type="dataflow"><port>Message</port></sink><source type="processor"><processor>Hello</processor><port>value</port></source></datalink></datalinks><annotations><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
11
- <annotationAssertions>
12
- <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
13
- <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
14
- <identification>b9556b39-8656-4a17-bf5c-37de30fe7df3</identification>
15
- </annotationBean>
16
- <date>2010-07-09 15:01:39.283 BST</date>
17
- <creators />
18
- <curationEventList />
19
- </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
20
- </annotationAssertions>
21
- </net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2></annotations></dataflow></workflow>
@@ -1,303 +0,0 @@
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>