BPMN Mining
VI EN
Log in Sign up free
Docs / Features

BPMN diagram

How it draws, the auto-layout, and what the colours mean.

The BPMN diagram is the “correct notation” view, the one you use to present to other people — anyone who knows BPMN reads it straight away without an explanation.

Notation

ShapeMeaningColour
Circle with a thin borderStart eventGreen
Circle with a double borderEnd eventRed
Rounded rectangleA task, with its time and costBlue
Diamond with ✕Exclusive gatewayOrange
Diamond with +Parallel gatewayYellow
Pink outlineOn the critical pathPink
Orange dashed lineLoop-back (rework) flowOrange

Viewing the diagram: zoom, pan, full screen

The toolbar above the diagram has controls used for both the BPMN diagram and the analysis chart:

ActionHow
Zoom in / out The + / − buttons, or Ctrl + scroll wheel (the point under the cursor stays put)
Back to 100%Click the percentage number
Fit to frameThe Fit to frame button, or double-click the diagram
Move around the diagramDrag with the mouse, or scroll as usual
Full screenThe ⛶ button; leave with Esc
Change the frame heightDrag the bottom right corner of the frame

“Fit to frame” fits by width and then scrolls vertically. A vertical diagram can be over two thousand pixels tall; forcing the height to fit too would push the zoom below 20% and turn the text into a blur.

Coordinates: keep the original drawing or lay it out automatically

If the uploaded file has coordinates for every step, the tool redraws exactly the layout you drew. Add a new step (which has no coordinates) and it switches to automatic layout for the whole diagram. The Original coordinates switch lets you choose deliberately.

ℹ
Why choosing “Vertical” turns off “Original coordinates”
The two are mutually exclusive: keeping the coordinates from the file means not laying it out again, so a Horizontal/Vertical direction has nothing to act on. When you pick a direction, the tool turns “Original coordinates” off for you and shows a line right under the toolbar. Turn it back on and you return to exactly the layout in the file.

The layout algorithm

When it lays out automatically, the tool uses the four-step Sugiyama method:

  1. Break cycles — a DFS marks back edges so that the graph is temporarily acyclic.
  2. Assign layers — by longest path; edges spanning several layers get dummy nodes inserted.
  3. Reduce crossings — several barycenter sweeps, then swap adjacent node pairs for as long as that keeps reducing crossings.
  4. Straighten — pull each node towards the average position of its neighbours; dummy nodes are straightened completely so that long edges do not zigzag.
The algorithm that reduces crossings between layers
for sweep in range(8):
    downward = sweep % 2 == 0
    neighbours = prev_of if downward else next_of
    for level in levels:
        keys.sort(key=barycenter)             # sắp theo trọng tâm láng giềng

    for level in range(max_layer):            # hoán vị kề nếu bớt được giao cắt
        while improved:
            for index in range(len(lower) - 1):
                current = crossings(upper, lower)
                lower[index], lower[index + 1] = lower[index + 1], lower[index]
                if crossings(upper, lower) >= current:
                    lower[index], lower[index + 1] = lower[index + 1], lower[index]

Display controls

  • Horizontal / Vertical — the direction of flow.
  • Fit to frame — shrink to fit the screen; turn it off to view at true size and scroll.
  • Show Ids — print the step code on the shape, handy when cross-checking against the table.
ℹ
The diagram is drawn on the server as plain SVG. Every piece of user-entered text is escaped before being placed into the SVG, so there is no route for injecting malicious code through a step name.

Fine-tuning lanes

The Lanes… button on the diagram toolbar opens the list of existing lanes, with the step count of each. There you can rename a lane (renaming it for all the steps in it at once), delete a lane (the steps are not deleted, they simply become lane-less), and reorder the bands with the two ↑↓ buttons.

To assign a lane to a step, type straight into the Lane column on the Steps tab — typing a name that does not exist yet creates a new lane.

Anything unclear or missing?