Workflow XML reference
Common node attributes
Every node form accepts these attributes. Any node can also be written as <node id="…" type="…"><config>…</config></node>, with settings as named <value> children using the config names below.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
id |
— | yes | string | — | Unique identifier for the node, used by edges and expressions. |
name |
— | no | string | — | Display name. Defaults to the ID; expressions can also use it. |
timeoutSeconds |
— | no | number | — | Most time the node may take, in seconds. |
maxRetries |
— | no | integer | — | How many times to retry the node if it fails. |
continueOnError |
— | no | true, false |
— | When true, the run continues after this node fails; later nodes may then lack its output. |
x |
— | no | number | — | Position on the editor canvas; give it with y. |
y |
— | no | number | — | Position on the editor canvas; give it with x. |
Logic
<condition> · Condition
Tests a condition and continues down the true or false branch. Use it for a simple either/or decision; use switch for more than two outcomes.
Node type condition.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
test |
expression |
yes | string | — | The condition to test, for example input.age >= 18. |
<logic> · Logic
Combines several conditions into one result with a gate such as and or or. Use it when a branch depends on more than one test.
Node type logic.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
op |
— | yes | and, or, not, nand, nor, xor, xnor |
— | How to combine the conditions. |
<operand> |
operands |
no | conditions | — | The conditions to combine, in order. |
<switch> · Switch
Chooses one of several branches: the first case whose condition holds wins, with an optional default. Use it for decisions with more than two outcomes.
Node type switch.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
default |
— | no | string | — | Branch to take when no case matches. It must match an edge's when label. |
<case> |
cases |
no | repeated element | — | The cases to test, in order; the first that matches wins. |
Each <case> accepts:
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
test |
expression |
yes | string | — | The condition for this case, for example input.value > 10. |
name |
— | yes | string | — | The branch to take; it must match an edge's when label. |
<transform> · Transform
Builds new values from inputs and earlier results. Use it to reshape data or compute fields before passing them on.
Node type transform. Named <value> children set mapping.
Control flow
<delay> · Delay
Waits for a set time before continuing. Use it to space out calls to an external service or to wait before checking a result again.
Node type delay.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
jitter |
— | no | integer | — | Optional random variation, in seconds, added to or taken from the wait. |
seconds |
— | yes | integer or number or string | — | How long to wait, in seconds: a number or a {{ … }} expression that gives one. |
<for-each> · For Each
Runs a nested step once for every item in a list, and collects the results. Use it to process each order, row or file in turn.
Node type for_each.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
as |
— | no | string | item |
Name for the current item inside the nested step. |
items |
— | yes | array or string | — | The list to go through: a literal list, or a {{ … }} expression such as {{ nodes.list.output.entries }}. |
maxConcurrency |
— | no | integer | 1 |
How many items to process at the same time. |
<body> |
— | no | one nested node | — | The step to run for each item. |
<join> · Join
Waits for all incoming branches and combines their results into one. Use it after parallel branches whose results you need together.
Node type join.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
onPartialFailure |
— | no | fail, skip |
fail |
What to do if an incoming branch failed but the run continued: fail marks the join as failed; skip skips it. A branch that was simply not taken does not count as a failure. |
strategy |
— | no | merge, array, keyed |
— | merge combines the results into one object; array lists them; keyed stores each under its node's ID, or under the names in <keys>. |
<keys> |
— | no | named <value> children |
— | Names to use instead of node IDs with the keyed strategy. |
<merge> · Merge
Continues as soon as whichever incoming branches ran have finished, and combines their results. Use it after branches where only some will run, such as the two sides of a condition.
Node type merge.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
strategy |
— | no | merge, array, keyed |
— | merge combines the results into one object; array lists them; keyed stores each under its node's ID. |
<keys> |
— | no | named <value> children |
— | With the keyed strategy, names to use instead of node IDs. |
<split> · Split
Starts every outgoing branch at the same time, each with the same input. Use it for independent work that can run in parallel; bring the branches back together with join.
Node type split.
State
<set-variable> · Set Variable
Sets workflow variables from literal values or {{ … }} expressions. Use it to keep a value that several later steps need.
Node type set_variable. Named <value> children set variables.
Validation
<assert> · Assert
Checks that a condition holds. By default a failed check stops the run with your message; set softFail to continue and report the result instead. Use it to guard against bad data before later steps act on it.
Node type assert.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
test |
condition |
yes | string | — | The condition to check, for example input.quantity > 0. |
message |
— | no | string | — | Message used when the check fails. Use {{ … }} to include inputs, earlier results or variables. |
softFail |
— | no | boolean | false |
When true, a failed check does not stop the run; the node outputs passed: false instead. |
Parsing
<csv> · CSV
Turns CSV text into a list of records, or a list of records into CSV text. Use it after reading a CSV file or response, or before writing one.
Node type csv_parse. The element's own text or CDATA sets source; do not also set it another way.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
delimiter |
— | no | string | , |
Character that separates columns. |
hasHeaders |
— | no | boolean | true |
Parse mode: the first row holds the column names. |
mode |
— | yes | parse, encode |
— | parse turns CSV text into records; encode turns records into CSV text. |
source |
— | no | text or typed value | — | The data to convert, written directly or as a {{ … }} expression such as {{ nodes.read.output.content }}. |
<columns> |
— | no | <value> list |
— | Column names. When parsing a file without a header row, they name the fields; when encoding, they set the column order. |
<json> · JSON
Turns JSON text into structured data, or structured data into JSON text. Use it to read an API response or a JSON file, or to prepare JSON to send.
Node type json_parse. The element's own text or CDATA sets source; do not also set it another way.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
mode |
— | yes | parse, encode |
— | parse turns JSON text into data; encode turns data into JSON text. |
pretty |
— | no | boolean | — | Encode mode: format the JSON with line breaks and indentation. |
source |
— | no | text or typed value | — | The data to convert, written directly or as a {{ … }} expression such as {{ nodes.read.output.content }}. |
<regex> · Regex
Matches, extracts, replaces or splits text using a regular expression. Use it to pull a job number out of a file name or to clean up text.
Node type regex.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
flags |
— | no | string | — | Options for the pattern; i ignores upper and lower case. |
input |
— | yes | string | — | The text to work on, written directly or as a {{ … }} expression. |
mode |
— | no | match, extract, replace, split |
match |
What to do with the matches. |
<pattern> |
— | no | text | — | The regular expression. |
<replacement> |
— | no | text | — | Replace mode: the replacement text. $1, $2 and so on insert captured groups. |
<yaml> · YAML
Turns YAML text into structured data, or structured data into YAML text. Use it to read or write YAML files.
Node type yaml_parse. The element's own text or CDATA sets source; do not also set it another way.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
mode |
— | yes | parse, encode |
— | parse turns YAML text into data; encode turns data into YAML text. |
source |
— | no | text or typed value | — | The data to convert, written directly or as a {{ … }} expression such as {{ nodes.read.output.content }}. |
Data
<run-report> · Run report
Starts a published report and returns its run ID; the report is produced separately. Use it to generate documents or exports as part of a workflow.
Node type run_report.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
occurrenceKey |
— | no | string | — | Inside a loop, a value that is unique for each item, so each item gets its own report run. Leave it out for a single run. |
versionId |
— | yes | string | — | The published report version to run. |
<parameters> |
— | no | named <value> children |
— | Values for the report's parameters; text values can use {{ … }} expressions. |
Integration
<custom-workflow-action> · Custom Action
Runs one of your installation's custom actions. Use it to reuse a Lua-backed action your team has defined.
Node type custom_workflow_action.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
actionId |
— | yes | string | — | The custom action to run. |
<action-config> |
actionConfig |
no | named <value> children |
— | Settings for the action, as defined by the action. They are passed unchanged, without resolving {{ … }} expressions. |
<file-check> · File Check
Checks whether a file exists in a folder. Use it to decide what to do next depending on whether a file has arrived.
Node type file_check.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
controllerId |
— | no | string | — | Older workflows only: routes to a controller when no folder is given. Use folderId in new workflows. |
folderId |
— | no | string | — | Folder ID (a TypeID starting fld_), or a {{ … }} expression. Leave it out to use your default folder. |
path |
— | yes | string | — | Path of the file to check, or a {{ … }} expression. Paths are relative to the folder; .. segments are rejected. |
<file-copy> · File Copy
Copies a file, within a folder or between folders. Use it to archive or hand files on without changing them.
Node type file_copy.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
controllerId |
— | no | string | — | Older workflows only: routes to a controller when no folder is given. Use folderId in new workflows. |
destinationFolderId |
— | no | string | — | Folder to copy to: its ID (a TypeID starting fld_) or a {{ … }} expression. Leave it out to use your default folder. |
destinationKey |
— | yes | string | — | Path to copy to, or a {{ … }} expression. An existing file at that path is overwritten. Paths are relative to the folder; .. segments are rejected. |
sourceFolderId |
— | no | string | — | Folder to copy from: its ID (a TypeID starting fld_) or a {{ … }} expression. Leave it out to use your default folder. |
sourceKey |
— | yes | string | — | Path of the file to copy, or a {{ … }} expression. Paths are relative to the folder; .. segments are rejected. |
<file-delete> · File Delete
Deletes a file from a folder. Use it to clean up after processing.
Node type file_delete.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
controllerId |
— | no | string | — | Older workflows only: routes to a controller when no folder is given. Use folderId in new workflows. |
folderId |
— | no | string | — | Folder ID (a TypeID starting fld_), or a {{ … }} expression. Leave it out to use your default folder. |
ignoreNotFound |
— | no | boolean | false |
When true, succeed even if the file does not exist. |
path |
— | yes | string | — | Path of the file to delete, or a {{ … }} expression. Paths are relative to the folder; .. segments are rejected. |
<file-list> · File List
Lists the files in a folder. Use it with for-each to process every file that has arrived.
Node type file_list.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
controllerId |
— | no | string | — | Older workflows only: routes to a controller when no folder is given. Use folderId in new workflows. |
folderId |
— | no | string | — | Folder ID (a TypeID starting fld_), or a {{ … }} expression. Leave it out to use your default folder. |
path |
— | no | string | — | Optional path prefix to list under, or a {{ … }} expression. Leave it out to list the whole folder. Paths are relative to the folder; .. segments are rejected. |
recursive |
— | no | boolean | — | true lists every file under the prefix, at any depth; false lists only files directly in it. Left out, most folders list everything, while controller folders list one level. |
<file-read> · File Read
Reads a file from a folder. Use it to load a file's content for later steps, such as parsing CSV or JSON.
Node type file_read.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
controllerId |
— | no | string | — | Older workflows only: routes to a controller when no folder is given. Use folderId in new workflows. |
folderId |
— | no | string | — | Folder ID (a TypeID starting fld_), or a {{ … }} expression. Leave it out to use your default folder. |
path |
— | yes | string | — | Path of the file to read, or a {{ … }} expression. Paths are relative to the folder; .. segments are rejected. |
<file-wait> · File Wait
Waits until a file appears in a folder. Use it when a later step depends on a file that another system delivers.
Node type file_wait.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
controllerId |
— | no | string | — | Older workflows only: routes to a controller when no folder is given. Use folderId in new workflows. |
folderId |
— | no | string | — | Folder ID (a TypeID starting fld_), or a {{ … }} expression. Leave it out to use your default folder. |
key |
— | yes | string | — | Exact path of the file to wait for, or a {{ … }} expression. Paths are relative to the folder; .. segments are rejected. |
<file-write> · File Write
Writes content to a file in a folder. Use it to save a result, such as a CSV export or a generated document.
Node type file_write. The element's own text or CDATA sets content; do not also set it another way.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
controllerId |
— | no | string | — | Older workflows only: routes to a controller when no folder is given. Use folderId in new workflows. |
folderId |
— | no | string | — | Folder ID (a TypeID starting fld_), or a {{ … }} expression. Leave it out to use your default folder. |
path |
— | yes | string | — | Path of the file to write, or a {{ … }} expression. Paths are relative to the folder; .. segments are rejected. |
<content> |
— | no | text | — | What to write, written directly or as a {{ … }} expression. |
<graphql> · GraphQL
Runs a query or change against the CoCoCo API. Use it to read or update any record the workflow's identity has access to.
Node type graphql. The element's own text or CDATA sets query; do not also set it another way.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
operation |
— | yes | query, mutation |
— | query to read data, mutation to change it. |
<document> |
query |
no | text | — | The GraphQL document to run. |
<variables> |
— | no | named <value> children |
— | Variables for the document: literals or {{ … }} expressions such as {{ input.jobId }}. |
<http-call> · HTTP Call
Calls an external web address. Use it to reach another system's API; your installation's HTTP access policy decides which addresses are allowed.
Node type http_call.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
method |
— | no | GET, POST, PUT, DELETE, PATCH, HEAD |
— | HTTP method. |
requestTimeoutSeconds |
timeoutSeconds |
no | integer | 30 |
How long to wait for a response, in seconds; at most 120. |
url |
— | yes | string | — | The full address to call. Your installation's HTTP access policy must allow it. |
<headers> |
— | no | named <value> children |
— | Request headers. |
<body> |
— | no | one typed value | — | Request body, as text. |
<http-request> · HTTP Request
Sends an HTTP request to a connected device. Use it to talk to a device's own web interface.
Node type http_request.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
deviceId |
— | yes | string | — | The device to call, or a {{ … }} expression. |
method |
— | no | GET, POST, PUT, DELETE, PATCH |
— | HTTP method. |
path |
— | no | string | — | Path on the device to request. |
<headers> |
— | no | named <value> children |
— | Request headers. |
<query> |
— | no | named <value> children |
— | Query parameters. |
<body> |
— | no | one typed value | — | Request body. |
<integration-action> · Integration Action
Runs an action from an installed integration. Use it to work with a connected system, such as sending an order to an accounting package.
Node type integration_action.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
actionName |
— | yes | string | — | The integration action to run. |
instanceId |
— | yes | string | — | The installed integration to use (a TypeID). |
<action-config> |
actionConfig |
no | named <value> children |
— | Settings for the action, as the integration defines them. They are passed unchanged, without resolving {{ … }} expressions. |
<invoke-edge-app> · Invoke Edge App
Calls a function in an edge app running on one of your controllers. Use it to trigger work on equipment in the building.
Node type invoke_edge_app.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
controllerId |
— | yes | string | — | The controller (a TypeID) where the edge app is installed. |
edgeAppHandle |
— | yes | string | — | The edge app to call. |
function |
— | yes | string | — | The function to call, as the app exports it. |
<ml-predict> · ML Prediction
Gets a prediction from one of your trained models. Use it to estimate a value, such as a job's run time, or to forecast a series.
Node type ml_predict.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
confidenceLevel |
— | no | number | — | Forecasts only: confidence level between 0 and 1 for the prediction range. Leave it out to use the model's own setting; without one, forecasts have no upper and lower bounds. |
horizon |
— | no | integer | — | Forecasts only: how many steps ahead to forecast. Leave it out to use the model's own setting. |
modelName |
— | yes | string | — | The model to use. |
<features> |
— | no | named <value> children |
— | Inputs for a regression or classification model: a literal or a {{ … }} expression for each feature. Forecast models ignore it. |
<mqtt-publish> · MQTT Publish
Publishes a message to your MQTT broker, or to one connected device. Use it to signal equipment or other systems that listen for messages.
Node type mqtt_publish. The element's own text or CDATA sets message; do not also set it another way.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
deviceId |
— | no | string | — | Optional device to send to, or a {{ … }} expression. When given, only that device receives the message. |
message |
— | yes | string | — | The message to send, written directly or as a {{ … }} expression. |
rpc |
— | no | boolean | — | When true, wait for the device to reply. |
topic |
— | yes | string | — | The topic to publish to. |
<message> · Message
Sends a notification to a person or a group. Use it to tell people something happened or that they need to act.
Node type message.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
groupId |
— | no | string | — | Notification group to send to; everyone in it receives the message. Use this or recipientId. |
recipientId |
— | no | string | — | Person to send to. Use this or groupId. |
subject |
— | yes | string | — | Subject line. Use {{ … }} to include inputs, earlier results or variables. |
<body> |
— | no | text | — | Message text. Use {{ … }} to include inputs, earlier results or variables. |
<body-html> |
bodyHtml |
no | text | — | Optional HTML version of the message. Use {{ … }} to include inputs, earlier results or variables. |
<microsql> · MicroSQL
Runs a query against your reporting data and returns the rows. Use it to fetch figures for a later step, such as totals for a notification.
Node type microsql. The element's own text or CDATA sets query; do not also set it another way.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
maxRows |
— | no | integer | 1000 |
Most rows to return; at most 10,000. |
query |
— | yes | string | — | The query. Mark parameters as :name and give their values in <bindings>; {{ … }} expressions are also allowed. |
<bindings> |
— | no | named <value> children |
— | Parameter values: each name matches a :name in the query, and each value is a literal or a {{ … }} expression. |
<sql-query> · SQL Query
Runs a SQL query on a connected device's database and returns the rows. Use it to read data held on equipment.
Node type sql_query. The element's own text or CDATA sets query; do not also set it another way.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
deviceId |
— | yes | string | — | The device whose database to query, or a {{ … }} expression. |
query |
— | no | string | — | The SQL query; {{ … }} expressions are allowed. Prefer <bindings> for values. |
<bindings> |
— | no | <value> list |
— | Values for the query's parameters: literals or {{ … }} expressions. |
<post-process-script> |
postProcessScript |
no | text | — | Optional script run on the device to reshape the results; {{ … }} expressions are allowed. |
<script> · Script
Runs a Lua script, either saved in your script library or written inline. Use it for logic the other nodes do not cover.
Node type script. The element's own text or CDATA sets inline; do not also set it another way. type="lua" is optional.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
scriptId |
— | no | string | — | Script to run from your library, by ID (a TypeID). |
scriptName |
— | no | string | — | Script to run from your library, by name. |
scriptTimeoutMs |
timeout |
no | integer | — | Most time the script may take, in milliseconds. Defaults to your installation's script time limit. |
type |
— | no | lua |
— | Language supported by the engine's script node. |
<code> |
inline |
no | text | — | Lua source to run, instead of a library script. |
<task> · Task
Creates a task for a person or team and waits until it is resolved. Use it when a step needs a human decision or action.
Node type task.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
assignedTeamId |
— | no | string | — | Team to assign the task to. |
priority |
— | no | string | — | Task priority. |
taskDefinitionId |
— | yes | string | — | The task definition to create the task from. |
title |
— | no | string | — | Task title, instead of the definition's name. Use {{ … }} to include inputs, earlier results or variables. |
<description> |
— | no | text | — | Task description, instead of the definition's. Use {{ … }} to include inputs, earlier results or variables. |
AI
<agent> · Agent
Sends a prompt to an AI agent and returns its reply. Use it for free-form work such as summarising, classifying or drafting text from earlier steps.
Node type agent. The element's own text or CDATA sets prompt; do not also set it another way.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
agentId |
— | yes | string | — | The AI agent to use. |
prompt |
— | yes | string | — | What to ask the agent. Use {{ … }} to include inputs, earlier results or variables. |
responseVariable |
— | no | string | — | Optional workflow variable that also receives the agent's reply. |
<context> |
contextPaths |
no | <value> list |
— | Extra context for the agent: each {{ … }} expression, such as {{ nodes.load.output }}, is resolved and added to the prompt. |
<agent-task> · Agent Task
Lets an AI agent resolve a task by choosing one of the task's outcomes. Use it to automate a decision that would otherwise go to a person, optionally falling back to one.
Node type agent_task. The element's own text or CDATA sets prompt; do not also set it another way.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
agentId |
— | yes | string | — | The AI agent that decides the outcome. |
fallbackToHuman |
— | no | boolean | — | If the agent cannot resolve the task, create a task for a person instead and wait for them. |
prompt |
— | no | string | — | Extra instructions for the agent. Use {{ … }} to include inputs, earlier results or variables. |
taskDefinitionId |
— | yes | string | — | The task definition whose outcomes the agent chooses from. |
<context> |
contextPaths |
no | <value> list |
— | Extra context for the agent: each {{ … }} expression is resolved and added to the prompt. |
Production
<producibility-audit> · Producibility Audit
Checks whether a job can be produced as planned, flagging time overruns, waste and low yield. Use it to catch problems before or during production.
Node type producibility_audit.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
durationCriticalFactor |
— | no | number | 1.5 |
Run-time overrun that counts as critical: 1.5 means 50% over plan. |
durationWarningFactor |
— | no | number | 1.2 |
Run-time overrun that counts as a warning: 1.2 means 20% over plan. |
jobId |
— | yes | string | — | The job to check, as a TypeID or a {{ … }} expression such as {{ input.jobId }}. |
wasteCriticalRatio |
— | no | number | 0.1 |
Waste share that counts as critical: 0.10 means 10%. |
wasteWarningRatio |
— | no | number | 0.05 |
Waste share that counts as a warning: 0.05 means 5%. |
yieldCriticalRatio |
— | no | number | 0.8 |
Yield below which the job counts as critical: 0.80 means 80%. |
yieldMinProgressPercent |
— | no | number | 50 |
How far along, in percent, the job must be before yield is checked. |
yieldWarningRatio |
— | no | number | 0.9 |
Yield below which the job counts as a warning: 0.90 means 90%. |
<v:impose-pdf> · Impose PDF
Places source PDF pages onto press sheets according to an imposition plan, and stores the print-ready PDF on the component. Use it after impose-plan, or with saved imposition specs.
Node type impose_pdf. Declare xmlns:v="urn:cococo:workflow:print:1" on the workflow; any prefix works, but the URI must match.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
componentId |
— | yes | string | — | The component (a TypeID starting cmp_) the imposition belongs to. It supplies the default artwork and receives the finished PDF. |
fileName |
— | no | string | — | Name for the stored PDF. Defaults to imposition-<component short id>.pdf. |
outputFolderId |
— | no | string | — | Folder for the imposed PDF (a TypeID starting fld_). Leave it out to use your default folder. |
renderMode |
— | no | production, debug_summary |
production |
production places the real source pages, with crop and registration marks; debug_summary writes a text summary of the placements instead, for testing. |
<plan> |
— | no | one typed value | — | One imposition plan, as produced by impose-plan. Give either this or <imposition-spec-ids>. |
<imposition-spec-ids> |
impositionSpecIds |
no | <value> list |
— | Saved imposition specs for the component (TypeIDs starting imp_), imposed in order. Give either this or <plan>. |
<page-binding> |
pageBindings |
no | repeated element | — | Which source PDF supplies which placed pages. Optional when the component has exactly one artwork file. |
Each <page-binding> accepts:
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
pageRangeEnd |
— | yes | integer | — | Last placed page this source covers (inclusive). |
pageRangeStart |
— | yes | integer | — | First placed page this source covers (inclusive, counting from 1). |
sourceDocumentId |
— | yes | string | — | The source PDF: an artwork file (caf_…) or a managed file (fil_…). |
sourcePageOffset |
— | no | integer | 0 |
Added to the page number when mapping a placed page to a source page. |
<v:impose-plan> · Impose Plan
Works out how to impose a job's pages on press sheets and returns the recommended plan. Use it to compare options, or feed the plan to impose-pdf.
Node type impose_plan. Declare xmlns:v="urn:cococo:workflow:print:1" on the workflow; any prefix works, but the URI must match.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
bindingType |
— | no | SADDLE_STITCH, PERFECT_BOUND, CASE_BOUND, WIRE_BOUND, FLATWORK, FOLDED, OTHER |
— | Binding method; it decides how pages are ordered on the sheet. |
bleedMm |
— | no | number | 3 |
Bleed on every edge, in millimetres. With componentId, it replaces the component's bleed. |
componentId |
— | no | string | — | Component (a TypeID starting cmp_) to take page size, quantity and substrates from, or a {{ … }} expression. Use this or the size attributes, not both. |
finishedHeightMm |
— | no | number | — | Trimmed page height in millimetres, when you give the size directly. |
finishedWidthMm |
— | no | number | — | Trimmed page width in millimetres, when you give the size directly. |
fullResult |
— | no | boolean | false |
Also return every ranked plan as plans, not only the best one. |
maxPagesUp |
— | no | integer | — | Most pages to place per section; larger fold patterns are left out. |
mode |
— | no | signature, ganging |
signature |
signature plans folded sections for bound or folded work; ganging plans flat step-and-repeat layouts, several copies to a sheet. |
quantity |
— | no | integer | — | Copies to produce, used to estimate total sheets. With componentId, it replaces the component's quantity. |
totalPages |
— | no | integer | — | Total trimmed pages, when you give the size directly (with the width and height). |
<substrate> |
substrates |
no | repeated element | — | Sheets to plan against, written out in full. Only with a size given directly, and not together with <substrate-ids>. |
<substrate-ids> |
substrateIds |
no | <value> list |
— | Substrates to plan against (TypeIDs starting sub_). With componentId, it narrows the component's substrates. |
<permitted-folds> |
permittedFolds |
no | <value> list |
— | Only consider these fold patterns, for example f8 and f16. Unknown patterns are rejected. |
Each <substrate> accepts:
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
heightMm |
— | yes | number | — | Sheet height in millimetres. |
name |
— | yes | string | — | Sheet name, for example SRA3. |
widthMm |
— | yes | number | — | Sheet width in millimetres. |
<v:pdf-preflight> · PDF Preflight
Checks a component's artwork PDF against print requirements and reports any problems. Use it before production so faulty files are caught early.
Node type pdf_preflight. Declare xmlns:v="urn:cococo:workflow:print:1" on the workflow; any prefix works, but the URI must match.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
artworkFileId |
— | yes | string | — | The artwork file to check (a TypeID starting caf_), or a {{ … }} expression. |
persist |
— | no | boolean | true |
Save the full report on the component. |
profile |
— | no | COMMERCIAL_OFFSET, PDF_X_1A, PDF_X_3, PDF_X_4, PDF_X_CLAIMED |
COMMERCIAL_OFFSET |
The standard to check against. |
<v:pdf-render> · PDF Render
Renders one page of a PDF as an image. Use it to make proofs or thumbnails.
Node type pdf_render. Declare xmlns:v="urn:cococo:workflow:print:1" on the workflow; any prefix works, but the URI must match.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
artworkFileId |
— | no | string | — | Artwork file whose PDF to render (a TypeID starting caf_). Give either this or fileId. |
delivery |
— | no | file, inline |
file |
file stores the image as a file; inline returns it in the node's output. |
dpi |
— | no | integer | 200 |
Resolution in dots per inch; 72 is the PDF's own size. |
fileId |
— | no | string | — | Managed file of the PDF to render (a TypeID starting fil_). Give either this or artworkFileId. |
fileName |
— | no | string | — | Name for the stored image, when delivered as a file. Defaults to render-p<page>.<extension>. |
format |
— | no | jpeg, png, cmyk_tiff |
jpeg |
Image format. |
maxEdgePixels |
— | no | integer | — | Optional limit on the image's longest side, in pixels; larger renders are scaled down. |
outputFolderId |
— | no | string | — | Folder for the stored image (a TypeID starting fld_), when delivered as a file. Leave it out to use your default folder. |
page |
— | no | integer | 1 |
Page to render, counting from 1. |
quality |
— | no | integer | 85 |
JPEG quality from 1 to 100. Ignored for PNG and TIFF. |
<v:pdf-separations> · PDF Separations
Renders each ink of a PDF page as its own greyscale image, stored as files. Use it to check what each printing plate will carry.
Node type pdf_separations. Declare xmlns:v="urn:cococo:workflow:print:1" on the workflow; any prefix works, but the URI must match.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
artworkFileId |
— | no | string | — | Artwork file whose PDF to separate (a TypeID starting caf_). Give either this or fileId. |
dpi |
— | no | integer | 300 |
Resolution in dots per inch; 72 is the PDF's own size. |
fileId |
— | no | string | — | Managed file of the PDF to separate (a TypeID starting fil_). Give either this or artworkFileId. |
fileName |
— | no | string | separation |
Start of each stored file's name; files are named <prefix>-p<page>-<ink>.png. |
outputFolderId |
— | no | string | — | Folder for the plate images (a TypeID starting fld_). Leave it out to use your default folder. |
page |
— | no | integer | 1 |
Page to separate, counting from 1. |
polarity |
— | no | POSITIVE, NEGATIVE |
POSITIVE |
Whether more ink shows as darker (POSITIVE) or lighter (NEGATIVE). |
<colorant> |
colorants |
no | <item> list |
— | Inks to render, for example Cyan or PANTONE 286 C. Leave it out to render CMYK plus every spot colour in the document. |
Diagnostics
<log> · Log
Writes a message to the run's log and passes its input on unchanged. Use it to record what happened, or to help understand a run later.
Node type log. The element's own text or CDATA sets message; do not also set it another way.
| Attribute | Config name | Required | Type / values | Default | Meaning |
|---|---|---|---|---|---|
level |
— | no | debug, info, warning, error |
info |
How important the message is. |
message |
— | yes | string | — | The message. Use {{ … }} to include inputs, earlier results or variables. |
Published platform manual · revision 656fdda43626