简介
提到报表引擎大家可能都会说帆软。目前商用的比较突出的两个报表引擎:分别是帆软FineReport、RDP报表引擎,其中帆软功能突出且非常完整但是价格较高,RDP功能相对完整但是不够强大貌似还有些BUG,不过价格很低。就目前的情况来看我们还是首选帆软,无论功能范围还是技术支持都非常不错。下载使用什么就不说了,官方文档介绍的及其详细。上下面简单介绍一下如何去独立部署以及简单的使用。
安装报表设计器
这个没什么说的,直接官网下载安装即可
数据决策系统服务部署
直接部署(linux版)
文档:Linux下Tomcat服务器部署包- FineReport帮助文档 - 全面的报表使用教程和学习资料
安装包下载:免费下载FineReport - FineReport报表官网
按照官网要求下载后cd到bin目录运行 ./startup.sh启动即可。
如果报错:fontconfig找不到,直接yum安装就行了 yum install -y fontconfig。其它错误请直接按照官方文档来:服务器部署异常向导
启动好后访问:http://ip:端口/webroot/decision
docker部署方案
选择性删除原有的模板
- 删除 tomcat-linux/webroot/webapps/WEB-INF/reportlets/doc
- 删除 tomcat-linux/webroot/webapps/WEB-INF/reportlets/demo下除homepage的其他目录
选择Postgresql驱动,注意版本
wget https://jdbc.postgresql.org/download/postgresql-42.2.6.jar
plugins
之前安装的插件也可以拷贝过去
Dokerfile文件
# 使用tomcat+jdk镜像
FROM tomcat:8.5.59-jdk8-adoptopenjdk-hotspot
# 创建者信息
MAINTAINER xxxxx# 拷贝fine的tools.jar,否则会有问题
COPY ./tomcat-linux/lib/tools.jar /usr/local/tomcat/lib/# 拷贝webroot
COPY ./tomcat-linux/webapps/webroot /usr/local/tomcat/webapps/webroot# 支持postgres
#COPY ./postgresql-42.2.6.jar /usr/local/tomcat/webapps/webroot/WEB-INF/lib/
# 插件
#COPY ./plugins /usr/local/tomcat/webapps/webroot/WEB-INF/plugins
# 利息插件报错
#COPY ./upm /usr/local/tomcat/webapps/webroot/udm
build命令:
docker build -t="fine-report:v11.0" -f Dockerfile .
docker run:
# docker run 映射模板目录和数据库目录
docker run -d --name fine-report11.0 -p 8055:8080 \
-v 本机帆软数据目录/reportlets:/usr/local/tomcat/webapps/webroot/WEB-INF/reportlets/ \
-v 本机帆软数据目录/finedb:/usr/local/tomcat/webapps/webroot/WEB-INF/embed \
fine-report:v11.0
# 访问
xxx.xxx.xxx.xxx:8055/webroot/decision
系统的数据卷在本质上所有的/usr/local/tomcat/webapps/webroot/WEB-INF/
下的都应当作为数据集,但是一般情况下只会使用文件夹下的这几个文件夹。
ok启动起来了访问一下,好家伙内置了很多酷炫的模板!!
帆软数决策平台的据库迁移
用户可在「初始化时」配置外接数据库或在「平台中」配置 MySQL 5 版本的外接数据库。如果启动时选择了内置数据库,那么需要在设置里面去迁移数据库到其它数据库。点击「管理系统>系统管理>常规>外接数据库>待配置」
报表使用
这个详细的操作就看官方视频吧,不过目前这种思路和策略应该是没问题的,将决策系统作为一个web端来进行外挂,为其它系统提供决策报表的页面。
在设计器中使用远程服务器
可以看到数据集已经和远程服务器端一致了
然后就是正常的新建决策报表、普通报表、聚合报表等,按照官方文档视频去“愉快”的学习吧。设计好后去决策系统就可以进行配置了。
(众所周知我是胡乱设计的,只是为了测试一下而已)
好这样就可以查看和使用,也能够让其它系统以ifrem的方式来嵌入。安全的问题话在管理端:系统管理-安全管理进行设置。比如关掉Security Headers...
TODO:
数据权限控制上没有进行透彻的研究,官方提供了CAS和OAuth两种方案,也没透彻理解。不过有一个简单想法,通过参数传递的方式将用户ID传递到模板然后在SQL之中使用ID进行关联数据权限的查询,不知可不可行