历史版本1 :数据工厂数据集 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

插件地址 :数据工厂V9.0版

应用场景:

对FR的程序数据集接口进行改善和封装(解决原来的程序数据集配置项难剥离代码的问题,解决了原来程序数据集复用率低的问题,解决了原来程序数据集在动态参数时无效的问题)

该插件安装后,提供了额外的取数接口。将FR的数据集逻辑,再次切割为两个部分:

  1. 从数据来源装载数据——装载器

  2. 将装载到的数据组装成FR支持的数据模型——解析器

插件内置了两个装载器和一个解析器分别是:

装载器:

  1. 参数装载器——数据通过参数直接传入(比如JSON、XML等等的结构化数据)

  2. 网络数据装载器——通过配置相关请求,从WEB装载数据(比如JSON服务、WebService服务等等)

解析器:

    1.JSON解析器——对结构化的JSON文本进行解析,生成FR支持的数据模型(只能解析结构型描述的JSON,业务型描述的JSON无法解析,业务型JSON,解析依赖具体的业务的描述,需要单独实现解析器)

    2.WS解析器——解析WS服务的响应(目前还没开发完善,等待更新)

    3.爬虫解析器——支持JQ的选取语法和描述(目前还没开发完善,等待更新)

要求:具备最基础的FR的插件开发能力【当然,后续我这边会持续的上传一些比较常用的解析器和装载器的插件】

下面是内置的实现【主要是用于说明怎么用的】
222

Http装载器中(支持${}参数和公式写法)

url和charset就不必说了

type支持 GET POST JSON3种

properties是对一些特殊请求需要用到的(比如需要在header中携带一些认证属性呀,cookie呀等等的)

222
单参数装载器中:直接通过data进行数据的带入
222


JSON解析器:(简单实现,不支持业务型描述的JSON)

dataPath: 就是待展示数据的节点(可能并不是所有的数据都要展示,这个是原生实现的,比较简单,不支持JPath的写法)

showmap:因为JSON数据字段很多都是一些路径的描述,对于作模板看起来会比较吃力,提供一个字段名转义的配置:

比如 path1_key1 path1_key2这两个字段分别对应姓名,年龄 则写法如下

path1_key1,姓名,path1_key2,年龄 即可


下面是装载器和解析器的接口

装载器接口

package com.tptj.plugin.hg.fun; import com.fr.script.Calculator; import com.fr.stable.ParameterProvider; import com.fr.stable.fun.mark.Mutable; public interface Loader extends Mutable { String XML_TAG = "TableDataLoader"; int CURRENT_LEVEL = 1; /** * 装载数据 * @param cal 当前算子 * @param params 需要用到的参数 * @param others 其他你可能用到的但是又不希望通过参数控制的配置项 * @return 保存数据的对象 */ public Object load( Calculator cal, ParameterProvider[] params, String others); /** * 装载器的名字【显示在数据工厂配置界面的下拉列表里面的】,唯一 * @return */ public String getName(); /** * * @return 默认显示的配置【显示在数据工厂配置界面装载器配置文本域里面的,配置项自定义,其实就是放一些,不想写死在代码里,又不希望被参数篡改的部分】 */ public String getDefaultConfig(); } 


解析器接口

package com.tptj.plugin.hg.fun; import com.fr.stable.fun.mark.Mutable; import com.tptj.plugin.hg.stable.SimpleDataModel; public interface Resolver extends Mutable { String XML_TAG = "TableDataResolver"; int CURRENT_LEVEL = 1; /** * 解析数据 * @param data 从装载器得到的原始数据 * @param others 解析时会使用,但是不希望是参数的配置 * @return 解析出来的二维数据模型 */ public SimpleDataModel parse( Object data, String others ); /** * 解析器的名字【显示在数据工厂配置界面的下拉列表里面的】,唯一 * @return */ public String getName(); /** * * @return 默认显示的配置【显示在数据工厂配置界面解析器配置文本域里面的,配置项自定义,其实就是放一些,不想写死在代码里,又不希望被参数篡改的部分】 */ public String getDefaultConfig(); } 

plugin.xml注册

<extra-core> <TableDataLoader class="com.tptj.plugin.hg.tabledata.factory.core.loader.HttpLoader"/> <TableDataLoader class="com.tptj.plugin.hg.tabledata.factory.core.loader.SingleParamLoader"/> <TableDataResolver class="com.tptj.plugin.hg.tabledata.factory.core.resolver.JSONResolver"/> </extra-core>