DDD实体对业务流程进行多任务处理?
DDD entities to multi-task a business process?
我有一个相当大的聚合根实体,称为 Alert。创建警报时,会发生几件复杂的事情,因此它们会在业务流程模型中捕获并在 BPM 引擎中执行(例如,"Handle Alert" 流程)。关于警报的各种数据集可以由多个人同时独立 add/updated 解决警报(例如 BPMN 流程中的并行用户任务)。
如果没有警报,该数据对业务毫无意义,没有警报就无法存在。
但是,由于此附加数据是随着警报在业务流程中移动而添加的,所以感觉就像是单独的 "entities"。当多个人将他们的工作保存到业务流程时,这也可以防止单个警报聚合根出现版本错误。
问题:
尽管这些依赖值对象在没有 Alert 的情况下真的毫无意义,并且不能独立存在,但我是否应该将它们作为基于业务流程模型流的实体?
当然可以。根据我的经验,交易分析是比任何一种 "X cannot exist without Y" 规则更好的设计顾问。如果有很多争用,一定要尝试识别和提取聚合中更频繁访问或独立访问的子部分,并使它们独立聚合以减轻主要对象的事务压力。
我有一个相当大的聚合根实体,称为 Alert。创建警报时,会发生几件复杂的事情,因此它们会在业务流程模型中捕获并在 BPM 引擎中执行(例如,"Handle Alert" 流程)。关于警报的各种数据集可以由多个人同时独立 add/updated 解决警报(例如 BPMN 流程中的并行用户任务)。
如果没有警报,该数据对业务毫无意义,没有警报就无法存在。
但是,由于此附加数据是随着警报在业务流程中移动而添加的,所以感觉就像是单独的 "entities"。当多个人将他们的工作保存到业务流程时,这也可以防止单个警报聚合根出现版本错误。
问题: 尽管这些依赖值对象在没有 Alert 的情况下真的毫无意义,并且不能独立存在,但我是否应该将它们作为基于业务流程模型流的实体?
当然可以。根据我的经验,交易分析是比任何一种 "X cannot exist without Y" 规则更好的设计顾问。如果有很多争用,一定要尝试识别和提取聚合中更频繁访问或独立访问的子部分,并使它们独立聚合以减轻主要对象的事务压力。