采购订单工作流
finance
包含请购单创建、预算验证、供应商寻源、竞争性招标以及基于金额阈值的分级审批流转的采购订单工作流。
完整 FlowZap 代码
Requester { # Requester
n1: circle label:"Start"
n2: rectangle label:"Create purchase requisition"
n3: rectangle label:"Add line items"
n4: rectangle label:"Attach specifications"
n5: rectangle label:"Receive PO number"
n6: circle label:"End"
n1.handle(right) -> n2.handle(left)
n2.handle(right) -> n3.handle(left)
n3.handle(right) -> n4.handle(left)
n4.handle(bottom) -> Procurement.n7.handle(top) [label="Submit"]
n5.handle(right) -> n6.handle(left)
}
Procurement { # Procurement
n7: rectangle label:"Review requisition"
n8: diamond label:"Budget available?"
n9: rectangle label:"Source vendors"
n10: rectangle label:"Request quotes"
n11: rectangle label:"Return for budget approval"
n12: diamond label:"Competitive bids required?"
n13: rectangle label:"Select best vendor"
n14: rectangle label:"Single source justification"
n7.handle(right) -> n8.handle(left)
n8.handle(right) -> n9.handle(left) [label="Yes"]
n8.handle(bottom) -> n11.handle(top) [label="No"]
n9.handle(right) -> n12.handle(left)
n11.handle(top) -> Requester.n2.handle(bottom) [label="Revise"]
n12.handle(right) -> n10.handle(left) [label="Yes"]
n12.handle(bottom) -> n14.handle(top) [label="No"]
n10.handle(right) -> n13.handle(left)
n13.handle(bottom) -> Approval.n15.handle(top) [label="Approve"]
n14.handle(right) -> n13.handle(top)
}
Approval { # Approval Chain
n15: rectangle label:"Route based on amount"
n16: diamond label:"Amount threshold?"
n17: rectangle label:"Manager approval"
n18: rectangle label:"Director approval"
n19: rectangle label:"VP approval"
n20: diamond label:"Approved?"
n21: rectangle label:"Generate PO number"
n22: rectangle label:"Reject with comments"
n15.handle(right) -> n16.handle(left)
n16.handle(right) -> n17.handle(left) [label="< $5K"]
n16.handle(bottom) -> n18.handle(top) [label="$5K-$50K"]
n16.handle(left) -> n19.handle(top) [label="> $50K"]
n17.handle(bottom) -> n20.handle(top)
n18.handle(bottom) -> n20.handle(top)
n19.handle(bottom) -> n20.handle(top)
n20.handle(right) -> n21.handle(left) [label="Yes"]
n20.handle(bottom) -> n22.handle(top) [label="No"]
n21.handle(top) -> Requester.n5.handle(bottom) [label="PO issued"]
n22.handle(top) -> Requester.n2.handle(bottom) [label="Rejected"]
}