taverna-player 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.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,56 @@
|
|
|
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
|
+
# These methods are the default renderer callbacks that Taverna Player uses.
|
|
14
|
+
# If you customize (or add to) the methods in this file you must register them
|
|
15
|
+
# in the Taverna Player initializer. These methods will not override the
|
|
16
|
+
# defaults automatically.
|
|
17
|
+
#
|
|
18
|
+
# Each method MUST accept two parameters:
|
|
19
|
+
# * The first (content) is what will be rendered. In the case of a text/*
|
|
20
|
+
# type output this will be the actual text. In the case of anything else
|
|
21
|
+
# this will be a path to the object to be linked to.
|
|
22
|
+
# * The second (type) is the MIME type of the output as a string. This allows
|
|
23
|
+
# a single method to handle multiple types or sub-types if needed.
|
|
24
|
+
#
|
|
25
|
+
# Note that you can use most of the ActiveView Helpers here as global methods
|
|
26
|
+
# but the image_tag() method does not work as explained below.
|
|
27
|
+
|
|
28
|
+
def format_text(content, type)
|
|
29
|
+
# Use CodeRay to format text so that newlines are respected.
|
|
30
|
+
content = CodeRay.scan(content, :text).div(:css => :class)
|
|
31
|
+
|
|
32
|
+
# Use auto_link to turn URI-like text into links.
|
|
33
|
+
auto_link(content, :html => { :target => '_blank' }, :sanitize => false)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def format_xml(content, type)
|
|
37
|
+
# Make sure XML is indented consistently.
|
|
38
|
+
out = String.new
|
|
39
|
+
REXML::Document.new(content).write(out, 1)
|
|
40
|
+
CodeRay.scan(out, :xml).div(:css => :class, :line_numbers => :table)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def show_image(content, type)
|
|
44
|
+
# Can't use image_tag() here because the image doesn't really exist (it's in
|
|
45
|
+
# a zip file, really) and this confuses the Rails asset pipeline.
|
|
46
|
+
tag("img", :src => content)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def workflow_error(content, type)
|
|
50
|
+
link_to("This output is a workflow error.", content)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def cannot_inline(content, type)
|
|
54
|
+
"Sorry but we cannot show this type of content in the browser. Please " +
|
|
55
|
+
link_to("download it", content) + " to view it on your local machine."
|
|
56
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
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
|
+
def player_pre_run_callback(run)
|
|
14
|
+
w = Workflow.find(run.workflow_id)
|
|
15
|
+
puts "Pre-run callback called for run '#{run.name}' of workflow '#{w.id}'"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def player_post_run_callback(run)
|
|
19
|
+
w = Workflow.find(run.workflow_id)
|
|
20
|
+
puts "Post-run callback called for run '#{run.name}' of workflow '#{w.id}'"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def player_run_cancelled_callback(run)
|
|
24
|
+
w = Workflow.find(run.workflow_id)
|
|
25
|
+
puts "Run-cancelled callback called for run '#{run.name}' of workflow '#{w.id}'"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def player_run_failed_callback(run)
|
|
29
|
+
w = Workflow.find(run.workflow_id)
|
|
30
|
+
puts "Run-failed callback called for run '#{run.name}' of workflow '#{w.id}'"
|
|
31
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
+
module TavernaPlayer
|
|
14
|
+
class RunsController < TavernaPlayer::ApplicationController
|
|
15
|
+
# Do not remove the next line.
|
|
16
|
+
include TavernaPlayer::Concerns::Controllers::RunsController
|
|
17
|
+
|
|
18
|
+
# Extend the RunsController here.
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
+
module TavernaPlayer
|
|
14
|
+
class ServiceCredentialsController < TavernaPlayer::ApplicationController
|
|
15
|
+
# Do not remove the next line.
|
|
16
|
+
include TavernaPlayer::Concerns::Controllers::ServiceCredentialsController
|
|
17
|
+
|
|
18
|
+
# Extend the ServiceCredentialsController here.
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# Taverna Player configuration
|
|
2
|
+
|
|
3
|
+
TavernaPlayer.setup do |config|
|
|
4
|
+
|
|
5
|
+
# This should be set to the name of the workflow model class in the main
|
|
6
|
+
# application and the listed methods should also be mapped if necessary.
|
|
7
|
+
config.workflow_model_proxy("Workflow")
|
|
8
|
+
#config.workflow_model_proxy("Workflow") do |proxy|
|
|
9
|
+
# This is the method that returns the name of the workflow file. Your
|
|
10
|
+
# model MUST provide this otherwise a workflow cannot be run.
|
|
11
|
+
#proxy.file_method_name = :file
|
|
12
|
+
|
|
13
|
+
# This is the method that returns the title of the workflow. This can be
|
|
14
|
+
# left unset if your model does not have this field but if you want to
|
|
15
|
+
# set a run name at the time of run creation then you will need to
|
|
16
|
+
# provide one or override the new run view.
|
|
17
|
+
#proxy.title_method_name = :title
|
|
18
|
+
|
|
19
|
+
# This is a method that returns a list of descriptions of the workflow
|
|
20
|
+
# inputs. Each description should be of the form:
|
|
21
|
+
# {
|
|
22
|
+
# :name => "<input_name>",
|
|
23
|
+
# :description => "<input_description>",
|
|
24
|
+
# :example => "<input_example_value>"
|
|
25
|
+
# }
|
|
26
|
+
#
|
|
27
|
+
# If you don't provide this method you will have to override the new run
|
|
28
|
+
# view to create and initialize the inputs to a workflow.
|
|
29
|
+
#proxy.inputs_method_name = :inputs
|
|
30
|
+
#end
|
|
31
|
+
|
|
32
|
+
# This should be set to the name of the user model class in the main
|
|
33
|
+
# application if you have one. This defaults to nil and should be left as
|
|
34
|
+
# such if your main application does not have users.
|
|
35
|
+
#config.user_model_proxy = "User"
|
|
36
|
+
|
|
37
|
+
# This should be set to the name of the method used to get the current user
|
|
38
|
+
# in the main app. For Devise this would be :current_user. Defaults to nil.
|
|
39
|
+
#config.current_user_callback = nil
|
|
40
|
+
|
|
41
|
+
# Taverna Server configuration information. The poll interval is in seconds
|
|
42
|
+
# and sets how often the server will be polled for updates by each worker.
|
|
43
|
+
# The retry interval is also in seconds and sets how long a worker will wait
|
|
44
|
+
# before trying to start a run if the server is initially busy.
|
|
45
|
+
config.server_address = "http://localhost:8080/taverna"
|
|
46
|
+
config.server_username = "taverna"
|
|
47
|
+
config.server_password = "taverna"
|
|
48
|
+
config.server_poll_interval = 5
|
|
49
|
+
config.server_retry_interval = 10
|
|
50
|
+
|
|
51
|
+
# Taverna Server connection configuration.
|
|
52
|
+
#config.server_connection[:verify_peer] = true
|
|
53
|
+
#config.server_connection[:ca_file] = "/etc/certs/my-cert.crt"
|
|
54
|
+
#config.server_connection[:ca_path] = "/etc/certs/"
|
|
55
|
+
#config.server_connection[:client_certificate] = "client-cert.crt"
|
|
56
|
+
#config.server_connection[:client_password] = "P@5$w0Rd!"
|
|
57
|
+
#config.server_connection[:ssl_version] = :TLSv1
|
|
58
|
+
#config.server_connection[:open_timeout] = 10
|
|
59
|
+
#config.server_connection[:read_timeout] = 10
|
|
60
|
+
|
|
61
|
+
# Where to store files created by workflow runs. Should be fully qualified
|
|
62
|
+
# or use :rails_root for the root directory of your application.
|
|
63
|
+
#config.file_store = ":rails_root/public/system"
|
|
64
|
+
|
|
65
|
+
# Callbacks to be run at various points during a workflow run. These can be
|
|
66
|
+
# defined as Proc objects or as methods and referenced by name.
|
|
67
|
+
#
|
|
68
|
+
# Be careful! If a callback fails then the worker running the job will fail!
|
|
69
|
+
#
|
|
70
|
+
# Add callbacks in this initializer or define them elsewhere and require the
|
|
71
|
+
# file as usual (if they are not pulled in by some other code). You can
|
|
72
|
+
# create example stub callbacks using:
|
|
73
|
+
# "rails generate taverna_player:callbacks"
|
|
74
|
+
# which will put them in "lib/taverna_player_callbacks.rb".
|
|
75
|
+
#require "taverna_player_callbacks"
|
|
76
|
+
|
|
77
|
+
# The pre-run callback is called before the run has started (before Taverna
|
|
78
|
+
# Server is contacted, in fact).
|
|
79
|
+
# It takes the run model object as its parameter.
|
|
80
|
+
#config.pre_run_callback = Proc.new { |run| puts "Starting: #{run.name}" }
|
|
81
|
+
#config.pre_run_callback = "player_pre_run_callback"
|
|
82
|
+
#config.pre_run_callback = :player_pre_run_callback
|
|
83
|
+
|
|
84
|
+
# The post-run callback is called after the run has completed normally.
|
|
85
|
+
# It takes the run model object as its parameter.
|
|
86
|
+
#config.post_run_callback = Proc.new { |run| puts "Finished: #{run.name}" }
|
|
87
|
+
#config.post_run_callback = "player_post_run_callback"
|
|
88
|
+
#config.post_run_callback = :player_post_run_callback
|
|
89
|
+
|
|
90
|
+
# The run-cancelled callback is called if the run is cancelled by the user.
|
|
91
|
+
# It takes the run model object as its parameter.
|
|
92
|
+
#config.run_cancelled_callback = Proc.new { |run| puts "Cancelled: #{run.name}" }
|
|
93
|
+
#config.run_cancelled_callback = "player_run_cancelled_callback"
|
|
94
|
+
#config.run_cancelled_callback = :player_run_cancelled_callback
|
|
95
|
+
|
|
96
|
+
# The run-failed callback is called if the run fails for any reason.
|
|
97
|
+
# It takes the run model object as its parameter.
|
|
98
|
+
#config.run_failed_callback = Proc.new { |run| puts "Failed: #{run.name}" }
|
|
99
|
+
#config.run_failed_callback = "player_run_failed_callback"
|
|
100
|
+
#config.run_failed_callback = :player_run_failed_callback
|
|
101
|
+
|
|
102
|
+
# Callbacks to be run to render various types of workflow output. These can
|
|
103
|
+
# be defined as Proc objects or as methods and referenced by name.
|
|
104
|
+
#
|
|
105
|
+
# Be careful! If a callback fails then users will see an Internal Server
|
|
106
|
+
# Error (HTTP status code 500) instead of their run outputs!
|
|
107
|
+
#
|
|
108
|
+
# Add callbacks in this initializer or define them elsewhere and require the
|
|
109
|
+
# file as usual (if they are not pulled in by some other code). You can
|
|
110
|
+
# create example stub callbacks using:
|
|
111
|
+
# "rails generate taverna_player:renderers"
|
|
112
|
+
# which will put them in "lib/taverna_player_renderers.rb".
|
|
113
|
+
#require "taverna_player_renderers"
|
|
114
|
+
|
|
115
|
+
# Renderers for each type of output (referenced by MIME type) must then be
|
|
116
|
+
# registered. All the renderers shown below are supplied as defaults.
|
|
117
|
+
#config.output_renderers do |renderers|
|
|
118
|
+
# Set a default renderer for if there is a workflow type that browsers
|
|
119
|
+
# can't otherwise handle.
|
|
120
|
+
#renderers.default(:cannot_inline)
|
|
121
|
+
|
|
122
|
+
# You can set a renderer to also be a default for the whole media-type. In
|
|
123
|
+
# this case the below renderer is to be used for ALL text/* types that
|
|
124
|
+
# aren't otherwise registered.
|
|
125
|
+
#renderers.add("text/plain", :format_text, true)
|
|
126
|
+
|
|
127
|
+
# This renderer overrides the default text/* renderer for text/xml outputs.
|
|
128
|
+
#renderers.add("text/xml", :format_xml)
|
|
129
|
+
|
|
130
|
+
# Browsers can't show all image types so just register very common ones.
|
|
131
|
+
#renderers.add("image/jpeg", :show_image)
|
|
132
|
+
#renderers.add("image/png", :show_image)
|
|
133
|
+
#renderers.add("image/gif", :show_image)
|
|
134
|
+
#renderers.add("image/bmp", :show_image)
|
|
135
|
+
|
|
136
|
+
# This is the workflow error type and you should have a special renderer
|
|
137
|
+
# for it.
|
|
138
|
+
#renderers.add("application/x-error", :workflow_error)
|
|
139
|
+
#end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
# Example workflow run callbacks defined in the initializer.
|
|
143
|
+
|
|
144
|
+
#def player_pre_run_callback(run)
|
|
145
|
+
# puts "Starting: #{run.name}"
|
|
146
|
+
#end
|
|
147
|
+
|
|
148
|
+
#def player_post_run_callback(run)
|
|
149
|
+
# puts "Finished: #{run.name}"
|
|
150
|
+
#end
|
|
151
|
+
|
|
152
|
+
#def player_run_cancelled_callback(run)
|
|
153
|
+
# puts "Cancelled: #{run.name}"
|
|
154
|
+
#end
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
+
module TavernaPlayer
|
|
14
|
+
class Run < ActiveRecord::Base
|
|
15
|
+
# Do not remove the next line.
|
|
16
|
+
include TavernaPlayer::Concerns::Models::Run
|
|
17
|
+
|
|
18
|
+
# Extend the Run model here.
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
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
|
+
namespace :taverna_player do
|
|
14
|
+
desc "Delete all cancelled workflow runs."
|
|
15
|
+
task :delete_cancelled_runs => :environment do
|
|
16
|
+
|
|
17
|
+
gone = 0
|
|
18
|
+
TavernaPlayer::Run.all.each do |run|
|
|
19
|
+
if run.cancelled?
|
|
20
|
+
gone += 1 #if run.destroy
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
puts "#{gone} cancelled runs were deleted."
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
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
|
+
namespace :taverna_player do
|
|
14
|
+
desc "Delete all completed embedded workflow runs."
|
|
15
|
+
task :delete_completed_embedded_runs => :environment do
|
|
16
|
+
|
|
17
|
+
gone = 0
|
|
18
|
+
TavernaPlayer::Run.find_all_by_embedded(true).each do |run|
|
|
19
|
+
if run.complete?
|
|
20
|
+
gone += 1 if run.destroy
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
puts "#{gone} complete embedded runs were deleted."
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,139 @@
|
|
|
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 "require_all"
|
|
14
|
+
require "coderay"
|
|
15
|
+
require "delayed_job_active_record"
|
|
16
|
+
require "jbuilder"
|
|
17
|
+
require 'mime/types'
|
|
18
|
+
require "paperclip"
|
|
19
|
+
require "pmrpc-rails"
|
|
20
|
+
require "rails_autolink"
|
|
21
|
+
require "t2-server"
|
|
22
|
+
require "taverna-t2flow"
|
|
23
|
+
require "tmpdir"
|
|
24
|
+
require "zip/zip"
|
|
25
|
+
|
|
26
|
+
# Grab everything in the taverna_player directory using the require_all gem.
|
|
27
|
+
require_rel "taverna_player"
|
|
28
|
+
|
|
29
|
+
# This module serves as the configuration point of Taverna Player. Examples of
|
|
30
|
+
# all configuration options can be found in the taverna_player initializer.
|
|
31
|
+
module TavernaPlayer
|
|
32
|
+
# Configuration without defaults
|
|
33
|
+
mattr_accessor :server_address, :server_password, :server_username
|
|
34
|
+
|
|
35
|
+
# This should be set to the name of the workflow model class in the main
|
|
36
|
+
# application via the workflow_model_proxy method below.
|
|
37
|
+
mattr_reader :workflow_proxy
|
|
38
|
+
|
|
39
|
+
# :call-seq:
|
|
40
|
+
# workflow_model_proxy(workflow_class) {|proxy| ...}
|
|
41
|
+
#
|
|
42
|
+
# Set up a proxy to the main application's workflow model. The class name
|
|
43
|
+
# should be supplied as a string, e.g. "Workflow".
|
|
44
|
+
#
|
|
45
|
+
# See the taverna_player initializer for more information.
|
|
46
|
+
def self.workflow_model_proxy(workflow_class)
|
|
47
|
+
@@workflow_proxy = ModelProxy.new(workflow_class, [:file, :title, :inputs])
|
|
48
|
+
yield @@workflow_proxy if block_given?
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# This should be set to the name of the user model class in the main
|
|
52
|
+
# application via the user_model_proxy method below. Defaults to nil.
|
|
53
|
+
mattr_reader :user_proxy
|
|
54
|
+
@@user_proxy = nil
|
|
55
|
+
|
|
56
|
+
# :call-seq:
|
|
57
|
+
# user_model_proxy = user_class
|
|
58
|
+
#
|
|
59
|
+
# Set up a proxy to the main application's user model if it has one. The
|
|
60
|
+
# class name should be supplied as a string, e.g. "User".
|
|
61
|
+
#
|
|
62
|
+
# See the taverna_player initializer for more information.
|
|
63
|
+
def self.user_model_proxy=(user_class)
|
|
64
|
+
@@user_proxy = ModelProxy.new(user_class)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# This should be set to the name of the method used to get the current user
|
|
68
|
+
# in the main app. For Devise this would be :current_user. Defaults to nil.
|
|
69
|
+
mattr_accessor :current_user_callback
|
|
70
|
+
@@current_user_callback = nil
|
|
71
|
+
|
|
72
|
+
# Setup default output render callbacks.
|
|
73
|
+
mattr_reader :output_renderer
|
|
74
|
+
@@output_renderer = OutputRenderer.new
|
|
75
|
+
@@output_renderer.default(:cannot_inline_tp_default)
|
|
76
|
+
@@output_renderer.add("text/plain", :format_text_tp_default, true)
|
|
77
|
+
@@output_renderer.add("text/xml", :format_xml_tp_default)
|
|
78
|
+
@@output_renderer.add("image/jpeg", :show_image_tp_default)
|
|
79
|
+
@@output_renderer.add("image/png", :show_image_tp_default)
|
|
80
|
+
@@output_renderer.add("image/gif", :show_image_tp_default)
|
|
81
|
+
@@output_renderer.add("image/bmp", :show_image_tp_default)
|
|
82
|
+
@@output_renderer.add("application/x-error", :workflow_error_tp_default)
|
|
83
|
+
@@output_renderer.add("application/x-empty", :empty_tp_default)
|
|
84
|
+
@@output_renderer.add("inode/x-empty", :empty_tp_default)
|
|
85
|
+
|
|
86
|
+
# :call-seq:
|
|
87
|
+
# output_renderers {|renderer| ...}
|
|
88
|
+
#
|
|
89
|
+
# Set up the renderers for each MIME type that you want to be able to show
|
|
90
|
+
# in the browser. In most cases the supplied defaults will be sufficient.
|
|
91
|
+
#
|
|
92
|
+
# See the taverna_player initializer for more information.
|
|
93
|
+
def self.output_renderers
|
|
94
|
+
yield @@output_renderer if block_given?
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# Path to place where files should be stored.
|
|
98
|
+
mattr_accessor :file_store
|
|
99
|
+
@@file_store = ":rails_root/public/system"
|
|
100
|
+
|
|
101
|
+
# Taverna server polling interval (in seconds)
|
|
102
|
+
mattr_accessor :server_poll_interval
|
|
103
|
+
@@server_poll_interval = 5
|
|
104
|
+
|
|
105
|
+
# Taverna server retry interval (in seconds)
|
|
106
|
+
mattr_accessor :server_retry_interval
|
|
107
|
+
@@server_retry_interval = 10
|
|
108
|
+
|
|
109
|
+
# Taverna Server connection parameters
|
|
110
|
+
mattr_accessor :server_connection
|
|
111
|
+
@@server_connection = T2Server::DefaultConnectionParameters.new
|
|
112
|
+
|
|
113
|
+
# Pre run callback
|
|
114
|
+
mattr_accessor :pre_run_callback
|
|
115
|
+
@@pre_run_callback = nil
|
|
116
|
+
|
|
117
|
+
# Post run callback
|
|
118
|
+
mattr_accessor :post_run_callback
|
|
119
|
+
@@post_run_callback = nil
|
|
120
|
+
|
|
121
|
+
# Run cancelled callback
|
|
122
|
+
mattr_accessor :run_cancelled_callback
|
|
123
|
+
@@run_cancelled_callback = nil
|
|
124
|
+
|
|
125
|
+
# Run failed callback
|
|
126
|
+
mattr_accessor :run_failed_callback
|
|
127
|
+
@@run_failed_callback = nil
|
|
128
|
+
|
|
129
|
+
# :call-seq:
|
|
130
|
+
# setup {|config| ...}
|
|
131
|
+
#
|
|
132
|
+
# Yield this configuration class so that Taverna Player can be set up.
|
|
133
|
+
#
|
|
134
|
+
# See the taverna_player initializer for more information.
|
|
135
|
+
def self.setup
|
|
136
|
+
yield self
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
end
|