Lote de Primavera. Como obter o número do elemento que está sendo processado

Estamos armazenando os elementos de um arquivo XML em nosso banco de dados usando o lote de primavera. É possível recuperar o número do elemento que está sendo processado ao inseri-lo no banco de dados?

Para esclarecer, esta é a minha configuração de trabalho:

<bean id="xmlItemReader" scope="step"
    class="org.springframework.batch.item.xml.StaxEventItemReader">
    <property name="fragmentRootElementName" value="person" />
    <property name="resource" value="#{jobParameters[xmlPath]}" />
    <property name="unmarshaller" ref="personUnmarshaller" />
</bean>

<!-- Read and map values to object, via jaxb2 -->
<bean id="personUnmarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="classesToBeBound">
        <list>
            <value>com.batch.input.Person</value>
        </list>
    </property>
</bean>     

<bean id="personItemWriter" scope="step"
    class="org.springframework.batch.item.database.JdbcBatchItemWriter">
    <property name="dataSource" ref="dataSource" />
    <property name="sql">
        <value>
        <![CDATA[        
            insert into PERSON (
                ID_XML, PERSON_ID, ITEM_NUM,
                NAME, SURNAME1, SURNAME2) 
            values (
                #{jobParameters[ID_XML]}, :personID, 
                #{stepExecution.writeCount},        -- This is what we want          
                :name, :surname1, :surname2)
        ]]>
        </value>
    </property>
    <!-- It will take care matching between object property and sql name parameter -->
    <property name="itemSqlParameterSourceProvider">
        <bean
            class="org.springframework.batch.item.database.BeanPropertyItemSqlParameterSourceProvider" />

    </property>
</bean>

Como você pode ver, tentamos obter esse número usandostepExecution.writeCount, mas sempre retorna 0, também com a propriedade readCount.

Uma sequência de banco de dados não é a solução, pois deve ser o número dentro do arquivo XML atual, começando com 0.

Ele deve ser independente da parte que está sendo processada porque a confirmação automática. Nossa confirmação automática é 1000. Se tivermos 10000 elementos, precisamos armazenar os números de 0 a 9999, e não 10 grupos de 0 a 999.

A ordem dentro do arquivo XML não é importante, basta numerar os elementos.

Qualquer ajuda? obrigado

questionAnswers(1)

yourAnswerToTheQuestion