saga_state_machine library

A MassTransit-style state machine framework for Dart.

Provides declarative, event-driven saga pattern with fluent builder API.

Example:

class OrderSaga extends Saga {
  String? orderId;
  OrderStatus status = OrderStatus.pending;
}

class OrderStateMachine extends SagaStateMachine<OrderSaga, OrderStatus> {
  OrderStateMachine() {
    initially(
      when<OrderCreated>()
        .set((saga, e) => saga.orderId = e.orderId)
        .transitionTo(OrderStatus.pending),
    );

    during(OrderStatus.pending,
      when<PaymentReceived>().transitionTo(OrderStatus.paid),
      when<OrderCancelled>().transitionTo(OrderStatus.cancelled).finalize(),
      timeout(Duration(hours: 24), transitionTo: OrderStatus.expired),
    );
  }
}

Classes

Activity<TSaga extends Saga, TEvent>
Base interface for activities (side effects).
BehaviorContext<TSaga extends Saga, TEvent>
Context passed to event handlers and activities.
EventHandler<TSaga extends Saga, TEvent, TState>
Defines how to handle a specific event type.
FunctionActivity<TSaga extends Saga, TEvent>
Simple activity that executes a function.
InMemorySagaRepository<TSaga extends Saga>
In-memory implementation of SagaRepository.
NoOpActivity<TSaga extends Saga, TEvent>
Activity that does nothing. Useful as placeholder.
Saga
Base class for all saga instances.
SagaRepository<TSaga extends Saga>
Repository for storing and retrieving saga instances.
SagaStateMachine<TSaga extends Saga, TState>
MassTransit-style state machine for sagas.
Scheduler
Scheduler for delayed/timeout events.
TimeoutEvent
Timeout event marker.
TimeoutHandler<TSaga extends Saga, TState>
Timeout handler configuration.

Typedefs

EventCorrelator<TEvent> = String Function(TEvent event)
Event correlator function.
EventFilter<TEvent> = bool Function(TEvent event)
Predicate function to filter events.
FinalizeCallback<TSaga extends Saga> = void Function(TSaga saga)
Callback for saga finalization.
SagaAction<TSaga extends Saga, TEvent> = FutureOr<void> Function(BehaviorContext<TSaga, TEvent> context)
Async action executed during event handling.
SagaSetter<TSaga extends Saga, TEvent> = void Function(TSaga saga, TEvent event)
Callback types for saga operations. Function that sets saga properties from an event.
StateResolver<TSaga extends Saga, TEvent, TState> = TState Function(BehaviorContext<TSaga, TEvent> context)
Function that dynamically resolves the target state.
TransitionCallback<TSaga extends Saga, TState> = void Function(TSaga saga, TState from, TState to)
Callback for state transitions.