in taverna-execution-local/src/main/java/org/apache/taverna/platform/execution/impl/local/WorkflowToDataflowMapper.java [357:432]
private void addActivity(ProcessorBinding processorBinding)
throws EditException, ActivityNotFoundException,
ActivityConfigurationException, InvalidWorkflowException {
org.apache.taverna.workflowmodel.Processor processor = workflowToDataflowProcessors
.get(processorBinding.getBoundProcessor());
Activity scufl2Activity = processorBinding.getBoundActivity();
URI activityType = scufl2Activity.getType();
if (!activityService.activityExists(activityType))
throw new ActivityNotFoundException("No activity exists for "
+ activityType);
Configuration configuration = scufl2Activity.getConfiguration();
// create the activity
org.apache.taverna.workflowmodel.processor.activity.Activity<?> activity = activityService
.createActivity(activityType, configuration.getJson());
// check if we have a nested workflow
if (activityType.equals(NESTED_WORKFLOW_URI)) {
if (activity instanceof NestedDataflow) {
Workflow nestedWorkflow = scufl2Tools
.nestedWorkflowForProcessor(
processorBinding.getBoundProcessor(), profile);
((NestedDataflow) activity)
.setNestedDataflow(getDataflow(nestedWorkflow));
} else
throw new ActivityConfigurationException(
"Activity is not an instance of NestedDataflow");
}
// add the activity to the processor
edits.getAddActivityEdit(processor, activity).doEdit();
// add input ports
for (InputActivityPort inputActivityPort : scufl2Activity
.getInputPorts()) {
ActivityInputPort activityInputPort = edits
.createActivityInputPort(
inputActivityPort.getName(),
inputActivityPort.getDepth(),
false,
new ArrayList<Class<? extends ExternalReferenceSPI>>(),
String.class);
edits.getAddActivityInputPortEdit(activity, activityInputPort)
.doEdit();
}
// add output ports
for (OutputActivityPort outputActivityPort : scufl2Activity
.getOutputPorts()) {
ActivityOutputPort activitytOutputPort = edits
.createActivityOutputPort(outputActivityPort.getName(),
outputActivityPort.getDepth(),
outputActivityPort.getGranularDepth());
edits.getAddActivityOutputPortEdit(activity, activitytOutputPort)
.doEdit();
}
// map input ports
for (ProcessorInputPortBinding portBinding : processorBinding
.getInputPortBindings()) {
InputProcessorPort processorPort = portBinding
.getBoundProcessorPort();
InputActivityPort activityPort = portBinding.getBoundActivityPort();
edits.getAddActivityInputPortMappingEdit(activity,
processorPort.getName(), activityPort.getName()).doEdit();
}
// map output ports
for (ProcessorOutputPortBinding portBinding : processorBinding
.getOutputPortBindings()) {
OutputProcessorPort processorPort = portBinding
.getBoundProcessorPort();
OutputActivityPort activityPort = portBinding
.getBoundActivityPort();
edits.getAddActivityOutputPortMappingEdit(activity,
processorPort.getName(), activityPort.getName()).doEdit();
}
workflowToDataflowActivities.put(scufl2Activity, activity);
dataflowToWorkflowActivities.put(activity, scufl2Activity);
}