Welcome to FlowZap, the App to diagram with Speed, Clarity and Control.

Bidirectional Loop Workflow

This workflow models circular references between nodes in both directions.

Full FlowZap Code

Copy and paste the following FlowZap code into a project in your FlowZap account to see this template diagram.

laneA { # Lanea
  n1: circle label:"Start Bidirectional Loop"
  n2: diamond label:"Bidirectional Loop step 2"
  n5: rectangle label:"Bidirectional Loop step 5"
  n9: rectangle label:"Bidirectional Loop step 9"
  n13: rectangle label:"Bidirectional Loop step 13"
  n1.handle(right) -> n2.handle(left)
  n2.handle(bottom) -> laneC.n3.handle(top) [label="Yes/Approved"]
  n2.handle(bottom) -> laneD.n4.handle(top) [label="No/Rejected"]
  n5.handle(bottom) -> laneB.n6.handle(top)
  n9.handle(bottom) -> laneB.n10.handle(top)
  n13.handle(bottom) -> laneB.n14.handle(top)
  n2.handle(right) -> laneC.n3.handle(left) [label="Forward"]
  loop [retry until success] n2 n5 n9 n13 n6 n10 n14 n3 n7 n11 n15 n4 n8 n12
}

laneB { # Laneb
  n6: rectangle label:"Bidirectional Loop step 6"
  n10: rectangle label:"Bidirectional Loop step 10"
  n14: rectangle label:"Bidirectional Loop step 14"
  n6.handle(bottom) -> laneC.n7.handle(top)
  n10.handle(bottom) -> laneC.n11.handle(top)
  n14.handle(bottom) -> laneC.n15.handle(top)
}

laneC { # Lanec
  n3: rectangle label:"Bidirectional Loop step 3"
  n7: rectangle label:"Bidirectional Loop step 7"
  n11: rectangle label:"Bidirectional Loop step 11"
  n15: rectangle label:"Bidirectional Loop step 15"
  n7.handle(bottom) -> laneD.n8.handle(top)
  n11.handle(bottom) -> laneD.n12.handle(top)
  n15.handle(bottom) -> laneD.n16.handle(top)
  n3.handle(left) -> laneA.n2.handle(right) [label="Back"]
  n3.handle(right) -> laneA.n5.handle(left)
}

laneD { # Laned
  n4: rectangle label:"Bidirectional Loop step 4"
  n8: rectangle label:"Bidirectional Loop step 8"
  n12: rectangle label:"Bidirectional Loop step 12"
  n16: circle label:"End Bidirectional Loop"
  n12.handle(right) -> laneA.n13.handle(left)
  n8.handle(right) -> laneA.n9.handle(left)
  n4.handle(right) -> laneA.n5.handle(left)
}

Related templates

Back to all templates