最大节点工作流
edge-cases
此工作流模拟单通道中50个节点,作为解析器压力测试。
完整 FlowZap 代码
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)
}