У меня задание определено, как показано ниже:
<step id="file-transfer">
<chunk checkpoint-policy="item" item-count="10" retry-limit="10">
<reader ref="allTrusteeCustomerFilesReader">
<properties>
<property name="part-page-first-offset" value="#{partitionPlan['part-page-first-offset']}"/>
<property name="part-page-last-offset" value="#{partitionPlan['part-page-last-offset']}"/>
<property name="part-page-length" value="#{partitionPlan['part-page-length']}"/>
<property name="part-sort-field" value="#{partitionPlan['part-sort-field']}"/>
<property name="part-sort-ascending" value="#{partitionPlan['part-sort-ascending']}"/>
</properties>
</reader>
<processor ref="customerFileLocalToGoogleStorageProcessor"/>
<writer ref="customerFileWriter">
<properties>
<property name="set-google-cloud-migrated" value="true"/>
</properties>
</writer>
<skippable-exception-classes>
<include class="be.valuya.gestemps.server.file.batch.error.NoLocalStorageDataException"/>
<include class="be.valuya.gestemps.server.file.batch.error.TargetAlreadyPresentException"/>
<include class="be.valuya.gestemps.server.file.batch.error.CustomerFileAlreadyMigratedException"/>
</skippable-exception-classes>
<retryable-exception-classes>
<include class="be.valuya.gestemps.server.file.batch.error.TransferToGoogleFailedException"/>
</retryable-exception-classes>
</chunk>
<partition>
<mapper ref="customerFilePartitionMapper"/>
</partition>
<end on="COMPLETED"/>
</step>
Связанные преобразователи создают массив свойств с определенными значениями и возвращают его:
PartitionPlanImpl partitionPlan = new PartitionPlanImpl();
partitionPlan.setPartitions(partitionCount);
partitionPlan.setPartitionProperties(partitionProperties);
return partitionPlan;
Правильно вызывается при запуске шага и возвращает свойства с заданными правильными ключами.
Однако я не могу получить свойства плана разбиения из моего шага чтения. Ни свойства контекста задания, ни свойства контекста шага не содержат ничего. Я не вижу ошибки в консоли. Параметры экземпляра задания содержат только параметры, установленные во время выполнения. Ни один из имен параметров / свойств не конфликтует. Попытайтесь внедрить их, используя @BatchProperty, оставьте поля пустыми.
Пакет запускается следующим образом:
Properties properties = new Properties();
// Fill parameters...
long executionId = jobOperator.start(jobName, properties);
Чего мне не хватает?