如何为作业设置一些配置参数,例如输入文件路径。我的用例是,我有一些工作处理输入文件中的数据,这些工作是作为其他工作的一部分触发的,例如
<job id="jobA">
<step id="stepA" >
<job ref="jobC"/>
</step>
</job>
<job id="jobB">
<step id="stepB" >
<job ref="jobC"/>
</step>
</job>
<job id="jobC">
<step id="stepC" >
<tasklet ref="steCTasklet" />
</step>
</job>
所以在这里,JobA和JobB触发了jobC。 JobC处理JobA和JobB提供的输入文件中的数据。如何为JobA和JobB设置不同的输入文件路径,以便将它们传递给JobC。
我们可以将它作为参数传递给JobA和JobB,但由于它是为JobA和JobB修复的,我不想将它们作为参数从外部传递。
JobA和JobB中的其他步骤也应该可以访问输入文件路径,这些步骤不会触发其他作业。
我也使用spring-batch-admin,所以我没有直接访问job launcher,因为它有自己的。
答案 0 :(得分:1)
JobStep
可以将JobParameterExtractor
作为依赖关系,允许您从StepExecution
中提取所需的作业参数。我们提供的实施是DefaultJobParametersExtractor
。这将从StepExecution
的{{1}}中提取作业的参数(您指定要使用的键)。此实现还包括作为参数传递给子作业的所有父作业的参数。
您可以在下面的链接中详细了解ExecutionContext
。
http://docs.spring.io/spring-batch/trunk/reference/html/configureStep.html#external-flows
http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/core/step/job/JobParametersExtractor.html