在我们的电子商务领域,我们有一个使用嵌套数组建模的实体层次结构。我们使用领域驱动设计的原则(如 Eric Evans 所解释的)来做到这一点。我们电子商务领域的核心概念是:
- 具有交易所的合同,其中每个都有服务和付款。反过来,服务具有描述每个服务的特征。
这种分层模型使我们能够表达任何合同,无论多么复杂,包括具有多个协议(即交易所)作为整体协议(或合同)的一部分的那些。
Drools 不支持这种分层对象模型吗?我是否应该将我的对象模型反转为没有数组的平面对象模型(如Drools Expert 文档中的“Fires HAVE Rooms”和“Sprinklers HAVE Rooms”示例),如下所示?
- 合同。
- 交易所,每个交易所都有一个合约。
- 服务和支付,每个都有一个交易所。
- Features,每个都有一个服务。
以这种方式将分层对象模型反转为具有原子断言的平面对象模型,这在 Drools 中受支持并且效果最好,我对吗?Drools 似乎不支持对事实和子集合中的事实具有 LHS 条件的规则。
如果是这样,为什么 Drools 不支持更多层次的对象模型?是不是因为 Drools 来自 AI 世界(不是面向对象的世界),在这个世界中,一阶逻辑将所有事实表达为原子的主-谓-值语句,而不是实体对象具有身份、价值的面向对象世界对象没有身份,实体对象由其他实体和值对象组成?