You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on May 1, 2024. It is now read-only.
I'll be straight up here, I don't like Jasper 1.0's stateful saga approach as well as older competitors, so let's make it better!!!
Ideas:
Public, concrete classes suffixed with Saga will be the message handlers
The Saga types will be persisted
Can have Handle() or Consume() methods
Static Create() : [SagaType] methods or a constructor for a single argument will be considered to be the initiator methods
If using a ctor for the initiator, will need other constructors
Saga persistence providers should use MethodCall as much as possible, or derivatives thereof
Assume that the Saga id can come off of command messages either through SagaId members, [SagaName]Id, or a member marked as [SagaIdentity]. Keep the fallback to using the saga id header though
Convert Test Harnesses First
For each copy/pasted version of SagaTestHarness
Copy the Handle() methods on the TSagaHandler to the TSagaState
Eliminate the TSagaHandler type and type argument
More general tasks:
Delete the StatefulSagaOf type and all its dependencies
New convention to discover handlers suffixed as [SomethingSaga]
Modify Marten middleware to load the actual workflow state as the handler
Modify the EF Core middleware to load the actual workflow state as the handler
More analysis necessary....
How do we mark sagas as deleted? COULD return a command that would direct Jasper to do something next
How do we mark sagas for archival?
The text was updated successfully, but these errors were encountered:
I'll be straight up here, I don't like Jasper 1.0's stateful saga approach as well as older competitors, so let's make it better!!!
Ideas:
Saga
will be the message handlersSaga
types will be persistedHandle()
orConsume()
methodsCreate() : [SagaType]
methods or a constructor for a single argument will be considered to be the initiator methodsMethodCall
as much as possible, or derivatives thereofSagaId
members,[SagaName]Id
, or a member marked as[SagaIdentity]
. Keep the fallback to using the saga id header thoughConvert Test Harnesses First
For each copy/pasted version of
SagaTestHarness
Handle()
methods on theTSagaHandler
to theTSagaState
TSagaHandler
type and type argumentMore general tasks:
StatefulSagaOf
type and all its dependencies[SomethingSaga]
More analysis necessary....
The text was updated successfully, but these errors were encountered: