Portal Community
Configuration is set in the node's property panel within the BizFirstAI workflow designer. Properties marked Required must have a value at design time or via a valid expression. Properties marked Optional have sensible defaults and can be omitted.

Properties Reference

Property Type Required Default Description
actors string[] Required List of actor identifiers who will receive the approval request. Each entry can be a user ID (e.g., "user:abc123") or a role ID (e.g., "role:finance-manager"). When a role is specified, all active members of that role receive an inbox item. At least one actor is required.
title string Required The short title of the approval request displayed at the top of the inbox item. Should be concise and action-oriented (e.g., "Purchase Order Approval Required"). Supports BizFirst expressions for dynamic values.
message string Required The notification message sent to each actor. This appears in push/email notifications. Should summarise what action is needed. Supports BizFirst expressions.
description string Optional "" Detailed description shown inside the approval inbox item. Use this to provide full context — amounts, requester name, business justification, links to supporting documents. Supports BizFirst expressions and basic HTML formatting.
timeout_minutes integer Optional 1440 Number of minutes to wait for a decision before the timeout fires. When timeout occurs, the node routes to the escalated port if it has downstream connections, otherwise to error. Set to 0 to disable timeout entirely (not recommended for production).
allow_multiple_approvals boolean Optional false When false (default), the workflow resumes as soon as any one actor responds. When true, the workflow waits for all listed actors to respond before resuming. In multi-approval mode, if any actor rejects, the node fires the rejected port immediately without waiting for remaining actors.

Expression Support

The following properties support BizFirst dynamic expressions, allowing you to inject runtime workflow variable values into the approval request content. Wrap any expression in double curly braces: {{ expression }}.

PropertyExpression SupportExample
actors Supported ["{{ $var.manager_id }}", "role:finance"]
title Supported "Approve PO #{{ $var.po_number }}"
message Supported "{{ $var.requester_name }} has submitted a ${{ $var.amount }} purchase request"
description Supported "Vendor: {{ $var.vendor_name }}<br>Amount: ${{ $var.amount }}<br>Category: {{ $var.category }}"
timeout_minutes Static only 480
allow_multiple_approvals Static only true

Sample Configuration JSON

The following is the full node configuration object as stored in the workflow definition file:

{
  "nodeType": "Approval",
  "id": "approval_po_review",
  "label": "CFO Purchase Approval",
  "config": {
    "actors": ["role:cfo", "user:finance-director-001"],
    "title": "Purchase Order Approval — #{{ $var.po_number }}",
    "message": "{{ $var.requester_name }} has submitted a purchase order for ${{ $var.amount }} ({{ $var.vendor_name }}). Please review and respond.",
    "description": "Requester: {{ $var.requester_name }}<br>Department: {{ $var.department }}<br>Vendor: {{ $var.vendor_name }}<br>Amount: ${{ $var.amount }}<br>Justification: {{ $var.justification }}<br><a href='{{ $var.po_document_url }}'>View Document</a>",
    "timeout_minutes": 240,
    "allow_multiple_approvals": false
  }
}

Actor Resolution

Actors can be defined using the following identifier formats:

FormatExampleBehaviour
User ID "user:abc123" Creates a single inbox item for the specific user.
Role ID "role:finance-manager" Creates one inbox item for each active member of the named role at the time of suspension.
Expression "{{ $var.assigned_approver }}" Resolves the expression at runtime; the result must be a valid user or role ID.
Empty actor list: If the actors array resolves to empty at runtime (e.g., a role has no active members), the node will immediately fire the error port. Always validate that actor expressions resolve to a non-empty list in your workflow's preceding logic.

Multi-Approval Mode

When allow_multiple_approvals is set to true, the Approval node follows a consensus model: