Max Nodes Workflow
This workflow models 50 nodes in a single lane as a parser stress test.
Full FlowZap Code
laneA { # Lanea
n1: circle label:"Start Max Nodes"
n3: rectangle label:"Max Nodes step 3"
n5: rectangle label:"Max Nodes step 5"
n7: diamond label:"Max Nodes step 7"
n9: rectangle label:"Max Nodes step 9"
n11: rectangle label:"Max Nodes step 11"
n13: rectangle label:"Max Nodes step 13"
n15: diamond label:"Max Nodes step 15"
n17: rectangle label:"Max Nodes step 17"
n19: rectangle label:"Max Nodes step 19"
n21: rectangle label:"Max Nodes step 21"
n23: diamond label:"Max Nodes step 23"
n25: rectangle label:"Max Nodes step 25"
n27: rectangle label:"Max Nodes step 27"
n29: rectangle label:"Max Nodes step 29"
n31: diamond label:"Max Nodes step 31"
n33: rectangle label:"Max Nodes step 33"
n35: rectangle label:"Max Nodes step 35"
n37: rectangle label:"Max Nodes step 37"
n39: diamond label:"Max Nodes step 39"
n41: rectangle label:"Max Nodes step 41"
n43: rectangle label:"Max Nodes step 43"
n45: rectangle label:"Max Nodes step 45"
n47: diamond label:"Max Nodes step 47"
n49: rectangle label:"Max Nodes step 49"
n1.handle(bottom) -> laneB.n2.handle(top) [label="Success"]
n3.handle(bottom) -> laneB.n4.handle(top)
n5.handle(bottom) -> laneB.n6.handle(top)
n7.handle(bottom) -> laneB.n8.handle(top) [label="Next"]
n7.handle(right) -> laneB.n6.handle(right) [label="Retry/Rejected"]
n9.handle(bottom) -> laneB.n10.handle(top)
n11.handle(bottom) -> laneB.n12.handle(top)
n13.handle(bottom) -> laneB.n14.handle(top) [label="Processed"]
n15.handle(bottom) -> laneB.n16.handle(top)
n15.handle(right) -> laneB.n14.handle(right) [label="Retry/Rejected"]
n17.handle(bottom) -> laneB.n18.handle(top)
n19.handle(bottom) -> laneB.n20.handle(top) [label="Valid"]
n21.handle(bottom) -> laneB.n22.handle(top)
n23.handle(bottom) -> laneB.n24.handle(top)
n23.handle(right) -> laneB.n22.handle(right) [label="Retry/Rejected"]
n25.handle(bottom) -> laneB.n26.handle(top) [label="Done"]
n27.handle(bottom) -> laneB.n28.handle(top)
n29.handle(bottom) -> laneB.n30.handle(top)
n31.handle(bottom) -> laneB.n32.handle(top) [label="Success"]
n31.handle(right) -> laneB.n30.handle(right) [label="Retry/Rejected"]
n33.handle(bottom) -> laneB.n34.handle(top)
n35.handle(bottom) -> laneB.n36.handle(top)
n37.handle(bottom) -> laneB.n38.handle(top) [label="Next"]
n39.handle(bottom) -> laneB.n40.handle(top)
n39.handle(right) -> laneB.n38.handle(right) [label="Retry/Rejected"]
n41.handle(bottom) -> laneB.n42.handle(top)
n43.handle(bottom) -> laneB.n44.handle(top) [label="Processed"]
n45.handle(bottom) -> laneB.n46.handle(top)
n47.handle(bottom) -> laneB.n48.handle(top)
n47.handle(right) -> laneB.n46.handle(right) [label="Retry/Rejected"]
n49.handle(bottom) -> laneB.n50.handle(top) [label="Valid"]
}
laneB { # Laneb
n2: rectangle label:"Max Nodes step 2"
n4: rectangle label:"Max Nodes step 4"
n6: rectangle label:"Max Nodes step 6"
n8: rectangle label:"Max Nodes step 8"
n10: rectangle label:"Max Nodes step 10"
n12: rectangle label:"Max Nodes step 12"
n14: rectangle label:"Max Nodes step 14"
n16: rectangle label:"Max Nodes step 16"
n18: rectangle label:"Max Nodes step 18"
n20: rectangle label:"Max Nodes step 20"
n22: rectangle label:"Max Nodes step 22"
n24: rectangle label:"Max Nodes step 24"
n26: rectangle label:"Max Nodes step 26"
n28: rectangle label:"Max Nodes step 28"
n30: rectangle label:"Max Nodes step 30"
n32: rectangle label:"Max Nodes step 32"
n34: rectangle label:"Max Nodes step 34"
n36: rectangle label:"Max Nodes step 36"
n38: rectangle label:"Max Nodes step 38"
n40: rectangle label:"Max Nodes step 40"
n42: rectangle label:"Max Nodes step 42"
n44: rectangle label:"Max Nodes step 44"
n46: rectangle label:"Max Nodes step 46"
n48: rectangle label:"Max Nodes step 48"
n50: circle label:"End Max Nodes"
n2.handle(bottom) -> laneA.n3.handle(top)
n4.handle(bottom) -> laneA.n5.handle(top) [label="Valid"]
n6.handle(bottom) -> laneA.n7.handle(top)
n8.handle(bottom) -> laneA.n9.handle(top)
n10.handle(bottom) -> laneA.n11.handle(top) [label="Done"]
n12.handle(bottom) -> laneA.n13.handle(top)
n14.handle(bottom) -> laneA.n15.handle(top)
n16.handle(bottom) -> laneA.n17.handle(top) [label="Success"]
n18.handle(bottom) -> laneA.n19.handle(top)
n20.handle(bottom) -> laneA.n21.handle(top)
n22.handle(bottom) -> laneA.n23.handle(top) [label="Next"]
n24.handle(bottom) -> laneA.n25.handle(top)
n26.handle(bottom) -> laneA.n27.handle(top)
n28.handle(bottom) -> laneA.n29.handle(top) [label="Processed"]
n30.handle(bottom) -> laneA.n31.handle(top)
n32.handle(bottom) -> laneA.n33.handle(top)
n34.handle(bottom) -> laneA.n35.handle(top) [label="Valid"]
n36.handle(bottom) -> laneA.n37.handle(top)
n38.handle(bottom) -> laneA.n39.handle(top)
n40.handle(bottom) -> laneA.n41.handle(top) [label="Done"]
n42.handle(bottom) -> laneA.n43.handle(top)
n44.handle(bottom) -> laneA.n45.handle(top)
n46.handle(bottom) -> laneA.n47.handle(top) [label="Success"]
n48.handle(bottom) -> laneA.n49.handle(top)
}Related templates
Bidirectional Loop Workflow
This workflow models circular references between nodes in both directions.
Deep Nesting Workflow
This workflow models lanes that are conceptually nested within each other.
Disconnected Lanes Workflow
This workflow models lanes that never connect to each other.