2013-10-03 41 views
0

我对春季批次相当新,我很感激某些方向...春季批次:基于数据的代表处理器

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

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

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

感谢您的帮助

回答

0

可以使用JobExecutionDecider流到你的代码来纠正一步。
你有一个抽象的步骤(BaseStep)当读写器的定义,而不是处理器和定义,你必然正确的处理器

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

等3具体步骤。
在你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"); 
    } 
}