接管的方式
第三方系统接管 Smartbi 的功能,实现方式是相同的,都是由第三方系统开发相关 Java 类实现 Smartbi 指定的接口,然后在 Smartbi 中进行配置使用该 Java 类。Smartbi 会在相关的扩展点处调用第三方 Java 类,从而达到让第三方系统接管相关功能的目的。对于每一种功能接管,具体操作步骤如下。
- 参考“插件开发框架”,开发一个项目扩展包。
- 在扩展包项目中新建一个Java类 com.mycomp.MyXxxClass,并且实现接口 smartbi.xxx.IXxxInterface。
- 在 Smartbi 中进行配置,使用前一步开发的类 com.mycomp.MyXxxClass。
- 参考“扩展包部署”文档,部署该项目扩展包。
- 此后 Smartbi 会在相关的扩展点处调用 com.mycomp.MyXxxClass类,从而让第三方系统接管相关功能。
同步Smartbi资源树信息到第三方系统中
说明
如果在项目中使用第三方系统的权限验证,很可能也需要同步 Smartbi 资源树信息到第三方系统中以配合权限验证。
实现步骤
- 在扩展包中新建一个Java类 com.mycomp.mypackage.MyTreeSync,并且实现接口smartbi.catalogtree.ICatalogTreeListener。
- 编辑 Smartbi 服务器配置文件smartbi-config.xml,如下图红色框所示。在节点catalogtree下面增加子节点catalog-tree-listener,其属性为MyTreeSync类的全名com.mycomp.mypackage.MyTreeSync。
操作日志重定向
说明
如果在项目中要统一管理操作日志,有可能需要将 Smartbi 的操作日志按指定的形式输出到指定的地方。
实现步骤
- 在扩展包中新建一个Java类 com.mycomp.mypackage.MyOpLog,并且实现接口 smartbi.repository.IOperationLogReceiver。
- 编辑Smartbi服务器配置文件smartbi-config.xml,如下图红色框所示。在节点smartbi下面增加子节点operationlog,接着在节点operationlog下增加子节点preserver-class,其属性值为 MyOpLog 类的全名 com.mycomp.mypackage.MyOpLog。
使用第三方系统用户管理替换Smartbi用户管理
第三方系统的用户管理能够包含 Smartbi 用户管理中的所有语义(用户组、角色、用户及其相应关系等),并且资源权限也希望由第三方系统统一管理,则可以屏蔽 Smartbi 的用户管理模块而使用第三方系统的用户管理作为统一用户管理平台。具体实现请参考:使用第三方系统用户管理替换Smartbi用户管理。
使用第三方系统的用户验证
实际项目中往往存在多个系统需要统一登录认证,客户要求将某个系统作为统一登录认证平台,其余系统访问此系统来进行登录认证。这种情况下,不需要再使用 Smartbi 产品的用户管理模块来管理组和用户,但还需要保留通过角色来设置操作权限。Smartbi 用户管理模块为了应对这种需求,提供了一个可以根据需要扩充的用户验证方式,让项目能根据实际情况开发不同的需求。具体实现请参考:使用第三方系统的用户验证。
使用第三方系统的资源权限验证
实际项目中往往存在多个系统需要统一权限认证,客户要求将某个系统作为统一认证平台, Smartbi 为了应对这种需求,提供了一个可以根据需要扩充的资源权限验证方式,让项目能根据实际情况开发不同的需求。具体实现请参考:使用第三方系统的资源权限验证。
使用第三方系统的操作权限验证
说明
不使用 Smartbi 系统自身的操作权限验证逻辑,而是由第三方系统进行操作权限验证,给 Smartbi 返回一个用户能否访问指定操作的状态指示。
实现步骤
1. 在扩展包中新建一个Java类 com.mycomp.usermanager.TestFunctionAuth,并且实现接口 smartbi.usermanager.IFunctionAuth。
package com.mycomp.usermanager; public class TestFunctionAuth implements IFunctionAuth { private static TestFunctionAuth auth = new TestFunctionAuth(); public static TestFunctionAuth getInstance() { return auth; } private TestFunctionAuth() { // TestFunctionAuth } public boolean isFuncTypeAccessible(String userId, String functionCode) { // 在这里实现用户操作权限判断的逻辑,返回状态 true|false 指明用户能否访问指定操作 return true; } }
2. 修改扩展包文件 applicationContext.xml 增加如下内容。
<bean id="usermanager" class="smartbi.usermanager.UserManagerModule" factory-method="getInstance"> <property name="functionAuth" ref="TestFunctionAuth"/> </bean> <bean id="TestFunctionAuth" class="com.mycomp.usermanager.TestFunctionAuth" factory-method="getInstance"></bean>