【问题标题】:Rule engine vs Item processor approach with Spring batch使用 Spring 批处理的规则引擎与项目处理器方法
【发布时间】:2015-11-21 23:08:58
【问题描述】:

我有一个 spring 批处理应用程序,它将记录填充到表 A 中。 需求的下一步是对表 A 中的数据进行分组,并对每个组运行一大堆业务验证和差异规则。 根据验证规则的输出,数据可能/可能不会写入表 B。 此过程将是一个夜间批处理作业。

我能想到的三种方法:

  1. 使用 spring batch 并将规则引擎集成到 Itemprocessor 中。
  2. 使用spring batch并在多个item中实现验证逻辑
    处理器并将它们链接起来。
  3. 编写带有规则引擎的常规 Spring 应用程序并实现管理流程的功能。

问题: 1. spring batch 会支持规则引擎吗? 2.哪种方法更好?还是有其他替代方法?

我们将不胜感激所有建议。

【问题讨论】:

  • 您是否有特定的规则引擎?另外,有多少规则/它们的复杂性是多少?
  • 我有大约 12 条规则,其中一些非常复杂。我需要根据 4 列对记录进行分组,运行验证规则,将每个组作为一个整体。例如,一个组可以有 1000 条记录,另一个可能有 50 条记录。
  • 所以在第一组中,规则必须有 1000 条记录在手。
    我没有考虑任何规则引擎。正在阅读 Drools,但不确定它是否可以集成到 Spring Batch 中。 考虑到我的时间表,我想采用最简单的方法。

标签: spring spring-batch rule-engine


【解决方案1】:

我们也遇到过类似的情况,所以我们探索了 Drools。根据一般准则,如果出现以下情况,则不会更喜欢规则引擎,

  • 业务逻辑定义明确且是静态的。
  • 规则简单且独立。
  • 规则少于 20。
  • 性能是首要考虑因素。

所以,它不适合我们的情况。相反,我们在一个类中编写了我们的验证逻辑,并将它与 Item Processor 一起添加为 CompositeItemProcessor。例如

<bean id="compItemProcessor" class="org.springframework.batch.item.support.CompositeItemProcessor"> <property name="delegates"> <list> <ref bean="validatorProcessor"/> <ref bean="ourDataProcessor"/> </list> </property> </bean>

【讨论】:

  • 谢谢。根据上述指南,规则引擎也不适合我的情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 2020-10-09
  • 1970-01-01
  • 2021-11-19
  • 2021-10-25
相关资源
最近更新 更多