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,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
|