I am thinking in a common orders and order lines example. The order has a state and depends on the state, I can do some actions or not.
I guess that a good option for that it is to use the state pattern. If I am not wrong, with this pattern, I should to have one action for each possible state to change the order from one state to another, so I would have AcceptOrder(), CancelOrder() and so on.
But I was thinking about this other option. To have only one action, UpdateOrder(), in which I can update all the properties, and one of the it would be the state. Then the update method would check if it is possible to update from the actual state to the new state.
In this way, I treat the state as another property more, and for the user I guess it is easier to understand, because if for one side it should to update "normal properties" and use the update method to update them (less the state) and for another side they should to use a action to update only the state, it would be a bit more confuse.
Also it simplifies the number of actions for the user, because if I have to have an action to pass to Accepted, another to pass to cancel and so on, it is more confuse and it would requier much more button in the UI.
Perhaps I am mixing the domain with the UI, but I am trying to have a general view, how to validate in the user and how to make easy to use, and another the domain that has its own design, but I guess that when you start with DDD, it is hard to focus and isolate completely the domain and don't think in another layers.
In summary, the idea would be to have a form in which the user can modify all the data and to have only one action, aupdate, to confirm the updates.
Thanks.