У меня есть (очень простое) пакетное задание Java в JDL всего за два шага.
Когда шаг «загрузка» возвращает статус «ОСТАНОВЛЕНО», задание должно быть остановлено. После перезапуска должно быть вызвано уведомление об остановке.
Без раздела все работает нормально.
статистика без раздела
after step=download batchStatus=COMPLETED exitStatus=STOPPED
after job=job batchStatus=STOPPED exitStatus=STOPPED
С разделом я получаю очень странные данные для выхода из пакета. И задание не останавливается, если шаг загрузки возвращает «ОСТАНОВЛЕНО». Даже если раздел имеет только один поток и один раздел.
При попытке перезагрузки возникает следующая ошибка (разумеется). JBERET000609: Выполнение задания 1 уже завершено и не может быть перезапущено.
статистика с разделом
after step=download batchStatus=STARTED exitStatus=null
after job=job batchStatus=COMPLETED exitStatus=COMPLETED
описание работы
<job id="job" xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="1.0" restartable="true">
<step id="download" next="notify">
<batchlet ref="downloadBatchlet">
</batchlet>
<partition>
<mapper ref="basicPartition" />
</partition>
<stop on="STOPPED" restart="notify"/>
</step>
<step id="notify">
<batchlet ref="notifyBatchlet"></batchlet>
<end on="COMPLETED"/>
</step>
</job>
Каждый намек предложения приветствуются. Что мне не хватает?
Без раздела
При запуске задания задание вызывает - downloadBatchlet => STOPPED и останавливается.
При перезапуске задание вызывает -notifyBatchlet => COMPLETED и завершается.
С разделом
При запуске задания задание вызывает - downloadBatchlet => STOPPED и останавливается.
При перезапуске задание вызывает БЕЗ ШАГОВ и завершается.
@Named
public class DownloadBatchlet extends AbstractBatchlet {
@Override
public String process() throws Exception {
return BatchStatus.STOPPED.toString();
}
@Override
public void stop() throws Exception {
}
}