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,25 @@
|
|
|
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 Interaction < ActiveRecord::Base
|
|
15
|
+
attr_accessible :displayed, :feed_reply, :page, :replied, :unique_id
|
|
16
|
+
|
|
17
|
+
belongs_to :run, :class_name => "TavernaPlayer::Run"
|
|
18
|
+
|
|
19
|
+
validates_presence_of :unique_id
|
|
20
|
+
validates_uniqueness_of :unique_id
|
|
21
|
+
validates_presence_of :serial
|
|
22
|
+
validates_uniqueness_of :serial, :scope => :run_id,
|
|
23
|
+
:message => "Interaction serial number should be unique for a run"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,117 @@
|
|
|
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
|
+
|
|
15
|
+
# This class represents a workflow run. It may be yet to run, running or
|
|
16
|
+
# finished. All inputs and outputs can be accessed via this class.
|
|
17
|
+
class Run < ActiveRecord::Base
|
|
18
|
+
include TavernaPlayer::Concerns::Models::Run
|
|
19
|
+
|
|
20
|
+
##
|
|
21
|
+
# :method: create_time
|
|
22
|
+
# :call-seq:
|
|
23
|
+
# create_time -> datetime
|
|
24
|
+
#
|
|
25
|
+
# The time this run was created on the Taverna Server.
|
|
26
|
+
|
|
27
|
+
##
|
|
28
|
+
# :method: cancelled?
|
|
29
|
+
# :call-seq:
|
|
30
|
+
# cancelled? -> boolean
|
|
31
|
+
#
|
|
32
|
+
# Has this run been cancelled?
|
|
33
|
+
|
|
34
|
+
##
|
|
35
|
+
# :method: complete?
|
|
36
|
+
# :call-seq:
|
|
37
|
+
# complete? -> boolean
|
|
38
|
+
#
|
|
39
|
+
# Is this run complete? If a run is finished or cancelled or failed then
|
|
40
|
+
# it is complete.
|
|
41
|
+
|
|
42
|
+
##
|
|
43
|
+
# :method: embedded?
|
|
44
|
+
# :call-seq:
|
|
45
|
+
# embedded? -> boolean
|
|
46
|
+
#
|
|
47
|
+
# Is this run an embedded run? This helps determine if a run should be
|
|
48
|
+
# treated differently, e.g. in the views, if it is running embedded within
|
|
49
|
+
# another location or website.
|
|
50
|
+
|
|
51
|
+
##
|
|
52
|
+
# :method: failed?
|
|
53
|
+
# :call-seq:
|
|
54
|
+
# failed? -> boolean
|
|
55
|
+
#
|
|
56
|
+
# Did this run finish abnormally or with an error?
|
|
57
|
+
|
|
58
|
+
##
|
|
59
|
+
# :method: finish_time
|
|
60
|
+
# :call-seq:
|
|
61
|
+
# finish_time -> datetime
|
|
62
|
+
#
|
|
63
|
+
# The time this run finished running on Taverna Server.
|
|
64
|
+
|
|
65
|
+
##
|
|
66
|
+
# :method: finished?
|
|
67
|
+
# :call-seq:
|
|
68
|
+
# finished? -> boolean
|
|
69
|
+
#
|
|
70
|
+
# Has this run finished normally?
|
|
71
|
+
|
|
72
|
+
##
|
|
73
|
+
# :method: has_parent?
|
|
74
|
+
# :call-seq:
|
|
75
|
+
# has_parent? -> boolean
|
|
76
|
+
#
|
|
77
|
+
# A run will have a parent if it is a child run as part of a sweep.
|
|
78
|
+
|
|
79
|
+
##
|
|
80
|
+
# :method: name
|
|
81
|
+
# :call-seq:
|
|
82
|
+
# name -> string
|
|
83
|
+
#
|
|
84
|
+
# The name (mnemonic) of this run.
|
|
85
|
+
|
|
86
|
+
##
|
|
87
|
+
# :method: root_ancestor
|
|
88
|
+
# :call-seq:
|
|
89
|
+
# root_ancestor -> run
|
|
90
|
+
#
|
|
91
|
+
# Gets the ultimate ancestor of this run, which may not be its immediate
|
|
92
|
+
# parent.
|
|
93
|
+
|
|
94
|
+
##
|
|
95
|
+
# :method: running?
|
|
96
|
+
# :call-seq:
|
|
97
|
+
# running? -> boolean
|
|
98
|
+
#
|
|
99
|
+
# Is this run still running on Taverna Server?
|
|
100
|
+
|
|
101
|
+
##
|
|
102
|
+
# :method: start_time
|
|
103
|
+
# :call-seq:
|
|
104
|
+
# start_time -> datetime
|
|
105
|
+
#
|
|
106
|
+
# The time this run started running on the Taverna Server.
|
|
107
|
+
|
|
108
|
+
##
|
|
109
|
+
# :method: state
|
|
110
|
+
# :call-seq:
|
|
111
|
+
# state -> symbol
|
|
112
|
+
#
|
|
113
|
+
# The state of this run. Possible states are :pending, :initialized,
|
|
114
|
+
# :running, :finished, :cancelled or :failed.
|
|
115
|
+
|
|
116
|
+
end
|
|
117
|
+
end
|
|
@@ -0,0 +1,148 @@
|
|
|
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
|
+
|
|
15
|
+
# This class is the superclass of the input and output port types
|
|
16
|
+
# RunPort::Input and RunPort::Output, respectively. It holds much common
|
|
17
|
+
# functionality.
|
|
18
|
+
#
|
|
19
|
+
# A port can hold either a text value or a file.
|
|
20
|
+
class RunPort < ActiveRecord::Base
|
|
21
|
+
|
|
22
|
+
MAXIMUM_DATABASE_VALUE_SIZE = 255 # :nodoc:
|
|
23
|
+
|
|
24
|
+
self.inheritance_column = "port_type"
|
|
25
|
+
|
|
26
|
+
belongs_to :run, :class_name => "TavernaPlayer::Run"
|
|
27
|
+
|
|
28
|
+
validates_presence_of :name
|
|
29
|
+
validates_uniqueness_of :name, :scope => [:run_id, :port_type]
|
|
30
|
+
|
|
31
|
+
attr_accessible :depth, :file, :name, :value
|
|
32
|
+
|
|
33
|
+
has_attached_file :file,
|
|
34
|
+
:path => File.join(TavernaPlayer.file_store, ":class/:attachment/:id/:filename"),
|
|
35
|
+
:url => :file_url_via_run,
|
|
36
|
+
:default_url => ""
|
|
37
|
+
|
|
38
|
+
default_scope order("lower(name) ASC")
|
|
39
|
+
|
|
40
|
+
# If there is both a value and a file, then prefer the file. If the file
|
|
41
|
+
# is changed, delete the value. This must be run before "process_value"!
|
|
42
|
+
before_save :delete_value, :if => :file_file_name_changed?
|
|
43
|
+
|
|
44
|
+
# Overflow the value into a file if it is too big. Don't try to process
|
|
45
|
+
# the value if the file has changed. This must run after "delete_value"!
|
|
46
|
+
before_save :process_value, :if => :value_changed?, :unless => :file_file_name_changed?
|
|
47
|
+
|
|
48
|
+
# :call-seq:
|
|
49
|
+
# display_name -> string
|
|
50
|
+
#
|
|
51
|
+
# Convert this port's name to a more presentable form. In practice this
|
|
52
|
+
# means converting underscores (_) to spaces, while preserving case.
|
|
53
|
+
def display_name
|
|
54
|
+
name.gsub('_', ' ')
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# :call-seq:
|
|
58
|
+
# value_preview -> string
|
|
59
|
+
#
|
|
60
|
+
# Show up to the first 256 characters of the port's value. This returns
|
|
61
|
+
# nil if the port has a file instead of a value.
|
|
62
|
+
def value_preview
|
|
63
|
+
self[:value]
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# :call-seq:
|
|
67
|
+
# value -> string
|
|
68
|
+
#
|
|
69
|
+
# Return the value held in this port if there is one.
|
|
70
|
+
def value
|
|
71
|
+
v = self[:value]
|
|
72
|
+
if !v.blank? && !file.path.blank?
|
|
73
|
+
File.read(file.path)
|
|
74
|
+
else
|
|
75
|
+
v
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
private
|
|
80
|
+
|
|
81
|
+
def delete_value
|
|
82
|
+
self[:value] = nil
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# If the value is too big to fit in the database then overflow it into a
|
|
86
|
+
# file.
|
|
87
|
+
def process_value
|
|
88
|
+
v = self[:value]
|
|
89
|
+
|
|
90
|
+
if !v.blank? && v.size > MAXIMUM_DATABASE_VALUE_SIZE
|
|
91
|
+
self[:value] = v[0...MAXIMUM_DATABASE_VALUE_SIZE]
|
|
92
|
+
save_value_to_file(v)
|
|
93
|
+
else
|
|
94
|
+
self.file = nil unless file.path.blank?
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def save_value_to_file(v)
|
|
99
|
+
Dir.mktmpdir("#{id}", Rails.root.join("tmp")) do |tmp_dir|
|
|
100
|
+
tmp_file_name = File.join(tmp_dir, "#{name}.txt")
|
|
101
|
+
|
|
102
|
+
File.write(tmp_file_name, v.force_encoding("UTF-8"))
|
|
103
|
+
|
|
104
|
+
self.file = File.new(tmp_file_name)
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
# This class represents a workflow input port.
|
|
110
|
+
class RunPort::Input < RunPort
|
|
111
|
+
|
|
112
|
+
private
|
|
113
|
+
|
|
114
|
+
def file_url_via_run
|
|
115
|
+
"/runs/#{run_id}/input/#{name}"
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# This class represents a workflow output port.
|
|
120
|
+
class RunPort::Output < RunPort
|
|
121
|
+
|
|
122
|
+
attr_accessible :metadata
|
|
123
|
+
|
|
124
|
+
serialize :metadata
|
|
125
|
+
|
|
126
|
+
private
|
|
127
|
+
|
|
128
|
+
def file_url_via_run
|
|
129
|
+
"/runs/#{run_id}/output/#{name}"
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
public
|
|
133
|
+
|
|
134
|
+
##
|
|
135
|
+
# :method: metadata
|
|
136
|
+
# :call-seq:
|
|
137
|
+
# metadata -> hash
|
|
138
|
+
#
|
|
139
|
+
# Get the size and type metadata for this output port in a Hash. For a
|
|
140
|
+
# list output it might look like this:
|
|
141
|
+
#
|
|
142
|
+
# {
|
|
143
|
+
# :size => [12, 36509],
|
|
144
|
+
# :type => ["text/plain", "image/png"]
|
|
145
|
+
# }
|
|
146
|
+
|
|
147
|
+
end
|
|
148
|
+
end
|
|
@@ -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
|
+
module TavernaPlayer
|
|
14
|
+
|
|
15
|
+
# This class represents a credential for authentication to a service during
|
|
16
|
+
# a workflow run.
|
|
17
|
+
class ServiceCredential < ActiveRecord::Base
|
|
18
|
+
attr_accessible :description, :login, :name, :password,
|
|
19
|
+
:password_confirmation, :uri
|
|
20
|
+
|
|
21
|
+
validates :uri, :presence => true
|
|
22
|
+
validates :login, :presence => true
|
|
23
|
+
validates :password, :presence => true
|
|
24
|
+
validates :password_confirmation, :presence => true
|
|
25
|
+
validates :password, :confirmation => true
|
|
26
|
+
|
|
27
|
+
##
|
|
28
|
+
# :method: description
|
|
29
|
+
# :call-seq:
|
|
30
|
+
# description -> string
|
|
31
|
+
#
|
|
32
|
+
# The description of the service or credential.
|
|
33
|
+
|
|
34
|
+
##
|
|
35
|
+
# :method: login
|
|
36
|
+
# :call-seq:
|
|
37
|
+
# login -> string
|
|
38
|
+
#
|
|
39
|
+
# The login name (or user name) used to log in to the service.
|
|
40
|
+
|
|
41
|
+
##
|
|
42
|
+
# :method: name
|
|
43
|
+
# :call-seq:
|
|
44
|
+
# name -> string
|
|
45
|
+
#
|
|
46
|
+
# The name of the service.
|
|
47
|
+
|
|
48
|
+
##
|
|
49
|
+
# :method: uri
|
|
50
|
+
# :call-seq:
|
|
51
|
+
# uri -> string
|
|
52
|
+
#
|
|
53
|
+
# The URI of the service, returned as a string.
|
|
54
|
+
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
<!DOCTYPE html>
|
|
14
|
+
|
|
15
|
+
<html>
|
|
16
|
+
<head>
|
|
17
|
+
<title>Taverna Player</title>
|
|
18
|
+
<%= stylesheet_link_tag "application", :media => "all" %>
|
|
19
|
+
<%= javascript_include_tag "application" %>
|
|
20
|
+
<%= csrf_meta_tags %>
|
|
21
|
+
</head>
|
|
22
|
+
<body>
|
|
23
|
+
|
|
24
|
+
<%= yield %>
|
|
25
|
+
|
|
26
|
+
</body>
|
|
27
|
+
</html>
|
|
@@ -0,0 +1,19 @@
|
|
|
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
|
+
<div id="run-button">
|
|
14
|
+
<% if run.complete? %>
|
|
15
|
+
<%= link_to 'Delete', run, :method => :delete, :data => { confirm: 'Are you sure?' } -%>
|
|
16
|
+
<% else %>
|
|
17
|
+
<%= link_to "Cancel", cancel_run_path(run.id), :method => :put, :data => { confirm: "Are you sure?" } -%>
|
|
18
|
+
<% end %>
|
|
19
|
+
</div>
|
|
@@ -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
|
+
<div id="run-info">
|
|
14
|
+
<p>
|
|
15
|
+
<b>Run:</b>
|
|
16
|
+
<%= run.run_id %>
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
<p>
|
|
20
|
+
<b>Name:</b>
|
|
21
|
+
<%= form_for run, :html => {:multipart => true} do |f| %>
|
|
22
|
+
<%= f.text_field :name %>
|
|
23
|
+
<%= f.submit "Update" %>
|
|
24
|
+
<% end %>
|
|
25
|
+
</p>
|
|
26
|
+
|
|
27
|
+
<p>
|
|
28
|
+
<b>State:</b>
|
|
29
|
+
<%= run.state %>
|
|
30
|
+
</p>
|
|
31
|
+
|
|
32
|
+
<p>
|
|
33
|
+
<b>Status message:</b>
|
|
34
|
+
<%= run.status_message %>
|
|
35
|
+
</p>
|
|
36
|
+
|
|
37
|
+
<p>
|
|
38
|
+
<b>Create time:</b>
|
|
39
|
+
<%= run.create_time %>
|
|
40
|
+
</p>
|
|
41
|
+
|
|
42
|
+
<p>
|
|
43
|
+
<b>Start time:</b>
|
|
44
|
+
<%= run.start_time %>
|
|
45
|
+
</p>
|
|
46
|
+
|
|
47
|
+
<p>
|
|
48
|
+
<b>Finish time:</b>
|
|
49
|
+
<%= run.finish_time %>
|
|
50
|
+
</p>
|
|
51
|
+
|
|
52
|
+
<p>
|
|
53
|
+
<b>Embedded:</b>
|
|
54
|
+
<%= run.embedded %>
|
|
55
|
+
</p>
|
|
56
|
+
</div>
|