【仅供内部供应商使用,不提供对外解答和培训】
【仅供内部供应商使用,不提供对外解答和培训】
无
在帆软报表这款产品中,通过服务器数据集向用户提供了统一配置、使用、管理数据的功能。极大的减少了频繁复用配置数据集的开销。不过以外的服务器数据集管理,全部需要通过设计器远程链接才能修改到服务器的数据集服务,或者导入导出(支持的数据集类型还很少)不是非常方便。为此,在10.0中官方提供了在决策平台配置管理服务器数据集和数据源的功能,并相应的提供了插件数据集和数据源的接口扩展。本文仅对决策平台配置服务器数据集接口进行介绍。
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);
}
$.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"
});
});
产品线 | 版本 | 支持情况 | 备注 |
|---|---|---|---|
| FR | 10.0 | 支持 | |
| BI | 5.1 | 支持 | |
| BI | 5.1.2 | 支持 | |
| BI | 5.1.3 | 支持 |
<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
免责声明:所有文档中的开源示例,均为开发者自行开发并提供。仅用于参考和学习使用,开发者和官方均无义务对开源案例所涉及的所有成果进行教学和指导。若作为商用一切后果责任由使用者自行承担。