Spring Batch. Cómo obtener el número del elemento que se procesa

Estamos almacenando los elementos de un archivo XML en nuestra base de datos usando Spring Batch. ¿Es posible recuperar el número del elemento que se procesa al insertarlo en la base de datos?

Para aclarar, esta es mi configuración de trabajo:

<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 puede ver, hemos intentado obtener este número usandostepExecution.writeCount, pero siempre devuelve 0, también con la propiedad readCount.

Una secuencia de base de datos no es la solución porque tiene que ser el número dentro del archivo XML actual, comenzando con 0.

Tiene que ser independiente del fragmento que se está procesando debido a la confirmación automática. Nuestro auto-commit es 1000. Si tenemos 10000 elementos, necesitamos almacenar los números del 0 al 9999, y no 10 grupos del 0 al 999.

El orden dentro del archivo XML no es importante, solo necesitamos numerar los elementos.

¿Alguna ayuda? Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta