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