Spring Batch: Как использовать Decider на основе результатов Reader? - PullRequest
1 голос
/ 02 апреля 2019

Я новичок в Spring Batch.Я обнаружил, что с помощью ExecutionContextPromotionListener я могу настроить пары ключ-значение и получить их в следующих шагах.

<step id="step1">....</step>
<decision id="decision1">.... />

Когда я использовал Tasklet вместо считывателя, я сделал следующее:

  1. Создал компонент ExecutionContextPromotionListener с ожидаемыми ключами в моем файле конфигурации пакета.

  2. Зарегистрировал Listener для моего шага.

  3. Поместите пары ключ-значение в executionContext, полученные из chunkContext внутри моегоTasklet как показано ниже:

  4. Теперь Decider может читать из контекста выполнения шага следующим образом и принимать решение.

Но яхочу принять решение на основе Reader из предыдущего шага.Итак, по моему решению, как получить значение от Reader?Или мой подход неверен.Пожалуйста, предложите.

1 Ответ

0 голосов
/ 03 апреля 2019

простой способ - вы можете использовать контекст выполнения из вашего шага и передавать значения на следующий шаг.

Итак, на первом шаге сделайте что-то подобное

// ...
ExecutionContext stepContext = this.stepExecution.getExecutionContext();
stepContext.put("DATA_KEY", dataToShare );

, то на следующем шаге вы можете прочитать это, используя контекст выполнения.

ExecutionContext jobContext = jobExecution.getExecutionContext();
dataToShare = jobContext.get("DATA_KEY");

вам просто нужно управлять ключами - ключом, который вы используете для ввода первого шага и чтения его на следующем шаге

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...