定长报文插件(FixedFilter)
插件配置
- 配置声明在commons.xml中
<filter id="fixedFilter" class="FixedFilter"/><!-- 数据处理类 -->
属性 | 说明 |
---|---|
id | 插件声明定义的id |
class | 声明的插件类名 |
属性配置
filter的属性配置
属性 | 描述 | 值类型 | 示例 |
---|---|---|---|
ref | 引用 | string | 引用已经定义好的filter对象 |
type | 数据流向 | string | in、out |
field的属性配置
filter中处理的操作单个数据域,用于从数据报中提取填充特定位置的数据。
属性 | 描述 | 值类型 | 示例 |
---|---|---|---|
tag | 标识 | string | filter中字段的标识,作为key存入上下文; |
etag | 特殊标志 | string | 定长分隔符的etag解报时表示每个域的长度,组报时表示报文组报位置。 |
value | 值 | string | 当前字段的值; |
type | 数据类型 | string | String 、int、Number(a,b) |
size | 数据长度 | int | 数字 |
使用规则
- 子节点foreach、while、if、else、elseif之间支持多层嵌套使用。
- 属性ref为必配项,其他为可选项,必须正确指定到filters中的定义的FixedFilter插件指定的id值。
- 需要特别注意数据流向的配置,in代表输入流,out代表输出流,针对in、out存在不同的处理;
组装定长无分隔报文
- 使用FixedFilter进行定长无分隔符字符串报文的组装和解析。
- 定长报文组装实际长度不够时,对于字符串类型,默认是右补空格;对于数值类型,默认是左补0。field操作域需要size属性。
输出:
解析定长无分隔符报文
- 注意etag表长度,长度不能超过报文长度。
结果: