我对春季批次相当陌生,我会很感激一些方向......
我正在使用块处理器。我想创建一个根据文件名选择特定处理器的作业。
例如: 对于文件:testfile-1.txt 使用处理器:TestFileProcessor1.java 对于文件:testfile-2.txt 使用处理器:TestFileProcessor2.java
我更喜欢只有一个块处理器,并且在正确的处理器中有一个先前的任务挂钩
谢谢你的帮助
我对春季批次相当陌生,我会很感激一些方向......
我正在使用块处理器。我想创建一个根据文件名选择特定处理器的作业。
例如: 对于文件:testfile-1.txt 使用处理器:TestFileProcessor1.java 对于文件:testfile-2.txt 使用处理器:TestFileProcessor2.java
我更喜欢只有一个块处理器,并且在正确的处理器中有一个先前的任务挂钩
谢谢你的帮助
您可以使用 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");
}
}