Sounds right to me ... do you agree with my characterizations that follow? My concept (subject to check) is that any 'process manager service' - wakes up (perhaps receipt of a timing "command given" that is appended to its self-subscribed input event stream; perhaps a timeout; etcetera – more confusion on that later) - would left fold on that stream, determine a status (state if you will), then perform whatever function it must and then, based on state and the “event, find the next step in its process.
GREG - I am picturing the grid in the Microsoft CQRS guidance document.
Then the 'process manager service' documents that next step on its stream (by appending to its own 'self-subscribed' stream).
Now I am confused by the panoply of options - and always am amused by the many 'blocking' issues developers love to raise :).
Anyway - let's consider the next service to be a "unit of work" service - it subscribed to the process manager's "Command Given", puts that event on its 'self-subscribed' stream and interprets it as a "Command Received". Left fold, perform any function; decide by its simple ‘unit of work’ process grid; if it doesn't guide anything downstream - it documents an event that is the result of what it did with the "Command Received".
Assuming it is the upstream process manager that needs to hear ... that process manager service is subscribed to that event?
So I've just succeeded in confusing myself with the panoply. I believe I want to use the competing (server side) subscription here with ONLY ONE consumer!
Realize this is hard for me to describe ... much easier on a whiteboard.
thanks Chris ... my desire is for ONE exact implementation of such things .. frustrating for me not to have something very exact. Then my team could talk the same. I don't code - and an internal lack of shared concepts is a black hole