In most cases I understand the distinction between a command and an event in a CQRS + ES system. However, there is one situation that I can\'t figure out.
Suppose I am b
I found this question while wondering the same thing.
I liked Mikael's answer and upvoted it. However, I found another answer on the DDD/CQRS forum that takes a different approach, so figured I'd post it here for others who are looking too.
Here's a quote from Greg Young on a similar question about tracking external state:
In most inventory systems there are no commands.
Or to paraphrase:
Systems that exclusively track external state will have no commands.
Let's rewind and think through how your system might evolve based on this idea (let's also assume you're not building it for yourself):
Note that this variant accepts both commands and events. You wouldn't go back and convert all existing events to commands just because you now allow the user to change things. Instead, you have a system that accepts external transaction events, commands for user-entered transactions and transaction corrections (which create events that modify internal state), and projections to combine these internal and external events for display in the app.
I'm curious though. In hindsight, did the accepted answer end up being a good approach? Or would recording and handling events from the Florist directly like Greg suggests be better?