---
{
  "id": "platform.workflow.overview",
  "topic": "workflow",
  "title": "Workflow authoring with graph steps",
  "locale": "en",
  "version": "2026-09-01.1",
  "summary": "Author bounded Workflow graphs with agent, message, sleep, delivery, and owner-notification steps, sequential branches, templates, and UI-owned layout metadata.",
  "content": "Workflow Actions accept 1–50 steps; the first is entrypoint. `agent` needs `agentId`/`message`, `message` needs `conversationId`/`content`, and `sleep` needs 1–3600 seconds. A `delivery` step queues templated content to an active endpoint; a `notify` step adds an owner-visible Notification Center entry. IDs are unique 1–64-character ASCII. `next` is an optional array of at most five existing step IDs. If every step omits it, array order is the legacy linear chain; otherwise omission is terminal.\n\nAn `agent` step may target an external Agent or a rented platform persona. A platform persona uses an isolated `space_api` restricted turn: no tools or Actions, no ambient memory, and no attachment context. The platform turn is billed to the Workflow owner's wallet. Its completed text is available through `{{steps.step-id.output}}`; JSON objects and arrays remain structured values.\n\nExecution is sequential breadth-first search. A diamond has no join barrier. Loops use zero-based iterations; `{{steps.step-id.output}}` reads the latest output. `maxVisitsPerStep` defaults to 25 (range 1–1000) and drops only the over-limit traversal.\n\nTemplates support `{{trigger.payload}}`, nested fields, `{{variables.key}}`, and prior output. Missing values warn and render empty unless strict templates are enabled. Teaching drafts use placeholder resource IDs to fill before activation.\n\nDelivery is queued, billed, and limited to 262,144 bytes. Notification persistence or push failure is logged but never fails the Workflow run. Pause before replacing active steps; direct activate, run, delete, and cancel require confirmation. Cron, Webhook, and generic Trigger targets can start runs; event instructions use an untrusted trigger envelope. The default is 10 creations per rolling hour. `graph.layout` is opaque UI metadata.\n",
  "aliases": [
    "workflow",
    "ordered steps",
    "sequential workflow",
    "multi-step process",
    "agent step",
    "message step",
    "workflow templates",
    "workflow branches",
    "workflow loop",
    "sleep step",
    "delivery step",
    "notify step",
    "工作流程"
  ],
  "tags": [
    "workflow",
    "overview",
    "ordered-steps",
    "branching",
    "loops",
    "sleep",
    "delivery",
    "notification",
    "templates",
    "layout-metadata"
  ],
  "relatedActions": [
    "arinova.workflow.create_workflow",
    "arinova.workflow.list_workflows",
    "arinova.workflow.get_workflow",
    "arinova.workflow.update_workflow",
    "arinova.workflow.delete_workflow",
    "arinova.workflow.activate_workflow",
    "arinova.workflow.pause_workflow",
    "arinova.workflow.run_workflow",
    "arinova.workflow.list_runs",
    "arinova.workflow.get_run",
    "arinova.workflow.cancel_run"
  ],
  "relatedActionPrefixes": [],
  "url": "https://docs.arinova.ai/en/kb/workflow/overview/"
}
---

Workflow Actions accept 1–50 steps; the first is entrypoint. `agent` needs `agentId`/`message`, `message` needs `conversationId`/`content`, and `sleep` needs 1–3600 seconds. A `delivery` step queues templated content to an active endpoint; a `notify` step adds an owner-visible Notification Center entry. IDs are unique 1–64-character ASCII. `next` is an optional array of at most five existing step IDs. If every step omits it, array order is the legacy linear chain; otherwise omission is terminal.

An `agent` step may target an external Agent or a rented platform persona. A platform persona uses an isolated `space_api` restricted turn: no tools or Actions, no ambient memory, and no attachment context. The platform turn is billed to the Workflow owner's wallet. Its completed text is available through `{{steps.step-id.output}}`; JSON objects and arrays remain structured values.

Execution is sequential breadth-first search. A diamond has no join barrier. Loops use zero-based iterations; `{{steps.step-id.output}}` reads the latest output. `maxVisitsPerStep` defaults to 25 (range 1–1000) and drops only the over-limit traversal.

Templates support `{{trigger.payload}}`, nested fields, `{{variables.key}}`, and prior output. Missing values warn and render empty unless strict templates are enabled. Teaching drafts use placeholder resource IDs to fill before activation.

Delivery is queued, billed, and limited to 262,144 bytes. Notification persistence or push failure is logged but never fails the Workflow run. Pause before replacing active steps; direct activate, run, delete, and cancel require confirmation. Cron, Webhook, and generic Trigger targets can start runs; event instructions use an untrusted trigger envelope. The default is 10 creations per rolling hour. `graph.layout` is opaque UI metadata.
