SagaApiType
PackageFCQRS
Low-level C# saga API (mirrors ActorApi/QueryApi). For most sagas, prefer the
Saga<_,_,_> base class, which wraps this.
Specification
Kind
Type
Members
7
Examples
0
FactorySignature
SagaApi.Factory(actorApi, sagaEntityFac, entityId)
InitSignature
SagaApi.Init(actorApi, sagaData, handleEvent, applySideEffects, originatorFactory, sagaName)
InitSignature
SagaApi.Init(actorApi, sagaData, handleEvent, applySideEffects, apply, originatorFactory, sagaName)
InitSignature
SagaApi.Init(actorApi, sagaData, handleEvent, applySideEffects, apply, originatorFactory, sagaName, snapshotPolicy)
InitSignature
SagaApi.Init(actorApi, sagaData, handleEvent, applySideEffects, apply, originatorFactory, sagaName)
Summary
| Name | Signature | Synopsis |
|---|---|---|
| Factory | SagaApi.Factory(actorApi, sagaEntityFac, entityId) | Get the factory for a saga |
| Init | SagaApi.Init(actorApi, sagaData, handleEvent, applySideEffects, originatorFactory, sagaName) | Initialize a saga without apply (no data updates based on state) |
| Init | SagaApi.Init(actorApi, sagaData, handleEvent, applySideEffects, apply, originatorFactory, sagaName) | Initialize a saga with simplified apply - just takes data and unwrapped state, returns new data |
| Init | SagaApi.Init(actorApi, sagaData, handleEvent, applySideEffects, apply, originatorFactory, sagaName, snapshotPolicy) | Initialize a saga with an explicit per-saga snapshot policy. |
| Init | SagaApi.Init(actorApi, sagaData, handleEvent, applySideEffects, apply, originatorFactory, sagaName) | Initialize a saga with C# delegates 'TEvent - The triggering event type (from the originator aggregate) 'TSagaData - Cross-cutting saga data 'TSagaState - User-defined saga states |
| InitSimple | SagaApi.InitSimple(actorApi, sagaData, handleEvent, applySideEffects, originatorFactory, sagaName) | Initialize a saga with simplified signatures and no apply. |
| InitSimple | SagaApi.InitSimple(actorApi, sagaData, handleEvent, applySideEffects, apply, originatorFactory, sagaName) | Initialize a saga with simplified signatures - no FSharpOption, typed events handleEvent: (event, data, currentState) -> EventAction applySideEffects: (data, state, recovering) -> SagaSideEffectResult LIMITATION: the typed handler only receives the originator's Event<'TEvent>. |
Get the factory for a saga
Parameters
| Name | Type | Description |
|---|---|---|
| actorApi | IActor | |
| sagaEntityFac | EntityFac<obj> | |
| entityId | string |
Returns
IEntityRef<obj>
SagaApi.Init(actorApi, sagaData, handleEvent, applySideEffects, originatorFactory, sagaName)
Member
Initialize a saga without apply (no data updates based on state)
Parameters
| Name | Type | Description |
|---|---|---|
| actorApi | IActor | |
| sagaData | 'TSagaData | |
| handleEvent | Func<obj, SagaState<'TSagaData, 'TSagaState option>, EventAction<'TSagaState>> | |
| applySideEffects | Func<SagaState<'TSagaData, 'TSagaState>, bool, SagaSideEffectResult<'TSagaState>> | |
| originatorFactory | AggregateFactory | |
| sagaName | string |
Returns
EntityFac<obj>
SagaApi.Init(actorApi, sagaData, handleEvent, applySideEffects, apply, originatorFactory, sagaName)
Member
Initialize a saga with simplified apply - just takes data and unwrapped state, returns new data
Parameters
| Name | Type | Description |
|---|---|---|
| actorApi | IActor | |
| sagaData | 'TSagaData | |
| handleEvent | Func<obj, SagaState<'TSagaData, 'TSagaState option>, EventAction<'TSagaState>> | |
| applySideEffects | Func<SagaState<'TSagaData, 'TSagaState>, bool, SagaSideEffectResult<'TSagaState>> | |
| apply | Func<'TSagaData, 'TSagaState, 'TSagaData> | |
| originatorFactory | AggregateFactory | |
| sagaName | string |
Returns
EntityFac<obj>
SagaApi.Init(actorApi, sagaData, handleEvent, applySideEffects, apply, originatorFactory, sagaName, snapshotPolicy)
Member
Initialize a saga with an explicit per-saga snapshot policy.
Parameters
| Name | Type | Description |
|---|---|---|
| actorApi | IActor | |
| sagaData | 'TSagaData | |
| handleEvent | Func<obj, SagaState<'TSagaData, 'TSagaState option>, EventAction<'TSagaState>> | |
| applySideEffects | Func<SagaState<'TSagaData, 'TSagaState>, bool, SagaSideEffectResult<'TSagaState>> | |
| apply | Func<SagaState<'TSagaData, SagaStateWrapper<'TSagaState, 'TEvent>>, SagaState<'TSagaData, SagaStateWrapper<'TSagaState, 'TEvent>>> | |
| originatorFactory | AggregateFactory | |
| sagaName | string | |
| snapshotPolicy | SnapshotPolicy |
Returns
EntityFac<obj>
SagaApi.Init(actorApi, sagaData, handleEvent, applySideEffects, apply, originatorFactory, sagaName)
Member
Initialize a saga with C# delegates
'TEvent - The triggering event type (from the originator aggregate)
'TSagaData - Cross-cutting saga data
'TSagaState - User-defined saga states
Parameters
| Name | Type | Description |
|---|---|---|
| actorApi | IActor | |
| sagaData | 'TSagaData | |
| handleEvent | Func<obj, SagaState<'TSagaData, 'TSagaState option>, EventAction<'TSagaState>> | |
| applySideEffects | Func<SagaState<'TSagaData, 'TSagaState>, bool, SagaSideEffectResult<'TSagaState>> | |
| apply | Func<SagaState<'TSagaData, SagaStateWrapper<'TSagaState, 'TEvent>>, SagaState<'TSagaData, SagaStateWrapper<'TSagaState, 'TEvent>>> | |
| originatorFactory | AggregateFactory | |
| sagaName | string |
Returns
EntityFac<obj>
SagaApi.InitSimple(actorApi, sagaData, handleEvent, applySideEffects, originatorFactory, sagaName)
Member
Initialize a saga with simplified signatures and no apply.
Same limitation as the other InitSimple overload: only the originator's
Event<'TEvent> reaches the typed handler; ToSelf timeouts and other
aggregates' replies require the obj-based Init overloads.
Parameters
| Name | Type | Description |
|---|---|---|
| actorApi | IActor | |
| sagaData | 'TSagaData | |
| handleEvent | Func<Event<'TEvent>, 'TSagaData, 'TSagaState, EventAction<'TSagaState>> | |
| applySideEffects | Func<'TSagaData, 'TSagaState, bool, SagaSideEffectResult<'TSagaState>> | |
| originatorFactory | AggregateFactory | |
| sagaName | string |
Returns
EntityFac<obj>
SagaApi.InitSimple(actorApi, sagaData, handleEvent, applySideEffects, apply, originatorFactory, sagaName)
Member
Initialize a saga with simplified signatures - no FSharpOption, typed events
handleEvent: (event, data, currentState) -> EventAction
applySideEffects: (data, state, recovering) -> SagaSideEffectResult
LIMITATION: the typed handler only receives the originator's Event<'TEvent>.
ToSelf/ToSelfAfter payloads and other aggregates' reply events cannot reach it
(they are logged and ignored) — sagas needing timeouts or multi-aggregate
orchestration must use the obj-based Init overloads.
Parameters
| Name | Type | Description |
|---|---|---|
| actorApi | IActor | |
| sagaData | 'TSagaData | |
| handleEvent | Func<Event<'TEvent>, 'TSagaData, 'TSagaState, EventAction<'TSagaState>> | |
| applySideEffects | Func<'TSagaData, 'TSagaState, bool, SagaSideEffectResult<'TSagaState>> | |
| apply | Func<'TSagaData, 'TSagaState, 'TSagaData> | |
| originatorFactory | AggregateFactory | |
| sagaName | string |
Returns
EntityFac<obj>