[ELK] Does ELK support this feature an edge out goes and in comes to the same port? [message #1795178] |
Mon, 17 September 2018 21:56  |
Eclipse User |
|
|
|
Hi,
I am using layered algorithm to layout my diagram, and in my diagram, I have this kind of edge whose source port and target port is the same one. I met this exception:
org.eclipse.elk.core.UnsupportedConfigurationException: Node '0' has its layer constraint set to FIRST_SEPARATE, but has at least one incoming edge. FIRST_SEPARATE nodes must not have incoming edges.
at org.eclipse.elk.alg.layered.crn.intermediate.LayerConstraintProcessor.throwUpUnlessNoIncoming(LayerConstraintProcessor.java:245)
at org.eclipse.elk.alg.layered.crn.intermediate.LayerConstraintProcessor.process(LayerConstraintProcessor.java:98)
at org.eclipse.elk.alg.layered.crn.KlayLayered.hierarchicalLayout(KlayLayered.java:229)
at org.eclipse.elk.alg.layered.crn.KlayLayered.doCompoundLayout(KlayLayered.java:179)
at org.eclipse.elk.alg.layered.crn.LayeredLayoutProvider.layout(LayeredLayoutProvider.java:58)
at org.eclipse.elk.core.RecursiveGraphLayoutEngine.layoutRecursively(RecursiveGraphLayoutEngine.java:185)
at org.eclipse.elk.core.RecursiveGraphLayoutEngine.layout(RecursiveGraphLayoutEngine.java:62)
at org.eclipse.sirius.diagram.elk.ElkDiagramLayoutConnector.layout(ElkDiagramLayoutConnector.java:1285)
at org.eclipse.sirius.diagram.elk.ELKLayoutNodeProvider.layoutEditParts(ELKLayoutNodeProvider.java:70)
at org.eclipse.sirius.diagram.ui.tools.internal.layout.provider.ArrangeSelectionLayoutProvider.lauchPrimaryArrangeAll(ArrangeSelectionLayoutProvider.java:255)
at org.eclipse.sirius.diagram.ui.tools.internal.layout.provider.ArrangeSelectionLayoutProvider.layoutEditParts(ArrangeSelectionLayoutProvider.java:171)
at org.eclipse.sirius.diagram.ui.tools.api.layout.provider.AbstractLayoutProvider.getCommandFromDiagramLayoutProvider(AbstractLayoutProvider.java:174)
at org.eclipse.sirius.diagram.ui.tools.api.layout.provider.AbstractLayoutProvider.layoutEditParts(AbstractLayoutProvider.java:123)
at org.eclipse.gmf.runtime.diagram.ui.services.layout.AbstractLayoutEditPartProvider.layoutLayoutNodes(AbstractLayoutEditPartProvider.java:69)
at org.eclipse.gmf.runtime.diagram.ui.internal.services.layout.LayoutNodesOperation.execute(LayoutNodesOperation.java:74)
at org.eclipse.gmf.runtime.common.core.service.ExecutionStrategy$1.execute(ExecutionStrategy.java:70)
at org.eclipse.gmf.runtime.common.core.service.Service.execute(Service.java:651)
at org.eclipse.gmf.runtime.diagram.ui.services.layout.LayoutService.execute(LayoutService.java:66)
at org.eclipse.gmf.runtime.diagram.ui.services.layout.LayoutService.layoutLayoutNodes(LayoutService.java:299)
at org.eclipse.gmf.runtime.diagram.ui.commands.ArrangeCommand.getCommandForExecution(ArrangeCommand.java:124)
at org.eclipse.gmf.runtime.diagram.ui.commands.ArrangeCommand.doExecuteWithResult(ArrangeCommand.java:93)
at org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand.doExecute(AbstractTransactionalCommand.java:247)
at org.eclipse.emf.workspace.AbstractEMFOperation.execute(AbstractEMFOperation.java:150)
at org.eclipse.gmf.runtime.common.core.command.CompositeCommand.doExecuteWithResult(CompositeCommand.java:403)
at org.eclipse.gmf.runtime.common.core.command.AbstractCommand.execute(AbstractCommand.java:134)
at org.eclipse.gmf.runtime.common.core.command.CompositeCommand.doExecuteWithResult(CompositeCommand.java:403)
at org.eclipse.gmf.runtime.common.core.command.AbstractCommand.execute(AbstractCommand.java:134)
at org.eclipse.sirius.diagram.ui.tools.internal.commands.WrappingCommandIgnoringAffectedFiles.execute(WrappingCommandIgnoringAffectedFiles.java:126)
at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:488)
... 39 more
I have a question, doesn't ELK support this kind of edge?
Hope for ypur reply, and thanks in advance.
|
|
|
Re: [ELK] Does ELK support this feature an edge out goes and in comes to the same port? [message #1795192 is a reply to message #1795178] |
Tue, 18 September 2018 04:11  |
Eclipse User |
|
|
|
Hi,
ELK Layered probably won't mind, but the results won't be satisfactory. Routing such an edge would require special handling, which we don't currently have (feel free to open a feature request at our GitHub page).
I can think of two possible reasons for your particular error message. First, youu're setting the layer constraint option on one of your nodes, but don't make sure that edge connections fit the setting you're using (FIRST and FIRST_SEPARATE require that no edge enters the node the option is set on). Second, and more likely, you're routing an edge from a port to the same port on a node that itself contains further nodes.
The former case is simply not supported. The second case probably shouldn't raise the error, but would require said feature request to be implemented for proper support.
Cheers,
Chris
|
|
|
Powered by
FUDForum. Page generated in 0.02710 seconds