FileFilter
- 批量文件组装分为有报文头的文件和无报文头的文件。
- 批量文件分为定长无分割符报文格式和变长有分隔符报文格式。
- 批量文件的定长无分隔符报文组装的时候,默认是左补零右补空格。
- bysplit表示变长有分隔符的组报策略,fixedlen表示定长无分隔符的报文策略。
组装无报文头的变长有分隔符报文内容
插件公共配置
<filter id="fileFilter" class="FileFilter">
<parameter name="record_strategy" value="bysplit"/><!-- 行与行策略 -->
<parameter name="record" value="\r\n"/><!--行与行换行符隔开 -->
<parameter name="field_strategy" value="bysplit"/><!--列于列策略 -->
<parameter name="field" value="|"/><!--列之间的分隔符 0x1b -->
</filter>
接口配置实现
tips:foreach定义中的field域数据会进行列与列的组报,每次循环中的数据会进行行与行的组报
<!-- fileFilter插件 -->
<transaction id="13" version="2.0">
<step id="1">
<filter ref="fileFilter" type="out">
<foreach tag="i" end="2">
<field value="${i+'yi'}" type="string"/>
<field value="${i+'er'}" type="string"/>
</foreach>
</filter>
<filter ref="publicFilter" type="in">
<log value="${this}"/>
</filter>
</step>
</transaction>
输出:
组装有报文头的变长有分隔符报文内容
插件公共配置
<filters>
<filter id="fileFilter" class="FileFilter">
<parameter name="record_strategy" value="bysplit" /><!-- 行与行策略 -->
<parameter name="record" value="${system.lineSeparator}" /><!--行与行换行符隔开 -->
<parameter name="field_strategy" value="bysplit" /><!--列于列策略 -->
<parameter name="field" value="|+|" /><!--列之间的分隔符 -->
</filter>
</filters>
接口配置实现
tips:field操作域中的数据自动拼接成报文头,进行行与行分隔时需在配置文件添加行与行策略。
<!-- fileFilter插件 -->
<transaction id="13" version="2.0">
<step id="1">
<filter ref="fileFilter" type="out">
<field value="A00" type="string"/>
<field value="11B" type="string"/>
<field value="${system.lineSeparator}"/>
<foreach tag="i" end="2">
<field value="${i+'yi'}" type="string"/>
<field value="${i+'er'}" type="string"/>
</foreach>
</filter>
<filter ref="publicFilter" type="in">
<log value="${this}"/>
</filter>
</step>
</transaction>
输出:
组装无报文头的定长无分割符报文内容
插件公共配置
tips:列于列策略需改为fixedlen;number_fill_char表示左补0;string_fill_char表示右补空格。
<filters>
<filter id="fileFilter" class="FileFilter">
<parameter name="record_strategy" value="bysplit" /><!--行与行策略 -->
<parameter name="record" value="${system.lineSeparator}" /><!--行与行换行符隔开 -->
<parameter name="field_strategy" value="fixedlen" /><!--列于列策略 -->
<parameter name="field" value="" /><!--列之间的分隔符 -->
<parameter name="number_fill_strategy" value="left" />
<parameter name="string_fill_strategy" value="right" />
<parameter name="number_fill_char" value="0" />
<parameter name="string_fill_char" value=" " />
</filter>
</filters>
接口配置实现
<step id="2">
<filter ref="fileFilterDc" type="out">
<foreach tag="i" end="3">
<field value="${i+'aa'}" type="string" size="4" />
<field value="111" type="int" size="8" />
</foreach>
</filter>
<filter ref="publicFilter" type="in">
<log value="${this}"/>
</filter>
</step>
输出:
组装有报文头的定长无分割符报文内容
插件公共配置
配置如上(组装无报文头的定长无分割符报文内容)。
接口配置实现
<step id="2">
<filter ref="fileFilterDc" type="out">
<field value="A00" type="string"/>
<field value="1" type="string"/>
<field value="${system.lineSeparator}"/>
<foreach tag="i" end="3">
<field value="${i+'aa'}" size="4" />
<field value="111" type="int" size="8" />
</foreach>
</filter>
<filter ref="publicFilter" type="in">
<log value="${this}"/>
</filter>
</step>
输出: