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>

输出:

1666160034077

组装有报文头的变长有分隔符报文内容

插件公共配置

    <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>

输出:

1666162469901

组装无报文头的定长无分割符报文内容

插件公共配置

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>

输出:

1666164757383

组装有报文头的定长无分割符报文内容

插件公共配置

配置如上(组装无报文头的定长无分割符报文内容)。

接口配置实现

            <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>

输出:

1666165893319

results matching ""

    No results matching ""