<?xml version="1.0"?> | |
<!-- | |
* Licensed to the Apache Software Foundation (ASF) under one | |
* or more contributor license agreements. See the NOTICE file | |
* distributed with this work for additional information | |
* regarding copyright ownership. The ASF licenses this file | |
* to you under the Apache License, Version 2.0 (the | |
* "License"); you may not use this file except in compliance | |
* with the License. You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, | |
* software distributed under the License is distributed on an | |
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
* KIND, either express or implied. See the License for the | |
* specific language governing permissions and limitations | |
* under the License. | |
--> | |
<workflow xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xsi:schemaLocation="http://taverna.sf.net/2008/xml/t2flow ../../main/resources/org/apache/taverna/scufl2/translator/t2flow/xsd/t2flow-extended.xsd " | |
xmlns="http://taverna.sf.net/2008/xml/t2flow" version="1" | |
producedBy="taverna-2.4.0SNAPSHOT"> | |
<dataflow id="2d726ace-4635-4bd1-89d5-703a50c96c1a" role="top"> | |
<name>Example_component</name> | |
<inputPorts> | |
<port> | |
<name>suffix</name> | |
<depth>0</depth> | |
<granularDepth>0</granularDepth> | |
<annotations /> | |
</port> | |
</inputPorts> | |
<outputPorts> | |
<port> | |
<name>result</name> | |
<annotations /> | |
</port> | |
</outputPorts> | |
<processors> | |
<processor> | |
<name>Create_Lots_Of_Strings</name> | |
<inputPorts /> | |
<outputPorts> | |
<port> | |
<name>strings</name> | |
<depth>1</depth> | |
<granularDepth>1</granularDepth> | |
</port> | |
</outputPorts> | |
<annotations /> | |
<activities> | |
<activity> | |
<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class> | |
<inputMap /> | |
<outputMap> | |
<map from="strings" to="strings" /> | |
</outputMap> | |
<configBean encoding="xstream"> | |
<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean | |
xmlns=""> | |
<inputs /> | |
<outputs> | |
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean> | |
<name>strings</name> | |
<depth>1</depth> | |
<mimeTypes> | |
<string>l('text/plain')</string> | |
</mimeTypes> | |
<granularDepth>1</granularDepth> | |
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean> | |
</outputs> | |
<classLoaderSharing>workflow</classLoaderSharing> | |
<localDependencies /> | |
<artifactDependencies /> | |
<script>List strings = new ArrayList(); | |
for (int i = 0; i < 40; i++) { | |
strings.add("String" + i); | |
} | |
</script> | |
<dependencies /> | |
<localworkerName>org.embl.ebi.escience.scuflworkers.java.EmitLotsOfStrings</localworkerName> | |
</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean> | |
</configBean> | |
<annotations /> | |
</activity> | |
</activities> | |
<dispatchStack> | |
<dispatchLayer> | |
<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class> | |
<configBean encoding="xstream"> | |
<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig | |
xmlns=""> | |
<maxJobs>1</maxJobs> | |
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig> | |
</configBean> | |
</dispatchLayer> | |
<dispatchLayer> | |
<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class> | |
<configBean encoding="xstream"> | |
<null xmlns="" /> | |
</configBean> | |
</dispatchLayer> | |
<dispatchLayer> | |
<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class> | |
<configBean encoding="xstream"> | |
<null xmlns="" /> | |
</configBean> | |
</dispatchLayer> | |
<dispatchLayer> | |
<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class> | |
<configBean encoding="xstream"> | |
<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig | |
xmlns=""> | |
<backoffFactor>1.0</backoffFactor> | |
<initialDelay>1000</initialDelay> | |
<maxDelay>5000</maxDelay> | |
<maxRetries>0</maxRetries> | |
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig> | |
</configBean> | |
</dispatchLayer> | |
<dispatchLayer> | |
<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>Sometimes_Fails</name> | |
<inputPorts> | |
<port> | |
<name>in</name> | |
<depth>0</depth> | |
</port> | |
</inputPorts> | |
<outputPorts> | |
<port> | |
<name>out</name> | |
<depth>0</depth> | |
<granularDepth>0</granularDepth> | |
</port> | |
</outputPorts> | |
<annotations /> | |
<activities> | |
<activity> | |
<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class> | |
<inputMap> | |
<map from="in" to="in" /> | |
</inputMap> | |
<outputMap> | |
<map from="out" to="out" /> | |
</outputMap> | |
<configBean encoding="xstream"> | |
<net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean | |
xmlns=""> | |
<inputs> | |
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean> | |
<name>in</name> | |
<depth>0</depth> | |
<mimeTypes> | |
<string>'text/plain'</string> | |
</mimeTypes> | |
<handledReferenceSchemes /> | |
<translatedElementType>java.lang.String</translatedElementType> | |
<allowsLiteralValues>true</allowsLiteralValues> | |
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean> | |
</inputs> | |
<outputs> | |
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean> | |
<name>out</name> | |
<depth>0</depth> | |
<mimeTypes> | |
<string>'text/plain'</string> | |
</mimeTypes> | |
<granularDepth>0</granularDepth> | |
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean> | |
</outputs> | |
<classLoaderSharing>workflow</classLoaderSharing> | |
<localDependencies /> | |
<artifactDependencies /> | |
<script>import java.util.Random; | |
Random r = new Random(); | |
if ((r.nextInt() % 4) == 0) { | |
throw new RuntimeException("Fails every four runs!"); | |
} | |
out = in;</script> | |
<dependencies /> | |
<localworkerName>org.embl.ebi.escience.scuflworkers.java.TestSometimesFails</localworkerName> | |
</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean> | |
</configBean> | |
<annotations /> | |
</activity> | |
</activities> | |
<dispatchStack> | |
<dispatchLayer> | |
<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class> | |
<configBean encoding="xstream"> | |
<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig | |
xmlns=""> | |
<maxJobs>1</maxJobs> | |
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig> | |
</configBean> | |
</dispatchLayer> | |
<dispatchLayer> | |
<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class> | |
<configBean encoding="xstream"> | |
<null xmlns="" /> | |
</configBean> | |
</dispatchLayer> | |
<dispatchLayer> | |
<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class> | |
<configBean encoding="xstream"> | |
<null xmlns="" /> | |
</configBean> | |
</dispatchLayer> | |
<dispatchLayer> | |
<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class> | |
<configBean encoding="xstream"> | |
<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig | |
xmlns=""> | |
<backoffFactor>1.0</backoffFactor> | |
<initialDelay>1000</initialDelay> | |
<maxDelay>5000</maxDelay> | |
<maxRetries>0</maxRetries> | |
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig> | |
</configBean> | |
</dispatchLayer> | |
<dispatchLayer> | |
<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="in" depth="0" /> | |
</cross> | |
</strategy> | |
</iteration> | |
</iterationStrategyStack> | |
</processor> | |
<processor> | |
<name>Concatenate_two_strings</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> | |
<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=""> | |
<inputs> | |
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean> | |
<name>string1</name> | |
<depth>0</depth> | |
<mimeTypes> | |
<string>'text/plain'</string> | |
</mimeTypes> | |
<handledReferenceSchemes /> | |
<translatedElementType>java.lang.String</translatedElementType> | |
<allowsLiteralValues>true</allowsLiteralValues> | |
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean> | |
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean> | |
<name>string2</name> | |
<depth>0</depth> | |
<mimeTypes> | |
<string>'text/plain'</string> | |
</mimeTypes> | |
<handledReferenceSchemes /> | |
<translatedElementType>java.lang.String</translatedElementType> | |
<allowsLiteralValues>true</allowsLiteralValues> | |
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean> | |
</inputs> | |
<outputs> | |
<net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean> | |
<name>output</name> | |
<depth>0</depth> | |
<mimeTypes> | |
<string>'text/plain'</string> | |
</mimeTypes> | |
<granularDepth>0</granularDepth> | |
</net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean> | |
</outputs> | |
<classLoaderSharing>workflow</classLoaderSharing> | |
<localDependencies /> | |
<artifactDependencies /> | |
<script>output = string1 + string2;</script> | |
<dependencies /> | |
<localworkerName>org.embl.ebi.escience.scuflworkers.java.StringConcat</localworkerName> | |
</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean> | |
</configBean> | |
<annotations /> | |
</activity> | |
</activities> | |
<dispatchStack> | |
<dispatchLayer> | |
<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize</class> | |
<configBean encoding="xstream"> | |
<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig | |
xmlns=""> | |
<maxJobs>1</maxJobs> | |
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ParallelizeConfig> | |
</configBean> | |
</dispatchLayer> | |
<dispatchLayer> | |
<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBounce</class> | |
<configBean encoding="xstream"> | |
<null xmlns="" /> | |
</configBean> | |
</dispatchLayer> | |
<dispatchLayer> | |
<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failover</class> | |
<configBean encoding="xstream"> | |
<null xmlns="" /> | |
</configBean> | |
</dispatchLayer> | |
<dispatchLayer> | |
<class>net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry</class> | |
<configBean encoding="xstream"> | |
<net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig | |
xmlns=""> | |
<backoffFactor>1.0</backoffFactor> | |
<initialDelay>1000</initialDelay> | |
<maxDelay>5000</maxDelay> | |
<maxRetries>0</maxRetries> | |
</net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.RetryConfig> | |
</configBean> | |
</dispatchLayer> | |
<dispatchLayer> | |
<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> | |
</processors> | |
<conditions /> | |
<datalinks> | |
<datalink> | |
<sink type="processor"> | |
<processor>Sometimes_Fails</processor> | |
<port>in</port> | |
</sink> | |
<source type="processor"> | |
<processor>Create_Lots_Of_Strings</processor> | |
<port>strings</port> | |
</source> | |
</datalink> | |
<datalink> | |
<sink type="processor"> | |
<processor>Concatenate_two_strings</processor> | |
<port>string2</port> | |
</sink> | |
<source type="dataflow"> | |
<port>suffix</port> | |
</source> | |
</datalink> | |
<datalink> | |
<sink type="processor"> | |
<processor>Concatenate_two_strings</processor> | |
<port>string1</port> | |
</sink> | |
<source type="processor"> | |
<processor>Sometimes_Fails</processor> | |
<port>out</port> | |
</source> | |
</datalink> | |
<datalink> | |
<sink type="dataflow"> | |
<port>result</port> | |
</sink> | |
<source type="processor"> | |
<processor>Concatenate_two_strings</processor> | |
<port>output</port> | |
</source> | |
</datalink> | |
</datalinks> | |
<annotations> | |
<annotation_chain_2_2 encoding="xstream"> | |
<net.sf.taverna.t2.annotation.AnnotationChainImpl | |
xmlns=""> | |
<annotationAssertions> | |
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl> | |
<annotationBean | |
class="net.sf.taverna.t2.annotation.annotationbeans.SemanticAnnotation"> | |
<mimeType>text/rdf+n3</mimeType> | |
<content><> | |
<http://purl.org/dc/terms/abstract> | |
"A not very interesting | |
component"^^<http://www.w3.org/2001/XMLSchema#string> ; | |
<http://purl.org/dc/terms/accessRights> | |
<http://creativecommons.org/licenses/by-sa/3.0/> ; | |
<http://purl.org/dc/terms/alternative> | |
"A very interesting | |
component"^^<http://www.w3.org/2001/XMLSchema#string> ; | |
<http://purl.org/dc/terms/audience> | |
<http://purl.org/dc/terms/Agent> ; | |
<http://purl.org/dc/terms/title> | |
"Alan's annotated | |
title"^^<http://www.w3.org/2001/XMLSchema#string> . | |
</content> | |
</annotationBean> | |
<date>2013-03-13 15:22:30.556 UTC</date> | |
<creators /> | |
<curationEventList /> | |
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl> | |
</annotationAssertions> | |
</net.sf.taverna.t2.annotation.AnnotationChainImpl> | |
</annotation_chain_2_2> | |
<annotation_chain encoding="xstream"> | |
<net.sf.taverna.t2.annotation.AnnotationChainImpl | |
xmlns=""> | |
<annotationAssertions> | |
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl> | |
<annotationBean | |
class="net.sf.taverna.t2.annotation.annotationbeans.DescriptiveTitle"> | |
<text>Example component</text> | |
</annotationBean> | |
<date>2013-03-13 15:19:26.250 UTC</date> | |
<creators /> | |
<curationEventList /> | |
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl> | |
</annotationAssertions> | |
</net.sf.taverna.t2.annotation.AnnotationChainImpl> | |
</annotation_chain> | |
<annotation_chain encoding="xstream"> | |
<net.sf.taverna.t2.annotation.AnnotationChainImpl | |
xmlns=""> | |
<annotationAssertions> | |
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl> | |
<annotationBean | |
class="net.sf.taverna.t2.annotation.annotationbeans.FreeTextDescription"> | |
<text>Example component for Stian</text> | |
</annotationBean> | |
<date>2013-03-13 15:19:35.27 UTC</date> | |
<creators /> | |
<curationEventList /> | |
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl> | |
</annotationAssertions> | |
</net.sf.taverna.t2.annotation.AnnotationChainImpl> | |
</annotation_chain> | |
<annotation_chain_2_2 encoding="xstream"> | |
<net.sf.taverna.t2.annotation.AnnotationChainImpl | |
xmlns=""> | |
<annotationAssertions> | |
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl> | |
<annotationBean | |
class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion"> | |
<identification>2d726ace-4635-4bd1-89d5-703a50c96c1a | |
</identification> | |
</annotationBean> | |
<date>2013-03-13 15:22:59.520 UTC</date> | |
<creators /> | |
<curationEventList /> | |
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl> | |
</annotationAssertions> | |
</net.sf.taverna.t2.annotation.AnnotationChainImpl> | |
</annotation_chain_2_2> | |
<annotation_chain_2_2 encoding="xstream"> | |
<net.sf.taverna.t2.annotation.AnnotationChainImpl | |
xmlns=""> | |
<annotationAssertions> | |
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl> | |
<annotationBean | |
class="net.sf.taverna.t2.annotation.annotationbeans.IdentificationAssertion"> | |
<identification>1eefd4e6-f1e2-45f3-b085-10a372d4afca | |
</identification> | |
</annotationBean> | |
<date>2013-03-13 15:18:53.766 UTC</date> | |
<creators /> | |
<curationEventList /> | |
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl> | |
</annotationAssertions> | |
</net.sf.taverna.t2.annotation.AnnotationChainImpl> | |
</annotation_chain_2_2> | |
<annotation_chain encoding="xstream"> | |
<net.sf.taverna.t2.annotation.AnnotationChainImpl | |
xmlns=""> | |
<annotationAssertions> | |
<net.sf.taverna.t2.annotation.AnnotationAssertionImpl> | |
<annotationBean | |
class="net.sf.taverna.t2.annotation.annotationbeans.Author"> | |
<text>Alan R Williams</text> | |
</annotationBean> | |
<date>2013-03-13 15:19:22.146 UTC</date> | |
<creators /> | |
<curationEventList /> | |
</net.sf.taverna.t2.annotation.AnnotationAssertionImpl> | |
</annotationAssertions> | |
</net.sf.taverna.t2.annotation.AnnotationChainImpl> | |
</annotation_chain> | |
</annotations> | |
</dataflow> | |
</workflow> |