加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

域驱动设计 – Drools与DDD:Drools是否需要平面对象模型?

发布时间:2020-12-14 04:46:48 所属栏目:百科 来源:网络整理
导读:在我们的电子商务领域,我们有一个使用嵌套数组建模的实体层次结构.我们使用领域驱动设计的原理(如Eric Evans所解释的)这样做.我们电子商务领域的核心概念是: 合同,有交换,每个都有服务和付款.反过来,服务有描述每项服务的功能. 这种分层模型使我们能够表达
在我们的电子商务领域,我们有一个使用嵌套数组建模的实体层次结构.我们使用领域驱动设计的原理(如Eric Evans所解释的)这样做.我们电子商务领域的核心概念是:

>合同,有交换,每个都有服务和付款.反过来,服务有描述每项服务的功能.

这种分层模型使我们能够表达任何合同,无论多么复杂,包括那些拥有多个协议(即交易所)的合同,作为整体协议(或合同)的一部分.

Drools不支持这种分层对象模型吗?我应该将我的对象模型反转为没有数组的平面对象模型(如“Fires HAVE Rooms”和“Sprinklers HAVE Rooms”example in the Drools Expert documentation),如下所示?

>合同.
>交易所,每个交易都有一份合同.
>服务和付款,每个都有一个Exchange.
>功能,每个都有一个服务.

我是否正确以这种方式将分层对象模型反转为具有原子断言的平面对象模型,是否支持并且在Drools中效果最好? Drools似乎不支持LHS条件规则对事实和子集合中的事实.

如果是这样,为什么Drools不支持更多的分层对象模型?是因为Drools来自AI世界(不是面向对象的世界),其中一阶逻辑将所有事实表达为原子主谓词值语句,而不是实体对象具有身份,价值的面向对象世界对象没有标识,实体对象是由其他实体和值对象组成的?

解决方法

您可以针对任何Java对象模型定义规则.

该文档提供了基于玩具问题的示例,以避免分散注意力.不是因为Drools无法处理更复杂的模型.如果您在本手册中进一步阅读,您将看到使用诸如“包含”或累加器等语法处理列表的示例.

这取决于你如何建模.您可以将合同,交易所,服务,付款和功能作为单独的事实插入,这些事实相互引用.或者,您可以只插入一个复杂的合同事实,其中包含Exchange列表,其中包含服务列表等.

哪种方式更适合您,取决于您的规则是否与合同相匹配,只需要很少的链接,或者您是否希望规则对某些内容做出反应,例如更改功能或插入付款事实.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读