taverna-player 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +18 -0
- data/Gemfile +18 -0
- data/LICENCE.rdoc +29 -0
- data/README.rdoc +663 -0
- data/Rakefile +65 -0
- data/app/assets/javascripts/taverna_player/application.js +14 -0
- data/app/assets/javascripts/taverna_player/runs.js +42 -0
- data/app/assets/stylesheets/scaffold.css +56 -0
- data/app/assets/stylesheets/taverna_player/application.css +13 -0
- data/app/assets/stylesheets/taverna_player/coderay.css +120 -0
- data/app/controllers/taverna_player/application_controller.rb +16 -0
- data/app/controllers/taverna_player/runs_controller.rb +18 -0
- data/app/controllers/taverna_player/service_credentials_controller.rb +18 -0
- data/app/helpers/taverna_player/application_helper.rb +55 -0
- data/app/helpers/taverna_player/runs_helper.rb +84 -0
- data/app/models/taverna_player/interaction.rb +25 -0
- data/app/models/taverna_player/run.rb +117 -0
- data/app/models/taverna_player/run_port.rb +148 -0
- data/app/models/taverna_player/service_credential.rb +56 -0
- data/app/views/layouts/taverna_player/embedded.html.erb +27 -0
- data/app/views/taverna_player/runs/_button.html.erb +19 -0
- data/app/views/taverna_player/runs/_info.html.erb +56 -0
- data/app/views/taverna_player/runs/_info.json.jbuilder +2 -0
- data/app/views/taverna_player/runs/_inputs.html.erb +34 -0
- data/app/views/taverna_player/runs/_inputs.json.jbuilder +8 -0
- data/app/views/taverna_player/runs/_interaction.html.erb +68 -0
- data/app/views/taverna_player/runs/_outputs.html.erb +41 -0
- data/app/views/taverna_player/runs/_poll.html.erb +27 -0
- data/app/views/taverna_player/runs/create.json.jbuilder +3 -0
- data/app/views/taverna_player/runs/embedded/_button.html.erb +19 -0
- data/app/views/taverna_player/runs/embedded/_info.html.erb +25 -0
- data/app/views/taverna_player/runs/embedded/_inputs.html.erb +32 -0
- data/app/views/taverna_player/runs/embedded/_outputs.html.erb +32 -0
- data/app/views/taverna_player/runs/embedded/new.html.erb +58 -0
- data/app/views/taverna_player/runs/embedded/show.html.erb +39 -0
- data/app/views/taverna_player/runs/embedded/show.js.erb +35 -0
- data/app/views/taverna_player/runs/index.html.erb +40 -0
- data/app/views/taverna_player/runs/index.json.jbuilder +1 -0
- data/app/views/taverna_player/runs/new.html.erb +56 -0
- data/app/views/taverna_player/runs/new.json.jbuilder +1 -0
- data/app/views/taverna_player/runs/show.html.erb +29 -0
- data/app/views/taverna_player/runs/show.js.erb +25 -0
- data/app/views/taverna_player/runs/show.json.jbuilder +25 -0
- data/app/views/taverna_player/service_credentials/_form.html.erb +53 -0
- data/app/views/taverna_player/service_credentials/edit.html.erb +18 -0
- data/app/views/taverna_player/service_credentials/index.html.erb +41 -0
- data/app/views/taverna_player/service_credentials/new.html.erb +17 -0
- data/app/views/taverna_player/service_credentials/show.html.erb +36 -0
- data/config/routes.rb +34 -0
- data/db/migrate/20130313105546_create_taverna_player_runs.rb +16 -0
- data/db/migrate/20130315163019_create_taverna_player_run_ports.rb +15 -0
- data/db/migrate/20130318170744_add_attachment_file_to_taverna_player_run_ports.rb +6 -0
- data/db/migrate/20130319183634_create_delayed_jobs.rb +22 -0
- data/db/migrate/20130320102600_add_status_message_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20130321100110_add_depth_and_metadata_to_taverna_player_run_ports.rb +6 -0
- data/db/migrate/20130704095504_add_attachment_results_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20130705142704_add_embedded_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20130714140911_create_taverna_player_interactions.rb +13 -0
- data/db/migrate/20130717083653_add_proxy_to_taverna_player_runs.rb +6 -0
- data/db/migrate/20130717155415_add_stop_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20130811152840_add_attachment_log_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20130811211725_change_taverna_player_runs_state_column.rb +5 -0
- data/db/migrate/20130812155839_add_name_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20130918135348_create_taverna_player_service_credentials.rb +15 -0
- data/db/migrate/20130919154200_add_displayed_to_taverna_player_interactions.rb +5 -0
- data/db/migrate/20131007153209_add_job_ref_to_taverna_player_runs.rb +13 -0
- data/db/migrate/20131010094537_add_reply_caching_to_taverna_player_interactions.rb +19 -0
- data/db/migrate/20131017141514_add_failure_message_to_taverna_player_run.rb +5 -0
- data/db/migrate/20131018152940_add_serial_number_to_taverna_player_interactions.rb +5 -0
- data/db/migrate/20131018160715_add_parent_run_id_to_taverna_player_runs.rb +5 -0
- data/db/migrate/20131102113933_add_page_uri_to_taverna_player_interaction.rb +5 -0
- data/db/migrate/20131105115218_remove_proxy_from_taverna_player_runs.rb +11 -0
- data/db/migrate/20131105141934_change_taverna_player_interactions_output_value_column_name.rb +5 -0
- data/db/migrate/20131112165520_add_user_to_taverna_player_run.rb +5 -0
- data/lib/generators/taverna_player/callbacks_generator.rb +25 -0
- data/lib/generators/taverna_player/controllers_generator.rb +30 -0
- data/lib/generators/taverna_player/install_generator.rb +30 -0
- data/lib/generators/taverna_player/job_generator.rb +26 -0
- data/lib/generators/taverna_player/models_generator.rb +27 -0
- data/lib/generators/taverna_player/renderers_generator.rb +26 -0
- data/lib/generators/taverna_player/views_generator.rb +27 -0
- data/lib/generators/templates/ReadMe.txt +118 -0
- data/lib/generators/templates/callbacks/render_callbacks.rb +56 -0
- data/lib/generators/templates/callbacks/worker_callbacks.rb +31 -0
- data/lib/generators/templates/controllers/runs_controller.rb +20 -0
- data/lib/generators/templates/controllers/service_credentials_controller.rb +20 -0
- data/lib/generators/templates/initializer.rb +154 -0
- data/lib/generators/templates/models/run.rb +20 -0
- data/lib/tasks/delete-cancelled-runs.rake +26 -0
- data/lib/tasks/delete-old-embedded-runs.rake +26 -0
- data/lib/taverna-player.rb +139 -0
- data/lib/taverna_player/concerns/controllers/runs_controller.rb +281 -0
- data/lib/taverna_player/concerns/controllers/service_credentials_controller.rb +89 -0
- data/lib/taverna_player/concerns/models/run.rb +205 -0
- data/lib/taverna_player/engine.rb +23 -0
- data/lib/taverna_player/model_proxy.rb +51 -0
- data/lib/taverna_player/output_renderer.rb +96 -0
- data/lib/taverna_player/render_callbacks.rb +41 -0
- data/lib/taverna_player/version.rb +15 -0
- data/lib/taverna_player/worker.rb +325 -0
- data/script/delayed_job +5 -0
- data/script/rails +8 -0
- data/taverna_player.gemspec +46 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +16 -0
- data/test/dummy/app/assets/stylesheets/application.css +14 -0
- data/test/dummy/app/controllers/application_controller.rb +15 -0
- data/test/dummy/app/controllers/home_controller.rb +16 -0
- data/test/dummy/app/controllers/taverna_player/runs_controller.rb +25 -0
- data/test/dummy/app/controllers/taverna_player/service_credentials_controller.rb +25 -0
- data/test/dummy/app/controllers/workflows_controller.rb +17 -0
- data/test/dummy/app/models/user.rb +15 -0
- data/test/dummy/app/models/workflow.rb +32 -0
- data/test/dummy/app/views/home/index.html.erb +18 -0
- data/test/dummy/app/views/layouts/application.html.erb +43 -0
- data/test/dummy/app/views/workflows/index.html.erb +35 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +58 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/taverna_player.example.rb +40 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +22 -0
- data/test/dummy/db/migrate/20130314103555_create_workflows.rb +12 -0
- data/test/dummy/db/migrate/20130318141557_create_taverna_player_runs.taverna_player.rb +17 -0
- data/test/dummy/db/migrate/20130318141558_create_taverna_player_run_ports.taverna_player.rb +16 -0
- data/test/dummy/db/migrate/20130318173013_add_attachment_file_to_taverna_player_run_ports.taverna_player.rb +7 -0
- data/test/dummy/db/migrate/20130319183816_create_delayed_jobs.taverna_player.rb +23 -0
- data/test/dummy/db/migrate/20130320102635_add_status_message_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130321161859_add_depth_and_metadata_to_taverna_player_run_ports.taverna_player.rb +7 -0
- data/test/dummy/db/migrate/20130704100146_add_attachment_results_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130705142816_add_embedded_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130714142144_create_taverna_player_interactions.taverna_player.rb +14 -0
- data/test/dummy/db/migrate/20130717084809_add_proxy_to_taverna_player_runs.taverna_player.rb +7 -0
- data/test/dummy/db/migrate/20130718102707_add_stop_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130811204449_add_attachment_log_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130811212709_change_taverna_player_runs_state_column.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130812161152_add_name_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20130918155525_create_taverna_player_service_credentials.taverna_player.rb +16 -0
- data/test/dummy/db/migrate/20130919155202_add_displayed_to_taverna_player_interactions.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131007153659_add_job_ref_to_taverna_player_runs.taverna_player.rb +14 -0
- data/test/dummy/db/migrate/20131016123941_add_reply_caching_to_taverna_player_interactions.taverna_player.rb +20 -0
- data/test/dummy/db/migrate/20131017141614_add_failure_message_to_taverna_player_run.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131018153316_add_serial_number_to_taverna_player_interactions.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131018164614_add_parent_run_id_to_taverna_player_runs.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131102114343_add_page_uri_to_taverna_player_interaction.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131105115724_remove_proxy_from_taverna_player_runs.taverna_player.rb +12 -0
- data/test/dummy/db/migrate/20131105142417_change_taverna_player_interactions_output_value_column_name.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131112165815_add_user_to_taverna_player_run.taverna_player.rb +6 -0
- data/test/dummy/db/migrate/20131114130937_create_users.rb +10 -0
- data/test/dummy/db/schema.rb +123 -0
- data/test/dummy/lib/callbacks.rb +35 -0
- data/test/dummy/log/.gitkeep +0 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/delayed_job +5 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/test/functional/home_controller_test.rb +28 -0
- data/test/dummy/test/functional/workflows_controller_test.rb +21 -0
- data/test/fixtures/files/crassostrea_gigas.csv +737 -0
- data/test/fixtures/taverna_player/interactions.yml +32 -0
- data/test/fixtures/taverna_player/run_ports.yml +54 -0
- data/test/fixtures/taverna_player/runs.yml +69 -0
- data/test/fixtures/taverna_player/service_credentials.yml +25 -0
- data/test/fixtures/users.yml +16 -0
- data/test/fixtures/workflows.yml +32 -0
- data/test/functional/taverna_player/runs_controller_test.rb +316 -0
- data/test/functional/taverna_player/service_credentials_controller_test.rb +99 -0
- data/test/taverna_player_test.rb +25 -0
- data/test/test_helper.rb +33 -0
- data/test/unit/helpers/taverna_player/application_helper_test.rb +70 -0
- data/test/unit/helpers/taverna_player/runs_helper_test.rb +45 -0
- data/test/unit/taverna_player/interaction_test.rb +47 -0
- data/test/unit/taverna_player/run_port_test.rb +309 -0
- data/test/unit/taverna_player/run_test.rb +196 -0
- data/test/unit/taverna_player/service_credential_test.rb +64 -0
- data/test/workflows/hello.t2flow +164 -0
- data/test/workflows/list_with_errors.t2flow +107 -0
- data/test/workflows/pass_through.t2flow +12 -0
- metadata +539 -0
@@ -0,0 +1,196 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
# Copyright (c) 2013 The University of Manchester, UK.
|
3
|
+
#
|
4
|
+
# BSD Licenced. See LICENCE.rdoc for details.
|
5
|
+
#
|
6
|
+
# Taverna Player was developed in the BioVeL project, funded by the European
|
7
|
+
# Commission 7th Framework Programme (FP7), through grant agreement
|
8
|
+
# number 283359.
|
9
|
+
#
|
10
|
+
# Author: Robert Haines
|
11
|
+
#------------------------------------------------------------------------------
|
12
|
+
|
13
|
+
require 'test_helper'
|
14
|
+
|
15
|
+
module TavernaPlayer
|
16
|
+
class RunTest < ActiveSupport::TestCase
|
17
|
+
test "should not save run with an illegal state" do
|
18
|
+
run = Run.new
|
19
|
+
run.workflow = workflows(:one)
|
20
|
+
run.state = :not_a_state
|
21
|
+
assert !run.save, "Saved the run with an illegal state"
|
22
|
+
end
|
23
|
+
|
24
|
+
test "should not save run with no workflow" do
|
25
|
+
run = Run.new
|
26
|
+
run.state = :pending
|
27
|
+
assert !run.save, "Saved the run without a workflow id"
|
28
|
+
end
|
29
|
+
|
30
|
+
test "should not be able to set state to cancelled if run not stopped" do
|
31
|
+
run = Run.new
|
32
|
+
run.state = :cancelled
|
33
|
+
assert_not_equal :cancelled, run.state, "The run status was set to "\
|
34
|
+
"cancelled without being marked as stopped first. See the note in "\
|
35
|
+
"the run model file for why this is not allowed."
|
36
|
+
end
|
37
|
+
|
38
|
+
test "should not save run with cancelled state if not marked as stopped" do
|
39
|
+
run = Run.new
|
40
|
+
run.workflow = workflows(:one)
|
41
|
+
run.saved_state = "cancelled"
|
42
|
+
run.stop = false
|
43
|
+
refute run.save, "Saved run with cancelled state when not stopped first"
|
44
|
+
end
|
45
|
+
|
46
|
+
test "should cancel run if run set to stop first" do
|
47
|
+
run = Run.new
|
48
|
+
run.workflow = workflows(:one)
|
49
|
+
refute run.stop, "Run's stop flag was set upon creation"
|
50
|
+
run.cancel
|
51
|
+
run.state = :cancelled
|
52
|
+
assert run.cancelled?, "Run was not cancelled"
|
53
|
+
assert run.complete?, "Run not showing as complete when cancelled"
|
54
|
+
assert_equal :cancelled, run.state, "Run's state was not cancelled"
|
55
|
+
end
|
56
|
+
|
57
|
+
test "should not be able to set state to cancelling directly" do
|
58
|
+
run = Run.new
|
59
|
+
run.workflow = workflows(:one)
|
60
|
+
assert run.save, "Could not save run initially"
|
61
|
+
|
62
|
+
run.state = :cancelling
|
63
|
+
refute run.save, "Saved the run with the cancelling state."
|
64
|
+
end
|
65
|
+
|
66
|
+
test "should be in cancelling state after being cancelled" do
|
67
|
+
run = Run.new
|
68
|
+
run.workflow = workflows(:one)
|
69
|
+
run.state = :running
|
70
|
+
assert run.save, "Could not save run initially."
|
71
|
+
run.delayed_job_id = nil # Remove delayed job to pretend it is running.
|
72
|
+
assert_equal :running, run.state, "Run is not in running state."
|
73
|
+
|
74
|
+
run.cancel
|
75
|
+
assert run.stop, "Run was not stopped."
|
76
|
+
assert run.cancelling?, "Run did not move into cancelling state"
|
77
|
+
end
|
78
|
+
|
79
|
+
test "should create run with a default name" do
|
80
|
+
run = Run.new
|
81
|
+
assert_not_nil run.name, "Default run name is not set."
|
82
|
+
assert_not_equal "", run.name, "Default run name is blank ('')."
|
83
|
+
assert_equal "None", run.name, "Default run name is not 'None'."
|
84
|
+
end
|
85
|
+
|
86
|
+
test "should not save run with nil name" do
|
87
|
+
run = Run.new
|
88
|
+
run.name = nil
|
89
|
+
refute run.save, "Saved the run with a nil name."
|
90
|
+
end
|
91
|
+
|
92
|
+
test "should not save run with an empty name" do
|
93
|
+
run = Run.new
|
94
|
+
run.name = ""
|
95
|
+
refute run.save, "Saved the run with an empty name."
|
96
|
+
end
|
97
|
+
|
98
|
+
test "complete run states" do
|
99
|
+
refute taverna_player_runs(:one).complete?, "Run not complete"
|
100
|
+
refute taverna_player_runs(:two).complete?, "Run not complete"
|
101
|
+
assert taverna_player_runs(:three).complete?, "Run is complete"
|
102
|
+
refute taverna_player_runs(:four).complete?, "Run not complete"
|
103
|
+
refute taverna_player_runs(:five).complete?, "Run not complete"
|
104
|
+
assert taverna_player_runs(:six).complete?, "Run is complete"
|
105
|
+
end
|
106
|
+
|
107
|
+
test "a parent cannot be younger than its child" do
|
108
|
+
older = Run.create(:workflow_id => 1)
|
109
|
+
young = Run.create(:workflow_id => 1)
|
110
|
+
older.parent = young
|
111
|
+
refute older.save, "Run saved with a younger parent"
|
112
|
+
end
|
113
|
+
|
114
|
+
test "parent/child graph should be acyclic" do
|
115
|
+
parent = Run.create(:workflow_id => 1)
|
116
|
+
child = Run.create(:workflow_id => 1)
|
117
|
+
parent.children << child
|
118
|
+
parent.parent = child
|
119
|
+
refute parent.save, "Run saved with child as its parent"
|
120
|
+
end
|
121
|
+
|
122
|
+
test "finding root ancestor of a run" do
|
123
|
+
one = Run.create(:workflow_id => 1)
|
124
|
+
assert_same one, one.root_ancestor, "Single run is not its own root"
|
125
|
+
assert_equal 0, one.children.count, "Not a parent, should not have children"
|
126
|
+
|
127
|
+
two = Run.create(:workflow_id => 1)
|
128
|
+
assert_same two, two.root_ancestor, "Single run is not its own root"
|
129
|
+
|
130
|
+
two.parent = one
|
131
|
+
two.save
|
132
|
+
assert_same one, one.root_ancestor, "Parent run is not its own root"
|
133
|
+
assert_same one, two.root_ancestor, "Child run does not have parent as its root"
|
134
|
+
assert_equal 1, one.children.count, "Parent should have one child"
|
135
|
+
|
136
|
+
three = Run.create(:workflow_id => 1)
|
137
|
+
assert_same three, three.root_ancestor, "Single run is not its own root"
|
138
|
+
|
139
|
+
three.parent = two
|
140
|
+
three.save
|
141
|
+
assert_same one, one.root_ancestor, "Parent run is not its own root"
|
142
|
+
assert_same one, two.root_ancestor, "Child run does not have parent as its root"
|
143
|
+
assert_same one, three.root_ancestor, "Grandchild run does not have grandparent as its root"
|
144
|
+
assert_equal 1, two.children.count, "Parent should have one child"
|
145
|
+
assert_equal 1, one.children.count, "Grandparent should have one child"
|
146
|
+
|
147
|
+
four = Run.create(:workflow_id => 1)
|
148
|
+
assert_same four, four.root_ancestor, "Single run is not its own root"
|
149
|
+
|
150
|
+
four.parent = one
|
151
|
+
four.save
|
152
|
+
assert_same one, four.root_ancestor, "Child run does not have parent as its root"
|
153
|
+
assert_equal 2, one.children.count, "Parent should have two children"
|
154
|
+
end
|
155
|
+
|
156
|
+
test "create run from another run" do
|
157
|
+
assert_difference(["Run.count", "RunPort::Input.count"]) do
|
158
|
+
parent = taverna_player_runs(:three)
|
159
|
+
run = Run.create(:parent_id => parent.id)
|
160
|
+
assert run.valid?, "Run is invalid"
|
161
|
+
refute run.new_record?, "Run was not saved"
|
162
|
+
assert run.has_parent?, "Run should have a parent"
|
163
|
+
assert_equal 1, run.inputs.count, "Run should have 1 input"
|
164
|
+
refute_same parent.inputs.first, run.inputs.first, "Input was linked, not copied"
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
test "new run from another run" do
|
169
|
+
assert_difference(["Run.count", "RunPort::Input.count"]) do
|
170
|
+
parent = taverna_player_runs(:three)
|
171
|
+
run = Run.new(:parent_id => parent.id)
|
172
|
+
assert run.save, "Run was not saved"
|
173
|
+
assert run.has_parent?, "Run should have a parent"
|
174
|
+
assert_equal 1, run.inputs.count, "Run should have 1 input"
|
175
|
+
refute_same parent.inputs.first, run.inputs.first, "Input was linked, not copied"
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
test "killing parent should orphan child" do
|
180
|
+
parent = taverna_player_runs(:three)
|
181
|
+
run = Run.create(:parent_id => parent.id)
|
182
|
+
assert run.valid?, "Child run is invalid"
|
183
|
+
assert_not_nil run.parent_id, "Child run has no parent"
|
184
|
+
|
185
|
+
parent.state = :finished # Fake it.
|
186
|
+
parent.save
|
187
|
+
assert_difference(["Run.count", "RunPort::Input.count"], -1) do
|
188
|
+
parent.destroy
|
189
|
+
end
|
190
|
+
|
191
|
+
# Reload child state
|
192
|
+
run.reload
|
193
|
+
assert_nil run.parent_id, "Child run still has a parent"
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
# Copyright (c) 2013 The University of Manchester, UK.
|
3
|
+
#
|
4
|
+
# BSD Licenced. See LICENCE.rdoc for details.
|
5
|
+
#
|
6
|
+
# Taverna Player was developed in the BioVeL project, funded by the European
|
7
|
+
# Commission 7th Framework Programme (FP7), through grant agreement
|
8
|
+
# number 283359.
|
9
|
+
#
|
10
|
+
# Author: Robert Haines
|
11
|
+
#------------------------------------------------------------------------------
|
12
|
+
|
13
|
+
require 'test_helper'
|
14
|
+
|
15
|
+
module TavernaPlayer
|
16
|
+
class ServiceCredentialTest < ActiveSupport::TestCase
|
17
|
+
test "should not save credential without a uri" do
|
18
|
+
cred = ServiceCredential.new
|
19
|
+
cred.login = "test"
|
20
|
+
cred.password = "test"
|
21
|
+
cred.password_confirmation = "test"
|
22
|
+
|
23
|
+
refute cred.save, "Saved the credential without a URI"
|
24
|
+
end
|
25
|
+
|
26
|
+
test "should not save credential without a login" do
|
27
|
+
cred = ServiceCredential.new
|
28
|
+
cred.uri = "test"
|
29
|
+
cred.password = "test"
|
30
|
+
cred.password_confirmation = "test"
|
31
|
+
|
32
|
+
refute cred.save, "Saved the credential without a login"
|
33
|
+
end
|
34
|
+
|
35
|
+
test "should not save credential without a password" do
|
36
|
+
cred = ServiceCredential.new
|
37
|
+
cred.uri = "test"
|
38
|
+
cred.login = "test"
|
39
|
+
cred.password_confirmation = "test"
|
40
|
+
|
41
|
+
refute cred.save, "Saved the credential without a password"
|
42
|
+
end
|
43
|
+
|
44
|
+
test "should not save credential without a password confirmation" do
|
45
|
+
cred = ServiceCredential.new
|
46
|
+
cred.uri = "test"
|
47
|
+
cred.login = "test"
|
48
|
+
cred.password = "test"
|
49
|
+
|
50
|
+
refute cred.save, "Saved the credential without a password confirmation"
|
51
|
+
end
|
52
|
+
|
53
|
+
test "should not save credential without a confirmed password" do
|
54
|
+
cred = ServiceCredential.new
|
55
|
+
cred.uri = "test"
|
56
|
+
cred.login = "test"
|
57
|
+
cred.password = "test"
|
58
|
+
cred.password_confirmation = "TEST"
|
59
|
+
|
60
|
+
refute cred.save, "Saved the credential without a confirmed password"
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,164 @@
|
|
1
|
+
<workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.3.0"><dataflow id="a9108c6d-85ad-4fc3-9f53-6ef747c2f8ab" role="top"><name>Hello__World_</name><inputPorts /><outputPorts><port><name>Message</name><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.FreeTextDescription">
|
5
|
+
<text>A friendly message.</text>
|
6
|
+
</annotationBean>
|
7
|
+
<date>2012-03-14 15:13:31.514 GMT</date>
|
8
|
+
<creators />
|
9
|
+
<curationEventList />
|
10
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
11
|
+
</annotationAssertions>
|
12
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain></annotations></port></outputPorts><processors><processor><name>Hello</name><inputPorts /><outputPorts><port><name>value</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations><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>A hard-coded value to output as the message.</text>
|
17
|
+
</annotationBean>
|
18
|
+
<date>2012-03-14 17:14:31.154 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><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>stringconstant-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class><inputMap /><outputMap><map from="value" to="value" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
|
24
|
+
<value>Hello, World!</value>
|
25
|
+
</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
|
26
|
+
<maxJobs>1</maxJobs>
|
27
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
|
28
|
+
<backoffFactor>1.0</backoffFactor>
|
29
|
+
<initialDelay>1000</initialDelay>
|
30
|
+
<maxDelay>5000</maxDelay>
|
31
|
+
<maxRetries>0</maxRetries>
|
32
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy /></iteration></iterationStrategyStack></processor></processors><conditions /><datalinks><datalink><sink type="dataflow"><port>Message</port></sink><source type="processor"><processor>Hello</processor><port>value</port></source></datalink></datalinks><annotations><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
33
|
+
<annotationAssertions>
|
34
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
35
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.FreeTextDescription">
|
36
|
+
<text>A simple workflow that just says "Hello, World!"</text>
|
37
|
+
</annotationBean>
|
38
|
+
<date>2012-02-29 16:37:51.43 GMT</date>
|
39
|
+
<creators />
|
40
|
+
<curationEventList />
|
41
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
42
|
+
</annotationAssertions>
|
43
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
44
|
+
<annotationAssertions>
|
45
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
46
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
47
|
+
<identification>1f0f1c4f-2aff-4918-8659-d0e6dfa6f0d3</identification>
|
48
|
+
</annotationBean>
|
49
|
+
<date>2012-03-14 13:53:52.624 GMT</date>
|
50
|
+
<creators />
|
51
|
+
<curationEventList />
|
52
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
53
|
+
</annotationAssertions>
|
54
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
55
|
+
<annotationAssertions>
|
56
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
57
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
58
|
+
<identification>b9556b39-8656-4a17-bf5c-37de30fe7df3</identification>
|
59
|
+
</annotationBean>
|
60
|
+
<date>2010-07-09 15:01:39.283 BST</date>
|
61
|
+
<creators />
|
62
|
+
<curationEventList />
|
63
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
64
|
+
</annotationAssertions>
|
65
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
66
|
+
<annotationAssertions>
|
67
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
68
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
69
|
+
<identification>7b430693-1b07-4fb3-a779-0718ac2d2fd5</identification>
|
70
|
+
</annotationBean>
|
71
|
+
<date>2012-02-29 16:44:22.750 GMT</date>
|
72
|
+
<creators />
|
73
|
+
<curationEventList />
|
74
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
75
|
+
</annotationAssertions>
|
76
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
77
|
+
<annotationAssertions>
|
78
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
79
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.Author">
|
80
|
+
<text>Robert Haines</text>
|
81
|
+
</annotationBean>
|
82
|
+
<date>2012-02-29 16:45:13.479 GMT</date>
|
83
|
+
<creators />
|
84
|
+
<curationEventList />
|
85
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
86
|
+
</annotationAssertions>
|
87
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
88
|
+
<annotationAssertions>
|
89
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
90
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
91
|
+
<identification>8e8d3bab-3125-423d-a6de-4e0e510b00cd</identification>
|
92
|
+
</annotationBean>
|
93
|
+
<date>2012-02-29 16:45:16.175 GMT</date>
|
94
|
+
<creators />
|
95
|
+
<curationEventList />
|
96
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
97
|
+
</annotationAssertions>
|
98
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
99
|
+
<annotationAssertions>
|
100
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
101
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.DescriptiveTitle">
|
102
|
+
<text>Hello, World!</text>
|
103
|
+
</annotationBean>
|
104
|
+
<date>2012-02-29 16:37:10.698 GMT</date>
|
105
|
+
<creators />
|
106
|
+
<curationEventList />
|
107
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
108
|
+
</annotationAssertions>
|
109
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
110
|
+
<annotationAssertions>
|
111
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
112
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
113
|
+
<identification>a9108c6d-85ad-4fc3-9f53-6ef747c2f8ab</identification>
|
114
|
+
</annotationBean>
|
115
|
+
<date>2012-03-14 17:14:37.989 GMT</date>
|
116
|
+
<creators />
|
117
|
+
<curationEventList />
|
118
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
119
|
+
</annotationAssertions>
|
120
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
121
|
+
<annotationAssertions>
|
122
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
123
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
124
|
+
<identification>0d4d84d5-23d7-437c-baf7-167fbb1ddfb1</identification>
|
125
|
+
</annotationBean>
|
126
|
+
<date>2012-03-14 14:03:09.577 GMT</date>
|
127
|
+
<creators />
|
128
|
+
<curationEventList />
|
129
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
130
|
+
</annotationAssertions>
|
131
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
132
|
+
<annotationAssertions>
|
133
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
134
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
135
|
+
<identification>3fb92eb6-fb45-41e0-9103-37a93b9e82a6</identification>
|
136
|
+
</annotationBean>
|
137
|
+
<date>2012-03-14 15:14:13.900 GMT</date>
|
138
|
+
<creators />
|
139
|
+
<curationEventList />
|
140
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
141
|
+
</annotationAssertions>
|
142
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
143
|
+
<annotationAssertions>
|
144
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
145
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
146
|
+
<identification>db4d63ef-b02e-426d-b5ef-3d62a33aac51</identification>
|
147
|
+
</annotationBean>
|
148
|
+
<date>2012-02-29 16:38:47.341 GMT</date>
|
149
|
+
<creators />
|
150
|
+
<curationEventList />
|
151
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
152
|
+
</annotationAssertions>
|
153
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
154
|
+
<annotationAssertions>
|
155
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
156
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
157
|
+
<identification>a2234413-7ae7-4380-8881-b79eb13a3c2a</identification>
|
158
|
+
</annotationBean>
|
159
|
+
<date>2012-03-14 15:13:36.473 GMT</date>
|
160
|
+
<creators />
|
161
|
+
<curationEventList />
|
162
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
163
|
+
</annotationAssertions>
|
164
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2></annotations></dataflow></workflow>
|
@@ -0,0 +1,107 @@
|
|
1
|
+
<workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.3.0"><dataflow id="dd8e0c1c-588f-4a11-a2c7-f0415625cd93" role="top"><name>Workflow11</name><inputPorts /><outputPorts><port><name>OUT</name><annotations /></port></outputPorts><processors><processor><name>Sometimes_Fails</name><inputPorts><port><name>in</name><depth>0</depth></port></inputPorts><outputPorts><port><name>out</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="in" to="in" /></inputMap><outputMap><map from="out" to="out" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
|
2
|
+
<inputs>
|
3
|
+
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
|
4
|
+
<name>in</name>
|
5
|
+
<depth>0</depth>
|
6
|
+
<mimeTypes>
|
7
|
+
<string>'text/plain'</string>
|
8
|
+
</mimeTypes>
|
9
|
+
<handledReferenceSchemes />
|
10
|
+
<translatedElementType>java.lang.String</translatedElementType>
|
11
|
+
<allowsLiteralValues>true</allowsLiteralValues>
|
12
|
+
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
|
13
|
+
</inputs>
|
14
|
+
<outputs>
|
15
|
+
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
|
16
|
+
<name>out</name>
|
17
|
+
<depth>0</depth>
|
18
|
+
<mimeTypes>
|
19
|
+
<string>'text/plain'</string>
|
20
|
+
</mimeTypes>
|
21
|
+
<granularDepth>0</granularDepth>
|
22
|
+
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
|
23
|
+
</outputs>
|
24
|
+
<classLoaderSharing>workflow</classLoaderSharing>
|
25
|
+
<localDependencies />
|
26
|
+
<artifactDependencies />
|
27
|
+
<script>import java.util.Random;
|
28
|
+
|
29
|
+
Random r = new Random();
|
30
|
+
|
31
|
+
if ((r.nextInt() % 4) == 0) {
|
32
|
+
throw new RuntimeException("Fails every four runs!");
|
33
|
+
}
|
34
|
+
|
35
|
+
out = in;</script>
|
36
|
+
<dependencies />
|
37
|
+
<localworkerName>org.embl.ebi.escience.scuflworkers.java.TestSometimesFails</localworkerName>
|
38
|
+
</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
|
39
|
+
<maxJobs>1</maxJobs>
|
40
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
|
41
|
+
<backoffFactor>1.0</backoffFactor>
|
42
|
+
<initialDelay>1000</initialDelay>
|
43
|
+
<maxDelay>5000</maxDelay>
|
44
|
+
<maxRetries>0</maxRetries>
|
45
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="in" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>Create_Lots_Of_Strings</name><inputPorts /><outputPorts><port><name>strings</name><depth>1</depth><granularDepth>1</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap><map from="strings" to="strings" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
|
46
|
+
<inputs />
|
47
|
+
<outputs>
|
48
|
+
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
|
49
|
+
<name>strings</name>
|
50
|
+
<depth>1</depth>
|
51
|
+
<mimeTypes>
|
52
|
+
<string>l('text/plain')</string>
|
53
|
+
</mimeTypes>
|
54
|
+
<granularDepth>1</granularDepth>
|
55
|
+
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
|
56
|
+
</outputs>
|
57
|
+
<classLoaderSharing>workflow</classLoaderSharing>
|
58
|
+
<localDependencies />
|
59
|
+
<artifactDependencies />
|
60
|
+
<script>List strings = new ArrayList();
|
61
|
+
for (int i = 0; i < 40; i++) {
|
62
|
+
strings.add("String" + i);
|
63
|
+
}
|
64
|
+
</script>
|
65
|
+
<dependencies />
|
66
|
+
<localworkerName>org.embl.ebi.escience.scuflworkers.java.EmitLotsOfStrings</localworkerName>
|
67
|
+
</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
|
68
|
+
<maxJobs>1</maxJobs>
|
69
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
|
70
|
+
<backoffFactor>1.0</backoffFactor>
|
71
|
+
<initialDelay>1000</initialDelay>
|
72
|
+
<maxDelay>5000</maxDelay>
|
73
|
+
<maxRetries>0</maxRetries>
|
74
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.3</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy /></iteration></iterationStrategyStack></processor></processors><conditions /><datalinks><datalink><sink type="processor"><processor>Sometimes_Fails</processor><port>in</port></sink><source type="processor"><processor>Create_Lots_Of_Strings</processor><port>strings</port></source></datalink><datalink><sink type="dataflow"><port>OUT</port></sink><source type="processor"><processor>Sometimes_Fails</processor><port>out</port></source></datalink></datalinks><annotations><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
75
|
+
<annotationAssertions>
|
76
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
77
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
78
|
+
<identification>dd8e0c1c-588f-4a11-a2c7-f0415625cd93</identification>
|
79
|
+
</annotationBean>
|
80
|
+
<date>2011-08-11 17:56:40.226 BST</date>
|
81
|
+
<creators />
|
82
|
+
<curationEventList />
|
83
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
84
|
+
</annotationAssertions>
|
85
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
86
|
+
<annotationAssertions>
|
87
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
88
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
89
|
+
<identification>22d97b56-800c-4a76-b3ec-c9e26298cda6</identification>
|
90
|
+
</annotationBean>
|
91
|
+
<date>2011-08-01 14:43:36.713 BST</date>
|
92
|
+
<creators />
|
93
|
+
<curationEventList />
|
94
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
95
|
+
</annotationAssertions>
|
96
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2><annotation_chain_2_2 encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
97
|
+
<annotationAssertions>
|
98
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
99
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion">
|
100
|
+
<identification>e365424c-f8a1-4ddf-9d00-b7a5e4733c10</identification>
|
101
|
+
</annotationBean>
|
102
|
+
<date>2011-08-01 14:43:11.545 BST</date>
|
103
|
+
<creators />
|
104
|
+
<curationEventList />
|
105
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
106
|
+
</annotationAssertions>
|
107
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain_2_2></annotations></dataflow></workflow>
|