pub type Action = Task;Expand description
Type alias for Task — an Action is an individual processing step within a rule.
Aliased Type§
pub struct Action {
pub id: String,
pub name: String,
pub description: Option<String>,
pub condition: Value,
pub function: FunctionConfig,
pub continue_on_error: bool,
pub terminal: bool,
/* private fields */
}Fields§
§id: StringUnique identifier for the task within the workflow.
name: StringHuman-readable name for the task.
description: Option<String>Optional description explaining what the task does.
condition: ValueJSONLogic condition that determines if the task should execute.
Conditions can access any context field (data, metadata, temp_data).
Defaults to true (always execute).
function: FunctionConfigThe function configuration specifying what operation to perform. Can be a built-in function (map, validation) or a custom function.
continue_on_error: boolWhether to continue workflow execution if this task fails.
When true, errors are recorded but don’t stop the workflow.
Defaults to false.
terminal: boolWhether running this task ends the workflow. Defaults to false.
terminal is a statement about position — “nothing after this runs” —
not about outcome:
- a false
conditionmeans the task never ran, so nothing halts; TaskOutcome::Skipdoes not halt, for the same reason;- a task that failed under
continue_on_error: truestill halts, and its error is still recorded onmessage.errors().
Halting stops this workflow only; later workflows registered on the same
engine still process the message. Inside a workflow carrying a
LoopConfig it breaks the whole
loop, not one sweep — the same scope as
TaskOutcome::Halt.
The audit-trail entry keeps the task’s own status (200, 404, …)
rather than HALT_STATUS_CODE: the task did its job, and a map that
wrote a 404 response body should not report “a filter halted here”.