-
Bug Report
-
Resolution: Won't Fix
-
L3 - Default
-
None
-
7.14.0
-
None
Environment (Required on creation):
Camunda 7.14.0 (Any Camunda 7 version - the problem is clearly visible in the source.)
Description (Required on creation; please attach any relevant screenshots, stacktraces, log files, etc. to the ticket):
The DiagramLayout object handling is not finished:
org.camunda.bpm.engine.repository.DiagramEdge and org.camunda.bpm.engine.repository.DiagramEdgeWaypoint classes are exists but never instantiated.
org.camunda.bpm.engine.repository.DiagramNode is fine.
Steps to reproduce (Required on creation):
(Create an engine, deploy a process, acquire the id)
DiagramLayout layout = engine.getRepositoryService().getProcessDiagramLayout(processDefinitionId);
for (DiagramElement element : layout.getElements().values()) {
if (element.isNode())
if (element.isEdge())
{ System.out.println(" - edge: " + element ); }}
Observed Behavior (Required on creation):
DiagramEdges never returned by getElements().
Expected behavior (Required on creation):
DiagramEdges are returned from getElements() along with Nodes.
Also expected:
DiagramEdgeWaypoints accessible from DiagramEdges.
Outward DiagramEdges accessible from DiagramNodes, and/or related DiagramNodes accessible from DiagramEdges.
Root Cause (Required on prioritization):
The implementation of the diagram parsing algorithm not finished correctly:
The org.camunda.bpm.engine.impl.bpmn.diagram.ProcessDiagramLayoutFactory.getBpmnProcessDiagramLayout(Document, InputStream) method focusing on element bounds only, not the actual bean representation.
Solution Ideas (Optional):
Please finish the algorithm with the instantiation of the Edge diagram elements:
org.camunda.bpm.engine.impl.bpmn.diagram.ProcessDiagramLayoutFactory.getBpmnProcessDiagramLayout(Document, InputStream)
It will be needed to complete the DagramEdge with the DagramEdgeWaypoints accessor and the DagramNode class with the outward DagramEdge list accessor, and/or the DagramEdge class with the related DagramNodes accessor.
DiagramNodes.getEdges() is preferred with outward Edges, because DiagramLayout.getNodes() are already exists, and this way the graph would be walkable.
Hints (optional):
The bound computing algorithm can be simply expanded with the Egde instantiation.