Create a mirror process for each new nested workflow
diff --git a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/Converter.java b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/Converter.java
index 2f77d05..4134783 100644
--- a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/Converter.java
+++ b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/Converter.java
@@ -179,10 +179,14 @@
Set<OutputWorkflowPort> outputs = new HashSet<>(workflowProcess.getWorkflowOutputs().values());
workflow.setInputPorts(inputs);
workflow.setOutputPorts(outputs);
+ Set<InputPort> inputPorts = workflowProcess.getInputPorts();
+ Set<OutputPort> outputPorts = workflowProcess.getOutputPorts();
for(Process process: workflowProcess.getProcesses()) {
if(process instanceof WorkflowProcess) {
Workflow childWorkflow = convertWorkflowProcess((WorkflowProcess) process, bundle); // TODO: Add nested relationship
+ Processor processor = new Processor(workflow, childWorkflow.getName()); // TODO: Check if we want the processor to have the same name as the childworkflow
+ createProcessPortsFromWorkflow(processor, childWorkflow);
bundle.getWorkflows().add(childWorkflow);
} else if(process instanceof CommandLineTool) {
Processor processor = convertCommandLineTool((CommandLineTool) process);
@@ -197,6 +201,15 @@
return workflow;
}
+ public void createProcessPortsFromWorkflow(Processor processor, Workflow workflow) {
+ for(InputWorkflowPort inputWorkflowPort: workflow.getInputPorts()) {
+ processor.getInputPorts().add(new InputProcessorPort(processor, inputWorkflowPort.getName()));
+ }
+ for(OutputWorkflowPort outputWorkflowPort: workflow.getOutputPorts()) {
+ processor.getOutputPorts().add(new OutputProcessorPort(processor, outputWorkflowPort.getName()));
+ }
+ }
+
public Processor convertCommandLineTool(CommandLineTool command) {
Processor processor = new Processor(null, command.getBaseCommand());
diff --git a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/components/Process.java b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/components/Process.java
index 74f2f5f..5447e8c 100644
--- a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/components/Process.java
+++ b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/components/Process.java
@@ -24,8 +24,8 @@
public abstract class Process {
- private Set<InputPort> inputPorts = new HashSet<>();
- private Set<OutputPort> outputPorts = new HashSet<>();
+ protected Set<InputPort> inputPorts = new HashSet<>();
+ protected Set<OutputPort> outputPorts = new HashSet<>();
public abstract void parse();