如何在 spring 批处理作业的下一步中获取上一步执行的 ID?
How do I get the ID of the previous step execution in the next step of a spring batch job?
如何在 spring 批处理作业的下一步中获取上一步执行的 ID?
我目前正在尝试对一组数据执行几个步骤并将它们保存在数据库的不同行中。
每个步骤(第一步除外)都将读取前面步骤的结果并对其进行进一步处理,然后将更新后的结果保存在新行中。
我有一个从数据库读取的自定义 reader,但我需要将上一步执行的 ID 传递给当前步骤,以便它可以相应地查询存储库。
我该怎么做?
请按照以下步骤操作:
1.From 当前步骤,将数据传递给 StepExecutionContext
.
2.From 当前 StepExecutionContext
,将数据传递给 JobExecutionContext
(通过 listener
)
3.JobExecutionContext
在所有步骤中共享,通过这种方式您现在可以获取先前 Steps
.
的数据
另一种方法是将此临时 Step 数据存储在数据库中的 table 中,列为 JobExecutionId,StepExecutionId,StepData
一个选项是使用将在步骤执行前后调用的 StepExecutionListener
。
方法 afterStep
具有 StepExecution
对象。您可以使用此 StepExecution
设置下一步所需的所有参数。
例如:
currentStep.registerStepExecutionListener(new StepExecutionListener() {
@Override
public void beforeStep(StepExecution stepExecution) {}
@Override
public ExitStatus afterStep(StepExecution stepExecution) {
nextStep.setParameter(stepExecution.getExecutionContext().getString(param)
return ExitStatus.COMPLETED;
}
});
如何在 spring 批处理作业的下一步中获取上一步执行的 ID?
我目前正在尝试对一组数据执行几个步骤并将它们保存在数据库的不同行中。
每个步骤(第一步除外)都将读取前面步骤的结果并对其进行进一步处理,然后将更新后的结果保存在新行中。
我有一个从数据库读取的自定义 reader,但我需要将上一步执行的 ID 传递给当前步骤,以便它可以相应地查询存储库。
我该怎么做?
请按照以下步骤操作:
1.From 当前步骤,将数据传递给 StepExecutionContext
.
2.From 当前 StepExecutionContext
,将数据传递给 JobExecutionContext
(通过 listener
)
3.JobExecutionContext
在所有步骤中共享,通过这种方式您现在可以获取先前 Steps
.
另一种方法是将此临时 Step 数据存储在数据库中的 table 中,列为 JobExecutionId,StepExecutionId,StepData
一个选项是使用将在步骤执行前后调用的 StepExecutionListener
。
方法 afterStep
具有 StepExecution
对象。您可以使用此 StepExecution
设置下一步所需的所有参数。
例如:
currentStep.registerStepExecutionListener(new StepExecutionListener() {
@Override
public void beforeStep(StepExecution stepExecution) {}
@Override
public ExitStatus afterStep(StepExecution stepExecution) {
nextStep.setParameter(stepExecution.getExecutionContext().getString(param)
return ExitStatus.COMPLETED;
}
});