数据工厂数据集插件

  • 文档创建者:秃破天际
  • 编辑次数:10次
  • 最近更新:Leo.Tsai 于 2020-06-12
  • 1. 描述

    1.1 版本

    报表服务器版本
    JAR 包版本插件版本
    10.02019-12-30V2.1
    9.02018-01-01V1.1

    1.2 应用场景

    对 FineReport 的程序数据集接口进行改善和封装。

    解决原来的程序数据集配置项难剥离代码的问题,解决原来程序数据集复用率低的问题,解决原来程序数据集在动态参数时无效的问题。

    注:使用该插件需要具备最基础的 FineReport 插件开发能力。

    1.3 功能介绍

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

    • 装载器:从数据来源装载数据。

    • 解析器:将装载到的数据组装成 FineReport 支持的数据模型。

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

    1)装载器:

    • 参数装载器:数据通过参数直接传入。( 比如 JSON、XML 等结构化数据 )

    • 网络数据装载器:通过配置相关请求,从 Web 端装载数据。( 比如 JSON 服务、WebService 服务等等 )

    2)解析器:

    • JSON 解析器:对结构化的 JSON 文本进行解析,生成 FineReport 支持的数据模型。

    注:只能解析结构型描述的 JSON,业务型描述的 JSON 无法解析,业务型 JSON 解析依赖具体的业务的描述,需要单独实现解析器。

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

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

    2. 插件介绍

    2.1 插件安装

    点击下载插件:数据工厂数据集

    设计器插件安装方法参照:设计器插件管理

    服务器安装插件方法参照:服务器插件管理

    2.2 操作方法

    1)插件安装后,数据集管理面板新增数据工厂数据集,如下图所示:

    Snag_111cc73f.png

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

    • type:支持 GET、POST、JSON 这 3 种。

    • properties:是对一些特殊请求需要用到的。( 比如需要在 Header 中携带一些认证属性、Cookie 等 )

    1590397024266349.png

    注1:数据工厂配置界面的缓存是指数据集的缓存,有缓存的话,不走接口取数,直接从缓存里面取数。

    注2:缓存有 3 个选项:无、磁盘、内存。选择表示不启用缓存功能,选择磁盘表示缓存到本地磁盘,选择内存表示缓存到内存。

    注3:BI 中的数据工厂数据集如果新增了参数,那么业务包那边的数据集需要删除掉,重新新建。

    Snag_118b91c.png

    3)单参数装载器中:直接通过 data 带入数据。

    222

    4)JSON 解析器:

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

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

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

    222

    5)SOAP 装载方式( 目前只支持 10.0 版本 ):

    • wsdl:就是你的 WS 服务 wsdl 的 URL 。

    • operation:就是你要调用的方法名。

    • parameters:就是要传递的相关参数,目前不支持传递数组型参数。

    • cache:默认传递 true 就好了。( 提升速度的,会略微消耗一点内存,如果不介意快慢的可以给 false,节省内存 )

    ws.png

    3. 接口介绍

    3.1 装载器接口

    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();

    3.2 解析器接口

    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>

    附件列表


    主题: 数据准备
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!