Skip to content

协议布局扩展机制之Function函数

quhongwei edited this page Mar 28, 2018 · 1 revision

函数介绍

如协议布局配置内容,根据配置output内容在写文件时输出,在读文件时解析成数据,对于这个过程叫做文件的序列化与反序列化;组件抽象了一层函数功能来执行这个过程,抽象成函数统一接口层调用,根据函数不同实现执行不同的序列化与反序列化动作, 而且当内置函数无法满足自定义文件格式需求时可以扩展函数实现。

<protocol name="fund" rowsplit="rowSplitByFixedlLength">
	<head>
		<row columnLayout="vertical">
			<column>
				<output>${column.value()}</output>
			</column>
		</row>
		<row output="${bodycolumn.count()}" type="Integer|[3,0]" />
		<row output="${bodycolumn.vertical(name)}" />
		<row output="${totalCount}" type="Integer|[8,0]" />
	</head>
	<body>
		<row>
			<column>
				<output>${column.value()}</output>
			</column>
		</row>
	</body>
	<tail>
		<row>
			<column>
				<output>${column.value()}</output>
			</column>
		</row>
	</tail>
</protocol>

函数内置实现

配置key 描述
RdfFileFunctionSpi 用户实现扩展spi, 但是请不要直接实现这个,继承RdfFunction
RdfFunction 函数执行抽象类
ConstFunction 常量行数,用于输出或者识别文件中的常量
column ColumnFunction 用于输出字段的 value ,desc
ColumnFunctionWrapper 组件内置处理字段函数,外部不需要用
bodycolumn BodyColumnFunction 对body字段个数, key ,desc 输出

函数插件配置默认存放于 META-INF/rdf-file/services/com.alipay.rdf.file.spi.RdfFileFunctionSpi

内容如下:

column=com.alipay.rdf.file.function.ColumnFunction
bodycolumn=com.alipay.rdf.file.function.BodyColumnFunction