Skip to content

API Reference

Current reference map for vyuh_workflow_engine and the CDX workflow integration packages.

Core Runtime

APIPurpose
WorkflowEngineRuntime orchestrator for loading definitions, starting instances, sending signals, recovery, cancellation, and event streams.
WorkflowBuilderFluent builder for code-created executable workflows.
WorkflowDescriptorBundle of task, user-task, condition, node processor, and lifecycle hook registrations.
WorkflowStorageStorage interface and repository set.
Node ResultsNodeResult, TaskResult, and user-task completion result shapes.
Workflow EffectsDeclarative effects returned by executors and node processors.

Executors

APIPurpose
TaskExecutorExecutes automated service-task work and returns TaskSuccess or TaskFailure.
UserTaskExecutorCreates human task specs and processes completed user output.
Condition ExecutorsEvaluates edge and gateway routing conditions.
NodeProcessorExecutes engine-level node behavior for start/end/tasks/gateways/timers/subflows/loops.

Essential Signatures

WorkflowEngine

dart
WorkflowEngine({
  required WorkflowTypeResolver context,
  required WorkflowStorage storage,
  required ExecutionMode executionMode,
  WorkflowEngineConfig config = const WorkflowEngineConfig(),
});

Important methods:

dart
Future<void> initialize();
Future<void> dispose();

void registerWorkflow(Workflow workflow);
Workflow loadWorkflowDefinition(WorkflowDefinition definition);
Workflow loadWorkflowJSON(Map<String, dynamic> json);
Future<Workflow> saveWorkflow(Workflow workflow);
Future<Workflow?> getStoredWorkflow(String code, {int? version});

Future<WorkflowInstance> startWorkflow({
  String? workflowId,
  String? workflowCode,
  int? version,
  Map<String, dynamic> input = const {},
  String? correlationId,
  String? parentInstanceId,
  String? parentNodeId,
  String? userId,
});

Future<void> sendSignal({
  required String workflowInstanceId,
  required String node,
  String? port,
  Map<String, dynamic>? payload,
});

WorkflowBuilder

dart
WorkflowBuilder(String code, String name, {String? description});

WorkflowBuilder start(String id, {String? name});
WorkflowBuilder end(String id, {String? name, String? outcome});
WorkflowBuilder task(
  String id, {
  String? name,
  String? description,
  TaskExecutor? executor,
  TaskExecuteFunction? execute,
  String? storeAs,
  String? schemaType,
});
WorkflowBuilder userTask(
  String id, {
  String? name,
  String? description,
  String? signal,
  UserTaskExecutor? executor,
  UserTaskExecuteFunction? execute,
  String? title,
  String? assignToRole,
  String? assignToUser,
  String? assignToGroup,
  String? schemaType,
  String? priority,
  String? storeAs,
});
WorkflowBuilder signalWait(String id, {required String signal, String? name, String? storeAs});
WorkflowBuilder oneOf(String id, List<Branch> branches, {String? name});
WorkflowBuilder allOf(String id, List<String> targets, {String? name});
WorkflowBuilder anyOf(String id, List<String> targets, {String? name});
Workflow build();

TaskExecutor

dart
abstract class TaskExecutor implements SchemaItem {
  String get schemaType;
  String get name;
  String get description => '';

  Future<TaskResult> execute(ExecutionContext context);
  List<String> validateConfig(Map<String, dynamic> config) => const [];
}

Task results:

dart
sealed class TaskResult {}

class TaskSuccess extends TaskResult {
  const TaskSuccess(List<WorkflowEffect> effects);
}

class TaskFailure extends TaskResult {
  const TaskFailure({
    required ErrorType errorType,
    required String message,
    bool isRetryable = true,
    Map<String, dynamic>? details,
  });
}

UserTaskExecutor

dart
abstract class UserTaskExecutor implements SchemaItem {
  String get schemaType;
  String get name;
  String get description => '';

  Future<WaitForUserTaskResult> execute(ExecutionContext context);

  UserTaskCompletionResult processCompletion(
    Map<String, dynamic> userOutput,
    Map<String, dynamic> taskInput,
    ExecutionContext context,
  );
}

NodeResult

Current high-use node results:

dart
sealed class NodeResult {}

class ContinueResult extends NodeResult { ... }
class SplitContinueResult extends NodeResult { ... }
class WaitForSignalResult extends NodeResult { ... }
class WaitForUserTaskResult extends WaitForSignalResult { ... }
class CompleteWorkflowResult extends NodeResult { ... }
class FailWorkflowResult extends NodeResult { ... }
class WaitForServiceTaskResult extends NodeResult { ... }
class WaitForJoinResult extends NodeResult { ... }
class DropTokenResult extends NodeResult { ... }

See Node Results for the detailed shape.

Data Access

Executors receive ExecutionContext:

dart
final previous = context.get<String>('field');          // previous node output
final initial = context.getInitial<String>('field');    // workflow input
final any = context.getAny<String>('field.path');       // accumulated output
final config = context.getConfig<String>('field');      // node config

Prefer previous-node input for local data flow. Use accumulated output and workflow input deliberately for cross-node or global context.

Storage

dart
abstract class WorkflowStorage {
  WorkflowRepository get workflows;
  WorkflowInstanceRepository get instances;
  UserTaskInstanceRepository get userTaskInstances;
  WorkflowEventRepository get events;

  Future<T> transaction<T>(Future<T> Function() operation);
  Future<void> initialize();
  Future<void> dispose();
  Future<bool> healthCheck();
  Future<StorageStats> getStats();
}

Storage uses WorkflowDefinition for definitions. The engine converts those definitions into executable Workflow objects.

CDX Packages

PackageAPI surface
cdx_workflow_typesApproval contracts, task actions, activity/status projections.
cdx_workflow_templatesApprovalTemplate, ApprovalDomain, WorkflowTemplate, canonical approval definition and descriptor.
cdx_feature_workflowsFlutter workflow inbox/status/action/timeline widgets and Vyuh feature/plugin exports.
vyuh_workflow_storage_supabaseSupabaseStorage and SupabaseStorageConfig.
vyuh_workflow_protocolWorkflowProtocolClient, messages, and transports.
vyuh_workflow_editorWorkflowEditor, environments, run mode, validation, registry, and editor widgets.

See Also