[
https://issues.jboss.org/browse/DROOLS-3061?page=com.atlassian.jira.plugi...
]
Daniel José dos Santos updated DROOLS-3061:
-------------------------------------------
Description:
DMN Designer should *autolayout* new imported DMN models. The *autolayout* should position
DRG diagram nodes into horizontal layers to minimize crossing of connectors with respect
of *Top-Down* importance. It means if nodes *Layer B* are inputs for nodes in *Layer A*
then the *Layer B* will be below *Layer A*. The *autolayout* should also try to minimize
scrolling needed to see whole DRG diagram.
User should also have possibility to invoke *autolayout* feature any time during designing
the diagram. In this case the action should be undoable with the *Undo* toolbar button.
The approach used to achieve this is the Sugiyama Method, which is done in 4 steps. Each
step have its own set of algorithms. For each step, we selected one of the available
algorithms to implement, based on our current needs and time to develop:
*Step 1 - Cycle breaking:* We break cycles in diagram by reversing some edges (they are
de-reversed in the end). This step are required because we need ending points in step 2
while sweeping through graph;
*Step 2 - Layering:* We sweep through graph (diagram) and put each node (vertex) in a
layer, based on it's distance from others node. For edges that crosses multiple
layers, we create virtual vertices connecting those. They are removed at the end.
This approach usually puts the start nodes at the top and the deepest nodes at the end. In
the current implementation we're using Longest Path algorithm. A better approach can
be developed in future using Network Simplex;
*Step 3 - Node Ordering:* We order each node (vertex) inside its layers in order to reduce
crossing, using median. Another approach that can be used is barycenter.
*Step 4 - Node Positioning:* We de-reverse nodes reversed in step 1 and remove virtual
nodes reconnecting the concrete nodes. Then we calculate the position of each node. This
step can be divided in two steps: one for horizontal position and other for vertical for
better positioning. Currently we're using a simple approach: every block of nodes
inside the layers is centered and the distance between layers is the same. So it will
produce results like the attachment "Automatic Layout Demo".
was:
DMN Designer should *autolayout* new imported DMN models. The *autolayout* should position
DRG diagram nodes into horizontal layers to minimize crossing of connectors with respect
of *Top-Down* importance. It means if nodes *Layer B* are inputs for nodes in *Layer A*
then the *Layer B* will be below *Layer A*. The *autolayout* should also try to minimize
scrolling needed to see whole DRG diagram.
User should also have possibility to invoke *autolayout* feature any time during designing
the diagram. In this case the action should be undoable with the *Undo* toolbar button.
The approach used to achieve this is the Sugiyama Method, which is done in 4 steps. Each
step have its own algorithm:
*Step 1 - Cycle breaking:* We break cycles in diagram by reversing some edges (they are
de-reversed in the end). This step are required because we need ending points in step 2
while sweeping through graph;
*Step 2 - Layering:* We sweep through graph (diagram) and put each node (vertex) in a
layer, based on it's distance from others node. This approach usually puts the start
nodes at the top and the deepest nodes at the end. In the current implementation we're
using Longest Path algorithm. A better approach can be developed in future using Network
Simplex;
*Step 3 - Node Ordering:* We order each node (vertex) inside its layers in order to reduce
crossings;
*Step 4 - Node Positioning:* We calculate the position of each node. This step can be
divided in two steps: one for horizontal position and other for vertical
[DMN Designer] Automatic Layout Feature
---------------------------------------
Key: DROOLS-3061
URL:
https://issues.jboss.org/browse/DROOLS-3061
Project: Drools
Issue Type: Epic
Components: DMN Editor
Reporter: Jozef Marko
Assignee: Daniel José dos Santos
Priority: Major
Labels: drools-tools
DMN Designer should *autolayout* new imported DMN models. The *autolayout* should
position DRG diagram nodes into horizontal layers to minimize crossing of connectors with
respect of *Top-Down* importance. It means if nodes *Layer B* are inputs for nodes in
*Layer A* then the *Layer B* will be below *Layer A*. The *autolayout* should also try to
minimize scrolling needed to see whole DRG diagram.
User should also have possibility to invoke *autolayout* feature any time during
designing the diagram. In this case the action should be undoable with the *Undo* toolbar
button.
The approach used to achieve this is the Sugiyama Method, which is done in 4 steps. Each
step have its own set of algorithms. For each step, we selected one of the available
algorithms to implement, based on our current needs and time to develop:
*Step 1 - Cycle breaking:* We break cycles in diagram by reversing some edges (they are
de-reversed in the end). This step are required because we need ending points in step 2
while sweeping through graph;
*Step 2 - Layering:* We sweep through graph (diagram) and put each node (vertex) in a
layer, based on it's distance from others node. For edges that crosses multiple
layers, we create virtual vertices connecting those. They are removed at the end.
This approach usually puts the start nodes at the top and the deepest nodes at the end.
In the current implementation we're using Longest Path algorithm. A better approach
can be developed in future using Network Simplex;
*Step 3 - Node Ordering:* We order each node (vertex) inside its layers in order to
reduce crossing, using median. Another approach that can be used is barycenter.
*Step 4 - Node Positioning:* We de-reverse nodes reversed in step 1 and remove virtual
nodes reconnecting the concrete nodes. Then we calculate the position of each node. This
step can be divided in two steps: one for horizontal position and other for vertical for
better positioning. Currently we're using a simple approach: every block of nodes
inside the layers is centered and the distance between layers is the same. So it will
produce results like the attachment "Automatic Layout Demo".
--
This message was sent by Atlassian Jira
(v7.12.1#712002)