Hi,
It is possible to apply if else logic in spring batch, usually we will call this as condition based execution of steps.
In brief if the condition is true go and execute step1 or go and execute step2.
To achieve if - else logic in spring batch we have to use decision tag provided by spring batch.
Following example explains how to achieve if else logic in spring batch.
For More examples on Spring batch and Java .. Please refer
It is possible to apply if else logic in spring batch, usually we will call this as condition based execution of steps.
In brief if the condition is true go and execute step1 or go and execute step2.
To achieve if - else logic in spring batch we have to use decision tag provided by spring batch.
Following example explains how to achieve if else logic in spring batch.
For More examples on Spring batch and Java .. Please refer
jobs.xml
<!-- *************************************************************************************************************************************** -->
<!-- Condition Based excutions (Same as If/Else logic in Java) -->
*************************************************************************************************************************************** -->
<batch:job id="conditionJob" parent="simpleJob">
<batch:step id="masterBrain" next="decision">
<batch:tasklet ref="dummyJob" />
</batch:step>
<batch:decision decider="decider" id="decision">
<batch:next on="masterMind" to="masterMind" />
<batch:next on="dummyMind" to="dummyMind" />
</batch:decision>
<batch:step id="masterMind">
<batch:tasklet ref="sayHello"/>
</batch:step>
<batch:step id="dummyMind">
<batch:tasklet ref="sayBye"/>
</batch:step>
</batch:job>
<!-- Decision maker -->
<bean id="decider" class="com.springbatchdemo.utils.Decider"/>
<bean id="dummyJob" class="com.springbatchdemo.tasklet.Dummy" />
<bean id="sayHello" class="com.springbatchdemo.tasklet.SayHello" />
<bean id="sayBye" class="com.springbatchdemo.tasklet.SayBye" />
Decider.java
public class Decider implements JobExecutionDecider{
@Override
public FlowExecutionStatus decide(JobExecution arg0, StepExecution arg1) {
if(true){
return new FlowExecutionStatus("masterMind");
}else{
return new FlowExecutionStatus("dummyMind");
}
}
Dummy.java
public class Dummy implements Tasklet
{
@Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception
{
return RepeatStatus.FINISHED;
}
}
<!-- *************************************************************************************************************************************** -->
<!-- Condition Based excutions (Same as If/Else logic in Java) -->
*************************************************************************************************************************************** -->
<batch:job id="conditionJob" parent="simpleJob">
<batch:step id="masterBrain" next="decision">
<batch:tasklet ref="dummyJob" />
</batch:step>
<batch:decision decider="decider" id="decision">
<batch:next on="masterMind" to="masterMind" />
<batch:next on="dummyMind" to="dummyMind" />
</batch:decision>
<batch:step id="masterMind">
<batch:tasklet ref="sayHello"/>
</batch:step>
<batch:step id="dummyMind">
<batch:tasklet ref="sayBye"/>
</batch:step>
</batch:job>
<!-- Decision maker -->
<bean id="decider" class="com.springbatchdemo.utils.Decider"/>
<bean id="dummyJob" class="com.springbatchdemo.tasklet.Dummy" />
<bean id="sayHello" class="com.springbatchdemo.tasklet.SayHello" />
<bean id="sayBye" class="com.springbatchdemo.tasklet.SayBye" />
Decider.java
public class Decider implements JobExecutionDecider{
@Override
public FlowExecutionStatus decide(JobExecution arg0, StepExecution arg1) {
if(true){
return new FlowExecutionStatus("masterMind");
}else{
return new FlowExecutionStatus("dummyMind");
}
}
Dummy.java
public class Dummy implements Tasklet
{
@Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception
{
return RepeatStatus.FINISHED;
}
}
SayHello.java
public class SayHello implements Tasklet
{
@Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception
{
System.out.println("From Hi");
return RepeatStatus.FINISHED;
}
}
@Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception
{
System.out.println("From Hi");
return RepeatStatus.FINISHED;
}
}
SayBye.java
public class SayBye implements Tasklet
{
@Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception
{
System.out.println("From Bye");
return RepeatStatus.FINISHED;
}
}
Hope above small example help you in designing condition based implementation in spring batch.
@Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception
{
System.out.println("From Bye");
return RepeatStatus.FINISHED;
}
}
Hope above small example help you in designing condition based implementation in spring batch.
