You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2015/02/17 12:48:36 UTC

[17/50] [abbrv] incubator-taverna-workbench-common-activities git commit: taverna-localworker-activity-ui/

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EncodeBase64
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EncodeBase64 b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EncodeBase64
new file mode 100644
index 0000000..8f6bcd0
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EncodeBase64
@@ -0,0 +1,30 @@
+<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+  <script>import org.apache.commons.codec.binary.Base64;
+
+base64 = new String(Base64.encodeBase64(bytes));</script>
+  <dependencies class="java.util.Collections$SingletonList">
+    <element class="string">commons-codec:commons-codec:1.3</element>
+  </dependencies>
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>[B</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>bytes</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'application/octet-stream'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+      <granularDepth>0</granularDepth>
+      <name>base64</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+  </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EncodeBase64.json
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EncodeBase64.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EncodeBase64.json
new file mode 100644
index 0000000..5cbd786
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EncodeBase64.json
@@ -0,0 +1,16 @@
+{
+  "classLoaderSharing" : "workflow",
+  "script" : "import org.apache.commons.codec.binary.Base64;\n\nbase64 = new String(Base64.encodeBase64(bytes));",
+  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.EncodeBase64",
+  "inputPorts" : [ {
+    "name" : "bytes",
+    "depth" : 0,
+    "type" : "byte[]"
+  } ],
+  "outputPorts" : [ {
+    "name" : "base64",
+    "depth" : 0,
+    "granularDepth" : 0
+  } ],
+  "isAltered" : false
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks
new file mode 100644
index 0000000..05946b1
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks
@@ -0,0 +1,41 @@
+<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+  <script>String lowerCaseContent = document.toLowerCase();
+int index = 0;
+List imagelinks = new ArrayList();
+while ((index = lowerCaseContent.indexOf("&lt;img", index)) != -1) {
+	if ((index = lowerCaseContent.indexOf("src", index)) == -1)
+		break;
+	if ((index = lowerCaseContent.indexOf("=", index)) == -1)
+		break;
+	index++;
+	String remaining = document.substring(index);
+	StringTokenizer st = new StringTokenizer(remaining, "\t\n\r\"&gt;#");
+	String strLink = st.nextToken();
+	imagelinks.add(strLink);
+}
+
+</script>
+  <dependencies />
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>document</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/html'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+      <granularDepth>1</granularDepth>
+      <name>imagelinks</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('text/x-taverna-web-url')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+  </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks.json
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks.json
new file mode 100644
index 0000000..2a23a47
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks.json
@@ -0,0 +1,16 @@
+{
+  "classLoaderSharing" : "workflow",
+  "script" : "String lowerCaseContent = document.toLowerCase();\nint index = 0;\nList imagelinks = new ArrayList();\nwhile ((index = lowerCaseContent.indexOf(\"<img\", index)) != -1) {\n\tif ((index = lowerCaseContent.indexOf(\"src\", index)) == -1)\n\t\tbreak;\n\tif ((index = lowerCaseContent.indexOf(\"=\", index)) == -1)\n\t\tbreak;\n\tindex++;\n\tString remaining = document.substring(index);\n\tStringTokenizer st = new StringTokenizer(remaining, \"\\t\\n\\r\\\">#\");\n\tString strLink = st.nextToken();\n\timagelinks.add(strLink);\n}\n\n",
+  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks",
+  "inputPorts" : [ {
+    "name" : "document",
+    "depth" : 0,
+    "type" : "String"
+  } ],
+  "outputPorts" : [ {
+    "name" : "imagelinks",
+    "depth" : 1,
+    "granularDepth" : 1
+  } ],
+  "isAltered" : false
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FilterStringList
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FilterStringList b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FilterStringList
new file mode 100644
index 0000000..7b107e6
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FilterStringList
@@ -0,0 +1,43 @@
+<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+  <script>filteredlist = new ArrayList();
+for (Iterator i = stringlist.iterator(); i.hasNext();) {
+	String item = (String) i.next();
+	if (item.matches(regex)) {
+		filteredlist.add(item);
+	}
+}
+</script>
+  <dependencies />
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>stringlist</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('text/plain')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>regex</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+      <granularDepth>1</granularDepth>
+      <name>filteredlist</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('text/plain')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+  </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FilterStringList.json
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FilterStringList.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FilterStringList.json
new file mode 100644
index 0000000..0f26e3e
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FilterStringList.json
@@ -0,0 +1,20 @@
+{
+  "classLoaderSharing" : "workflow",
+  "script" : "filteredlist = new ArrayList();\nfor (Iterator i = stringlist.iterator(); i.hasNext();) {\n\tString item = (String) i.next();\n\tif (item.matches(regex)) {\n\t\tfilteredlist.add(item);\n\t}\n}\n",
+  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.FilterStringList",
+  "inputPorts" : [ {
+    "name" : "stringlist",
+    "depth" : 1,
+    "type" : "String"
+  }, {
+    "name" : "regex",
+    "depth" : 0,
+    "type" : "String"
+  } ],
+  "outputPorts" : [ {
+    "name" : "filteredlist",
+    "depth" : 1,
+    "granularDepth" : 1
+  } ],
+  "isAltered" : false
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FlattenList
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FlattenList b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FlattenList
new file mode 100644
index 0000000..558cc99
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FlattenList
@@ -0,0 +1,39 @@
+<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+  <script>flatten(inputs, outputs, depth) {
+	for (i = inputs.iterator(); i.hasNext();) {
+	    element = i.next();
+		if (element instanceof Collection &amp;&amp; depth &gt; 0) {
+			flatten(element, outputs, depth - 1);
+		} else {
+			outputs.add(element);
+		}
+	}
+}
+
+outputlist = new ArrayList();
+
+flatten(inputlist, outputlist, 1);</script>
+  <dependencies />
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>[B</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>inputlist</name>
+      <depth>2</depth>
+      <mimeTypes>
+        <string>l(l(''))</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+      <granularDepth>1</granularDepth>
+      <name>outputlist</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+  </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FlattenList.json
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FlattenList.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FlattenList.json
new file mode 100644
index 0000000..4992e0b
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FlattenList.json
@@ -0,0 +1,16 @@
+{
+  "classLoaderSharing" : "workflow",
+  "script" : "flatten(inputs, outputs, depth) {\n\tfor (i = inputs.iterator(); i.hasNext();) {\n\t    element = i.next();\n\t\tif (element instanceof Collection && depth > 0) {\n\t\t\tflatten(element, outputs, depth - 1);\n\t\t} else {\n\t\t\toutputs.add(element);\n\t\t}\n\t}\n}\n\noutputlist = new ArrayList();\n\nflatten(inputlist, outputlist, 1);",
+  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.FlattenList",
+  "inputPorts" : [ {
+    "name" : "inputlist",
+    "depth" : 2,
+    "type" : "byte[]"
+  } ],
+  "outputPorts" : [ {
+    "name" : "outputlist",
+    "depth" : 1,
+    "granularDepth" : 1
+  } ],
+  "isAltered" : false
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.PadNumber
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.PadNumber b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.PadNumber
new file mode 100644
index 0000000..3edd0cf
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.PadNumber
@@ -0,0 +1,44 @@
+<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+  <script>int targetLengthInt = 7;
+if (targetlength != void) {
+	targetLengthInt = Integer.parseInt(targetlength);
+}
+int currentLength = input.length();
+while (input.length() &lt; targetLengthInt) {
+	input = "0" + input;
+}
+padded = input;</script>
+  <dependencies />
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>input</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>targetlength</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+      <granularDepth>0</granularDepth>
+      <name>padded</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+  </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.PadNumber.json
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.PadNumber.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.PadNumber.json
new file mode 100644
index 0000000..37828ea
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.PadNumber.json
@@ -0,0 +1,20 @@
+{
+  "classLoaderSharing" : "workflow",
+  "script" : "int targetLengthInt = 7;\nif (targetlength != void) {\n\ttargetLengthInt = Integer.parseInt(targetlength);\n}\nint currentLength = input.length();\nwhile (input.length() < targetLengthInt) {\n\tinput = \"0\" + input;\n}\npadded = input;",
+  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.PadNumber",
+  "inputPorts" : [ {
+    "name" : "input",
+    "depth" : 0,
+    "type" : "String"
+  }, {
+    "name" : "targetlength",
+    "depth" : 0,
+    "type" : "String"
+  } ],
+  "outputPorts" : [ {
+    "name" : "padded",
+    "depth" : 0,
+    "granularDepth" : 0
+  } ],
+  "isAltered" : false
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.RegularExpressionStringList
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.RegularExpressionStringList b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.RegularExpressionStringList
new file mode 100644
index 0000000..7a4165a
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.RegularExpressionStringList
@@ -0,0 +1,60 @@
+<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+  <script>import java.util.regex.*;
+
+filteredlist = new ArrayList();
+Pattern thePat = Pattern.compile(regex);
+int theGroup = Integer.parseInt(group);
+
+for (Iterator i = stringlist.iterator(); i.hasNext();) {
+	String item = (String) i.next();
+	Matcher matcher = thePat.matcher(item);
+
+	if (matcher.find()) {
+		filteredlist.add(matcher.group(theGroup));
+	}
+}
+</script>
+  <dependencies />
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>stringlist</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('text/plain')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>regex</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>group</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+      <granularDepth>1</granularDepth>
+      <name>filteredlist</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('text/plain')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+  </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.RegularExpressionStringList.json
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.RegularExpressionStringList.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.RegularExpressionStringList.json
new file mode 100644
index 0000000..86378fb
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.RegularExpressionStringList.json
@@ -0,0 +1,24 @@
+{
+  "classLoaderSharing" : "workflow",
+  "script" : "import java.util.regex.*;\n\nfilteredlist = new ArrayList();\nPattern thePat = Pattern.compile(regex);\nint theGroup = Integer.parseInt(group);\n\nfor (Iterator i = stringlist.iterator(); i.hasNext();) {\n\tString item = (String) i.next();\n\tMatcher matcher = thePat.matcher(item);\n\n\tif (matcher.find()) {\n\t\tfilteredlist.add(matcher.group(theGroup));\n\t}\n}\n",
+  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.RegularExpressionStringList",
+  "inputPorts" : [ {
+    "name" : "stringlist",
+    "depth" : 1,
+    "type" : "String"
+  }, {
+    "name" : "regex",
+    "depth" : 0,
+    "type" : "String"
+  }, {
+    "name" : "group",
+    "depth" : 0,
+    "type" : "String"
+  } ],
+  "outputPorts" : [ {
+    "name" : "filteredlist",
+    "depth" : 1,
+    "granularDepth" : 1
+  } ],
+  "isAltered" : false
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SendEmail
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SendEmail b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SendEmail
new file mode 100644
index 0000000..f847773
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SendEmail
@@ -0,0 +1,85 @@
+<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+  <script>import javax.mail.Message;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.MimeMessage;
+import javax.mail.internet.InternetAddress;
+
+if (subject == void) {
+	subject = "No subject";
+}
+if (body == void) {
+	throw new Exception("No body specified for message");
+}
+
+Properties mailProps = System.getProperties();
+if (smtpserver != void) {
+	mailProps.put("mail.smtp.host", smtpserver);
+}
+
+Session session = Session.getDefaultInstance(mailProps, null);
+MimeMessage message = new MimeMessage(session);
+message.setFrom(new InternetAddress(from));
+message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
+message.setSubject(subject);
+message.setText(body);
+Transport.send(message);
+</script>
+  <dependencies>
+    <string>javax.mail:mail:1.4</string>
+    <string>javax.activation:activation:1.1</string>
+  </dependencies>
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>to</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>from</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>subject</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>body</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>smtpserver</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs />
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SendEmail.json
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SendEmail.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SendEmail.json
new file mode 100644
index 0000000..9a7365d
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SendEmail.json
@@ -0,0 +1,27 @@
+{
+  "classLoaderSharing" : "workflow",
+  "script" : "import javax.mail.Message;\nimport javax.mail.Session;\nimport javax.mail.Transport;\nimport javax.mail.internet.MimeMessage;\nimport javax.mail.internet.InternetAddress;\n\nif (subject == void) {\n\tsubject = \"No subject\";\n}\nif (body == void) {\n\tthrow new Exception(\"No body specified for message\");\n}\n\nProperties mailProps = System.getProperties();\nif (smtpserver != void) {\n\tmailProps.put(\"mail.smtp.host\", smtpserver);\n}\n\nSession session = Session.getDefaultInstance(mailProps, null);\nMimeMessage message = new MimeMessage(session);\nmessage.setFrom(new InternetAddress(from));\nmessage.addRecipient(Message.RecipientType.TO, new InternetAddress(to));\nmessage.setSubject(subject);\nmessage.setText(body);\nTransport.send(message);\n",
+  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.SendEmail",
+  "inputPorts" : [ {
+    "name" : "to",
+    "depth" : 0,
+    "type" : "String"
+  }, {
+    "name" : "from",
+    "depth" : 0,
+    "type" : "String"
+  }, {
+    "name" : "subject",
+    "depth" : 0,
+    "type" : "String"
+  }, {
+    "name" : "body",
+    "depth" : 0,
+    "type" : "String"
+  }, {
+    "name" : "smtpserver",
+    "depth" : 0,
+    "type" : "String"
+  } ],
+  "isAltered" : false
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SplitByRegex
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SplitByRegex b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SplitByRegex
new file mode 100644
index 0000000..7c296f3
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SplitByRegex
@@ -0,0 +1,47 @@
+<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+  <script>List split = new ArrayList();
+if (!string.equals("")) {
+	String regexString = ",";
+	if (regex != void) {
+		regexString = regex;
+	}
+	String[] result = string.split(regexString);
+	for (int i = 0; i &lt; result.length; i++) {
+		split.add(result[i]);
+	}
+}
+</script>
+  <dependencies />
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>string</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>regex</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+      <granularDepth>1</granularDepth>
+      <name>split</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('text/plain')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+  </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SplitByRegex.json
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SplitByRegex.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SplitByRegex.json
new file mode 100644
index 0000000..afbdc78
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SplitByRegex.json
@@ -0,0 +1,20 @@
+{
+  "classLoaderSharing" : "workflow",
+  "script" : "List split = new ArrayList();\nif (!string.equals(\"\")) {\n\tString regexString = \",\";\n\tif (regex != void) {\n\t\tregexString = regex;\n\t}\n\tString[] result = string.split(regexString);\n\tfor (int i = 0; i < result.length; i++) {\n\t\tsplit.add(result[i]);\n\t}\n}\n",
+  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.SplitByRegex",
+  "inputPorts" : [ {
+    "name" : "string",
+    "depth" : 0,
+    "type" : "String"
+  }, {
+    "name" : "regex",
+    "depth" : 0,
+    "type" : "String"
+  } ],
+  "outputPorts" : [ {
+    "name" : "split",
+    "depth" : 1,
+    "granularDepth" : 1
+  } ],
+  "isAltered" : false
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringConcat
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringConcat b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringConcat
new file mode 100644
index 0000000..7993975
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringConcat
@@ -0,0 +1,36 @@
+<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+  <script>output = string1 + string2;</script>
+  <dependencies />
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>string1</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>string2</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+      <granularDepth>0</granularDepth>
+      <name>output</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+  </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringConcat.json
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringConcat.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringConcat.json
new file mode 100644
index 0000000..24a3fa9
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringConcat.json
@@ -0,0 +1,20 @@
+{
+  "classLoaderSharing" : "workflow",
+  "script" : "output = string1 + string2;",
+  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.StringConcat",
+  "inputPorts" : [ {
+    "name" : "string1",
+    "depth" : 0,
+    "type" : "String"
+  }, {
+    "name" : "string2",
+    "depth" : 0,
+    "type" : "String"
+  } ],
+  "outputPorts" : [ {
+    "name" : "output",
+    "depth" : 0,
+    "granularDepth" : 0
+  } ],
+  "isAltered" : false
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringListMerge
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringListMerge b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringListMerge
new file mode 100644
index 0000000..cdd408d
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringListMerge
@@ -0,0 +1,49 @@
+<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+  <script>String seperatorString = "\n";
+if (seperator != void) {
+	seperatorString = seperator;
+}
+StringBuffer sb = new StringBuffer();
+for (Iterator i = stringlist.iterator(); i.hasNext();) {
+	String item = (String) i.next();
+	sb.append(item);
+	if (i.hasNext()) {
+		sb.append(seperatorString);
+	}
+}
+concatenated = sb.toString();
+</script>
+  <dependencies />
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>stringlist</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('text/plain')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>seperator</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+      <granularDepth>0</granularDepth>
+      <name>concatenated</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+  </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringListMerge.json
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringListMerge.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringListMerge.json
new file mode 100644
index 0000000..a0b860f
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringListMerge.json
@@ -0,0 +1,20 @@
+{
+  "classLoaderSharing" : "workflow",
+  "script" : "String seperatorString = \"\\n\";\nif (seperator != void) {\n\tseperatorString = seperator;\n}\nStringBuffer sb = new StringBuffer();\nfor (Iterator i = stringlist.iterator(); i.hasNext();) {\n\tString item = (String) i.next();\n\tsb.append(item);\n\tif (i.hasNext()) {\n\t\tsb.append(seperatorString);\n\t}\n}\nconcatenated = sb.toString();\n",
+  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.StringListMerge",
+  "inputPorts" : [ {
+    "name" : "stringlist",
+    "depth" : 1,
+    "type" : "String"
+  }, {
+    "name" : "seperator",
+    "depth" : 0,
+    "type" : "String"
+  } ],
+  "outputPorts" : [ {
+    "name" : "concatenated",
+    "depth" : 0,
+    "granularDepth" : 0
+  } ],
+  "isAltered" : false
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetDifference
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetDifference b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetDifference
new file mode 100644
index 0000000..c7bb289
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetDifference
@@ -0,0 +1,49 @@
+<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+  <script>List difference = new ArrayList();
+for (Iterator i = list1.iterator(); i.hasNext();) {
+	Object o = i.next();
+	if (!list2.contains(o)) {
+		difference.add(o);
+	}
+}
+for (Iterator i = list2.iterator(); i.hasNext();) {
+	Object o = i.next();
+	if (!list1.contains(o)) {
+		difference.add(o);
+	}
+}
+</script>
+  <dependencies />
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>list1</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('text/plain')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>list2</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('text/plain')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+      <granularDepth>1</granularDepth>
+      <name>difference</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('text/plain')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+  </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetDifference.json
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetDifference.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetDifference.json
new file mode 100644
index 0000000..c844322
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetDifference.json
@@ -0,0 +1,20 @@
+{
+  "classLoaderSharing" : "workflow",
+  "script" : "List difference = new ArrayList();\nfor (Iterator i = list1.iterator(); i.hasNext();) {\n\tObject o = i.next();\n\tif (!list2.contains(o)) {\n\t\tdifference.add(o);\n\t}\n}\nfor (Iterator i = list2.iterator(); i.hasNext();) {\n\tObject o = i.next();\n\tif (!list1.contains(o)) {\n\t\tdifference.add(o);\n\t}\n}\n",
+  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.StringSetDifference",
+  "inputPorts" : [ {
+    "name" : "list1",
+    "depth" : 1,
+    "type" : "String"
+  }, {
+    "name" : "list2",
+    "depth" : 1,
+    "type" : "String"
+  } ],
+  "outputPorts" : [ {
+    "name" : "difference",
+    "depth" : 1,
+    "granularDepth" : 1
+  } ],
+  "isAltered" : false
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetIntersection
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetIntersection b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetIntersection
new file mode 100644
index 0000000..a4c2f5a
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetIntersection
@@ -0,0 +1,43 @@
+<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+  <script>List intersection = new ArrayList();
+for (Iterator i = list1.iterator(); i.hasNext();) {
+	Object o = i.next();
+	if (list2.contains(o)) {
+		intersection.add(o);
+	}
+}
+</script>
+  <dependencies />
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>list1</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('text/plain')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>list2</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('text/plain')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+      <granularDepth>1</granularDepth>
+      <name>intersection</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('text/plain')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+  </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetIntersection.json
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetIntersection.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetIntersection.json
new file mode 100644
index 0000000..0404922
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetIntersection.json
@@ -0,0 +1,20 @@
+{
+  "classLoaderSharing" : "workflow",
+  "script" : "List intersection = new ArrayList();\nfor (Iterator i = list1.iterator(); i.hasNext();) {\n\tObject o = i.next();\n\tif (list2.contains(o)) {\n\t\tintersection.add(o);\n\t}\n}\n",
+  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.StringSetIntersection",
+  "inputPorts" : [ {
+    "name" : "list1",
+    "depth" : 1,
+    "type" : "String"
+  }, {
+    "name" : "list2",
+    "depth" : 1,
+    "type" : "String"
+  } ],
+  "outputPorts" : [ {
+    "name" : "intersection",
+    "depth" : 1,
+    "granularDepth" : 1
+  } ],
+  "isAltered" : false
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetUnion
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetUnion b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetUnion
new file mode 100644
index 0000000..1ef0958
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetUnion
@@ -0,0 +1,43 @@
+<activity xmlns="http://taverna.sf.net/2008/xml/t2flow">
+
+<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+  <script>Set results = new HashSet();
+results.addAll(list1);
+results.addAll(list2);
+List union = new ArrayList();
+union.addAll(results);
+</script>
+  <dependencies />
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>list1</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('text/plain')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>list2</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('text/plain')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+      <granularDepth>1</granularDepth>
+      <name>union</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('text/plain')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+  </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetUnion.json
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetUnion.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetUnion.json
new file mode 100644
index 0000000..25960be
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetUnion.json
@@ -0,0 +1,20 @@
+{
+  "classLoaderSharing" : "workflow",
+  "script" : "Set results = new HashSet();\nresults.addAll(list1);\nresults.addAll(list2);\nList union = new ArrayList();\nunion.addAll(results);\n",
+  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.StringSetUnion",
+  "inputPorts" : [ {
+    "name" : "list1",
+    "depth" : 1,
+    "type" : "String"
+  }, {
+    "name" : "list2",
+    "depth" : 1,
+    "type" : "String"
+  } ],
+  "outputPorts" : [ {
+    "name" : "union",
+    "depth" : 1,
+    "granularDepth" : 1
+  } ],
+  "isAltered" : false
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringStripDuplicates
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringStripDuplicates b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringStripDuplicates
new file mode 100644
index 0000000..310dccc
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringStripDuplicates
@@ -0,0 +1,33 @@
+<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+  <script>List strippedlist = new ArrayList();
+for (Iterator i = stringlist.iterator(); i.hasNext();) {
+	String item = (String) i.next();
+	if (strippedlist.contains(item) == false) {
+		strippedlist.add(item);
+	}
+}
+</script>
+  <dependencies />
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>stringlist</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('text/plain')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+      <granularDepth>1</granularDepth>
+      <name>strippedlist</name>
+      <depth>1</depth>
+      <mimeTypes>
+        <string>l('text/plain')</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+  </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringStripDuplicates.json
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringStripDuplicates.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringStripDuplicates.json
new file mode 100644
index 0000000..c5fecee
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringStripDuplicates.json
@@ -0,0 +1,16 @@
+{
+  "classLoaderSharing" : "workflow",
+  "script" : "List strippedlist = new ArrayList();\nfor (Iterator i = stringlist.iterator(); i.hasNext();) {\n\tString item = (String) i.next();\n\tif (strippedlist.contains(item) == false) {\n\t\tstrippedlist.add(item);\n\t}\n}\n",
+  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.StringStripDuplicates",
+  "inputPorts" : [ {
+    "name" : "stringlist",
+    "depth" : 1,
+    "type" : "String"
+  } ],
+  "outputPorts" : [ {
+    "name" : "strippedlist",
+    "depth" : 1,
+    "granularDepth" : 1
+  } ],
+  "isAltered" : false
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestAlwaysFailingProcessor
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestAlwaysFailingProcessor b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestAlwaysFailingProcessor
new file mode 100644
index 0000000..790073a
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestAlwaysFailingProcessor
@@ -0,0 +1,36 @@
+<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+  <script>throw new Exception("This script fails");</script>
+  <dependencies />
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>foo</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>bar</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+      <granularDepth>0</granularDepth>
+      <name>urgle</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+  </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestAlwaysFailingProcessor.json
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestAlwaysFailingProcessor.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestAlwaysFailingProcessor.json
new file mode 100644
index 0000000..4a5b7d8
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestAlwaysFailingProcessor.json
@@ -0,0 +1,20 @@
+{
+  "classLoaderSharing" : "workflow",
+  "script" : "throw new Exception(\"This script fails\");",
+  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.TestAlwaysFailingProcessor",
+  "inputPorts" : [ {
+    "name" : "foo",
+    "depth" : 0,
+    "type" : "String"
+  }, {
+    "name" : "bar",
+    "depth" : 0,
+    "type" : "String"
+  } ],
+  "outputPorts" : [ {
+    "name" : "urgle",
+    "depth" : 0,
+    "granularDepth" : 0
+  } ],
+  "isAltered" : false
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestSometimesFails
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestSometimesFails b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestSometimesFails
new file mode 100644
index 0000000..90e8ba8
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestSometimesFails
@@ -0,0 +1,34 @@
+<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+  <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 />
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>in</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+      <granularDepth>0</granularDepth>
+      <name>out</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+  </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestSometimesFails.json
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestSometimesFails.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestSometimesFails.json
new file mode 100644
index 0000000..9ecf11d
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestSometimesFails.json
@@ -0,0 +1,16 @@
+{
+  "classLoaderSharing" : "workflow",
+  "script" : "import java.util.Random;\n\nRandom r = new Random();\n\nif ((r.nextInt() % 4) == 0) {\n\tthrow new RuntimeException(\"Fails every four runs!\");\n}\n\nout = in;",
+  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.TestSometimesFails",
+  "inputPorts" : [ {
+    "name" : "in",
+    "depth" : 0,
+    "type" : "String"
+  } ],
+  "outputPorts" : [ {
+    "name" : "out",
+    "depth" : 0,
+    "granularDepth" : 0
+  } ],
+  "isAltered" : false
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebImageFetcher
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebImageFetcher b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebImageFetcher
new file mode 100644
index 0000000..db3a73a
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebImageFetcher
@@ -0,0 +1,64 @@
+<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+  <script>if ((url == void) || (url == null)) {
+	throw new RuntimeException("The url must be specified");
+}
+
+URL inputURL = null;
+if (base != void) {
+	inputURL = new URL(new URL(base), url);
+} else {
+	inputURL = new URL(url);
+}
+
+int bytesRead = 0;
+int totalBytesRead = 0;
+InputStream is = inputURL.openStream();
+ByteArrayOutputStream os = new ByteArrayOutputStream();
+byte[] buffer = new byte[2048];
+while (true) {
+	bytesRead = is.read(buffer);
+	if (bytesRead == -1) {
+		break;	
+	}
+
+	os.write(buffer, 0, bytesRead);
+}
+
+image = os.toByteArray();
+is.close();
+os.close();
+</script>
+  <dependencies />
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>url</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/x-taverna-web-url'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>base</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/x-taverna-web-url'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+      <granularDepth>0</granularDepth>
+      <name>image</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'image/*'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+  </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebImageFetcher.json
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebImageFetcher.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebImageFetcher.json
new file mode 100644
index 0000000..a65b448
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebImageFetcher.json
@@ -0,0 +1,20 @@
+{
+  "classLoaderSharing" : "workflow",
+  "script" : "if ((url == void) || (url == null)) {\n\tthrow new RuntimeException(\"The url must be specified\");\n}\n\nURL inputURL = null;\nif (base != void) {\n\tinputURL = new URL(new URL(base), url);\n} else {\n\tinputURL = new URL(url);\n}\n\nint bytesRead = 0;\nint totalBytesRead = 0;\nInputStream is = inputURL.openStream();\nByteArrayOutputStream os = new ByteArrayOutputStream();\nbyte[] buffer = new byte[2048];\nwhile (true) {\n\tbytesRead = is.read(buffer);\n\tif (bytesRead == -1) {\n\t\tbreak;\t\n\t}\n\n\tos.write(buffer, 0, bytesRead);\n}\n\nimage = os.toByteArray();\nis.close();\nos.close();\n",
+  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.WebImageFetcher",
+  "inputPorts" : [ {
+    "name" : "url",
+    "depth" : 0,
+    "type" : "String"
+  }, {
+    "name" : "base",
+    "depth" : 0,
+    "type" : "String"
+  } ],
+  "outputPorts" : [ {
+    "name" : "image",
+    "depth" : 0,
+    "granularDepth" : 0
+  } ],
+  "isAltered" : false
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebPageFetcher
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebPageFetcher b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebPageFetcher
new file mode 100644
index 0000000..dcd76a6
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebPageFetcher
@@ -0,0 +1,68 @@
+<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
+  <script>if ((url == void) || (url == null)) {
+	throw new RuntimeException("The url must be specified");
+}
+
+URL inputURL = null;
+if (base != void) {
+  inputURL = new URL(new URL(base), url);
+}
+else {
+  inputURL = new URL(url);
+}
+URLConnection con = inputURL.openConnection();
+InputStream in = con.getInputStream();
+
+StringBuffer result = new StringBuffer();
+BufferedReader reader;
+
+String encoding = con.getContentEncoding();
+if (encoding == null) {
+  reader = new BufferedReader(new InputStreamReader(in));
+} else {
+  reader = new BufferedReader(new InputStreamReader(in, encoding));
+}
+String line = null;
+String NEWLINE = System.getProperty("line.separator");
+while ((line = reader.readLine()) != null) {
+	result.append(line);
+	result.append(NEWLINE);
+}
+
+reader.close();
+contents = result.toString();
+</script>
+  <dependencies />
+  <inputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>url</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/x-taverna-web-url'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+      <handledReferenceSchemes />
+      <translatedElementType>java.lang.String</translatedElementType>
+      <allowsLiteralValues>true</allowsLiteralValues>
+      <name>base</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/x-taverna-web-url'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
+  </inputs>
+  <outputs>
+    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+      <granularDepth>0</granularDepth>
+      <name>contents</name>
+      <depth>0</depth>
+      <mimeTypes>
+        <string>'text/plain,text/html'</string>
+      </mimeTypes>
+    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
+  </outputs>
+</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench-common-activities/blob/d157489f/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebPageFetcher.json
----------------------------------------------------------------------
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebPageFetcher.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebPageFetcher.json
new file mode 100644
index 0000000..ad7a5b6
--- /dev/null
+++ b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebPageFetcher.json
@@ -0,0 +1,20 @@
+{
+  "classLoaderSharing" : "workflow",
+  "script" : "if ((url == void) || (url == null)) {\n\tthrow new RuntimeException(\"The url must be specified\");\n}\n\nURL inputURL = null;\nif (base != void) {\n  inputURL = new URL(new URL(base), url);\n}\nelse {\n  inputURL = new URL(url);\n}\nURLConnection con = inputURL.openConnection();\nInputStream in = con.getInputStream();\n\nStringBuffer result = new StringBuffer();\nBufferedReader reader;\n\nString encoding = con.getContentEncoding();\nif (encoding == null) {\n  reader = new BufferedReader(new InputStreamReader(in));\n} else {\n  reader = new BufferedReader(new InputStreamReader(in, encoding));\n}\nString line = null;\nString NEWLINE = System.getProperty(\"line.separator\");\nwhile ((line = reader.readLine()) != null) {\n\tresult.append(line);\n\tresult.append(NEWLINE);\n}\n\nreader.close();\ncontents = result.toString();\n",
+  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.WebPageFetcher",
+  "inputPorts" : [ {
+    "name" : "url",
+    "depth" : 0,
+    "type" : "String"
+  }, {
+    "name" : "base",
+    "depth" : 0,
+    "type" : "String"
+  } ],
+  "outputPorts" : [ {
+    "name" : "contents",
+    "depth" : 0,
+    "granularDepth" : 0
+  } ],
+  "isAltered" : false
+}
\ No newline at end of file