0

我对春季批次相当陌生,我会很感激一些方向......

我正在使用块处理器。我想创建一个根据文件名选择特定处理器的作业。

例如: 对于文件:testfile-1.txt 使用处理器:TestFileProcessor1.java 对于文件:testfile-2.txt 使用处理器:TestFileProcessor2.java

我更喜欢只有一个块处理器,并且在正确的处理器中有一个先前的任务挂钩

谢谢你的帮助

4

1 回答 1

0

您可以使用 aJobExecutionDecider将您的代码流向正确的步骤。
当定义了读取器和写入器时,您有一个抽象步骤 ( BaseStep),但没有定义处理器并定义了 3 个绑定正确处理器的具体步骤

<batch:step id="StepTestFile1" parent="BaseStep">
  <batch:processor ref="path.to.TestFileProcessor1" />
</batch:step>

等等。
在您JobExecutionDecider中,您可以根据文件名(伪代码)进行正确的步骤:

class MyDecider implements JobExecutionDecider {
  public FlowExecutionStatus decide(JobExecution jobExecution,StepExecution stepExecution) {
    if(filename is testfile-1.txt) return new FlowExecutionStatus("StepTestFile1");
    if(filename is testfile-2.txt) return new FlowExecutionStatus("StepTestFile2");
    if(filename is testfile-3.txt) return new FlowExecutionStatus("StepTestFile3");
  }
}
于 2013-10-03T21:40:05.343 回答