Yes I've just done a bit more reading about this, and a Saga seems to
fit my scenario quite well.
One thing I still don't quite understand though is how a Sage is
invoked. Does every event which maps to a Saga have its own "Event
Handler" class specifically for that Saga, similar to how each Command
is mapped to an Aggregate by a Command Handler? Or is the the "saga
handler" more generic?
The way I am currently thinking about it is like so:
1. EventA is produced
2. SagaA has subscribed to EventA
3. EventA is received by SagaAEventHandler
4. SagaAEventHandler loads up SagaA from some sort of "SagaRepository"
5. SagaA is passed details (via method call) from EventA so that it
can handle the event.
Is this the correct approach? If so, in step 5, do I pass the actual
Event object to the Saga, or do I pass only the parameters of the
Event that are needed (similar to Command -> Aggregate).
I hope this makes sense.