1. 概述编辑
1.1 版本
FineBI 版本 | JAR 包版本 | 功能变动 |
---|---|---|
5.1 | - | - |
2020-08-04 | 单表更新和业务包更新支持设置全量&增量更新 | |
5.1.5 | 2020-09-02 | 单表更新和业务包更新接口中将使用「业务包名」参数变更为「业务包 ID」 |
5.1.7 | 2020-11-05 | 新增查询更新情况接口 |
1.2 应用场景
FineBI 是基于 B/S 架构的浏览器/服务器模式,现在用户开发的系统基本上趋向于 B/S 架构的浏览器/服务器模式,因此有些页面完全可以直接采用 Web 页面嵌入式集成的简易方式完成集成。
通过集成,用户从自己的系统通过链接使用浏览器访问 FineBI 的服务器,从而在自己系统内调用 FineBI 的 Web 页面。
1.3 功能介绍
集成通常有两种方式:
直接使用 URL 链接
通过 JS 调用 JSON 来获得分析模板。
本章提供各部分的 URL 链接接口以及 JSON 格式的 API 。
FineBI 在嵌入式集成时一般分为两步:获取 Token 和调用其他相关 API ,详情请参见: Web页面简单集成例子 。
注1:由于平台安全限制,FineBI 在集成时需要将「管理系统>安全管理>安全防护」中的 Security Headers 关闭才可跨域。
注2:以下接口均支持跨域,且跨域与不跨域的返回值均一致。
2. 仪表板接口编辑
2.1 新建仪表板
作用:使用该接口可以新建一个仪表板
URL:/v5/api/platform/dashboard/reports?dir=xxx
请求方式:GET
参数说明:
参数 | 说明 | 示例 |
---|---|---|
dir | 创建到的目录结构 | dir={"name":"新建仪表板12","catalog":["新建文件夹"]} |
请求示例:localhost:37799/webroot/decision/v5/api/platform/dashboard/reports?dir={"name":"新建仪表板12","catalog":["新建文件夹"]}
返回数据示例:
{
"success": true,
"code": "200",
"message": "success",
"data": {
"id": "72b579f34fef4982b53c723170de60cb",
"name": "新建仪表板12",
"folder": false,
"initTime": 1593312632150,
"lastUpdateTime": 1593312632150,
"shared": false,
"pId": "898b2dcdc6e145d38958aa304d11c362",
"createBy": "b5f0c2ee-640f-4039-a4d4-918b55354898",
"hangout": "NORMAL",
"publicLink": {
"shared": false,
"uri": null,
"reportId": "72b579f34fef4982b53c723170de60cb",
"userId": null
},
"mountedDirIds": [],
"applyTime": 0
},
"errorCode": null,
"detailErrorMsg": null,
"errorMsg": null
}
2.2 删除仪表板
作用:通过调用该接口,用户可以删除已经创建好的仪表板
URL:/v5/api/platform/dashboard/report?info=xx
参数说明:
参数 | 说明 | 实例 |
---|---|---|
info | 需要删除的仪表板 | {"folder":是否是文件夹,"reportId":"模板id"} |
请求方式:GET
请求示例:localhost:37799/webroot/decision/v5/api/platform/dashboard/report?info={"folder":false,"reportId":"d5a78c3fc1f643059f02ff43fbdd44a9"}
成功返回数据:
{
data:true
}
失败返回数据:
{
errorCode:xxx 错误码
}
2.3 重命名仪表板
作用:通过调用该接口,用户可以修改已经创建好的仪表板的名称。
URL:/v5/api/platform/dashboard/rename?info=xx
请求方式:GET
参数说明:
参数 | 说明 | 实例 |
---|---|---|
info | 需要重命名的仪表板 | {"name":"模板名字","newName":"重命名的名字","reportId":"模板id"} |
请求示例:localhost:37799/webroot/decision/v5/api/platform/dashboard/rename?info= {"name":"新建仪表板","newName":"数据分析","reportId":"d5a78c3fc1f643059f02ff43fbdd44a9"}
成功返回数据:
{
data:true
}
失败返回数据:
{
errorCode:xxx 错误码
}
2.4 仪表板另存为
作用:使用该接口可以另存一个仪表板
URL:/v5/platform/dashboard/saveas
请求方式:POST
参数说明:
参数 | 说明 | 示例 |
---|---|---|
from | 需要另存的仪表板 | "from":[{"reportId":"3ef0fe316b604c75bc4ec0ab644ce0f9"}] |
to | 另存到的路径 | "to":{"name":"新建仪表板61","catalog":[]} |
返回成功数据示例:
code: "200"
data: {id: "d07aeebaa6244d7c984cac0cd1f7c32a", name: "新建仪表板61", folder: false, initTime: 1557801373662,…}
applyTime: 0
createBy: "b5f0c2ee-640f-4039-a4d4-918b55354898"
folder: false
hangout: "NORMAL"
id: "d07aeebaa6244d7c984cac0cd1f7c32a"
initTime: 1557801373662
lastUpdateTime: 1557801371510
mountedDirIds: []
name: "新建仪表板61"
pId: "b5f0c2ee-640f-4039-a4d4-918b55354898"
publicLink: {shared: false, uri: null, reportId: "d07aeebaa6244d7c984cac0cd1f7c32a", userId: null}
shared: false
detailErrorMsg: null
errorCode: null
errorMsg: null
message: "success"
success: true
注:返回的 data.id 是模板 id,根据模板 id 获取模板信息。
返回失败数据示例:(根据errorCode判断是否模板名是否重复)
code: "200",
message: "success",
data: [ ],
success: false,
errorCode: "61310032",
detailErrorMsg: null,
errorMsg: "ReportIndex{name='20190117111140448_10813', folder=false, initTime=1557802945315, lastUpdateTime
=155780
2.5 当前目录下仪表板及文件夹列表(JSON)
作用:我的(当前登录者)仪表板下对应目录的详细数据信息(包括文件夹和仪表板)
URL:/v5/api/platform/dashboard/list?dir=xxx
请求方式:GET
参数说明:
参数 | 说明 | 示例 |
---|---|---|
dir | 创建到的目录结构 | dir={"catalog":["新建文件夹"],"reportId":"7e6382e9fe5448b38bb0bc3f50913b5d"} 注:reportId 为目录 id ;如果是根目录,reportId 为 urserId |
注:因为 FineBI 中 URL 传递 JSON 对像,若有些服务器不支持 JSON 的 URL ,就需要把 dir 值先进行编码 encodeURIComponent() ,具体参考本文 4.1 节内容。
请求示例:localhost:37799/webroot/decision/v5/api/platform/dashboard/list?dir={"catalog":["新建文件夹"],"reportId":"7e6382e9fe5448b38bb0bc3f50913b5d"}
返回数据示例:
{
"code": "200",
"data": [
{
"applyTime": 0,
"createBy": "b5f0c2ee-640f-4039-a4d4-918b55354898",
"folder": false,
"hangout": "NORMAL",
"id": "0ba9d9496aee4bba95fcf60d78473115",
"initTime": 1539157863240,
"lastUpdateTime": 1539157863241,
"mountedDirIds": [],
"name": "新建仪表板12",
"pId": "d5a78c3fc1f643059f02ff43fbdd44a9",
"publicLink": {
"reportId": "0ba9d9496aee4bba95fcf60d78473115",
"shared": false,
"uri": null,
"userId": null
}
},
{
"applyTime": 0,
"createBy": "b5f0c2ee-640f-4039-a4d4-918b55354898",
"folder": false,
"hangout": "NORMAL",
"id": "7e6382e9fe5448b38bb0bc3f50913b5d",
"initTime": 1539157797060,
"lastUpdateTime": 1539157797061,
"mountedDirIds": [],
"name": "新建仪表板",
"pId": "d5a78c3fc1f643059f02ff43fbdd44a9",
"publicLink": {
"reportId": "7e6382e9fe5448b38bb0bc3f50913b5d",
"shared": false,
"uri": null,
"userId": null
}
}
],
"detailErrorMsg": null,
"errorCode": null,
"errorMsg": null,
"message": "success",
"success": true
}
2.6 获取一组仪表板的目录信息
作用:使用该接口可以获取模板相关信息。输入:模板 ID 和创建者 ID ;返回:模板信息
URL:/v5/api/platform/dashboard/reports/info?info=xxx
请求方式:GET
参数说明:
参数 | 说明 | 示例 |
---|---|---|
info | 需要查看的仪表板目录 | info={"index":[ { "id":"7e6382e9fe5448b38bb0bc3f50913b5d" }] } |
请求示例:localhost:37799/webroot/decision/v5/api/platform/dashboard/reports/info?info={"index":[ { "id":"7e6382e9fe5448b38bb0bc3f50913b5d" }] }
返回数据示例:
{
"code": "200",
"data": {
"index": [
{
"createBy": "1",
"folder": false,
"id": null,
"initTime": 1539157797060,
"lastUpdateTime": 1539157797061,
"name": "新建仪表板",
"pId": "d5a78c3fc1f643059f02ff43fbdd44a9"
}
]
},
"detailErrorMsg": null,
"errorCode": null,
"errorMsg": null,
"message": "success",
"success": true
}
2.7 仪表板管理节点所有仪表板信息
1)json 格式
角色:所有有模板管理节点权限的用户。
URL:/v5/api/dashboard/search?page=1&count=30
method:GET
返回数据示例:
{
"data": {
"reportIndexList": [{
"userInfo": {
"displayName": "3(3)",
"postNames": ["研发"],
"departmentNames": ["A"],
"customRoleNames": null,
"departmentPosts": [{
"jobTitle": "研发",
"departments": "A"
}]
},
"reportIndex": {
"name": "2312312",
"folder": false,
"initTime": 1537768891437,
"lastUpdateTime": 1538032909917,
"id": "5b5105c7f28547209cc50c5a23c3ebe6",
"pId": "8a1462058954493ead2c7cb8e63bc7ec",
"createBy": "80a56476-7ade-4b71-9c38-a365a9df591d",
"hangout": "NORMAL",
"publicLink": {
"shared": false,
"uri": null,
"reportId": "5b5105c7f28547209cc50c5a23c3ebe6",
"userId": null
},
"mountedDirIds": [],
"applyTime": 0
}
}, {
"userInfo": {
"displayName": "1(1)",
"postNames": null,
"departmentNames": null,
"customRoleNames": ["superusers"],
"departmentPosts": null
},
"reportIndex": {
"name": "新建仪表板1",
"folder": false,
"initTime": 1537768667041,
"lastUpdateTime": 1538032909810,
"id": "af0835a860c1460da5d78f5a871ccc05",
"pId": "53968b8b-14f4-4ec1-b9e0-347b1105af2d",
"createBy": "53968b8b-14f4-4ec1-b9e0-347b1105af2d",
"hangout": "NORMAL",
"publicLink": {
"shared": false,
"uri": null,
"reportId": "af0835a860c1460da5d78f5a871ccc05",
"userId": null
},
"mountedDirIds": [],
"applyTime": 0
}
}, {
"userInfo": {
"displayName": "1(1)",
"postNames": null,
"departmentNames": null,
"customRoleNames": ["superusers"],
"departmentPosts": null
},
"reportIndex": {
"name": "新建仪表板",
"folder": false,
"initTime": 1537768614423,
"lastUpdateTime": 1538032909774,
"id": "b63ae18862c0424d983865cbaa0dc7c4",
"pId": "53968b8b-14f4-4ec1-b9e0-347b1105af2d",
"createBy": "53968b8b-14f4-4ec1-b9e0-347b1105af2d",
"hangout": "NORMAL",
"publicLink": {
"shared": false,
"uri": null,
"reportId": "b63ae18862c0424d983865cbaa0dc7c4",
"userId": null
},
"mountedDirIds": [],
"applyTime": 0
}
}],
"applyingCount": 0,
"totalCount": 3
}
}
2)可视化界面
角色:所有有模板管理节点权限的用户。
URL:/dashboard/management
method:GET
2.8 获取当前用户的所有详细信息
作用:使用该接口可以获取当前用户的所有详细信息。目前包括departs、roles、users、reports。
URL:/v5/api/dashboard/user/info
请求方式:GET
返回数据示例:
{
"data": {
"userInfo": {
"displayName": "1(1)",
"postNames": null,
"departmentNames": null,
"customRoleNames": ["superusers"],
"departmentPosts": null
},
"dashboards": [{
"name": "新建仪表板",
"folder": false,
"initTime": 1537768614423,
"lastUpdateTime": 1538032909774,
"id": "b63ae18862c0424d983865cbaa0dc7c4",
"pId": "53968b8b-14f4-4ec1-b9e0-347b1105af2d",
"createBy": "53968b8b-14f4-4ec1-b9e0-347b1105af2d",
"hangout": "NORMAL",
"publicLink": {
"shared": false,
"uri": null,
"reportId": "b63ae18862c0424d983865cbaa0dc7c4",
"userId": null
},
"mountedDirIds": [],
"applyTime": 0
}, {
"name": "新建仪表板1",
"folder": false,
"initTime": 1537768667041,
"lastUpdateTime": 1538032909810,
"id": "af0835a860c1460da5d78f5a871ccc05",
"pId": "53968b8b-14f4-4ec1-b9e0-347b1105af2d",
"createBy": "53968b8b-14f4-4ec1-b9e0-347b1105af2d",
"hangout": "NORMAL",
"publicLink": {
"shared": false,
"uri": null,
"reportId": "af0835a860c1460da5d78f5a871ccc05",
"userId": null
},
"mountedDirIds": [],
"applyTime": 0
}]
},
}
2.9 取消分享
作用:通过调用该接口,用户可以将某个用户对的仪表板分享取消。
请求方式:GET
取消分享一个模板,一个用户:
URL:/v5/api/dashboard/share/user/rejection/result?entityId=a,b,c&userId=1,2,3
取消分享多个模板,多个用户:
接口为:/v5/api/dashboard/share/user/rejection/result?entityId=&userId=
2.10 分享给我的所有仪表板
作用:使用该接口可获取分享给我(当前登录用户)的所有模板信息
URL:/v5/api/dashboard/share
请求方式:GET
请求示例:localhost:37799/webroot/decision/v5/api/dashboard/share
返回数据示例:
{
"code": "200",
"data": [
{
"folder": true,
"createBy": "b5f0c2ee-640f-4039-a4d4-918b55354898",
"description": null,
"id": "e5bc1ae63f944050b43d031c21d01847",
"reportId": "e5bc1ae63f944050b43d031c21d01847",
"originType": "isShared",
"pId": "-2",
"text": "用指标解析银行数据"
}
],
"detailErrorMsg": null,
"errorCode": null,
"errorMsg": null,
"message": "success",
"success": true
}
3. 数据准备接口编辑
3.1 触发全局更新
作用:使用该接口触发全局更新,根据当前业务包的状态选择是全局更新/ Check 更新/配置更新。
URL:/v5/api/conf/update/generate
请求示例:localhost:37799/webroot/decision/v5/api/conf/update/generate
请求方式:GET
返回数据:
{
"success": true
}
3.2 触发单表/业务包更新
作用:根据业务包名对业务包中所有的表进行更新,或者根据表转义名进行单表更新。 无论是业务包还是单表的更新,都进行的是业务包表或单表的全量的更新。 在不加表的转义名时候,进行的就是对这个业务包的更新,加了之后,进行的是对这个表的更新。
注:必须传入参数“业务包ID”才可返回,需要填写业务包ID,获取业务包ID的方法见本文 4.1 节。
3.2.1 业务包更新
URL:/v5/api/conf/update/pack/table?info=xx
请求方式:GET
请求示例:localhost:37799/webroot/decision/v5/api/conf/update/pack/table?info={"packageName":"业务包"}
参数说明:
参数 | 版本 | 说明 | 示例 |
---|---|---|---|
info | 2020-01-15 及之前的版本 | 需要更新的业务包信息 | {"packageName":"业务包"} |
2020-08-04 版本 | |||
2020-09-02 版本 | {"packageId":"业务包ID"} |
返回数据(2020-01-15 及之前的版本):
{
"success": true
}
返回数据(2020-08-04 版本):
{
"msg":
Package absent or has no auth!
Update all too often!
Success
}
3.2.2 单表更新
URL:/v5/api/conf/update/pack/table?info=xx
请求方式:GET
请求示例:localhost:37799/webroot/decision/v5/api/conf/update/pack/table?info={"packageName":"业务包","tableName":"产品销售表"}
参数说明:
参数 | 版本 | 说明 | 示例 |
---|---|---|---|
info | 2020-01-15 及之前的版本 | 需要更新的表信息 | {"packageName":"业务包","tableName":"表转义名"} |
2020-08-04 版本 | {"packageName":"业务包","tableName":"转义名","fullLoad":"false"} | ||
2020-09-02 版本 | {"packageId":"业务包ID","tableName":"转义名","fullLoad":"false"} |
注:fullload 参数为 false 表示增量更新,true 为全量更新,不填改参数默认为 true 。
返回数据(2020-01-15 及之前的版本):
{
"success": true
}
返回数据(2020-08-04 版本):
{
"msg":
Package absent or has no auth!
Table is absent!
Table is updating or waiting!
Update all too often!
Success
}
3.3 查询更新情况接口
作用:可查询更新情况。
请求方式:GET
URL:/v5/api/conf/update/instance/任务实例id
注:该接口适用于 2020-11-03 及之后的 JAR;任务实例 id 示例:「b58924f1-5141-44a8-9122-fb635b4cd599」。
2020-11-03 及之后的JAR,下表所示的更新接口返回任务实例 id :
接口作用 | URL |
---|---|
触发单表/业务包更新接口 | v5/api/conf/update/pack/table?info=xx |
触发全局更新接口 | v5/api/conf/update/generate |
返回数据示例:
{
"planId": "3845d501-b96b-46c7-b8c5-1d133dade15f",
"taskName": "银行_机构维度表单表更新",
"startTime": 1602664101054,
"endTime": 1602664101867,
"state": 1, //更新状态,1为已结束,2为正在运行中
"triggerType": 1, //触发方式,1为手动,2为自动,3为内部
"resultType": 2, //运行结果,1为全部成功,2为部分成功
"roleName": "admin",
"baseTableExpect": 1,
"baseTableFinish": 1,
"analysisTableExpect": 1,
"analysisTableFinish": 0,
"relationExpect": 1,
"relationFinish": 0
}
3.4 获取所有业务包分组信息
作用:获取数据准备下所有业务包的分组
URL:/v5/api/conf/groups
请求方式:GET
请求示例:localhost:37799/webroot/decision/v5/api/conf/groups
返回数据示例:
{
"code": "200",
"data": [
{
"editable": true,
"id": "__no_group__",
"initTime": 1531100612398,
"myAnalysisTables": [],
"name": "__no_group__",
"packs": [
{
"createBy": "1",
"editable": true,
"id": "a5e4bcbd09fd4de497d91839a0da82d6",
"name": "业务包",
"tableCount": 2,
"timeStamp": 1536819164195,
"type": 2,
"usedSpace": 0.0
}
]
},
{
"editable": true,
"id": "de20c13fdcdd436987289588b232c38c",
"initTime": 1531138781428,
"myAnalysisTables": [],
"name": "功能数据",
"packs": [
{
"createBy": "1",
"editable": true,
"id": "18d26ef06d1f4e91adaa12c80feb2daa",
"name": "销售DEMO",
"tableCount": 9,
"timeStamp": 1531101074181,
"type": 2,
"usedSpace": 4.123135566711426
},
]
},
],
"detailErrorMsg": null,
"errorCode": null,
"errorMsg": null,
"message": "success",
"success": true
}
3.5 获取所有业务包信息
作用:集成时,不能一个个手动输入业务包名字或者表的名字来做相应的更新,需要有接口来获取到这些信息
URL:v5/api/conf/packs/{packageId}
请求方式:GET
请求示例:localhost:37799/webroot/decision/v5/api/conf/packs/{packageId}
返回数据示例:
{
"code": "200",
"data": {
"editable": true,
"errorTable": [],
"missTable": [],
"name": "销售DEMO",
"tables": [
{
"connectionName": "BI Demo",
"createBy": "1",
"editable": true,
"fields": [
{
"enable": true,
"engineType": "Direct",
"fieldGroupType": 0,
"id": "DEMO[5f]PRODUCT_[4ea7][54c1]ID",
"name": "产品ID",
"primaryKey": false,
"size": 32,
"transferName": "产品ID",
"type": 32,
"usable": true
},
{
"enable": true,
"engineType": "Direct",
"fieldGroupType": 0,
"id": "DEMO[5f]PRODUCT_[4ea7][54c1][540d][79f0]",
"name": "产品名称",
"primaryKey": false,
"size": 32,
"transferName": "产品名称",
"type": 16,
"usable": true
}
],
"initTime": 1539161534282,
"memorize": true,
"name": "DEMO_PRODUCT",
"operators": null,
"pack": "18d26ef06d1f4e91adaa12c80feb2daa",
"realTimeData": false,
"selected": 0,
"tableName": "DEMO_PRODUCT",
"transferName": "产品名称维度",
"type": 1,
"usedSpace": 0.0007028579711914062
},
]
},
"detailErrorMsg": null,
"errorCode": null,
"errorMsg": null,
"message": "success",
"success": true
}
4. 其他接口编辑
4.1 获取数据准备界面
作用:获取数据准备界面
URL:/v5/api/conf/page
请求方式:GET
请求示例:localhost:37799/webroot/decision/v5/api/conf/page
返回示例:
4.2 导出之前自定义
作用:从 BI 的组件导出或者全局导出导出excel时,在导出操作之前,加入一些自定义操作,可以用这个接口实现。比如导出的文件进行自定义加密;
接口:ExportHandleProvider
package com.finebi.stable.fun;
import com.fr.stable.fun.mark.Mutable;
import java.io.OutputStream;
/**
* Created by Hiram on 2018/11/14.
*/
public interface ExportHandleProvider extends Mutable {
String XML_TAG = "ExportHandleProvider";
int CURRENT_LEVEL = 1;
/**
*
* @param originalOutputStream 原始导出流
* @param type 导出类型
* @return 处理后的流
*/
OutputStream handleStream(OutputStream originalOutputStream, ExportType type);
}
示例源码:
下面的示例源码简单的统计一下导出文件的大小,输出在日志里面。写一个拦截处理的CountExportHandle,返回一个CountOutputStream,在write时计数,最后在close的时候输出大小。
CountExportHandle:
import com.finebi.stable.fun.ExportType;
import com.finebi.stable.fun.impl.AbstractExportHandleProvider;
import java.io.OutputStream;
public class CountExportHandle extends AbstractExportHandleProvider {
@Override
public OutputStream handleStream(OutputStream originalOutputStream, ExportType type) {
return new CountOutputStream(originalOutputStream);
}
}
CountOutputStream:
import com.fr.log.FineLoggerFactory;
import java.io.IOException;
import java.io.OutputStream;
public class CountOutputStream extends OutputStream {
private OutputStream out;
private int count;
public CountOutputStream(OutputStream out) {
this.out = out;
}
@Override
public void write(int b) throws IOException {
count++;
out.write(b);
}
@Override
public void write(byte[] b) throws IOException {
count += b.length;
out.write(b);
}
@Override
public void write(byte[] b, int off, int len) throws IOException {
count += len;
out.write(b, off, len);
}
@Override
public void flush() throws IOException {
out.flush();
}
@Override
public void close() throws IOException {
FineLoggerFactory.getLogger().info("===== export length: {} ======", count);
out.close();
}
}
注:该接口使用需要二次开发。
4.3 跨域登录BI
作用:使用该接口可以登录 BI 系统。
URL:/login/cross/domain?fine_username=name&fine_password=password&validity=-1&callback=myfunction
请求方式:GET
4.4 获取完整目录树
作用:获取平台主页目录面板
URL:/view/entry/tree
请求方式:GET
5. 页面集成接口编辑
很多用户为了统一门户,往往会把 FineBI 的后台管理页面集成到自己的系统中,本章提供 FineBI 支持的页面集成接口。
5.1 示例
以将数据决策系统的「模板管理页面」集成到用户系统为例。
以管理员身份进入数据决策系统,访问链接:http://localhost:37799/webroot/decision/dashboard/management ,如下图所示:
以管理员身份进入数据决策系统,其中每个接口调用方法为访问:http://ip:端口/工程名/decision/接口调用
支持单独页面集成的管理菜单范围如下表所示:
管理菜单 | 接口调用 | 备注 |
---|---|---|
仪表板列表界面 | /dashboard | - |
模板管理 | /dashboard/management | - |
目录管理 | /directory | - |
用户管理 | /user | - |
权限管理 | /privilege | - |
定时调度 | /timer | 无全局设置 注:5.1.5 版本,2020-09-02 及之后的 JAR 支持调用该接口 |
5.2 没有页面访问权限
问题描述:
用户以非管理员身份进入数据决策系统后,访问:http://IP:Port/webroot/decision/接口调用 ,出现如下报错:
解决方案:
需要获得该页面的权限,请参考 分级权限分配
6. 注意事项编辑
6.1 获取业务包ID
业务包名称和 ID 值保存在 FineDB 数据库的 fine_conf_entity 表中,字段ID及字段值介绍如下表所示:
ID | VALUE |
---|---|
DirectPackageConfStore.mapHolder.[packageId].name | 业务包名称(Unicode) |
DirectPackageConfStore.mapHolder.[packageId].packId | 业务包ID |
查看业务包 ID 步骤如下所示:
1)新增 FineDB 数据连接,具体可参考:FineDB 数据库简介 的 2.4 节内容。
2)新建服务器数据集,SQL语句为:SELECT *FROM fine_conf_entity where ID like 'DirectPackageConfStore.mapHolder%' and ID like '%name'
如下图所示:
3)预览新建的 SQL 数据集,可查看业务包 ID 。如下图所示:
6.2 服务器不支持 JSON 下的 URL
因为 FineBI 中 URL 传递 JSON 对像,若有些服务器不支持 JSON 的 URL ,就需要把 JSON 类型的 URL 参数值先进行编码encodeURIComponent()。
例如:
dir={"name":"新建仪表板12","catalog":[]} 需要改为:
encodeURIComponent(JSON.stringify({"name":"新建仪表板12","catalog":[]}))
编码显示为:
dir=%7B%22name%22%3A%22%E6%96%B0%E5%BB%BA%E4%BB%AA%E8%A1%A8%E6%9D%BF12%22%2C%22catalog%22%3A%5B%5D%7D
6.3 返回错误码
在进行系统集成时,如果后台有错误,会返回错误码(errorCode),具体异常码定义可以参考 系统错误码说明
6.4 拒绝了我们的连接请求
问题描述
FineBI 通过 iframe 页面嵌入到其他页面中报错:xxx拒绝了我们的连接请求,如下图所示:
解决方案
管理员进入平台,点击「管理系统>安全管理」,关闭点击挟持攻击防护按钮。如下图所示: