Express the actual process.
Use code to branch on results, repeat bounded checks, and select named outcomes. Declare the Functions, Actions, child workflows, and signals the process may use.
Express business processes in code. Call Functions and Actions, wait for events or deadlines, coordinate child workflows, and retain the history of each run.
Follow a signature request through delivery, a wait, a reminder, and a declared business outcome.
Wait for a signature change or an absolute deadline. Inspect the current state before choosing the next operation.
Use code to branch on results, repeat bounded checks, and select named outcomes. Declare the Functions, Actions, child workflows, and signals the process may use.
Pause for a signature or another declared signal. Set an absolute business deadline, check the current state, and decide what should happen when time runs out.
Call an Action through its normal planning and review path. Start child workflows, collect results, or race child runs. Each operation retains its own outcome.
Recorded operation results support replay and continuation. Retryable infrastructure failures are distinct from business outcomes such as signed, cancelled, or expired.
A long-running process does not bypass current Action authority or review requirements. Recovery retains history while the next change still crosses the ordinary Action boundary.
An exact excerpt from the repository, with the complete source file available to inspect and download.
delivered, err := product.Actions.SendSignatureRequest(product.ActionSendSignatureRequestInput{}, target) if err != nil { return nil, err } deliveryID, err := acknowledgedDeliveryID(delivered) if err != nil { return nil, err } if _, err := product.Actions.ConfirmSignatureDelivery(product.ActionConfirmSignatureDeliveryInput{DeliveryID: deliveryID}, target); err != nil { return nil, err } check, err := product.Functions.SignatureRequestTerminalCheck(product.FunctionSignatureRequestTerminalInput{RequestID: requestID}) if err != nil { return nil, err } firstWait, err := product.Signals.OnboardingSignatureChanged(target, waitCeilingMS, module.SignalOptions{DeadlineAt: input.ReminderAt, Until: check}) if err != nil { return nil, err } state, err := signatureState(requestID, firstWait) if err != nil { return nil, err } if outcome, done, err := finishTerminal(requestID, state, target); done || err != nil { return outcome, err } if _, err := product.Actions.SendSignatureReminder(product.ActionSendSignatureReminderInput{}, target); err != nil { return nil, err }Workflows are bounded durable programs. The contract currently caps operations at 256 and recorded history at 8 MiB, with a declared maximum duration and replay fuel. Code owns the control flow. The guided example is a local illustration, not a live recovery benchmark.
Read the capability referenceA business process, the systems it touches, and the rules it needs to follow.