Как перейти к следующему пакетному шагу, если текущий шаг пакетного ввода пуст
Я создал пакетное задание с использованием Spring Batch Framework, но если читатель вернет ноль, пакетное задание создаст пустой файл. В любом случае, чтобы перейти к следующему шагу и не создавать файл.
<batch:job id="MY_BATCH_JOB">
<batch:step id="step1" next="step2">
<batch:tasklet>
<batch:chunk reader="itemReader" writer="itemWriter"
processor="itemProcessor" commit-interval="2">
</batch:chunk>
<batch:listeners>
<batch:listener ref="readListener" />
</batch:listeners>
</batch:tasklet>
</batch:step>
<batch:step id="step2">
<batch:tasklet>
<batch:chunk reader="itemReader2" writer="itemWriter2"
processor="itemProcessor2" commit-interval="2">
</batch:chunk>
</batch:tasklet>
</batch:step>
</batch:job>
1 ответ
Решение
Если твой ItemWriter
это FlatFileItemWriter
Вы можете установить свойство shouldDeleteIfEmpty
true, чтобы он не создавал файл, если он пуст.
<bean class="org.springframework.batch.item.file.FlatFileItemWriter">
<property name="shouldDeleteIfEmpty" value="true"></property>
</bean>
Если твой ItemWriter
это пользовательский элемент записи, то вы можете применить свою собственную логику, чтобы не создавать файл.
В любом случае, это перейдет к следующему шагу.