> Does the workflow logic for sagas live in the domain on in the command
handler(s)?
Sagas and activities negotiate long-running interactions between the
entities. The logic probably to live outside of the domain in the
handlers.
> Is the event store to hold state (or context of state) between steps in the saga?
It seems to be so.
> How are timeouts handled?
Infrastructure should be able to do this, scheduling a check for the
future and invoking some action when the check fails. Schedules
obviously need to be persisted for the critical operations (if they
are to survive restarts).
> What's normally used for correlation? AR id?
AR id is probably used for routing the message to the appropriate
partition, where AR resides. Correlation might be more specific,
depending on the nature of saga - sender id (to deduplicate or order
messages in the cloud environment), conversation or request id, etc
Please bear in mind that practically I'm not that familiar with the
subject (this requires at least implementing saga/activity
infrastructure yourself and seeing how it evolves in the distributed
app). I'd love to hear thoughts and corrections.
Best regards,
Rinat