如何在spring-batch writer中处理摘要信息

时间:2016-02-17 15:40:36

标签: spring-batch

我正在使用Spring Batch,我想知道在Spring Batch编写器编写文件之后是否可以修改文件,或者是否有任何其他解决方案来解决我的问题。

目前我的Spring Batch HeaderCallback也创建了包含Summary标签的Header部分。

我面临的问题是我没有预先设置NumberOfSuccessfulTransactions / NumberOfFailedTransactions来填充XML中的Summary部分。一旦处理了所有块,我就只有这个。

当spring批处理文件时,我无法将Summary部分移动到FooterCallback部分,因为该文件是针对可识别序列的XSD进行验证的。序列是标题,摘要然后是交易。

创建输出文件需要遵循的XML示例如下:

<Doc>
   <Header>
      <Id></Id>
      <CreationDate></CreationDate>
   <Header>
   <Summary>
      <NumberOfSuccessfulTransactions></NumberOfSuccessfulTransactions>
      <NumberOfSuccessfulTransactions></NumberOfFailedTransactions>
   <Summary>
   <Transaction>
      <ErrorCode></ErrorCode>
      <ErrorDescription></ErrorDescription>
   <Transaction>
   <Transaction>
      <ErrorCode></ErrorCode>
      <ErrorDescription></ErrorDescription>
   <Transaction>
   <Transaction>
      <ErrorCode></ErrorCode>
      <ErrorDescription></ErrorDescription>
   <Transaction>
   <Transaction>
      <ErrorCode></ErrorCode>
      <ErrorDescription></ErrorDescription>
   <Transaction>
   <Transaction>
      <ErrorCode></ErrorCode>
      <ErrorDescription></ErrorDescription>
   <Transaction>
<Doc>

1 个答案:

答案 0 :(得分:0)

您可以为这些字段编写虚拟值,然后在步骤完成后替换这些值(例如在步骤侦听器中)。

另一种选择是仅在<Summary>之后写一个单独的文件,然后在后续步骤中构建最终文件。

跟踪步骤执行上下文中的所有错误并仅在结束时(在步骤监听器中或在将步骤上下文中的故障数据提升到作业上下文之后的后续步骤中)写入文件仅在以下情况下有效你没有太多错误。