pub struct Task {
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 */
}Expand description
A single processing unit within a workflow (also known as an Action in rules-engine terminology).
Tasks execute functions with optional conditions and error handling. They are processed sequentially within a workflow, allowing later tasks to depend on results from earlier ones.
§Example JSON Definition
{
"id": "validate_user",
"name": "Validate User Data",
"description": "Ensures user data meets requirements",
"condition": {">=": [{"var": "data.order.total"}, 1000]},
"function": {
"name": "validation",
"input": { "rules": [...] }
},
"continue_on_error": false,
"terminal": false
}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”.
Implementations§
Source§impl Task
impl Task
Sourcepub fn action(id: &str, name: &str, function: FunctionConfig) -> Self
pub fn action(id: &str, name: &str, function: FunctionConfig) -> Self
Create a task (action) with default settings.
This is a convenience constructor for the IFTTT-style rules engine pattern,
creating an action that always executes (condition defaults to true).
§Arguments
id- Unique identifier for the actionname- Human-readable namefunction- The function configuration to execute