Flow Studio
Approval Node Configuration
Configure approvers, strategy, timeout, and escalation in the Approval node's right panel. All configuration is stored in the node's data bag and validated at design time.
Node Configuration Schema
// ApprovalNodeSettings (stored in node data)
{
"title" : "Vendor Contract Approval",
"instruction" : "Review and approve the vendor contract attached.",
"approvers" : [
{ "actorId": "user-finance-head", "actorType": "User" },
{ "actorId": "user-legal-team", "actorType": "User" },
{ "actorId": "group-cxo-pool", "actorType": "Group" }
],
"strategy" : "All", // "Any" | "All" | "Quorum"
"quorumCount" : null, // set for Quorum (e.g., 2)
"quorumPercent" : null, // set for Quorum % (e.g., 0.67 for 67%)
"timeoutDuration": "P1D", // ISO 8601 duration — 1 day
"timeoutBehavior": "Escalate", // "Escalate" | "AutoApprove" | "AutoReject" | "Fail"
"escalationActorId": "user-ceo",
"allowComment" : true,
"requireComment" : false // require comment on reject
}
Approver Types
| Actor Type | Behaviour | Count Toward Quorum |
|---|---|---|
| User | Specific user receives one HIL task | 1 vote |
| Group | All group members receive the task — first decision from any member counts | 1 vote (not one per member) |
| Dynamic (expression) | $output.assignActorNode.userId — resolved at runtime | 1 vote |
Node Output Ports
The Approval node has three output ports:
| Port | Condition | isTimeoutPort |
|---|---|---|
approved | Consensus reached with Approved decision | false |
rejected | Consensus reached with Rejected decision | false |
timeout | Timeout elapsed and timeoutBehavior is not AutoDecide/Fail | true |
Dynamic Approvers Using Expressions
// Approver resolved from a previous node's output
{
"approvers": [
{
"actorId" : "$output.getManagerNode.managerId",
"actorType": "User"
}
]
}
Design-time validation: The node configuration form validates that at least one approver is defined and that the quorumCount does not exceed the approver list length. Misconfigured nodes show an error badge on the canvas.