Drools 什么';与Spring批处理(500k对象)结合使用的最佳规则框架是什么?

Drools 什么';与Spring批处理(500k对象)结合使用的最佳规则框架是什么?,drools,spring-batch,Drools,Spring Batch,我在以前的项目中分别使用了SpringBatch和drools。在我当前的项目中,我有一个设计,需要处理多达500k个xml对象,将它们转换为jaxB,在每个对象上应用规则(规则本身相当简单:比较属性并更新“通知”对象中的两个标志),最后发送一个事件,以便SpringWebFlowViewModel(可以是侦听器)更新自身。这不是设计的要求,但我已经实现了: 1) 项目阅读器(JaxB) 2) ItemProcessor:-映射到ksession(有状态)并基于drl文件触发规则。 3) Ite

我在以前的项目中分别使用了SpringBatch和drools。在我当前的项目中,我有一个设计,需要处理多达500k个xml对象,将它们转换为jaxB,在每个对象上应用规则(规则本身相当简单:比较属性并更新“通知”对象中的两个标志),最后发送一个事件,以便SpringWebFlowViewModel(可以是侦听器)更新自身。这不是设计的要求,但我已经实现了: 1) 项目阅读器(JaxB) 2) ItemProcessor:-映射到ksession(有状态)并基于drl文件触发规则。 3) ItemWriter:准备必要的清理并引发适当的事件

在我看来,逻辑本身是直截了当的,但当我添加了批处理作业的所有代码:itemReader、Itemprocessor等时,一个简单的规则不起作用。此外,在阅读了几个论坛之后,retealgo似乎无法在批处理应用程序上很好地扩展


总之,drools是在spring batch中集成基本规则框架的最佳方式,还是有轻量级的替代方案?

通常RETE算法不是问题,而是一个巨大的优势。您需要在设计解决方案时假设它是一个批处理过程,并且工作正常。您需要考虑到场景中的巨大开销是从XML代码创建所有500k对象。一旦您获得了对象,如果您正确地设计了业务规则,它将正确地执行

  • 规则本身相当简单:比较属性并更新“通知”对象中的两个标志
不需要任何规则框架。这就是Spring Batch的
ItemProcessor
的用途

ItemProcessor
JavaDocs:

“.一个扩展点,允许在面向项目的处理场景中应用业务逻辑”


无需使用Drools或任何其他规则引擎使事情复杂化,除非您真的需要它=>例如,有几十条/数百条复杂的规则+,这些规则对代码来说并不微不足道。

有趣的是,您这么说--这正是我正在做的。Pojo是一门150行的课程,最多也没关系。有时我们只需要做感觉正确的事情:)。如果您的规则很简单,那么为什么要使用专用的规则引擎使其复杂化呢?您可以使用规则将规则集预编译到java类中。我们做到了这一点,大大提高了性能。你可能会发现这解决了你的问题。