В этом вопросе говорится о моей проблеме. Можете ли вы не использовать FlatFileItemWriters (FFIW) в качестве писателей ни на чем, кроме простой обработки кусков с помощью одного писателя? Я новенький.Я получаю «Писатель должен быть открыт до его написания» при использовании ClassifierCompositeItemWriter
Я попытался ввести FFIW в ItemProcessors и получил то же самое. Возможно, мне нужно написать свои собственные писатели. Я пытался использовать FFIW для выполнения этой работы, потому что все, что мне нужно, - это просеять один входной файл и заполнить три файла. Мой маршрутизаторDelegate работает нормально, никаких проблем нет. Просто сбой при записи, потому что файл не открыт, и я не вижу, как его вручную открыть (что я считаю неправильным, даже если бы мог).
Благодаря ...
вот мой код:
<batch:step id="processCustPermits" next="somethingElse">
<batch:description>Sift permits></batch:description>
<batch:tasklet>
<batch:chunk reader="custPermitReader" writer="custPermitCompositeWriter"
commit-interval="1" />
</batch:tasklet>
</batch:step>
<bean id="custPermitCompositeWriter"
class="org.springframework.batch.item.support.ClassifierCompositeItemWriter">
<property name="classifier">
<bean
class="org.springframework.batch.classify.BackToBackPatternClassifier">
<property name="routerDelegate" ref="permitRouterClassifier" />
<property name="matcherMap">
<map>
<entry key="hierarchy" value-ref="custPermitWriter" />
<entry key="omit" value-ref="custPermitOmithWriter" />
<entry key="trash" value-ref="custPermitTrashWriter" />
</map>
</property>
</bean>
</property>
</bean>
<bean id="custPermitWriter" class="org.springframework.batch.item.file.FlatFileItemWriter">
<property name="resource" value="${sap.cust.permit.outfile.heirarchy}" />
<property name="lineAggregator" ref="passThroughLineAggregator" />
<property name="shouldDeleteIfExists" value="true" />
<property name="shouldDeleteIfEmpty" value="false" />
</bean>
<bean id="custPermitOmithWriter" class="org.springframework.batch.item.file.FlatFileItemWriter">
<property name="resource" value="${sap.cust.permit.outfile.omits}" />
<property name="lineAggregator" ref="passThroughLineAggregator" />
<property name="shouldDeleteIfExists" value="true" />
<property name="shouldDeleteIfEmpty" value="true" />
</bean>
<bean id="custPermitTrashWriter" class="org.springframework.batch.item.file.FlatFileItemWriter">
<property name="resource" value="${sap.cust.permit.outfile.trash}" />
<property name="lineAggregator" ref="passThroughLineAggregator" />
<property name="shouldDeleteIfExists" value="true" />
<property name="shouldDeleteIfEmpty" value="true" />
</bean>
Спасибо! Это просто помогло мне собрать кучу, когда вы говорите, что вам нужно внимательно читать, у вас есть ссылка на то, что вы читаете? – EdgeCaseBerg
Я использовал манеру речи. Я нашел пример, но не достаточно внимательно прочитал его. Вставка элемента «поток» внутри «куска» была той частью, которую я делал неправильно. У меня было это вне этого элемента. Я прошу прощения, что прошло некоторое время, и у меня больше нет примера. Весенняя партия действительно полезна. Я рад, что этот пост помог в некотором роде. – Davidson
Спасибо @ Davidson, это очень помогло мне. Большое спасибо – Shankar