页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

Smartbi 与第三方系统相互集成过程中,通常需要由第三方系统接管某些 Smartbi 的功能,比如用户的登录验证需要由第三方统一认证平台完成、需要将 Smartbi 的资源同步到第三方系统、由第三方系统进行资源权限以及操作权限的验证等。上述需求,将通过如下方法实现。

  1. 接管的方式

第三方系统接管

1.说明

       Smartbi 与第三方系统相互集成过程中,通常需要由第三方系统接管某些 Smartbi 的功能,比如用户的登录验证需要由第三方统一认证平台完成、需要将 Smartbi 的资源同步到第三方系统、由第三方系统进行资源权限以及操作权限的验证等。

面板
borderColor#BBBBBB
bgColor#F0F0F0
borderWidth1
borderStylesolid

目录

2.接管的方式

       第三方系统接管 Smartbi 的功能,实现方式是相同的,都是由第三方系统开发相关 Java 类实现 Smartbi 指定的接口,然后在 Smartbi 中进行配置使用该 Java 类。Smartbi 会在相关的扩展点处调用第三方 Java 类,从而达到让第三方系统接管相关功能的目的。对于每一种功能接管,具体操作步骤如下。

参考“

       1、参考“插件开发框架”,开发一个项目扩展包。

在扩展包项目中新建一个Java类

       2、在扩展包项目中新建一个Java类 com.mycomp.MyXxxClass,并且实现接口 smartbi.xxx.IXxxInterface。

       3、在 Smartbi 中进行配置,使用前一步开发的类 com.mycomp.MyXxxClass。

参考“

       4、参考“扩展包部署”文档,部署该项目扩展包。

此后

       5、此后 Smartbi 会在相关的扩展点处调用 com.mycomp.MyXxxClass类,从而让第三方系统接管相关功能。

  • 同步Smartbi资源树信息到第三方系统中

  • 说明

    如果在项目中使用第三方系统的权限验证,很可能也需要同步 Smartbi 资源树信息到第三方系统中以配合权限验证,即每当Smartbi中的资源树发生变化就通知第三方系统及时更新。

    Image Removed

    实现步骤

    1、在扩展包中新建一个Java类com.func.takeover.catalogtree.TreeSyncDemo,并且实现接口smartbi.catalogtree.ICatalogTreeListener。

    2、配置新建的Java类,方式有如下两种:

    (1)在扩展包中新建Module类,具体请参考wiki文档:自定义Module 或者参考下面的示例扩展包。在Module类的active方法中使用该段代码((CatalogTreeModule)catalogTreeModule).addCatalogTreeListener(new TreeSyncDemo());配置。

    Image Removed

    (2)编辑 Smartbi 服务器配置文件smartbi-config.xml,如下图红色框所示。在已有节点catalogtree下面新增子节点catalog-tree-listener,其属性为TreeSyncDemo类的全名com.func.takeover.catalogtree.TreeSyncDemo。

    Image Removed

    3、gif演示示例的源码请参考:资源树同步.rar

    1. 操作日志重定向

    说明

    如果在项目中要统一管理操作日志,有可能需要将 Smartbi 的操作日志按指定的形式输出到指定的地方。

    Image Removed

    实现步骤

    1、在扩展包中新建一个Java类com.log.takeover.log.LogSyncDemo,并且实现接口 smartbi.repository.IOperationLogReceiver。

    2、编辑Smartbi服务器配置文件smartbi-config.xml,如下图红色框所示。在已有节点smartbi下面新增子节点operationlog,接着在节点operationlog下新增子节点preserver-class,其属性值为 LogSyncDemo 类的全名 com.log.takeover.log.LogSyncDemo。

    Image Removed

    3、gif演示示例的源码请参考:操作日志重定向.rar

     

    1. 使用第三方系统用户管理

    第三方系统的用户管理能够包含 Smartbi 用户管理中的所有语义(用户组、角色、用户及其相应关系等),并且资源权限也希望由第三方系统统一管理,则可以屏蔽 Smartbi 的用户管理模块而使用第三方系统的用户管理作为统一用户管理平台。以下将介绍如何在外部系统中调用 Smartbi 用户管理模块。

    1. 用户管理模块功能概述

    详情请参考wiki:用户管理 目录下的用户管理章节和权限管理章节。

    1. 在第三方系统集成Smartbi用户管理模块

    2. Smartbi 用户管理模块集成在Smartbi中,客户端通过IE访问,对用户、角色等进行管理。部署并启动Smartbi后,在第三方系统中通过本章后面的方法即可对用户管理模块进行访问。
    3. 在第三方系统程序中通过IFrame访问 http://server:port/smartbi/vision/index.jsp 页面,并传递用户名、密码等参数过去,即可实现将用户管理模块嵌入到第三方系统中。
    4. 环境要求:
      1. 软件要求:JDK 1.6 或以上,IE11;
      2. 支持的服务器类型有:Tomcat 5.5、Weblogic 9.*、WebSphere 6、Jboss 4.13 等。
      3. 支持的数据库类型有:MySQL、SQL Server、Oracle、DB2、HSQL 等。

    Image Removed

    1. 用户属性集成

    用户属性继承有三种方式,第一种是在使用iframe集成Smartbi的用户管理模块,直接在iframe中管理用户属性,第二种是直接操作用户属性对应的数据库表,第三种是通过服务器端SDK API管理用户属性。

    1、在集成的用户管理模块中增加用户扩展属性

    根据以上步骤使用iframe在第三方系统中集成了用户管理模块后,可以在第三方系统中增加用户扩展属性,具体步骤如下:

    (1)在系统运维 > 系统选项 > 用户管理设置 > 用户扩展属性 > 设置中

    Image Removed

    (2)添加用户扩展属性

    Image Removed

    (3)清空缓存,重新进入用户管理,对任意一个用户进行设置,就可以看到刚刚添加的用户扩展属性

    Image Removed

    2、直接通过知识库以对用户扩展属性进行修改

    用户扩展属性,定义在知识库的 t_systemconfig 表中,在其中 c_key 为 USER_EXTEND_SETTING 的行中,通过 c_long 列,以JSON形式定义。

    可通过下面的语句查询到该行数据:

    代码块
    SELECT * FROM t_systemconfig where c_key = "USER_EXTEND_SETTING";

    如配置了前面的用户扩展属性后,查询结果可能为:

    Image Removed

    修改 c_long 下的JSON即可对用户扩展属性进行修改。

    3、通过服务器端SDK API对用户扩展属性进行读取

    1)读取用户扩展属性结构

    通过 smartbi.sdk.service.systemconfig.SystemConfigService 可以对用户扩展属性的结构进行读取:

    代码块
    languagejava
    firstline1
    linenumberstrue
    ClientConnector conn = new ClientConnector("http://localhost:18080/smartbi");
    conn.open("admin", "manager");
    SystemConfigService service = new SystemConfigService(conn);
    SystemConfig config = service.getSystemConfig("USER_EXTEND_SETTING");
    System.out.println(config);
    conn.close();

    结果形如:

    代码块
    key=USER_EXTEND_SETTING;value=;longValue=[{"name":"用户扩展属性1","alias":"","typeS":"文本框","valueLength":"100"}]

    (2)修改、读取用户属性值

    通过 smartbi.sdk.service.user.UserManagerService 可以对用户属性值进行读取、修改:

    代码块
    languagejava
    firstline1
    linenumberstrue
    ClientConnector conn = new ClientConnector("http://localhost:18080/smartbi");
    conn.open("admin", "admin");
    UserManagerService service = new UserManagerService(conn);
    service.updateUserAttribute("ADMIN", "用户扩展属性1", "ExampleValue", "");        // 修改用户属性
    IExtensionAttribute attr = service.getUserAttribute("ADMIN", "用户扩展属性1");    // 读取用户属性
    System.out.println(attr.getValue());
    conn.close();
    1. 同步Smartbi用户到第三方系统

    实现步骤

  • 用户同步:通过额外的系统实现用户信息定时同步,有两种方式:
    1. 方式一:使用存储过程或 ETL 定时将 Smartbi 中的用户等信息同步到外部系统中,Smartbi 的用户相关的表结构可参考 同步数据库相关用户表 。
    2. 方式二:Smartbi用户管理模块提供事件通知机制,当新增或修改用户等信息时,可通知第三方系统同时更新信息。这个要求第三方系统提供有二次开发接口,实现步骤如下:
      1. 编写通知类***UserManagerNotifier.java,如ThirdPartUserManagerNotifier.java,实现 IUserManagerNotifier 接口,在该类中调用第三方系统的用户管理 API 方法,实现用户操作的同步。IUserManagerNotifier 的作用是当 Smartbi 的用户、组、角色变化时通知继承该接口的类进行相关操作。具体接口方法请参考用户管理变更通知类 API 文档。
      2. 重新启动服务器,即可生效。
  • 用户验证:根据第三方系统的自身特征而定,可以使用其自身的用户验证,也可以通过Smartbi提供的二次开发接口使用 Smartbi 用户验证,可参考 使用第三方系统的用户验证
  • 使用第三方系统的用户验证

  • 说明:

    实际项目中往往存在多个系统需要统一登录认证,客户要求将某个系统作为统一登录认证平台,其余系统访问此系统来进行登录认证。这种情况下,不需要再使用 Smartbi 产品的用户管理模块来管理组和用户,但还需要保留通过角色来设置操作权限。Smartbi 用户管理模块为了应对这种需求,提供了一个可以根据需要扩充的用户验证方式,让项目能根据实际情况开发不同的需求。如下图所示,根据实际情况扩展开发实现接口类,即可使用其他系统用户验证平台。在 Smartbi 用户管理模块中添加自定义的身份验证类,并将第三方系统用户验证平台上的用户、组、角色等信息同步到 Smartbi 用户管理模块中,并实现登录。

    Image Removed

    实现步骤:

    1.参考“插件开发框架”,开发一个项目扩展包;(也可以直接创建一个java项目)

    2.在扩展包项目中新建一个Java类 com.mycomp.mypackage.MyAuth,并且实现接口 IAuthentication;可参考自定义登录验证扩展包: MyAuth.rar

    Image Removed

    3.参考“扩展包部署”文档,部署该项目扩展包;(如果步骤1中未使用扩展包方式,此时需要把实现的java类打成jar包,放在smartbi的war包lib目录下)

     4.打开smartbi的配置界面(http://localhost:38080/smartbi/vision/config),如下图红色框所示。修改加密类型为"CLASS";修改登录验证类为MyAuth类的全名com.mycomp.mypackage.MyAuth

    面板
    borderColor#BBBBBB
    bgColor#F0F0F0
    borderWidth1
    borderStylesolid
    toc

    3.第三方系统可接管的几种Smartbi功能

    功能接管方式方案简述
    同步资源树信息到第三方系统中实现Smartbi 资源树信息监听类,将Smartbi资源树信息实时同步到第三方系统
    同步操作日志信息到第三方系统中实现Smartbi操作日志通知类,当Smartbi有新的操作时,获取操作日志并输出到指定位置
    使用第三方系统的用户管理屏蔽 Smartbi 的用户管理模块而使用第三方系统的用户管理作为统一用户管理平台
    使用第三方系统的资源权限验证屏蔽 Smartbi 的资源权限验证逻辑而使用自定义的资源权限验证逻辑
    使用第三方系统的操作权限验证屏蔽 Smartbi 的操作权限验证逻辑而使用自定义的操作权限验证逻辑