Design patterns 命令模式-如何保持执行状态?

Design patterns 命令模式-如何保持执行状态?,design-patterns,architecture,domain-driven-design,cqrs,command-pattern,Design Patterns,Architecture,Domain Driven Design,Cqrs,Command Pattern,我有下面的作业。我需要创建一个预订,在创建预订的过程中,我需要协调好几件事情。预订是通过第三方系统订购的,然后发送电子邮件,最后确定报价,等等 我可以将这个逻辑封装在一个CreateReservationCommand中吗?或者我需要三个命令,然后是什么模式来协调命令的执行?命令是否可以有执行状态 另外,我觉得四人帮意义上的命令与CQR意义上的命令不同。我说得对吗 更新: 这里让我感到困惑的是,就CQR而言,您可以有一个命令和事件,让我们假设第三方系统向我的系统发送一条消息,创建预约。在CQR的

我有下面的作业。我需要创建一个预订,在创建预订的过程中,我需要协调好几件事情。预订是通过第三方系统订购的,然后发送电子邮件,最后确定报价,等等

我可以将这个逻辑封装在一个CreateReservationCommand中吗?或者我需要三个命令,然后是什么模式来协调命令的执行?命令是否可以有执行状态

另外,我觉得四人帮意义上的命令与CQR意义上的命令不同。我说得对吗

更新:

这里让我感到困惑的是,就CQR而言,您可以有一个命令和事件,让我们假设第三方系统向我的系统发送一条消息,创建预约。在CQR的上下文中,这不是一个命令吗?但这更像是一个完整的工作流,可能是一个SAGA模式

我可以将这个逻辑封装在一个CreateReservationCommand中吗?或者我需要三个命令,然后是什么模式来协调命令的执行?命令是否可以有执行状态

你可以。。。但通常编排的簿记使用类似的方法,它将跨越多个事务

我觉得四人帮意义上的命令与CQR意义上的命令不同。我说得对吗


你完全正确--完全不同的想法。“CQRS中的命令”是Gregor Hohpe模式的后代。

命令是一个事务-它要么完成,要么失败。没有第三国。您所描述的内容在我看来像是一个传奇/流程管理器,您需要一个传奇。您可以阅读以下关于如何初始化传奇的答案: