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