API: Add a tool to nest a workflow in a process
diff --git a/taverna-scufl2-api/src/main/java/org/apache/taverna/scufl2/api/common/Scufl2Tools.java b/taverna-scufl2-api/src/main/java/org/apache/taverna/scufl2/api/common/Scufl2Tools.java
index c7d4b11..1222733 100644
--- a/taverna-scufl2-api/src/main/java/org/apache/taverna/scufl2/api/common/Scufl2Tools.java
+++ b/taverna-scufl2-api/src/main/java/org/apache/taverna/scufl2/api/common/Scufl2Tools.java
@@ -752,6 +752,24 @@
 		return activity;
 	}
 
+	public Configuration createNestedRelationship(Processor processor, Workflow childWorkflow, Profile profile) {
+		if(processor.getParent() == null) {
+			throw new IllegalStateException("Processor " + processor + " has no parent");
+		}
+		if(processor.getParent().getParent() != childWorkflow.getParent()) {
+			throw new IllegalStateException(
+					"Processor " + processor + " and workflow " + childWorkflow + " are not in the same Workflow bundle");
+		}
+		if(nestedWorkflowForProcessor(processor, profile) != null) {
+			throw new IllegalStateException("Processor " + processor + " already has a nested workflow");
+		}
+
+		Activity activity = createActivityFromProcessor(processor, profile);
+		activity.setType(NESTED_WORKFLOW);
+		Configuration configuration = createConfigurationFor(activity, NESTED_WORKFLOW);
+		return configuration;
+	}
+
 	public void removePortsBindingForUnknownPorts(ProcessorBinding binding) {
 		// First, remove ports no longer owned by processor
 		Iterator<ProcessorInputPortBinding> inputBindings = binding