use of org.alien4cloud.tosca.model.workflow.declarative.NodeDeclarativeWorkflow in project alien4cloud by alien4cloud.
the class DefaultWorkflowBuilder method addNode.
@Override
public void addNode(Workflow workflow, String nodeId, TopologyContext topologyContext, boolean isCompute) {
if (WorkflowUtils.isNativeOrSubstitutionNode(nodeId, topologyContext)) {
// for a native node, we just add a sub-workflow step
WorkflowUtils.addDelegateWorkflowStep(workflow, nodeId);
} else {
NodeDeclarativeWorkflow nodeDeclarativeWorkflow = defaultDeclarativeWorkflows.getNodeWorkflows().get(workflow.getName());
// only trigger this method if it's a default workflow
if (nodeDeclarativeWorkflow != null) {
// Create all the states of the workflow at first
Map<String, WorkflowStep> statesSteps = safe(nodeDeclarativeWorkflow.getStates()).entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, stateEntry -> WorkflowUtils.addStateStep(workflow, nodeId, stateEntry.getKey())));
// Create all the operations of the workflow at first
Map<String, WorkflowStep> operationSteps = safe(nodeDeclarativeWorkflow.getOperations()).entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, operationEntry -> WorkflowUtils.addOperationStep(workflow, nodeId, ToscaNodeLifecycleConstants.STANDARD_SHORT, operationEntry.getKey())));
Steps steps = new Steps(operationSteps, statesSteps, null);
// Declare dependencies on the states steps
safe(nodeDeclarativeWorkflow.getStates()).forEach((stateName, stateDependencies) -> declareStepDependencies(stateDependencies, steps.getStateStep(stateName), steps));
// Declare dependencies on the operation steps
safe(nodeDeclarativeWorkflow.getOperations()).forEach((operationName, operationDependencies) -> declareStepDependencies(operationDependencies, steps.getOperationStep(operationName), steps));
}
}
}
Aggregations