Spring 规则批次

Spring batch for rules

我是 Spring Batch 的新手。我需要 运行 每晚批处理:

  1. 从tableA读取记录,
  2. 对于 table A 中的每条记录,
    1. 运行 大约 10 个业务规则涉及从数据库读取数据(在每个规则中)和
    2. 在每条规则中写入tableB,规则的结果

我还需要一些方法来运行根据需要为来自 table 的较小记录子集设置规则 A. Spring Batch 是一个好的选择吗?我可以将数据访问逻辑和业务逻辑放在 ItemProcessor 中吗?

非常感谢任何帮助。


这是我所做的:

  1. 创建了一个扩展 JdbcCursorItemReaderDiscountReader,它根据日期和其他条件获取折扣程序 _ returns DiscountObj 类型的对象
  2. 创建了一个实现 ItemProcessorSalesProcessor,其中我有 (a) SalesReader 应该读取另一组 table 以获取销售记录匹配当前 DiscountObj (b) SalesWriter 的参数,它应该将 SalesReader 获取的数据写入另一个 table.

SalesReader 执行的查询的参数是动态的,因为它必须从当前 DiscountObj 中提取。如何将 SalesReader 的值设置到 PreparedStatement 中?我尝试使用 PreparedStatementSetter,但是,甚至在设置值之前就开始执行查询。

非常感谢help/pointers。

您描述的是一个非常常见的 Spring 批处理用例。 Spring Batch 基于块的步骤读取每个项目,将其传递给处理器,然后在处理完每个块的项目数后,写出所有项目。

使用 JdbcCursorItemReader 读取输入,开发自己的 ItemProcessor 来应用规则,并使用 JdbcBatchItemWriter 写入输出是我所期望的。