Decision Diamond Workflow
patterns
This workflow models an if or then style branch for approval or rejection.
Full FlowZap Code
user { # User
n1: circle label:"Start Decision Diamond"
n2: diamond label:"Receive Decision Diamond event"
n4: rectangle label:"Execute Decision Diamond action"
n7: rectangle label:"Monitor Decision Diamond status"
n10: circle label:"End Decision Diamond"
n1.handle(right) -> n2.handle(left)
n2.handle(bottom) -> service.n3.handle(top) [label="Yes/Approved"]
n4.handle(bottom) -> app.n5.handle(top)
n7.handle(bottom) -> app.n8.handle(top)
n2.handle(top) -> n4.handle(top) [label="No/Rejected"]
}
app { # App
n5: rectangle label:"Record Decision Diamond outcome"
n8: rectangle label:"Monitor Decision Diamond status"
n5.handle(bottom) -> service.n6.handle(top)
n8.handle(bottom) -> service.n9.handle(top)
}
service { # Service
n3: diamond label:"Validate Decision Diamond conditions"
n6: rectangle label:"Monitor Decision Diamond status"
n9: rectangle label:"Monitor Decision Diamond status"
n9.handle(right) -> user.n10.handle(bottom)
n6.handle(right) -> user.n7.handle(left)
n3.handle(left) -> app.n5.handle(left)
}
Related templates
Callback Pattern Workflow
patterns
This workflow models an async operation that notifies a callback when done.
Compensation Transaction Workflow
patterns
This workflow models rolling back work when a later step fails.