У меня есть приложение, в котором клиенты отправляют HTTP-запросы, которые переводятся в параметры пакетного задания Spring и запускают задание. Я генерирую correlationId
для ответа вместе с результатом выполнения задания.
На данный момент у меня нет возможности получить Job_Execution_Id
выполняемого задания.
способ получить его: если я запрашиваю BATCH_JOB_EXECUTION_PARAM
таблицу, которая имеет correlationId
как ключ / значение, поэтому я запрашиваю с условием:
where KEY_NAME='correlationId' AND STRING_VAL='12345'
Это дает мне JOB_EXECUTION_ID
.
Отсюда я хочу предоставить своим клиентам полную информацию о выполняемом / или выполняющемся задании, включая детали текущего шага и его статуса. Итак, полезная нагрузка json должна выглядеть примерно так:
{
"correlationId": "2ae16a63-7e91-4e37-942a-cf7f66117014",
"jobDetails": {
"id": 1,
"jobId": 1,
"jobName": "BLA BLA",
"startTime": "2018-12-23T18:19:13.185",
"endTime": "2018-12-23T18:19:13.223",
"exitCode": "COMPLETED",
"exitDescription": "",
"status": "COMPLETED",
"exceptions": [],
"currentStep": "copyingAFile",
"currentStepStatus": "RUNNING"
},
"_links": {
"self": {
"href": "http://localhost:8080/status/2ae16a63-7e91-4e37-942a-cf7f66117014"
}
}
}
Я знаю, что в пакете Spring есть классы dao
для jobexection
и stepexecution
. Что я хотел бы знать, так это то, есть ли способ получить подробную информацию о выполнении задания и выполнении текущего шага за один удар с помощью настраиваемого запроса или метода dao, который уже существует в структуре пакетной обработки Spring, и подключить к моему ответу ? Все это с помощью простого correlationId, который мой клиент вызывает в конечной точке GET /status/{correlationId}
Эта ссылка дала мне некоторые знания, но запрашивает идентификатор выполнения задания, которого у моего клиента не будет и также нет ничего о currentStep
, а его статус
Я не управляю всем этим по идентификатору выполнения задания, потому что мои задания могут запускаться асинхронно, на что мне нужно немедленно ответить с помощью correlationId.