声明
本文撰写此产品,并不表明任何推荐、不推荐等意向,不要将本文内容作为技术选型依据本文撰写的开发方案为一次项目经历中自己总结的内容,不保证最优、最合适,经供参考本文提及的 FineReport 为 2020.05.15.19.18.52 版本本文提及的问题不一定能够稳定复现,甚至无法确定是否为人为原因,所以不算产品 bug上一篇文章提到了基础的协作开发方案,但是还有很多局限性,比如:
只有一个管理员账号,大家共用么?创建的其他账号无法进行设计开发版本管理怎么搞?用一账号看操作历史都不知道谁改的,误删了也无法回退有多个不同的开发团队,有一次误删了其他团队的文件夹导致了数据大量丢失操作失误导致帆软服务器“挂了”,我该如何备份已经做过的配置?包括用户信息、权限分配……服务器数据集总被别人误删怎么办!FineReport 有一套相对完善的鉴权认证体系,当然用户也可以跳过角色、部门,直接获得报表浏览、后台管理的权限,但并不建议这么做。甚至有必要给开发团队一组专用的角色去管理,而不是直接给每个账号单独设置权限
最基础的浏览权,建议给用户配置角色/部门,并让角色属于部门,最后给角色配置可查看某些报表的权限。
展示的报表 不等于 所有的报表模板文件,需要先将文件系统的模板文件加入到可展示的报表目录中(文件系统->数据库系统),我们的绝大部分权限分配都是针对数据库系统的,后面提到的设计权限除外。
我们可以对用户、角色、部门分别配置如下的管理系统权限,并可区分查看和操作权
报表设计权限并不在后台管理系统里配置,需要在设计器中配置。最初应该使用 admin 账号登录给第一波人配置权限:连接远程服务器(切换工作目录-远程服务器)-服务器-远程设计权限管理
此时可以分别针对用户/角色分配权限,建议针对角色分配,见下面的权限管理方案
此方案仅为个人总结使用,请酌情考虑
由于用户、角色、部门都可以独立分配权限,且都是多对多关系,为了方便管理认为的限定了关系的复杂性:
用户可以有多个角色用户可以有多个部门用户禁止直接具有任何权限部门禁止直接具有任何权限角色可以有多个权限角色共分为三类,命名规则:浏览XXX、管理XXX、开发XXX,每一类角色仅允许具有一类权限开发类角色名需要能够直观的定位到可操作的文件目录这样对于多团队开发来说,可以新建每个团队的文件夹(一个团队多个文件夹 dev/qa/uat/proc 等)然后给每个团队创建三个角色分别具有对应文件夹的设计权、对应目录的浏览权、对应角色的管理权;后续开发人员的变动只需要创建账号并设定浏览与设计角色即可。
数据集安全考虑到如下几种需求:
不被随意的改动:不支持锁定
可知的增删改拆:无法隔离,所有人具有修改权,无版本历史记录
可回退到指定版本:没有版本概念,但可以通过数据库定期备份,尽可能做到保护
综上所述,并不建议大量的使用服务器数据集承载逻辑,尤其是在大团队、多团队开发时,毕竟谁也不能避免完全没有误操作。
因此对服务器数据集定义为了方便快速协作开发、合并使用,在合并完成后需要尽快的沉淀为模板数据集,以使帆软自带的文件版本历史功能生效。
模板数据集存储在设计模板文件里,必须让 *.frm 文件中,而服务器数据集存储在数据库中。
除此以外为了尽量保证服务器数据集安全性还需要对数据库定期备份,保证不会出现大规模的损失
数据库里存储了用户账号、角色、权限、日志、服务器数据集、计划任务、交互设计……等多种信息,默认使用了内置数据库(设计器的模拟环境 SQLite / 服务器 hsqldb),建议首先迁移成外置数据库,比如 MySQL。迁移方法:
内置数据库 - https://help.finereport.com/doc-view-1573.html
FineDB 表结构 - https://help.finereport.com/doc-view-3151.html
配置外接数据库 - https://help.finereport.com/doc-view-2458.html
迁移完成后就成了如何自动备份 MySQL 了……
简单地办法,服务器装个 MySQL(不需要完整安装,绿色版即可),使用其自带的 mysqldump 工具即可。创建一个脚本,然后计划任务调用。脚本如下:
rem ******备份开始****** @echo off ::删除一周前的备份数据 ::forfiles /p "c:\backup_finedb" /m backup_*.sql -d -30 /c "cmd /c del /f @path" ::设置时间变量 set "Ymd=