Swimlane process (draw.io)

A swimlane pool with three lanes. The value is that every handoff crosses a lane boundary, which is where processes usually break down.


#What this example shows

  • A pool containing lanes, each holding its own activities.

  • Shapes as children of a lane, so they move with it.

  • A rejection path crossing back into an earlier lane.


#A worked example

Open it, edit it, or copy the source below.

Swimlane process (draw.io)

The source, which you can paste into a new diagram and edit:

<mxfile host="app.diagrams.net" modified="2026-09-02T00:00:00.000Z" agent="Capable" version="24.7.7">
  <diagram name="Page-1" id="page-1">
    <mxGraphModel dx="1100" dy="760" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="p1" value="Expense claim" style="swimlane;html=1;startSize=30;horizontal=1;fillColor=none;strokeColor=#666666;" vertex="1" parent="1">
          <mxGeometry x="40" y="40" width="1000" height="480" as="geometry" />
        </mxCell>
        <mxCell id="l1" value="Employee" style="swimlane;html=1;startSize=30;horizontal=0;fillColor=#f5f5f5;strokeColor=#999999;" vertex="1" parent="p1">
          <mxGeometry x="0" y="30" width="1000" height="150" as="geometry" />
        </mxCell>
        <mxCell id="l2" value="Manager" style="swimlane;html=1;startSize=30;horizontal=0;fillColor=#f5f5f5;strokeColor=#999999;" vertex="1" parent="p1">
          <mxGeometry x="0" y="180" width="1000" height="150" as="geometry" />
        </mxCell>
        <mxCell id="l3" value="Finance" style="swimlane;html=1;startSize=30;horizontal=0;fillColor=#f5f5f5;strokeColor=#999999;" vertex="1" parent="p1">
          <mxGeometry x="0" y="330" width="1000" height="150" as="geometry" />
        </mxCell>
        <mxCell id="s1" value="Submit claim" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="l1">
          <mxGeometry x="80" y="80" width="160" height="50" as="geometry" />
        </mxCell>
        <mxCell id="s2" value="Correct and resubmit" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="l1">
          <mxGeometry x="600" y="80" width="180" height="50" as="geometry" />
        </mxCell>
        <mxCell id="s3" value="Review claim" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="l2">
          <mxGeometry x="300" y="50" width="160" height="50" as="geometry" />
        </mxCell>
        <mxCell id="s4" value="Approved?" style="rhombus;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="l2">
          <mxGeometry x="540" y="30" width="140" height="90" as="geometry" />
        </mxCell>
        <mxCell id="s5" value="Check receipts" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="l3">
          <mxGeometry x="300" y="50" width="160" height="50" as="geometry" />
        </mxCell>
        <mxCell id="s6" value="Pay in next run" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="l3">
          <mxGeometry x="600" y="50" width="160" height="50" as="geometry" />
        </mxCell>
        <mxCell id="f1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;" edge="1" parent="1" source="s1" target="s3">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="f2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;" edge="1" parent="1" source="s3" target="s4">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="f3" value="No" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;" edge="1" parent="1" source="s4" target="s2">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="f4" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;" edge="1" parent="1" source="s2" target="s3">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="f5" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;" edge="1" parent="1" source="s4" target="s5">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="f6" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;" edge="1" parent="1" source="s5" target="s6">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>

#Making it your own

  • Drag a lane's title bar to resize it; the contents move with it.

  • Add a lane by right-clicking the pool.

  • Above five lanes, group roles rather than adding more.



Open it. Drag something. It is a real canvas.