taverna-t2flow 0.2.0 → 0.3.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/CHANGES.rdoc +16 -0
- data/README.rdoc +30 -21
- data/Rakefile +54 -0
- data/lib/t2flow/model.rb +7 -0
- data/lib/t2flow/parser.rb +7 -2
- data/taverna-t2flow.gemspec +76 -0
- data/test/fixtures/1000.t2flow +244 -0
- data/test/fixtures/1001.t2flow +321 -0
- data/test/fixtures/1002.t2flow +474 -0
- data/test/fixtures/1003.t2flow +292 -0
- data/test/fixtures/1004.t2flow +73 -0
- data/test/fixtures/996.t2flow +193 -0
- data/test/fixtures/997.t2flow +359 -0
- data/test/fixtures/998.t2flow +324 -0
- data/test/fixtures/999.t2flow +604 -0
- data/test/fixtures/basic.t2flow +94 -0
- data/test/fixtures/coordinated.t2flow +63 -0
- data/test/fixtures/linked.t2flow +88 -0
- data/test/fixtures/nested.t2flow +270 -0
- data/test/fixtures/processors.t2flow +174 -0
- data/test/run_tests.rb +7 -0
- data/test/test_bogus_workflows.rb +80 -0
- data/test/test_helper.rb +50 -0
- data/test/test_starter_pack_workflows.rb +132 -0
- metadata +121 -69
- data/ChangeLog.rdoc +0 -7
data/CHANGES.rdoc
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
= Changes log for the T2Flow Ruby Gem
|
2
|
+
|
3
|
+
== Version 0.3.0
|
4
|
+
|
5
|
+
* Minor changes for ruby 1.9 compatibility.
|
6
|
+
|
7
|
+
== Version 0.2.0
|
8
|
+
|
9
|
+
* Updated the unit tests which can now be run by entering "ruby tests/run_tests.rb"
|
10
|
+
* Added the following methods to the T2Flow::Model class: coordinates, all_coordinates, name
|
11
|
+
|
12
|
+
== About this CHANGES file
|
13
|
+
|
14
|
+
This file is, at least in part, generated by the following command:
|
15
|
+
|
16
|
+
$ git log --pretty=format:"* %s" --reverse --no-merges <commit-hash>..
|
data/README.rdoc
CHANGED
@@ -1,36 +1,41 @@
|
|
1
1
|
= Taverna[http://taverna.sourceforge.net] 2 Interaction Gem
|
2
2
|
|
3
|
-
Authors:: Mannie Tagarira, David Withers
|
4
|
-
|
5
|
-
|
6
|
-
URL:: http://taverna.sourceforge.net/
|
3
|
+
Authors:: Robert Haines, Mannie Tagarira, David Withers
|
4
|
+
Contact:: mailto:support@mygrid.org.uk
|
5
|
+
URL:: http://www.taverna.org.uk/
|
7
6
|
Licence:: LGPL 3 (See LICENCE or http://www.gnu.org/licenses/lgpl.html)
|
8
|
-
Copyright:: (c) 2008-
|
9
|
-
|
10
|
-
|
7
|
+
Copyright:: (c) 2008-2012, University of Manchester, UK
|
11
8
|
|
12
9
|
== Synopsis
|
13
10
|
|
14
|
-
This is a Ruby library to support the interaction with
|
11
|
+
This is a Ruby library to support the interaction with
|
12
|
+
Taverna[http://taverna.sourceforge.net] version 2 workflows (T2Flows). This
|
13
|
+
relies on the functionality provided by the libxml-ruby library. To be able
|
14
|
+
to utilise this gem to its full potential, you will need to have the following
|
15
|
+
installed on your system.
|
15
16
|
- GraphViz[http://www.graphviz.org/Download.php] (a graph visualization package)
|
16
17
|
|
17
|
-
|
18
|
-
|
19
18
|
== The T2Flow Model Implementation
|
20
19
|
|
21
|
-
Much like the Taverna[http://taverna.sourceforge.net] 1 Scufl model, T2Flows
|
22
|
-
|
23
|
-
|
20
|
+
Much like the Taverna[http://taverna.sourceforge.net] 1 Scufl model, T2Flows
|
21
|
+
contain Processors, Sinks, and Sources. T2Flows however, encapsulate these
|
22
|
+
elements within Dataflow objects. A Dataflow objects is the container for all
|
23
|
+
the different elements present within the
|
24
|
+
Taverna[http://taverna.sourceforge.net] 2 workflows, hence a single T2Flow may
|
25
|
+
have one or more dataflows. WorkflowDescriptions and Links, from the original
|
26
|
+
Taverna[http://taverna.sourceforge.net] 1 workflows (Scufl), have been renamed
|
27
|
+
in T2Flows to DataflowAnnotations and Datalinks respectively.
|
28
|
+
DataflowAnnotations, however, allow for multiple titles, authors, and
|
29
|
+
descriptions, as opposed to the single value attributes held for Scufls.
|
24
30
|
|
25
31
|
== Installation
|
26
32
|
To install the Taverna 2 gem, type into your command prompt:
|
27
33
|
[sudo] gem install taverna-t2flow
|
28
34
|
|
29
|
-
|
30
|
-
|
31
35
|
== Usage
|
32
36
|
|
33
|
-
To be able to generate at least a T2Flow model using the gem, you need to
|
37
|
+
To be able to generate at least a T2Flow model using the gem, you need to
|
38
|
+
include in your ruby code the following lines:
|
34
39
|
require "t2flow/model.rb"
|
35
40
|
require "t2flow/parser.rb"
|
36
41
|
|
@@ -42,7 +47,8 @@ Alternatively:
|
|
42
47
|
foo = File.new("path/to/workflow/file", "r").read
|
43
48
|
bar = T2Flow::Parser.new.parse(foo)
|
44
49
|
|
45
|
-
You will then be able to use your T2Flow model to retrieve information about
|
50
|
+
You will then be able to use your T2Flow model to retrieve information about
|
51
|
+
the workflow by invoking the different methods and attributes.
|
46
52
|
bar.INVOKED
|
47
53
|
... where INVOKED is the method or attribute required.
|
48
54
|
|
@@ -55,17 +61,20 @@ You can also interact with remote workflows.
|
|
55
61
|
To be enable you to draw images of the T2Flow, you need to include:
|
56
62
|
require "t2flow/dot.rb"
|
57
63
|
|
58
|
-
To be able to use any functionality included in "t2flow/dot.rb", you need to
|
64
|
+
To be able to use any functionality included in "t2flow/dot.rb", you need to
|
65
|
+
have GraphViz[http://www.graphviz.org/Download.php] installed on your system.
|
66
|
+
Once this package has been installed, you may use the gem to draw an image
|
67
|
+
showing the structure of the T2Flow as follows.
|
59
68
|
out_file = File.new("path/to/file/you/want/the/dot/script/to/be/written", "w+")
|
60
69
|
T2Flow::Dot.new.write_dot(out_file, bar)
|
61
70
|
`dot -Tpng -o"path/to/the/output/image" #{out_file.path}`
|
62
|
-
|
71
|
+
|
72
|
+
The last line draws a PNG image using +out_file+. To learn more about dot,
|
73
|
+
try typing into your command prompt:
|
63
74
|
% man dot
|
64
75
|
or
|
65
76
|
% dot -h
|
66
77
|
|
67
|
-
|
68
|
-
|
69
78
|
== References
|
70
79
|
|
71
80
|
[1] http://taverna.sourceforge.net
|
data/Rakefile
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
# Copyright (c) 2012 The University of Manchester, UK.
|
2
|
+
#
|
3
|
+
# See LICENCE file for details.
|
4
|
+
#
|
5
|
+
# Author: Robert Haines
|
6
|
+
|
7
|
+
require 'rubygems'
|
8
|
+
require 'rake'
|
9
|
+
require 'rake/clean'
|
10
|
+
require 'rake/tasklib'
|
11
|
+
require 'rake/testtask'
|
12
|
+
require 'rdoc/task'
|
13
|
+
require 'jeweler'
|
14
|
+
|
15
|
+
task :default => [:test]
|
16
|
+
|
17
|
+
T2FLOW_GEM_VERSION = "0.3.0"
|
18
|
+
|
19
|
+
Jeweler::Tasks.new do |s|
|
20
|
+
s.name = "taverna-t2flow"
|
21
|
+
s.version = T2FLOW_GEM_VERSION
|
22
|
+
s.authors = ["Robert Haines", "David Withers", "Mannie Tagarira"]
|
23
|
+
s.email = ["rhaines@manchester.ac.uk"]
|
24
|
+
s.homepage = "http://www.taverna.org.uk/"
|
25
|
+
s.platform = Gem::Platform::RUBY
|
26
|
+
s.summary = "Support for interacting with Taverna 2 workflows."
|
27
|
+
s.description = "This a gem developed by myGrid for the purpose of " +
|
28
|
+
"interacting with Taverna 2 workflows. An example use would be the " +
|
29
|
+
"image genaration for the model representing Taverna 2 workflows as " +
|
30
|
+
"used in myExperiment."
|
31
|
+
s.require_path = "lib"
|
32
|
+
s.test_file = "test/run_tests.rb"
|
33
|
+
s.has_rdoc = true
|
34
|
+
s.extra_rdoc_files = ["README.rdoc", "LICENCE", "CHANGES.rdoc"]
|
35
|
+
s.rdoc_options = ["-N", "--tab-width=2", "--main=README.rdoc"]
|
36
|
+
s.add_development_dependency('rake', '~> 0.9.2')
|
37
|
+
s.add_development_dependency('rdoc', '>= 3.9.4')
|
38
|
+
s.add_development_dependency('jeweler', '~> 1.8.3')
|
39
|
+
s.add_runtime_dependency('libxml-ruby', '>= 1.1.4')
|
40
|
+
end
|
41
|
+
|
42
|
+
Rake::TestTask.new do |t|
|
43
|
+
t.libs << "test"
|
44
|
+
t.test_files = FileList['test/run_tests.rb']
|
45
|
+
end
|
46
|
+
|
47
|
+
RDoc::Task.new do |r|
|
48
|
+
r.main = "README.rdoc"
|
49
|
+
lib = Dir.glob("lib/**/*.rb")
|
50
|
+
r.rdoc_files.include("README.rdoc", "LICENCE", "CHANGES.rdoc", lib)
|
51
|
+
r.options << "-t Taverna T2Flow Library version #{T2FLOW_GEM_VERSION}"
|
52
|
+
r.options << "-N"
|
53
|
+
r.options << "--tab-width=2"
|
54
|
+
end
|
data/lib/t2flow/model.rb
CHANGED
@@ -198,6 +198,9 @@ module T2Flow # :nodoc:
|
|
198
198
|
# The unique identifier of the dataflow.
|
199
199
|
attr_accessor :dataflow_id
|
200
200
|
|
201
|
+
# The role of the workflow
|
202
|
+
attr_accessor :role
|
203
|
+
|
201
204
|
# Creates a new Dataflow object.
|
202
205
|
def initialize
|
203
206
|
@annotations = DataflowAnnotation.new
|
@@ -266,6 +269,10 @@ module T2Flow # :nodoc:
|
|
266
269
|
|
267
270
|
# Category for the biomoby service.
|
268
271
|
attr_accessor :biomoby_category
|
272
|
+
|
273
|
+
# Value for string constants
|
274
|
+
attr_accessor :value
|
275
|
+
|
269
276
|
end
|
270
277
|
|
271
278
|
|
data/lib/t2flow/parser.rb
CHANGED
@@ -45,6 +45,7 @@ module T2Flow
|
|
45
45
|
|
46
46
|
dataflow_obj = Dataflow.new
|
47
47
|
dataflow_obj.dataflow_id = dataflow["id"]
|
48
|
+
dataflow_obj.role = dataflow["role"]
|
48
49
|
|
49
50
|
dataflow.each do |elt|
|
50
51
|
case elt.name
|
@@ -84,7 +85,8 @@ module T2Flow
|
|
84
85
|
|
85
86
|
port.each do |elt|
|
86
87
|
case elt.name
|
87
|
-
when "name"
|
88
|
+
when "name"
|
89
|
+
source.name = elt.content
|
88
90
|
when "annotations"
|
89
91
|
elt.each do |ann|
|
90
92
|
next if ann.nil? || ann.content.chomp.strip.empty?
|
@@ -115,7 +117,8 @@ module T2Flow
|
|
115
117
|
|
116
118
|
port.each do |elt|
|
117
119
|
case elt.name
|
118
|
-
when "name"
|
120
|
+
when "name"
|
121
|
+
sink.name = elt.content
|
119
122
|
when "annotations"
|
120
123
|
elt.each do |ann|
|
121
124
|
next if ann.nil? || ann.content.chomp.strip.empty?
|
@@ -188,6 +191,8 @@ module T2Flow
|
|
188
191
|
processor.biomoby_category = value_node.content
|
189
192
|
when "script"
|
190
193
|
processor.script = value_node.content
|
194
|
+
when "value"
|
195
|
+
processor.value = value_node.content
|
191
196
|
when "inputs" # ALL ports present in beanshell
|
192
197
|
value_node.each { |input|
|
193
198
|
input.each { |x|
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "taverna-t2flow"
|
8
|
+
s.version = "0.3.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Robert Haines", "David Withers", "Mannie Tagarira"]
|
12
|
+
s.date = "2012-05-02"
|
13
|
+
s.description = "This a gem developed by myGrid for the purpose of interacting with Taverna 2 workflows. An example use would be the image genaration for the model representing Taverna 2 workflows as used in myExperiment."
|
14
|
+
s.email = ["rhaines@manchester.ac.uk"]
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"CHANGES.rdoc",
|
17
|
+
"LICENCE",
|
18
|
+
"README.rdoc"
|
19
|
+
]
|
20
|
+
s.files = [
|
21
|
+
"CHANGES.rdoc",
|
22
|
+
"LICENCE",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"lib/t2flow/dot.rb",
|
26
|
+
"lib/t2flow/model.rb",
|
27
|
+
"lib/t2flow/parser.rb",
|
28
|
+
"taverna-t2flow.gemspec",
|
29
|
+
"test/fixtures/1000.t2flow",
|
30
|
+
"test/fixtures/1001.t2flow",
|
31
|
+
"test/fixtures/1002.t2flow",
|
32
|
+
"test/fixtures/1003.t2flow",
|
33
|
+
"test/fixtures/1004.t2flow",
|
34
|
+
"test/fixtures/996.t2flow",
|
35
|
+
"test/fixtures/997.t2flow",
|
36
|
+
"test/fixtures/998.t2flow",
|
37
|
+
"test/fixtures/999.t2flow",
|
38
|
+
"test/fixtures/basic.t2flow",
|
39
|
+
"test/fixtures/coordinated.t2flow",
|
40
|
+
"test/fixtures/linked.t2flow",
|
41
|
+
"test/fixtures/nested.t2flow",
|
42
|
+
"test/fixtures/processors.t2flow",
|
43
|
+
"test/run_tests.rb",
|
44
|
+
"test/test_bogus_workflows.rb",
|
45
|
+
"test/test_helper.rb",
|
46
|
+
"test/test_starter_pack_workflows.rb"
|
47
|
+
]
|
48
|
+
s.homepage = "http://www.taverna.org.uk/"
|
49
|
+
s.rdoc_options = ["-N", "--tab-width=2", "--main=README.rdoc"]
|
50
|
+
s.require_paths = ["lib"]
|
51
|
+
s.rubygems_version = "1.8.10"
|
52
|
+
s.summary = "Support for interacting with Taverna 2 workflows."
|
53
|
+
s.test_files = ["test/run_tests.rb"]
|
54
|
+
|
55
|
+
if s.respond_to? :specification_version then
|
56
|
+
s.specification_version = 3
|
57
|
+
|
58
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
59
|
+
s.add_development_dependency(%q<rake>, ["~> 0.9.2"])
|
60
|
+
s.add_development_dependency(%q<rdoc>, [">= 3.9.4"])
|
61
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
|
62
|
+
s.add_runtime_dependency(%q<libxml-ruby>, [">= 1.1.4"])
|
63
|
+
else
|
64
|
+
s.add_dependency(%q<rake>, ["~> 0.9.2"])
|
65
|
+
s.add_dependency(%q<rdoc>, [">= 3.9.4"])
|
66
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
67
|
+
s.add_dependency(%q<libxml-ruby>, [">= 1.1.4"])
|
68
|
+
end
|
69
|
+
else
|
70
|
+
s.add_dependency(%q<rake>, ["~> 0.9.2"])
|
71
|
+
s.add_dependency(%q<rdoc>, [">= 3.9.4"])
|
72
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
73
|
+
s.add_dependency(%q<libxml-ruby>, [">= 1.1.4"])
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
@@ -0,0 +1,244 @@
|
|
1
|
+
<workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.1.0"><dataflow id="fe9a837d-317c-4921-bace-bff3a9ffd837" role="top"><name>Fetch_PDB_flatfile_from_RCSB_server</name><inputPorts><port><name>pdbID</name><depth>0</depth><granularDepth>0</granularDepth><annotations><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
2
|
+
<annotationAssertions>
|
3
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
4
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.FreeTextDescription">
|
5
|
+
<text>PDB identifier such as '1crn'</text>
|
6
|
+
</annotationBean>
|
7
|
+
<date>2009-12-15 21:05:33.450 GMT</date>
|
8
|
+
<creators />
|
9
|
+
<curationEventList />
|
10
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
11
|
+
</annotationAssertions>
|
12
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
13
|
+
<annotationAssertions>
|
14
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
15
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.ExampleValue">
|
16
|
+
<text>1crn</text>
|
17
|
+
</annotationBean>
|
18
|
+
<date>2009-12-15 21:05:16.196 GMT</date>
|
19
|
+
<creators />
|
20
|
+
<curationEventList />
|
21
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
22
|
+
</annotationAssertions>
|
23
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain></annotations></port></inputPorts><outputPorts><port><name>pdbFlatFile</name><annotations /></port></outputPorts><processors><processor><name>AddPrefixToID</name><inputPorts><port><name>string1</name><depth>0</depth></port><port><name>string2</name><depth>0</depth></port></inputPorts><outputPorts><port><name>output</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="string2" to="string2" /><map from="string1" to="string1" /></inputMap><outputMap><map from="output" to="output" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
|
24
|
+
<localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
|
25
|
+
<script>output = string1 + string2;</script>
|
26
|
+
<dependencies />
|
27
|
+
<classLoaderSharing>workflow</classLoaderSharing>
|
28
|
+
<localDependencies />
|
29
|
+
<artifactDependencies />
|
30
|
+
<inputs>
|
31
|
+
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
|
32
|
+
<handledReferenceSchemes />
|
33
|
+
<translatedElementType>java.lang.String</translatedElementType>
|
34
|
+
<allowsLiteralValues>true</allowsLiteralValues>
|
35
|
+
<name>string1</name>
|
36
|
+
<depth>0</depth>
|
37
|
+
<mimeTypes>
|
38
|
+
<string>'text/plain'</string>
|
39
|
+
</mimeTypes>
|
40
|
+
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
|
41
|
+
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
|
42
|
+
<handledReferenceSchemes />
|
43
|
+
<translatedElementType>java.lang.String</translatedElementType>
|
44
|
+
<allowsLiteralValues>true</allowsLiteralValues>
|
45
|
+
<name>string2</name>
|
46
|
+
<depth>0</depth>
|
47
|
+
<mimeTypes>
|
48
|
+
<string>'text/plain'</string>
|
49
|
+
</mimeTypes>
|
50
|
+
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
|
51
|
+
</inputs>
|
52
|
+
<outputs>
|
53
|
+
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
|
54
|
+
<granularDepth>0</granularDepth>
|
55
|
+
<name>output</name>
|
56
|
+
<depth>0</depth>
|
57
|
+
<mimeTypes>
|
58
|
+
<string>'text/plain'</string>
|
59
|
+
</mimeTypes>
|
60
|
+
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
|
61
|
+
</outputs>
|
62
|
+
</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
|
63
|
+
<maxJobs>1</maxJobs>
|
64
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
|
65
|
+
<backoffFactor>1.0</backoffFactor>
|
66
|
+
<initialDelay>1000</initialDelay>
|
67
|
+
<maxDelay>5000</maxDelay>
|
68
|
+
<maxRetries>0</maxRetries>
|
69
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="string1" depth="0" /><port name="string2" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>AddSuffix</name><inputPorts><port><name>string2</name><depth>0</depth></port><port><name>string1</name><depth>0</depth></port></inputPorts><outputPorts><port><name>output</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="string2" to="string2" /><map from="string1" to="string1" /></inputMap><outputMap><map from="output" to="output" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
|
70
|
+
<localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName>
|
71
|
+
<script>output = string1 + string2;</script>
|
72
|
+
<dependencies />
|
73
|
+
<classLoaderSharing>workflow</classLoaderSharing>
|
74
|
+
<localDependencies />
|
75
|
+
<artifactDependencies />
|
76
|
+
<inputs>
|
77
|
+
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
|
78
|
+
<handledReferenceSchemes />
|
79
|
+
<translatedElementType>java.lang.String</translatedElementType>
|
80
|
+
<allowsLiteralValues>true</allowsLiteralValues>
|
81
|
+
<name>string1</name>
|
82
|
+
<depth>0</depth>
|
83
|
+
<mimeTypes>
|
84
|
+
<string>'text/plain'</string>
|
85
|
+
</mimeTypes>
|
86
|
+
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
|
87
|
+
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
|
88
|
+
<handledReferenceSchemes />
|
89
|
+
<translatedElementType>java.lang.String</translatedElementType>
|
90
|
+
<allowsLiteralValues>true</allowsLiteralValues>
|
91
|
+
<name>string2</name>
|
92
|
+
<depth>0</depth>
|
93
|
+
<mimeTypes>
|
94
|
+
<string>'text/plain'</string>
|
95
|
+
</mimeTypes>
|
96
|
+
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
|
97
|
+
</inputs>
|
98
|
+
<outputs>
|
99
|
+
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
|
100
|
+
<granularDepth>0</granularDepth>
|
101
|
+
<name>output</name>
|
102
|
+
<depth>0</depth>
|
103
|
+
<mimeTypes>
|
104
|
+
<string>'text/plain'</string>
|
105
|
+
</mimeTypes>
|
106
|
+
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
|
107
|
+
</outputs>
|
108
|
+
</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
|
109
|
+
<maxJobs>1</maxJobs>
|
110
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
|
111
|
+
<backoffFactor>1.0</backoffFactor>
|
112
|
+
<initialDelay>1000</initialDelay>
|
113
|
+
<maxDelay>5000</maxDelay>
|
114
|
+
<maxRetries>0</maxRetries>
|
115
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="string2" depth="0" /><port name="string1" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>FetchPage</name><inputPorts><port><name>url</name><depth>0</depth></port></inputPorts><outputPorts><port><name>image</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>localworker-activity</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="url" to="url" /></inputMap><outputMap><map from="image" to="image" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
|
116
|
+
<localworkerName>org.embl.ebi.escience.scuflworkers.java.WebImageFetcher</localworkerName>
|
117
|
+
<script>URL inputURL = null;
|
118
|
+
if (base != void) {
|
119
|
+
inputURL = new URL(new URL(base), url);
|
120
|
+
} else {
|
121
|
+
inputURL = new URL(url);
|
122
|
+
}
|
123
|
+
|
124
|
+
byte[] contents;
|
125
|
+
if (inputURL.openConnection().getContentLength() == -1) {
|
126
|
+
// Content size unknown, must read first...
|
127
|
+
byte[] buffer = new byte[1024];
|
128
|
+
int bytesRead = 0;
|
129
|
+
int totalBytesRead = 0;
|
130
|
+
InputStream is = inputURL.openStream();
|
131
|
+
while (bytesRead != -1) {
|
132
|
+
totalBytesRead += bytesRead;
|
133
|
+
bytesRead = is.read(buffer, 0, 1024);
|
134
|
+
}
|
135
|
+
contents = new byte[totalBytesRead];
|
136
|
+
} else {
|
137
|
+
contents = new byte[inputURL.openConnection().getContentLength()];
|
138
|
+
}
|
139
|
+
int bytesRead = 0;
|
140
|
+
int totalBytesRead = 0;
|
141
|
+
InputStream is = inputURL.openStream();
|
142
|
+
while (bytesRead != -1) {
|
143
|
+
bytesRead = is.read(contents, totalBytesRead, contents.length - totalBytesRead);
|
144
|
+
totalBytesRead += bytesRead;
|
145
|
+
if (contents.length==totalBytesRead) break;
|
146
|
+
}
|
147
|
+
|
148
|
+
image = contents;
|
149
|
+
</script>
|
150
|
+
<dependencies />
|
151
|
+
<classLoaderSharing>workflow</classLoaderSharing>
|
152
|
+
<localDependencies />
|
153
|
+
<artifactDependencies />
|
154
|
+
<inputs>
|
155
|
+
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
|
156
|
+
<handledReferenceSchemes />
|
157
|
+
<translatedElementType>java.lang.String</translatedElementType>
|
158
|
+
<allowsLiteralValues>true</allowsLiteralValues>
|
159
|
+
<name>url</name>
|
160
|
+
<depth>0</depth>
|
161
|
+
<mimeTypes>
|
162
|
+
<string>'text/x-taverna-web-url'</string>
|
163
|
+
</mimeTypes>
|
164
|
+
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
|
165
|
+
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
|
166
|
+
<handledReferenceSchemes />
|
167
|
+
<translatedElementType>java.lang.String</translatedElementType>
|
168
|
+
<allowsLiteralValues>true</allowsLiteralValues>
|
169
|
+
<name>base</name>
|
170
|
+
<depth>0</depth>
|
171
|
+
<mimeTypes>
|
172
|
+
<string>'text/x-taverna-web-url'</string>
|
173
|
+
</mimeTypes>
|
174
|
+
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
|
175
|
+
</inputs>
|
176
|
+
<outputs>
|
177
|
+
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
|
178
|
+
<granularDepth>0</granularDepth>
|
179
|
+
<name>image</name>
|
180
|
+
<depth>0</depth>
|
181
|
+
<mimeTypes>
|
182
|
+
<string>'image/*'</string>
|
183
|
+
</mimeTypes>
|
184
|
+
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
|
185
|
+
</outputs>
|
186
|
+
</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
|
187
|
+
<maxJobs>1</maxJobs>
|
188
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
|
189
|
+
<backoffFactor>1.0</backoffFactor>
|
190
|
+
<initialDelay>1000</initialDelay>
|
191
|
+
<maxDelay>5000</maxDelay>
|
192
|
+
<maxRetries>0</maxRetries>
|
193
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy><cross><port name="url" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>RCSBPrefix</name><inputPorts /><outputPorts><port><name>value</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>stringconstant-activity</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class><inputMap /><outputMap><map from="value" to="value" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
|
194
|
+
<value>http://www.rcsb.org/pdb/cgi/export.cgi/1CRN.pdb?format=PDB&pdbId=</value>
|
195
|
+
</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
|
196
|
+
<maxJobs>1</maxJobs>
|
197
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
|
198
|
+
<backoffFactor>1.0</backoffFactor>
|
199
|
+
<initialDelay>1000</initialDelay>
|
200
|
+
<maxDelay>5000</maxDelay>
|
201
|
+
<maxRetries>0</maxRetries>
|
202
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy /></iteration></iterationStrategyStack></processor><processor><name>RCSBSuffix</name><inputPorts /><outputPorts><port><name>value</name><depth>0</depth><granularDepth>0</granularDepth></port></outputPorts><annotations /><activities><activity><raven><group>net.sf.taverna.t2.activities</group><artifact>stringconstant-activity</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.activities.stringconstant.StringConstantActivity</class><inputMap /><outputMap><map from="value" to="value" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean xmlns="">
|
203
|
+
<value>&compression=None</value>
|
204
|
+
</net.sf.taverna.t2.activities.stringconstant.StringConstantConfigurationBean></configBean><annotations /></activity></activities><dispatchStack><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig xmlns="">
|
205
|
+
<maxJobs>1</maxJobs>
|
206
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class><configBean encoding="xstream"><net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig xmlns="">
|
207
|
+
<backoffFactor>1.0</backoffFactor>
|
208
|
+
<initialDelay>1000</initialDelay>
|
209
|
+
<maxDelay>5000</maxDelay>
|
210
|
+
<maxRetries>0</maxRetries>
|
211
|
+
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig></configBean></dispatchLayer><dispatchLayer><raven><group>net.sf.taverna.t2.core</group><artifact>workflowmodel-impl</artifact><version>1.0</version></raven><class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoke</class><configBean encoding="xstream"><null xmlns="" /></configBean></dispatchLayer></dispatchStack><iterationStrategyStack><iteration><strategy /></iteration></iterationStrategyStack></processor></processors><conditions /><datalinks><datalink><sink type="processor"><processor>AddPrefixToID</processor><port>string1</port></sink><source type="processor"><processor>RCSBPrefix</processor><port>value</port></source></datalink><datalink><sink type="processor"><processor>AddPrefixToID</processor><port>string2</port></sink><source type="dataflow"><port>pdbID</port></source></datalink><datalink><sink type="processor"><processor>AddSuffix</processor><port>string2</port></sink><source type="processor"><processor>RCSBSuffix</processor><port>value</port></source></datalink><datalink><sink type="processor"><processor>AddSuffix</processor><port>string1</port></sink><source type="processor"><processor>AddPrefixToID</processor><port>output</port></source></datalink><datalink><sink type="processor"><processor>FetchPage</processor><port>url</port></sink><source type="processor"><processor>AddSuffix</processor><port>output</port></source></datalink><datalink><sink type="dataflow"><port>pdbFlatFile</port></sink><source type="processor"><processor>FetchPage</processor><port>image</port></source></datalink></datalinks><annotations><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
212
|
+
<annotationAssertions>
|
213
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
214
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.Author">
|
215
|
+
<text>Tom Oinn</text>
|
216
|
+
</annotationBean>
|
217
|
+
<date>2009-12-15 21:05:51.281 GMT</date>
|
218
|
+
<creators />
|
219
|
+
<curationEventList />
|
220
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
221
|
+
</annotationAssertions>
|
222
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
223
|
+
<annotationAssertions>
|
224
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
225
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.FreeTextDescription">
|
226
|
+
<text>Given an identifier such as '1crn' fetches the PDB format flatfile from the RCSB</text>
|
227
|
+
</annotationBean>
|
228
|
+
<date>2009-12-15 21:06:13.245 GMT</date>
|
229
|
+
<creators />
|
230
|
+
<curationEventList />
|
231
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
232
|
+
</annotationAssertions>
|
233
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
|
234
|
+
<annotationAssertions>
|
235
|
+
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
236
|
+
<annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.DescriptiveTitle">
|
237
|
+
<text>Fetch PDB flatfile from RCSB server</text>
|
238
|
+
</annotationBean>
|
239
|
+
<date>2009-12-15 21:06:02.76 GMT</date>
|
240
|
+
<creators />
|
241
|
+
<curationEventList />
|
242
|
+
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
|
243
|
+
</annotationAssertions>
|
244
|
+
</net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain></annotations></dataflow></workflow>
|