use of org.kie.workbench.common.stunner.bpmn.definition.BaseSubprocess in project kie-wb-common by kiegroup.
the class SubProcessConverter method convertSubProcess.
public PropertyWriter convertSubProcess(Node<View<BaseSubprocess>, ?> node) {
SubProcessPropertyWriter processRoot = NodeMatch.fromNode(BaseSubprocess.class, SubProcessPropertyWriter.class).when(EmbeddedSubprocess.class, this::convertEmbeddedSubprocessNode).when(EventSubprocess.class, this::convertEventSubprocessNode).when(AdHocSubprocess.class, this::convertAdHocSubprocessNode).apply(node).value();
DefinitionsBuildingContext subContext = context.withRootNode(node);
super.convertChildNodes(processRoot, subContext.nodes(), subContext.lanes());
super.convertEdges(processRoot, subContext);
return processRoot;
}
use of org.kie.workbench.common.stunner.bpmn.definition.BaseSubprocess in project kie-wb-common by kiegroup.
the class ProcessPostConverter method resizeSubProcess.
private void resizeSubProcess(BpmnNode subProcess) {
if (subProcess.hasChildren()) {
ViewPort viewPort = ViewPort.of(subProcess, true);
double leftPadding = viewPort.getUpperLeftX();
double topPadding = viewPort.getUpperLeftY();
double width = viewPort.getLowerRightX() + leftPadding;
double height = viewPort.getLowerRightY() + topPadding;
Bounds subProcessBounds = subProcess.value().getContent().getBounds();
Bound subProcessUl = subProcessBounds.getUpperLeft();
Bound subProcessLr = subProcessBounds.getLowerRight();
Bounds subProcessOriginalBounds = Bounds.create(subProcessUl.getX(), subProcessUl.getY(), subProcessLr.getX(), subProcessLr.getY());
double originalWidth = subProcessBounds.getWidth();
double originalHeight = subProcessBounds.getHeight();
subProcessLr.setX(subProcessUl.getX() + width);
subProcessLr.setY(subProcessUl.getY() + height);
RectangleDimensionsSet subProcessRectangle = ((BaseSubprocess) subProcess.value().getContent().getDefinition()).getDimensionsSet();
subProcessRectangle.setWidth(new Width(width));
subProcessRectangle.setHeight(new Height(height));
context.setResized(subProcess, true);
double widthFactor = width / originalWidth;
double heightFactor = height / originalHeight;
// incoming connections has the target point relative to subProcess so they needs to be scaled.
inEdges(subProcess.getParent(), subProcess).forEach(edge -> scale(edge.getTargetConnection().getLocation(), widthFactor, heightFactor));
// outgoing connections has source point relative to the subProcess so they needs to be scaled.
outEdges(subProcess.getParent(), subProcess).forEach(edge -> scale(edge.getSourceConnection().getLocation(), widthFactor, heightFactor));
// boundary elements are relative to the target subProcess so they needs to be scaled.
dockedNodes(subProcess.getParent(), subProcess).forEach(node -> scaleBoundaryEventPosition(node, subProcessOriginalBounds, subProcessBounds, widthFactor, heightFactor));
}
}
use of org.kie.workbench.common.stunner.bpmn.definition.BaseSubprocess in project kie-wb-common by kiegroup.
the class DefaultRouteFormProvider method findElements.
@Override
protected Collection<Pair<Object, String>> findElements(Predicate<Node> filter, Function<Node, Pair<Object, String>> mapper) {
Node selectedNode = getSelectedElement();
Collection<Pair<Object, String>> result = new ArrayList<>();
if (selectedNode != null) {
List<Edge> outEdges = selectedNode.getOutEdges();
if (outEdges != null) {
result = outEdges.stream().map(outEdge -> {
String routeIdentifier = outEdge.getUUID();
// UI value for the route is the target node name or target node type
String targetName = null;
String targetNodeType = null;
BPMNDefinition bpmnDefinition = getEdgeTarget(outEdge);
if (bpmnDefinition != null) {
targetNodeType = definitionManager.adapters().forDefinition().getTitle(bpmnDefinition);
if (bpmnDefinition instanceof BaseStartEvent || bpmnDefinition instanceof BaseCatchingIntermediateEvent || bpmnDefinition instanceof BaseThrowingIntermediateEvent || bpmnDefinition instanceof BaseEndEvent || bpmnDefinition instanceof BaseTask || bpmnDefinition instanceof BaseGateway || bpmnDefinition instanceof BaseSubprocess) {
targetName = bpmnDefinition.getGeneral().getName().getValue();
}
}
if (targetName != null && !targetName.isEmpty()) {
return new Pair<Object, String>(routeIdentifier, targetName);
} else if (targetNodeType != null && !targetNodeType.isEmpty()) {
return new Pair<Object, String>(routeIdentifier, targetNodeType);
} else {
return new Pair<Object, String>(routeIdentifier, routeIdentifier);
}
}).collect(Collectors.toList());
}
}
return result;
}
Aggregations