t2-server 0.5.0 → 0.5.1
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 +92 -0
- data/{LICENCE → LICENCE.rdoc} +8 -8
- data/README.rdoc +1 -1
- data/lib/t2-server.rb +1 -1
- data/lib/t2-server/server.rb +1 -1
- data/test/tc_run.rb +46 -1
- data/test/tc_server.rb +2 -2
- data/test/ts_t2server.rb +5 -1
- data/test/workflows/demonstration_of_configurable_iteration_114130.t2flow +335 -0
- data/test/workflows/list_input.baclava +16 -0
- data/test/workflows/pipelined_list_iteration_902021.t2flow +303 -0
- metadata +11 -6
    
        data/CHANGES.rdoc
    ADDED
    
    | @@ -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>..
         | 
    
        data/{LICENCE → LICENCE.rdoc}
    RENAMED
    
    | @@ -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 | 
            -
             | 
| 9 | 
            -
             | 
| 8 | 
            +
            * Redistributions of source code must retain the above copyright notice,
         | 
| 9 | 
            +
              this list of conditions and the following disclaimer.
         | 
| 10 10 |  | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 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 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 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
         | 
    
        data/README.rdoc
    CHANGED
    
    
    
        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. | 
| 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
         | 
    
        data/lib/t2-server/server.rb
    CHANGED
    
    | @@ -233,7 +233,7 @@ module T2Server | |
| 233 233 | 
             
                    run = run(run)
         | 
| 234 234 | 
             
                  end
         | 
| 235 235 |  | 
| 236 | 
            -
                  path = "#{@links[:runs]}/#{run. | 
| 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
         | 
    
        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, $ | 
| 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
         | 
    
        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($ | 
| 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($ | 
| 54 | 
            +
                    @server.create_run($wkf_hello)
         | 
| 55 55 | 
             
                  end
         | 
| 56 56 | 
             
                end
         | 
| 57 57 |  | 
    
        data/test/ts_t2server.rb
    CHANGED
    
    | @@ -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 < 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 < 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 < 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<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:  | 
| 4 | 
            +
              hash: 9
         | 
| 5 5 | 
             
              prerelease: false
         | 
| 6 6 | 
             
              segments: 
         | 
| 7 7 | 
             
              - 0
         | 
| 8 8 | 
             
              - 5
         | 
| 9 | 
            -
              -  | 
| 10 | 
            -
              version: 0.5. | 
| 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- | 
| 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: []
         |