Portal Community

What Is HIL Continuation?

Human-in-the-Loop (HIL) continuation is the pattern where a workflow durably suspends mid-execution, presents data to a human via some channel, waits for their response (approve / reject / edit values), and then resumes exactly where it left off — incorporating whatever the human provided.

The BizFirst execution engine handles the suspension and resumption mechanics. As a node developer, your job is to:

The Core Insight

Every HIL channel — regardless of how different the delivery mechanism is — funnels into a single, universal resume gate:

IWorkflowContinuationOrchestrator.ContinueAsync(executionResId, responseData)

That call is all the engine needs to resume. It doesn't know or care whether the human clicked a Slack button, replied to a WhatsApp message, or submitted a web form. The ExecutionResId is the key that ties the external response back to the correct suspended workflow.

Channels Covered in This Guide

What Stays the Same Across Every Channel

ConcernWho handles itStays the same?
Suspending executionEngine — return "waiting" portYes — identical for all channels
Serializing state to SQLEngine — ISuspendedExecutionRegistryYes
Which fields to showNodeFieldManifest.HilPolicyYes — declared on the node type
Field visibility / edit rulesHilPolicy.DisplayMode / InputModeYes — same policy, rendered differently per channel
Resume gateContinueAsync(resId, data)Yes — identical for all channels
Message formattingYour channel node executorNo — each channel has its own format
Delivery mechanismChannel API (Slack, WA, etc.)No — each channel API is different
Correlation key embeddingYour webhook handler patternMostly — strategy varies by channel
Start here Read How It Works first to understand the execution model. Then read Building a Channel for the universal implementation pattern. Then go to the channel-specific page you need.