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.
@@ -0,0 +1,321 @@
1
+ <workflow xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" producedBy="taverna-2.1.0"><dataflow id="8b032490-948e-4983-b632-d16653755fcd" role="top"><name>Fetch_today_s_xkcd_comic</name><inputPorts /><outputPorts><port><name>todaysXkcd</name><annotations /></port></outputPorts><processors><processor><name>getPage</name><inputPorts><port><name>url</name><depth>0</depth></port></inputPorts><outputPorts><port><name>contents</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="contents" to="contents" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
2
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.WebPageFetcher</localworkerName>
3
+ <script>URL inputURL = null;
4
+ if (base != void) {
5
+ inputURL = new URL(new URL(base), url);
6
+ }
7
+ else {
8
+ inputURL = new URL(url);
9
+ }
10
+ URLConnection con = inputURL.openConnection();
11
+ InputStream in = con.getInputStream();
12
+
13
+ InputStreamReader isr = new InputStreamReader(in);
14
+ Reader inReader = new BufferedReader(isr);
15
+
16
+ StringBuffer buf = new StringBuffer();
17
+ int ch;
18
+ while ((ch = inReader.read()) &gt; -1) {
19
+ buf.append((char)ch);
20
+ }
21
+ inReader.close();
22
+ contents = buf.toString();
23
+
24
+
25
+ //String NEWLINE = System.getProperty("line.separator");
26
+ //
27
+ //URL inputURL = null;
28
+ //if (base != void) {
29
+ // inputURL = new URL(new URL(base), url);
30
+ //} else {
31
+ // inputURL = new URL(url);
32
+ //}
33
+ //StringBuffer result = new StringBuffer();
34
+ //BufferedReader reader = new BufferedReader(new InputStreamReader(inputURL.openStream()));
35
+ //String line = null;
36
+ //while ((line = reader.readLine()) != null) {
37
+ // result.append(line);
38
+ // result.append(NEWLINE);
39
+ //}
40
+ //
41
+ //contents = result.toString();
42
+ </script>
43
+ <dependencies />
44
+ <classLoaderSharing>workflow</classLoaderSharing>
45
+ <localDependencies />
46
+ <artifactDependencies />
47
+ <inputs>
48
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
49
+ <handledReferenceSchemes />
50
+ <translatedElementType>java.lang.String</translatedElementType>
51
+ <allowsLiteralValues>true</allowsLiteralValues>
52
+ <name>url</name>
53
+ <depth>0</depth>
54
+ <mimeTypes>
55
+ <string>'text/x-taverna-web-url'</string>
56
+ </mimeTypes>
57
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
58
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
59
+ <handledReferenceSchemes />
60
+ <translatedElementType>java.lang.String</translatedElementType>
61
+ <allowsLiteralValues>true</allowsLiteralValues>
62
+ <name>base</name>
63
+ <depth>0</depth>
64
+ <mimeTypes>
65
+ <string>'text/x-taverna-web-url'</string>
66
+ </mimeTypes>
67
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
68
+ </inputs>
69
+ <outputs>
70
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
71
+ <granularDepth>0</granularDepth>
72
+ <name>contents</name>
73
+ <depth>0</depth>
74
+ <mimeTypes>
75
+ <string>'text/plain,text/html'</string>
76
+ </mimeTypes>
77
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
78
+ </outputs>
79
+ </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="">
80
+ <maxJobs>1</maxJobs>
81
+ </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="">
82
+ <backoffFactor>1.0</backoffFactor>
83
+ <initialDelay>1000</initialDelay>
84
+ <maxDelay>5000</maxDelay>
85
+ <maxRetries>0</maxRetries>
86
+ </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>xkcdURL</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="">
87
+ <value>http://xkcd.com/</value>
88
+ </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="">
89
+ <maxJobs>1</maxJobs>
90
+ </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="">
91
+ <backoffFactor>1.0</backoffFactor>
92
+ <initialDelay>1000</initialDelay>
93
+ <maxDelay>5000</maxDelay>
94
+ <maxRetries>0</maxRetries>
95
+ </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>getImageLinks</name><inputPorts><port><name>document</name><depth>0</depth></port></inputPorts><outputPorts><port><name>imagelinks</name><depth>1</depth><granularDepth>1</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="document" to="document" /></inputMap><outputMap><map from="imagelinks" to="imagelinks" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
96
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks</localworkerName>
97
+ <script>String lowerCaseContent = document.toLowerCase();
98
+ int index = 0;
99
+ List imagelinks = new ArrayList();
100
+ while ((index = lowerCaseContent.indexOf("&lt;img", index)) != -1) {
101
+ if ((index = lowerCaseContent.indexOf("src", index)) == -1)
102
+ break;
103
+ if ((index = lowerCaseContent.indexOf("=", index)) == -1)
104
+ break;
105
+ index++;
106
+ String remaining = document.substring(index);
107
+ StringTokenizer st = new StringTokenizer(remaining, "\t\n\r\"&gt;#");
108
+ String strLink = st.nextToken();
109
+ imagelinks.add(strLink);
110
+ }
111
+
112
+ </script>
113
+ <dependencies />
114
+ <classLoaderSharing>workflow</classLoaderSharing>
115
+ <localDependencies />
116
+ <artifactDependencies />
117
+ <inputs>
118
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
119
+ <handledReferenceSchemes />
120
+ <translatedElementType>java.lang.String</translatedElementType>
121
+ <allowsLiteralValues>true</allowsLiteralValues>
122
+ <name>document</name>
123
+ <depth>0</depth>
124
+ <mimeTypes>
125
+ <string>'text/html'</string>
126
+ </mimeTypes>
127
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
128
+ </inputs>
129
+ <outputs>
130
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
131
+ <granularDepth>1</granularDepth>
132
+ <name>imagelinks</name>
133
+ <depth>1</depth>
134
+ <mimeTypes>
135
+ <string>l('text/x-taverna-web-url')</string>
136
+ </mimeTypes>
137
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
138
+ </outputs>
139
+ </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="">
140
+ <maxJobs>1</maxJobs>
141
+ </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="">
142
+ <backoffFactor>1.0</backoffFactor>
143
+ <initialDelay>1000</initialDelay>
144
+ <maxDelay>5000</maxDelay>
145
+ <maxRetries>0</maxRetries>
146
+ </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="document" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>findComicURL</name><inputPorts><port><name>regex</name><depth>0</depth></port><port><name>stringlist</name><depth>1</depth></port></inputPorts><outputPorts><port><name>filteredlist</name><depth>1</depth><granularDepth>1</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="regex" to="regex" /><map from="stringlist" to="stringlist" /></inputMap><outputMap><map from="filteredlist" to="filteredlist" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
147
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.FilterStringList</localworkerName>
148
+ <script>filteredlist = new ArrayList();
149
+ for (Iterator i = stringlist.iterator(); i.hasNext();) {
150
+ String item = (String) i.next();
151
+ if (item.matches(regex)) {
152
+ filteredlist.add(item);
153
+ }
154
+ }
155
+ </script>
156
+ <dependencies />
157
+ <classLoaderSharing>workflow</classLoaderSharing>
158
+ <localDependencies />
159
+ <artifactDependencies />
160
+ <inputs>
161
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
162
+ <handledReferenceSchemes />
163
+ <translatedElementType>java.lang.String</translatedElementType>
164
+ <allowsLiteralValues>true</allowsLiteralValues>
165
+ <name>stringlist</name>
166
+ <depth>1</depth>
167
+ <mimeTypes>
168
+ <string>l('text/plain')</string>
169
+ </mimeTypes>
170
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
171
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
172
+ <handledReferenceSchemes />
173
+ <translatedElementType>java.lang.String</translatedElementType>
174
+ <allowsLiteralValues>true</allowsLiteralValues>
175
+ <name>regex</name>
176
+ <depth>0</depth>
177
+ <mimeTypes>
178
+ <string>'text/plain'</string>
179
+ </mimeTypes>
180
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
181
+ </inputs>
182
+ <outputs>
183
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
184
+ <granularDepth>1</granularDepth>
185
+ <name>filteredlist</name>
186
+ <depth>1</depth>
187
+ <mimeTypes>
188
+ <string>l('text/plain')</string>
189
+ </mimeTypes>
190
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
191
+ </outputs>
192
+ </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="">
193
+ <maxJobs>1</maxJobs>
194
+ </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="">
195
+ <backoffFactor>1.0</backoffFactor>
196
+ <initialDelay>1000</initialDelay>
197
+ <maxDelay>5000</maxDelay>
198
+ <maxRetries>0</maxRetries>
199
+ </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="regex" depth="0" /><port name="stringlist" depth="1" /></cross></strategy></iteration></iterationStrategyStack></processor><processor><name>comicURLRegex</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="">
200
+ <value>.*/comics/.*</value>
201
+ </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="">
202
+ <maxJobs>1</maxJobs>
203
+ </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="">
204
+ <backoffFactor>1.0</backoffFactor>
205
+ <initialDelay>1000</initialDelay>
206
+ <maxDelay>5000</maxDelay>
207
+ <maxRetries>0</maxRetries>
208
+ </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>getComicStrip</name><inputPorts><port><name>base</name><depth>0</depth></port><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="base" to="base" /><map from="url" to="url" /></inputMap><outputMap><map from="image" to="image" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
209
+ <localworkerName>org.embl.ebi.escience.scuflworkers.java.WebImageFetcher</localworkerName>
210
+ <script>URL inputURL = null;
211
+ if (base != void) {
212
+ inputURL = new URL(new URL(base), url);
213
+ } else {
214
+ inputURL = new URL(url);
215
+ }
216
+
217
+ byte[] contents;
218
+ if (inputURL.openConnection().getContentLength() == -1) {
219
+ // Content size unknown, must read first...
220
+ byte[] buffer = new byte[1024];
221
+ int bytesRead = 0;
222
+ int totalBytesRead = 0;
223
+ InputStream is = inputURL.openStream();
224
+ while (bytesRead != -1) {
225
+ totalBytesRead += bytesRead;
226
+ bytesRead = is.read(buffer, 0, 1024);
227
+ }
228
+ contents = new byte[totalBytesRead];
229
+ } else {
230
+ contents = new byte[inputURL.openConnection().getContentLength()];
231
+ }
232
+ int bytesRead = 0;
233
+ int totalBytesRead = 0;
234
+ InputStream is = inputURL.openStream();
235
+ while (bytesRead != -1) {
236
+ bytesRead = is.read(contents, totalBytesRead, contents.length - totalBytesRead);
237
+ totalBytesRead += bytesRead;
238
+ if (contents.length==totalBytesRead) break;
239
+ }
240
+
241
+ image = contents;
242
+ </script>
243
+ <dependencies />
244
+ <classLoaderSharing>workflow</classLoaderSharing>
245
+ <localDependencies />
246
+ <artifactDependencies />
247
+ <inputs>
248
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
249
+ <handledReferenceSchemes />
250
+ <translatedElementType>java.lang.String</translatedElementType>
251
+ <allowsLiteralValues>true</allowsLiteralValues>
252
+ <name>url</name>
253
+ <depth>0</depth>
254
+ <mimeTypes>
255
+ <string>'text/x-taverna-web-url'</string>
256
+ </mimeTypes>
257
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
258
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
259
+ <handledReferenceSchemes />
260
+ <translatedElementType>java.lang.String</translatedElementType>
261
+ <allowsLiteralValues>true</allowsLiteralValues>
262
+ <name>base</name>
263
+ <depth>0</depth>
264
+ <mimeTypes>
265
+ <string>'text/x-taverna-web-url'</string>
266
+ </mimeTypes>
267
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
268
+ </inputs>
269
+ <outputs>
270
+ <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
271
+ <granularDepth>0</granularDepth>
272
+ <name>image</name>
273
+ <depth>0</depth>
274
+ <mimeTypes>
275
+ <string>'image/*'</string>
276
+ </mimeTypes>
277
+ </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
278
+ </outputs>
279
+ </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="">
280
+ <maxJobs>1</maxJobs>
281
+ </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="">
282
+ <backoffFactor>1.0</backoffFactor>
283
+ <initialDelay>1000</initialDelay>
284
+ <maxDelay>5000</maxDelay>
285
+ <maxRetries>0</maxRetries>
286
+ </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="base" depth="0" /><port name="url" depth="0" /></cross></strategy></iteration></iterationStrategyStack></processor></processors><conditions /><datalinks><datalink><sink type="processor"><processor>getPage</processor><port>url</port></sink><source type="processor"><processor>xkcdURL</processor><port>value</port></source></datalink><datalink><sink type="processor"><processor>getImageLinks</processor><port>document</port></sink><source type="processor"><processor>getPage</processor><port>contents</port></source></datalink><datalink><sink type="processor"><processor>findComicURL</processor><port>regex</port></sink><source type="processor"><processor>comicURLRegex</processor><port>value</port></source></datalink><datalink><sink type="processor"><processor>findComicURL</processor><port>stringlist</port></sink><source type="processor"><processor>getImageLinks</processor><port>imagelinks</port></source></datalink><datalink><sink type="processor"><processor>getComicStrip</processor><port>base</port></sink><source type="processor"><processor>xkcdURL</processor><port>value</port></source></datalink><datalink><sink type="processor"><processor>getComicStrip</processor><port>url</port></sink><source type="processor"><processor>findComicURL</processor><port>filteredlist</port></source></datalink><datalink><sink type="dataflow"><port>todaysXkcd</port></sink><source type="processor"><processor>getComicStrip</processor><port>image</port></source></datalink></datalinks><annotations><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
287
+ <annotationAssertions>
288
+ <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
289
+ <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.FreeTextDescription">
290
+ <text>Use the local java plugins and some filtering operations to fetch the comic strip image from http://xkcd.com/
291
+
292
+ Based on the FetchDailyDilbert workflow.</text>
293
+ </annotationBean>
294
+ <date>2009-12-15 20:39:17.683 GMT</date>
295
+ <creators />
296
+ <curationEventList />
297
+ </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
298
+ </annotationAssertions>
299
+ </net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
300
+ <annotationAssertions>
301
+ <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
302
+ <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.Author">
303
+ <text>Tom Oinn, Stian Soiland-Reyes</text>
304
+ </annotationBean>
305
+ <date>2009-12-15 20:38:58.43 GMT</date>
306
+ <creators />
307
+ <curationEventList />
308
+ </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
309
+ </annotationAssertions>
310
+ </net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain><annotation_chain encoding="xstream"><net.sf.taverna.t2.annotation.AnnotationChainImpl xmlns="">
311
+ <annotationAssertions>
312
+ <net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
313
+ <annotationBean class="net.sf.taverna.t2.annotation.annotationbeans.DescriptiveTitle">
314
+ <text>Fetch today's xkcd comic</text>
315
+ </annotationBean>
316
+ <date>2009-12-15 20:39:06.623 GMT</date>
317
+ <creators />
318
+ <curationEventList />
319
+ </net.sf.taverna.t2.annotation.AnnotationAssertionImpl>
320
+ </annotationAssertions>
321
+ </net.sf.taverna.t2.annotation.AnnotationChainImpl></annotation_chain></annotations></dataflow></workflow>