又称扩展包,是用于扩充或改造smartbi产品功能的插件,虽然也可以是个文件夹(见扩展包部署中的说明 ),但一般建议打包成*.ext,他实际和java web项目类似(war包),里面可以有图片、js、html、css、java、servlet、filter,只是结构会遵循smartbi的规范,多了一些配置文件(见扩展插件开发基础(内含目录及配置文件介绍),其中有个不同就是java web项目WEB-INF目录下的内容对应扩展包的META-INF目录,web.xml对应extension.xml,所以在扩展包中,servlet和filter是需要配置在extension.xml中(配置结构不变)。
文档目录: |
通常会用扩展包实现客户现场要求的特定需求,譬如:
1,新增独立的功能,譬如新增个jsp、servlet之类,除了可能调用smartbi接口外,其他都独立存在的功能,这类一般不受smartbi影响,只要按开发java web项目思路开发即可;
2,在产品内置功能模块界面增加、删除或修改某个功能点,譬如在灵活分析上增加导出到ftp功能之类,这类会依据smartbi有没有提供修改入口,具体问题具体分析,请见扩展包原理;
3,用户单点登陆(譬如客户现场已经有统一登陆平台,这时候就需要这个功能)之类产品提供了服务端扩展点功能;
具体示例请见插件开发示例库。
理解扩展包为什么能做那些之前,建议先快速看下扩展包的目录结构。
如果能想象扩展包是一个类war包的东西,只是smartbi通过插件机制将其作为smartbi.war包的补充, 插件补充方式是:
1,可以覆盖产品同名文件,达到改造产品功能目的:如图片、js、html、css、jsp等,扩展包中的文件会覆盖与smartbi.war中同路径下的同名文件,譬如扩展包名.ext\vision\a.js是会替换smartbi.war\vision\a.js文件的,具体示例请见替换Smartbi文件,至于多个扩展包之间加载顺序请见如何设置扩展包加载优先级;
2,新增jsp、servlet、filter等实现个性需求;
3,利用同一个js文件中多个相同的同名方法,最后一个会生效的原理,smartbi提供了使用同名.js.patch方式修改产品内置同名js脚本功能;
在加载js脚本时,会遍历所有扩展包,然后将扩展包中同路径及同名的.js.patch文件内容附加到产品内置js的后面,最后返回的是合并后的js,具体请见如何修改Smartbi JS文件,这是最常用的扩展方式,通常如果需要服务端实现部分逻辑的话,就要结合自定义module实现特定功能。
4,使用系统提供的各种前端插入点修改产品特定功能点,也就是在扩展包中的ConfigurationPatch.js文件中配置插入点,达到修改功能的目的,ConfigurationPatch.js加载原理是:
1)客户端请求smartbi;
2)系统初始化时会加载Configuration.js配置;
3)加载Configuration.js时,系统会遍历所有扩展包中的ConfigurationPatch.js,将其合并到Configuration.js返回到前端,这里的合并是按json合并方式合并,也就是两个文件中的json对象按smartbi指定的合并规则,最后合并为一个json对象 返回,前端在对应的插入点会读取这些配置实现相应的功能。
5,自定义验证类等服务端扩展点,这都是接口性质。
请见插件开发快速入门,具体涉及项目需求如何调试建议一定看下Smartbi前端框架介绍及调试定位入门。插件开发教程以各个可能碰到的知识点去组织,日常工作中可能遇到的,看了一遍也加深对扩展包的理解。
术语 | 定义 |
---|---|
扩展点 | 为了能够在不改动Smartbi代码的情况下,让新开发的插件无缝集成到系统中,Smartbi系统框架提供了大量的功能插入接口,这些接口即称之为"扩展点"。 |
一级模块 | "审核"、"浏览"、"定制"、"管理"、"仪表盘"、"个人设置"、"帮助"等功能模块入口。 |
二级模块 | 一级模块的子模块入口。 |
任务面板 | Smartbi模块主界面中大图标展现的快捷功能操作入口区。 |
资源树 | 以树的方式展现Smartbi资源。 |
知识库 | 用于存储Smartbi系统资源信息的数据库我们称之为知识库。 |
知识库对象 | 使用Hibernate运行机制,知识库表映射到一个POJO实体类,该实体类指知识库对象。 |
知识库升级 | Smartbi使用升级类代码对知识库版本进行维护,当扩展插件中需要修改知识库对象时就必须添加相应的升级类进行知识库版本的维护。 |
Java查询 | 指基于Java数据源中Java查询对象作为查询源的一种业务查询。 |
Smartbi 里面允许同时加载多个扩展插件。把多个插件放到同一个目录中,然后通过config配置界面把扩展插件路径指向该目录,或者在extensions.list文件中添加多个扩展插件路径。
Smartbi 服务器启动时,会自动加载所有扩展插件,并调用相关的激活方法。若扩展插件中存在与smartbi.war中同名的文件时,会优先读取扩展插件中的文件,当多个扩展插件中存在同名文件时会以第一个扩展插件优先,但ConfigurationPatch.js会自动合并,不存在覆盖问题。
产品允许采用两种方式来设置扩展包的加载路径。
当使用 WebSphere 作为服务器时,可能会出现无法加载扩展插件内的图片、Servlet的情况,在出现此情况下,请按以下步骤进行修改: