【仅供内部供应商使用,不提供对外解答和培训】

Page tree

【仅供内部供应商使用,不提供对外解答和培训】

Skip to end of metadata
Go to start of metadata

一、特殊名词介绍

二、背景、场景介绍

在帆软报表这款产品中,通过服务器数据集向用户提供了统一配置、使用、管理数据的功能。极大的减少了频繁复用配置数据集的开销。不过以外的服务器数据集管理,全部需要通过设计器远程链接才能修改到服务器的数据集服务,或者导入导出(支持的数据集类型还很少)不是非常方便。为此,在10.0中官方提供了在决策平台配置管理服务器数据集和数据源的功能,并相应的提供了插件数据集和数据源的接口扩展。本文仅对决策平台配置服务器数据集接口进行介绍。

三、接口介绍

UniversalServerTableDataProvider.java
package com.fr.decision.fun;

import com.fr.base.TableData;
import com.fr.json.JSONObject;
import com.fr.stable.fun.mark.Mutable;
import com.fr.stable.fun.mark.WebCoalition;

/**
 * 新服务器数据集接口
 */
public interface UniversalServerTableDataProvider<T extends TableData> extends WebCoalition, Mutable {

    String MARK_STRING = "UniversalServerTableDataProvider";

    int CURRENT_LEVEL = 1;

    /**
     * 数据集class
     */
    Class<T> classForTableData();

    /**
     * 数据集名称
     */
    String nameForTableData();

    /**
     * 用于将DataSet转换成前台面板需要的数据格式
     */
    JSONObject serialize(T tableData);

    /**
     * 将前台数据转换成服务器数据集
     * @param oldDataSet 可能存在的旧dataSet,如果是新增数据集,此属性为null
     * @param object        前台数据
     */
    T deserialize(T oldDataSet, JSONObject object);

}

WebCoalotion介绍

TableData介绍

前端接口
$.extend(DecCst.DataSet.Type,{DEMO_DATA:"demo_data"});
BI.config("dec.provider.data.set", function (provider) {
	provider.registerDataSetType({
		value: DecCst.DataSet.Type.DEMO_DATA,
		text: "Demo Data",
		cardType: "dec.data.set.type.demo.data",
		iconCls: "management-maintenance-cloud-font"
	});
});

四、支持版本

产品线

版本

支持情况

备注

FR10.0支持
BI5.1支持
BI5.1.2支持
BI5.1.3支持

五、插件注册

plugin.xml
<extra-decision>
    <UniversalServerTableDataProvider class="your class name"/>
</extra-decision>

六、原理说明

DataSetProcessorFactory初始化时,会加载所有插件中申明的平台服务器数据集接口。并通过DataSetResource服务中的  /{version}/dataset路由对服务器数据集进行增(POST)删(DELETE)改(PUT)查(GET)。

七、特殊限制说明

classForTableData :接口需要返回一个TableData接口类。实际开发时为了方便开发提高效率和稳定性,要求开发者全部继承AbstractParameterTableData[注意点]

nameForTableData:这是一个标记值,用来与前端接口申明的数据集类型匹配。返回值与dec.provider.data.set.registerDataSetType中的value属性相同即可。

serialize/deserialize:用于把一个具体的数据集实例,序列化为JSON/从JSON反序列化为数据集实例对象。

前端接口dec.provider.data.set.registerDataSetType中的cardType指向一个开发者自定义的FineUI[点我看教程]组件。从而实现前后端数据集和UI的绑定。前端接口主要是绘制数据集对应的UI

注:使用该接口需要开发者具备一定的FineUI开发能力,对于初次学习插件开发的开发者来说具有一定的挑战性

八、常用链接

demo地址:demo-table-data-define

ServerTableDataDefineProvider

TableDataDefineProvider

九、开源案例

免责声明:所有文档中的开源示例,均为开发者自行开发并提供。仅用于参考和学习使用,开发者和官方均无义务对开源案例所涉及的所有成果进行教学和指导。若作为商用一切后果责任由使用者自行承担。


  • No labels