Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Workflow 领域驱动设计:工作流逻辑在哪里?_Workflow_Domain Driven Design - Fatal编程技术网

Workflow 领域驱动设计:工作流逻辑在哪里?

Workflow 领域驱动设计:工作流逻辑在哪里?,workflow,domain-driven-design,Workflow,Domain Driven Design,在我的项目中,我有一个在多个实体上运行的工作流来完成一个业务事务。表示工作流逻辑的最佳位置是什么?目前,我只创建了一个“XXXManager”,负责与实体对象协作以完成业务事务。还有其他选择吗?DDD可能与这类事情并不完全相关,因此我建议您看看服务层架构模式。Martin Fowler的书《企业架构模式》是一本很好的书,可以解释这一点。您也可以在Fowler的网站上找到该模式的描述。创建工作流系统可能是一个令人望而生畏的前景。你考虑过使用吗 如果我理解正确,您将需要创建一个管理器来跟踪工作流程中

在我的项目中,我有一个在多个实体上运行的工作流来完成一个业务事务。表示工作流逻辑的最佳位置是什么?目前,我只创建了一个“XXXManager”,负责与实体对象协作以完成业务事务。还有其他选择吗?

DDD可能与这类事情并不完全相关,因此我建议您看看服务层架构模式。Martin Fowler的书《企业架构模式》是一本很好的书,可以解释这一点。您也可以在Fowler的网站上找到该模式的描述。

创建工作流系统可能是一个令人望而生畏的前景。你考虑过使用吗


如果我理解正确,您将需要创建一个管理器来跟踪工作流程中与用户相关的不同事务。可能还有其他方法可以做到这一点,但我一直使用引擎。

通常,有一个域对象应该实际处理被误认为是“实体”的控件

是否存在由于此工作流而创建的某个实例?如果是这样,那么工作流逻辑可能就属于这里。在下面的模型中考虑“订单”。

order既是名词又是动词。“订单”是由于“订单”而创建的对象。像任何好的类一样,它既有数据也有行为(我不是指getter和setter)。该行为是与数据相关的动态过程,即订购工作流。“命令”是控制器


这就是OO被发明的原因

我认为你做的事情是正确的,你需要与多个实体协作来完成一些事情。重要的是,每个实体(实际上每个服务)都应该有一个独立的数据库

您所讨论的总体工作流是可以作为应用层的一部分考虑的事情。

(意译)应用层的职责是消化课程粒度的请求(消息/命令),以实现某个总体目标。它通过向域服务发送消息以实现这一点。然后它还(可选地)决定向基础结构服务发送通知

但什么是“服务”?!这是一个过载的术语,但描述得很好(再次)


您可能还想阅读更多的想法…

对于这些伟大的答案,我想补充(链接只是一个可能的实现),这是Evans本人更加关注的()。

有人可能会说OO域建模是关于动词的名词化。txn对于洋葱架构参考,有趣的文章!