Created by Michael T Minella / @michaelminella
JSR-352 introduces an exciting new Java specification for building, deploying, and running batch applications.
<job id="personJob">
<step id="step1">
<tasklet>
<chunk commit-interval="5"
reader="itemReader"
processor="itemProcessor"
writer="itemWriter" />
</tasklet>
</step>
</job>
<job id="personJob">
<step id="step1">
<chunk item-count="5">
<reader ref="itemReader"/>
<processor ref="itemProcessor"/>
<writer ref="itemWriter"/>
</chunk>
</step>
</job>
<!-- Spring Batch -->
<job id="personJob">
<step id="step1">
<tasklet>
<chunk commit-interval="5"
reader="itemReader"
processor="itemProcessor"
writer="itemWriter"/>
</tasklet>
</step>
</job>
<!-- JSR-352 -->
<job id="personJob">
<step id="step1">
<chunk item-count="5">
<reader ref="itemReader"/>
<processor ref="itemProcessor"/>
<writer ref="itemWriter"/>
</chunk>
</step>
</job>
<job id="personJob">
<step id="step1">
<chunk item-count="5">
<reader ref="itemReader"/>
<processor ref="itemProcessor"/>
<writer ref="itemWriter"/>
</chunk>
</step>
</job>
<bean id="itemWriter" class="org.springframework.batch.item.xml.StaxEventItemWriter">
<property name="resource" ref="outputFile" />
<property name="marshaller" ref="customerMarshaller" />
<property name="rootTagName" value="customers" />
</bean>
<batch-artifacts xmlns="http://xmlns.jcp.org/xml/ns/javaee">
<ref id="itemReader" class="org.sf.jsr.demo.ItemReader" />
<ref id="itemProcessor" class="org.sf.jsr.demo.ItemProcessor" />
<ref id="itemWriter" class="org.sf.jsr.demo.ItemWriter" />
</batch-artifacts>
<job id="personJob">
<step id="step1">
<chunk item-count="5">
<reader ref="org.sf.jsr.demo.ItemReader"/>
<processor ref="org.sf.jsr.demo.ItemProcessor"/>
<writer ref="org.sf.jsr.demo.ItemWriter"/>
</chunk>
</step>
</job>
<job id="formatJob">
<step id="step1">
<tasklet>
<chunk reader="fileReader"
writer="xmlWriter"
commit-interval="#{jobParameters['commit.interval']}"/>
</tasklet>
</step>
</job>
<job id="personJob">
<step id="step1">
<chunk item-count="#{jobParameters['commit.interval']}">
<reader ref="fileReader">
<properties>
<property name="fileName" value="#{jobParameters['input.fileName']}"/>
</properties>
</reader>
<writer ref="xmlWriter">
<properties>
<property name="fileName" value="#{jobParameters['output.fileName']}"/>
</properties>
</writer>
</chunk>
</step>
</job>
@Inject
@BatchProperty
public String fileName;
@Inject
@BatchProperty(name="otherProperty")
public String otherProperty;
public interface Tasklet {
RepeatStatus execute(StepContribution contribution,
ChunkContext chunkContext) throws Exception;
}
public interface StoppableTasklet extends Tasklet {
void stop();
}
public interface Batchlet {
public String process() throws Exception;
public void stop() throws Exception;
}
JobOperator jobOperator = BatchRuntime.getJobOperator();
// start
long jobExecutionId = jobOperator.start("myJob", new Properties());
// restart
long newJobExecutionId = jobOperator.restart(jobExecutionId, new Properties());
// stop
jobOperator.stop(jobExecutionid);
<job id="skip" xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="1.0">
<step id="step1">
<chunk skip-limit="3">
<reader ref="retryableListReader"/>
<writer ref="fileWriter"/>
<!-- Skippable exceptions -->
<skippable-exception-classes>
<include class="java.lang.RuntimeException"/>
</skippable-exception-classes>
</chunk>
</step>
</job>
<job id="retry" xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="1.0">
<step id="step1">
<chunk retry-limit="3">
<reader ref="retryableListReader"/>
<writer ref="fileWriter"/>
<!-- Retryable exceptions -->
<retryable-exception-classes>
<include class="java.lang.RuntimeException"/>
</retryable-exception-classes>
</chunk>
</step>
</job>
Same as Spring Batch