Запуск нескольких заданий в весеннем пакетном администраторе с использованием REST с одним и тем же именем задания

Я использую Spring Batch Admin для запуска пакетных заданий для нашей системы. Нам приходится запускать эти задания много раз. Я использую остальной интерфейс администратора весенней партии. Я начинаю новую работу, используя Spring RestTemplate.

RestTemplate tpl = new RestTemplate();
tpl.postForLocation(Constants.SPRING_BATCH_ADMIN_URL + "/jobs/myBatchJob;

Это работает для запуска первого задания, но для последующих заданий запрос не запускает новый экземпляр задания. В файле конфигурации задания у меня есть заданный jobParmattersIncrementer

<job id="myBatchJob" xmlns="http://www.springframework.org/schema/batch"
    restartable="true" incrementer="jobParametersIncrementer">
    <bean id="jobParametersIncrementer"
        class="org.springframework.batch.core.launch.support.RunIdIncrementer" />

Я попытался изменить свой postForLocation на

List<JobInstance> jobInstances = jobExplorer.getJobInstances("myBatchJob", 0, 30);
JobParameters jobParameters = jobInstances.get(0).getJobParameters();
RunIdIncrementer runIdIncrementer = new RunIdIncrementer();
JobParameters jobParameters = runIdIncrementer.getNext(jobParameters); 
RestTemplate tpl = new RestTemplate();
tpl.postForLocation(Constants.SPRING_BATCH_ADMIN_URL + 
    "/jobs/myBatchJob?launch=Launch&{parameters}",
    "runid",
    jobParameters.toString());

Он работает со страницы администрирования весенней партии, нажав кнопку запуска. Это в поле редактирования параметра

run.id(long)=1

Как вы запускаете задание в Spring Batch Admin из другого веб-приложения более одного раза?


person jmclurkin    schedule 23.04.2013    source источник


Ответы (1)


Вы можете передать параметр jobParameter в теле запроса, который содержит ваши кортежи.

jobParameters=run.id(long)=123

и прикрепите его закодированный URL-адрес к почтовому запросу. Вот мое решение jquery.

$.post('<url>/jobs/myBatchJob', 'jobParameters=' + encodeURIComponent('run.id(long)=123')).done(function() {
   // do something
});
person damoeb    schedule 08.10.2014