Web页面嵌入式集成

编辑
  • 文档创建者:doreen0813
  • 浏览次数:9907次
  • 编辑次数:39次
  • 最近更新:杨子静 于 2019-10-15
  •  1、描述

    FineBI是基于B/S架构的浏览器/服务器模式,现在用户开发的系统基本上趋向于B/S架构的浏览器/服务器模式,因此有些页面完全可以直接采用web页面嵌入式集成的简易方式完成集成。通过集成,用户从自己的系统通过链接使用浏览器访问FineBI的服务器,从而在自己系统内调用BI的web页面,来实际嵌入式集成。这种集成通常会有两种方式:一种是直接使用URL链接,另一种方式是通过js的调用json来获得分析模板。下面先提供各部分的URL链接接口、json格式的API。

    因为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

    注:1. 由于平台安全限制,FineBI在集成时需要将管理系统>安全管理>安全防护中的Security Headers关闭才可跨域。 

    2. 在进行系统集成时,如果后台有错误,会返回错误码(errorCode),具体异常码定义可以参考系统错误码说明

    3. FineBI在嵌入式集成时一般分为两步:获取token和调用其他相关API,具体可参考Web页面简单集成例子

    4. 以下接口均支持跨域,且跨域与不跨域的返回值均一致。

    2、登录API

    作用:使用该接口可以登录BI系统

    URL:/login/cross/domain?fine_username=name&fine_password=password&validity=-1&callback=myfunction

    参数说明:

      参数说明   示例 
      fine_username  登录用户名  fine_username=admin
      fine_password  登录密码  fine_password=123456

    请求方式:GET

    请求示例:localhost:37799/webroot/decision/login/cross/domain?fine_username=admin&fine_password=123456&validity=-1&callback=myfunction


    3、模板管理节点API(JSON)

    作用:使用该接口可以获取模板管理节点下所有模板相关信息

    URL:/v5/api/dashboard/search?page=1&count=30

    请求方式:GET

    请求示例:localhost:37799/webroot/decision/v5/api/dashboard/search?page=1&count=30

    返回示例:

    {
        "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
        }
    }

    4、模板管理节点API(界面)

    作用:使用该接口可以获取模板管理节点下所有模板相关信息的可视化界面

    URL:/dashboard/management

    请求方式:GET

    请求示例:localhost:37799/webroot/decision/dashboard/management

    返回示例:


    5、创建仪表板API

    作用:使用该接口可以新建一个仪表板

    URL:/v5/api/platform/dashboard/reports?dir=xxx

    参数说明:

      参数说明    示例
      dir  创建到的目录结构  dir={"name":"新建仪表板12","catalog":["新建文件夹"]}

    请求示例:localhost:37799/webroot/decision/v5/api/platform/dashboard/reports?dir={"name":"新建仪表板12","catalog":["新建文件夹"]}

    返回数据示例:

    {
        "code": "200",
        "data": {
            "applyTime": 0,
            "createBy": "b5f0c2ee-640f-4039-a4d4-918b55354898",
            "folder": false,
            "hangout": "NORMAL",
            "id": "0ba9d9496aee4bba95fcf60d78473115",
            "initTime": 1539157863240,
            "lastUpdateTime": 1539157863241,
            "mountedDirIds": null,
            "name": "新建仪表板12",
            "pId": "d5a78c3fc1f643059f02ff43fbdd44a9",
            "publicLink": {
                "reportId": "0ba9d9496aee4bba95fcf60d78473115",
                "shared": false,
                "uri": null,
                "userId": null
            }
        },
        "detailErrorMsg": null,
        "errorCode": null,
        "errorMsg": null,
        "message": "success",
        "success": true
    }

    6、分享仪表板API

    作用:使用该接口可以分享模板给其他用户

    URL:/v5/api/dashboard/share/user/result?entityId=xxx&userId=xxx

    参数说明:

    参数  说明   示例
      entityId  xx模板对应的reportId,传多个的话,用逗号分隔 entityId=14523
      userId  想要分享给其他用户的用户ID,传多个的话,用逗号分隔 userId=b5f0c2ee

    请求方式:GET

    请求示例:localhost:37799/webroot/decision/v5/api/dashboard/share/user/result?entityId=14523&userId=b5f0c2ee

    注意:只能分享给某个用户,不能分享给部门或者角色。

    其中entityId可以通过模板编辑页面获取,如下图:


    userId可以通过查看分享页面用户的源码获取,如下图:



    7、当前目录下模板及文件夹列表(Json)

    作用:我的(当前登录者)仪表板下对应目录的详细数据信息(包括文件夹和模板)

    URL:/v5/api/platform/dashboard/list?dir=xxx

    参数说明:

      参数说明  示例  
      dir创建到的目录结构   dir={"catalog":["新建文件夹"],"reportId":"7e6382e9fe5448b38bb0bc3f50913b5d"}

    请求示例: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
    }

    8、当前目录下模板及文件夹列表(界面)

    作用:我的(当前登录者)仪表板下对应目录的详细数据信息(包括文件夹和模板)

    URL:/dashboard

    请求方式:GET

    请求示例:localhost:37799/webroot/decision/dashboard

    返回示例:


    9、当前用户信息API

    作用:使用该接口可以获取当前用户的所有详细信息。目前包括departs、roles、users、reports

    角色:所有用户均可以使用

    URL:/v5/api/dashboard/user/info

    请求方式:GET

    请求示例:localhost:37799/webroot/decision/v5/api/dashboard/user/info

    返回数据示例:

    {
        "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
            }]
        },
    }

    10、获取模板相关信息API

    作用:使用该接口可以获取模板相关信息。输入:模板ID和创建者ID;返回:模板信息

    URL:/v5/api/platform/dashboard/reports/info?info=xxx

    参数说明:

      参数  说明  示例
      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
    }

    11、分享给我的模板信息API

    作用:使用该接口可获取分享给我(当前登录用户)的所有模板信息

    URL:/v5/api/dashboard/share

    请求示例:localhost:37799/webroot/decision/v5/api/dashboard/share

    返回数据示例:

    {
        "code": "200",
        "data": [
            {
                "buildUrl": true,
                "createBy": "b5f0c2ee-640f-4039-a4d4-918b55354898",
                "description": null,
                "id": "e5bc1ae63f944050b43d031c21d01847",
                "originType": "isShared",
                "pId": "-2",
                "text": "用指标解析银行数据"
            }
        ],
        "detailErrorMsg": null,
        "errorCode": null,
        "errorMsg": null,
        "message": "success",
        "success": true
    }

    12、模板分享到的用户API

    作用:使用该接口可以获取xx模板分享给了哪些用户

    URL:/v5/api/dashboard/share/user?entityId=xxx

    参数说明:

      参数  说明 示例 
      entityIdxx模板对应的reportId    entityId=14523

    请求示例:localhost:37799/webroot/decision/v5/api/dashboard/share/user?entityId=14523

    13、触发全局更新API

    作用:使用该接口触发全局更新,根据当前业务包的状态选择是全局更新/Check更新/配置更新

    URL:/v5/api/conf/update/generate

    请求示例:localhost:37799/webroot/decision/v5/api/conf/update/generate

    返回数据:

    {
        "success": true
    }

    14、触发单表更新API

    作用:根据业务包名对业务包中所有的表进行更新,或者根据表转义名进行单表更新。 无论是业务包还是单表的更新,都进行的是业务包表或单表的全量的更新。 在不加表的转义名时候,进行的就是对这个业务包的更新,加了之后,进行的是对这个表的更新

    URL:/v5/api/conf/update/pack/table?info=xx

    参数说明:

      参数说明    示例
      info  需要更新的表信息  info={"packageName":"业务包","tableName":"表转义名"}

    请求示例:localhost:37799/webroot/decision/v5/api/conf/update/pack/table?info={"packageName":"业务包","tableName":"产品销售表"}

    返回数据:

    {
        "success": true
    }

    15、获取所有业务包分组信息

    作用:获取数据准备下所有业务包的分组

    URL:/v5/api/conf/groups

    请求示例: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
    }

    16、获取单个业务包信息API

    作用:在做集成的时候,不能自己一个个手动输入业务包名字或者表的名字来做相应的单更新,就需要有个接口来获取到这些信息

    URL:/v5/api/conf/packs/{packageId}

    请求示例: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
    }

    返回的数据包括:

    获取单个业务包之下所有表的名字(转义之后的名字)以及表id

         a. 输入参数:业务包ID;

         b. 返回这个业务包之下所有表的名字(转义之后的名字)以及表id;

    17、数据准备界面API

    作用:获取数据准备界面

    URL:/v5/api/conf/page

    请求示例:localhost:37799/webroot/decision/v5/api/conf/page

    返回示例:


    18、删除仪表板

    作用:通过调用该接口,用户可以删除已经创建好的仪表板;

    URL:/v5/api/platform/dashboard/report?info=xx

    参数说明:

      参数              说明                               实例  
      info    需要删除的仪表板      {"folder":是否是文件夹,"reportId":"模板id"}    

    其中,是否是文件夹写为true或者false;

    请求示例:localhost:37799/webroot/decision/v5/api/platform/dashboard/report?info={"folder":false,"reportId":"d5a78c3fc1f643059f02ff43fbdd44a9"}

    返回数据:

                   成功返回参数:

                       {

                          data:true

                       }

                   错误返回参数:

                       {
                          errorCode:xxx 错误码
                       }

    19、修改仪表板名称

    作用:通过调用该接口,用户可以修改已经创建好的仪表板的名称;

    URL:/v5/api/platform/dashboard/rename?info=xx

    参数说明:

      参数              说明                               实例  
      info    需要重命名的仪表板      {"name":"模板名字","newName":"重命名的名字","reportId":"模板id"}    

    请求示例:localhost:37799/webroot/decision/v5/api/platform/dashboard/rename?info= {"name":"新建仪表板","newName":"数据分析","reportId":"d5a78c3fc1f643059f02ff43fbdd44a9"}

    返回数据:

                   成功返回参数:

                       {
                          data:true
                       }

                   错误返回参数:

                       {
                          errorCode:xxx 错误码
                       }

    20、取消分享仪表板

    作用:通过调用该接口,用户可以将某个用户对的仪表板分享取消;

    URL:/v5/api/dashboard/share/user/rejection/result?entityId=a,b,c&userId=1,2,3

    参数说明:

    参数  说明   示例
      entityId  xx模板对应的reportId,传多个的话,用逗号分隔 entityId=14523
      userId  已经分享给其他用户的用户ID,传多个的话,用逗号分隔 userId=b5f0c2ee

    其中entityId和userId可以参考第六节分享仪表板API获取。

    请求示例:localhost:37799/webroot/decision/v5/api/dashboard/share/user/rejection/result?entityId=14523&userId=b5f0c2ee

    21、导出之前自定义加工

    作用:从BI的组件导出或者全局导出导出excel时,在导出操作之前,加入一些自定义操作,可以用这个接口实现。比如导出的文件进行自定义加密;

    接口:ExportHandleProvider

    package com.finebi.stable.fun;
    import com.fr.stable.fun.mark.Mutable;
    import java.io.OutputStream;
    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();
    }
    }

    注:该接口使用需要二次开发。

    22、另存仪表板

    作用:使用该接口可以另存一个仪表板;

    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,根据返回数据中的errorCode可判断错误原因,其中61310032表示另存的仪表板名重复。


    附件列表


    主题: 部署集成
    标签: 暂无标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]