API Reference
Quick reference for the main dataflow-rs types and methods.
Engine
The central component that processes messages through workflows.
#![allow(unused)]
fn main() {
use dataflow_rs::Engine;
}
Constructor
#![allow(unused)]
fn main() {
pub fn new(
workflows: Vec<Workflow>,
custom_functions: Option<HashMap<String, Box<dyn AsyncFunctionHandler + Send + Sync>>>
) -> Engine
}
Creates a new engine with the given workflows. All JSONLogic is compiled at creation.
Methods
#![allow(unused)]
fn main() {
// Process a message through all matching workflows
pub async fn process_message(&self, message: &mut Message) -> Result<()>
// Get registered workflows
pub fn workflows(&self) -> &HashMap<String, Workflow>
}
Workflow
A collection of tasks with optional conditions and priority.
#![allow(unused)]
fn main() {
use dataflow_rs::Workflow;
}
Constructors
#![allow(unused)]
fn main() {
// Parse from JSON string
pub fn from_json(json: &str) -> Result<Workflow>
// Load from file
pub fn from_file(path: &str) -> Result<Workflow>
}
JSON Schema
{
"id": "string (required)",
"name": "string (optional)",
"priority": "number (optional, default: 0)",
"condition": "JSONLogic (optional)",
"continue_on_error": "boolean (optional, default: false)",
"tasks": "array of Task (required)"
}
Task
An individual processing unit within a workflow.
JSON Schema
{
"id": "string (required)",
"name": "string (optional)",
"condition": "JSONLogic (optional)",
"continue_on_error": "boolean (optional)",
"function": {
"name": "string (required)",
"input": "object (required)"
}
}
Message
The data container that flows through workflows.
#![allow(unused)]
fn main() {
use dataflow_rs::Message;
}
Constructors
#![allow(unused)]
fn main() {
// Create from data (goes to context.data)
pub fn new(data: &Value) -> Message
// Create from full context value
pub fn from_value(context: &Value) -> Message
}
Fields
#![allow(unused)]
fn main() {
pub struct Message {
pub id: Uuid,
pub payload: Arc<Value>,
pub context: Value, // Contains data, metadata, temp_data
pub audit_trail: Vec<AuditTrail>,
pub errors: Vec<ErrorInfo>,
}
}
Methods
#![allow(unused)]
fn main() {
// Get context as Arc for efficient sharing
pub fn get_context_arc(&mut self) -> Arc<Value>
// Invalidate context cache after modifications
pub fn invalidate_context_cache(&mut self)
}
AsyncFunctionHandler
Trait for implementing custom functions.
#![allow(unused)]
fn main() {
use dataflow_rs::engine::AsyncFunctionHandler;
}
Trait Definition
#![allow(unused)]
fn main() {
#[async_trait]
pub trait AsyncFunctionHandler: Send + Sync {
async fn execute(
&self,
message: &mut Message,
config: &FunctionConfig,
datalogic: Arc<DataLogic>,
) -> Result<(usize, Vec<Change>)>;
}
}
Return Value
usize- Status code (200 = success, 400 = validation error, 500 = execution error)Vec<Change>- List of changes for audit trail
FunctionConfig
Configuration for function execution.
#![allow(unused)]
fn main() {
pub struct FunctionConfig {
pub name: String,
pub input: Value,
}
}
Change
Represents a single data modification.
#![allow(unused)]
fn main() {
pub struct Change {
pub path: Arc<str>,
pub old_value: Arc<Value>,
pub new_value: Arc<Value>,
}
}
AuditTrail
Records changes made by a task.
#![allow(unused)]
fn main() {
pub struct AuditTrail {
pub task_id: String,
pub workflow_id: String,
pub timestamp: DateTime<Utc>,
pub changes: Vec<Change>,
}
}
ErrorInfo
Error information recorded in the message.
#![allow(unused)]
fn main() {
pub struct ErrorInfo {
pub code: String,
pub message: String,
pub workflow_id: Option<String>,
pub task_id: Option<String>,
}
}
DataflowError
Main error type for the library.
#![allow(unused)]
fn main() {
use dataflow_rs::engine::error::DataflowError;
}
Variants
#![allow(unused)]
fn main() {
pub enum DataflowError {
Validation(String),
Execution(String),
Logic(String),
Io(String),
// ... other variants
}
}
Built-in Functions
map
Data transformation using JSONLogic.
{
"name": "map",
"input": {
"mappings": [
{
"path": "string",
"logic": "JSONLogic expression"
}
]
}
}
validation
Rule-based data validation.
{
"name": "validation",
"input": {
"rules": [
{
"logic": "JSONLogic expression",
"message": "string"
}
]
}
}
WASM API (dataflow-wasm)
For browser/JavaScript usage.
import init, { WasmEngine, create_message } from 'dataflow-wasm';
// Initialize
await init();
// Create engine
const engine = new WasmEngine(workflowsJson);
// Create message
const message = create_message(dataJson, metadataJson);
// Process (returns Promise)
const result = await engine.process(message);
// Get workflow info
const count = engine.workflow_count();
const ids = engine.workflow_ids();
Full API Documentation
For complete API documentation, run:
cargo doc --open
This generates detailed documentation from the source code comments.