1、概述编辑
1.1 版本
FineBI版本 | JAR包版本 |
---|---|
5.1 | 2019-11-08 |
1.2 应用场景
企业职工人数是相当多的,并且由于人员的流动性,用户信息一直在变化,如果每次都通过手动添加修改,工作量将会非常大。FineBI用户同步数据集功能可以实现动态更新平台中的用户信息,使之随着数据库中的用户信息一起变化。
1.3 功能介绍
平台提供了同步数据集功能将已有的用户信息直接导入到决策系统中,并且与数据库中数据保持一致。
注:不同于手动添加用户的方式,开启了数据集同步后,用户信息将跟随数据集同步,动态改变、实时更新,即若数据库信息改变后,决策系统中的用户信息也会随之改变。
2、步骤编辑
2.1 将用户信息定义为服务器数据集
我们提供了两种方法:
1、打开FineReport设计器,将Finereport设计器与BI的服务器远程连接。点击服务器>服务器数据集添加所需要的 ,表中包含用户名、部门、职务、角色等等信息,服务器数据集添加过程请查看服务器数据集。
2、首先将要用的用户信息表所在数据库与BI配置数据连接,在管理系统>数据连接>服务器数据集中点击创建数据集,即可创建并预览需要同步的用户数据集。详细信息可查看服务器数据集。
接下来我们以在Finereport设计器中建立的内置数据集用户表为例来介绍用户同步数据集的用法。
2.2 开启数据集同步
1. 登陆FineBI数据决策系统http://ip:端口/webroot/decision,使用管理员账号登陆。
点击管理系统>用户管理>所有用户,点击同步用户按钮,如下图:
注:「同步用户」功能点旁边的两个选项,「添加用户」和「导入用户」都是手动添加用户信息的方式,详情参见文档:手动添加用户。
2. 切换为同步数据集方式后,若现有用户也包含在同步数据集中,该用户将被更新,其他现有用户将被删除。切换为同步数据集时可以选择重复用户的更新方式,弹出用户更新提示框。如下图:
选择仅更新现有用户基本信息,不改变权限等设置:
如果现有用户不在数据集中,该用户会被删除。
如果现有用户也在数据集中(用户名相同),该用户对应的 ID 不变,权限也都保留。
与数据集中不相同的「部门-职位」信息会被全部删除。
选择清空现有用户信息,重新写入:
现有用户、用户权限、部门职位、等都会被删除。
然后重新添加新用户。
注:这两种方式在切换同步数据集时,都不会删除角色信息。
2.3 配置同步数据集
以上述第一种用户更新设置的方式为例,点击确定后,打开同步用户对话框,如下图所示配置同步数据集信息。
同步频率:同步服务器数据集的间隔时间,默认为43200秒。
注:同步频率不宜过高,否则会导致后台日志不断刷新,日志体积无限膨胀。
服务器数据集:选择用户信息对应的服务器数据集。
用户\部门\职务\角色重复验证字段:有两种字段信息重复验证方式,第一种根据名称验证是否重复,第二种根据 ID (数据库中会自动生成 ID)验证是否重复。
注:配置 ID 项后会直接使用客户提供的 ID 项作为我们的 FineDB 中的 ID,如果下次同步时用户名称发生改变,那么他的权限等还会保留。部门职位,角色同理。
用户名、姓名、密码、部门名称、职务名称、角色名称、手机、邮箱:对应数据集中的字段名称。
有两种种加密方式:内置SHA加密,自定义密码加密。
自定义密码加密,即自定义一个密码加密类,加密方式在类中描述,并保存在%FineBI%\webapps\webroot\WEB-INF\classes文件夹中(若无该文件夹,新建即可)。
注:自定义加密算法,不管该算法的具体方式是什么,都必须继承FineReport的AbstractPasswordEncode类,并加上返回判断明文密码和密文密码是否一致结果方法才可行。
自定义加密示例请查看简单权限之密码加密。
2.4 效果查看
1、同步用户对话框设置完毕后,点击确定,会显示同步结果面板。就可以看到,数据库中的用户信息自动加载进来了,且其他来源,即非用户同步数据集的用户将被删除,如下图:
2、同步失败的出错数据
配置了ID列后会进行一些ID校验以防入库时冲突。此时出错的数据也会列在结果面板中。下面罗列报错情况。
1)ID 为空
报错信息如下图所示:
原因:如下图,勾选了 id 后,不允许出现 name 不为空,但是 id 为空的情况。
2) 与原有 ID 冲突
报错信息如下图所示:
原因:勾选 ID 之后更改用户名,但是不允许更改 ID,否则会报 ID 冲突的错误,比如原本 Alice 的 id 为3,现在变动成2。
3) ID 与其他对象重复
原因:如下图,多个用户名使用了一个id时报错。
4) 对应多个 ID
报错信息如下图所示:
原因:如下图,当一个用户名却有多个 id 时报此错。
2.5 同步效果
1、同步完成后,同步用户管理按钮处,会新增两个下拉选项,如下图所示:
立即同步:点击后立即进行一次用户数据集同步。
编辑:打开同步用户对话框,可以对同步数据集进行设置。
2、所有用户
“所有用户”下显示同步数据集导入的所有用户信息,如下图:
3、机构部门
“机构部门”会根据数据自动生成:
4、角色
“角色”也会根据数据自动生成,且同步添加进来的角色为锁定状态,不可编辑,如下图:
注:如果需要同步部门间层级关系,则需要选择按照部门层级构建的树数据集,详见从数据库导入部门间层级关系。
2.6 同步切手动
当想要关闭同步数据集,重新使用手动添加用户的方式是,直接点击添加用户或导入用户即可。
1)添加用户
点击添加用户按钮后,弹出如下图所示提示框,点击确定。
可以在弹出的添加用户对话框中手动添加用户信息。
2)导入用户
点击导入用户按钮后,弹出如下图所示提示框,点击确定。
从数据集中手动添加用户信息,它跟同步方式的区别在于,它没有同步频率,一次导入,数据永远不变。
注:数据更新过程会跳过超级管理员,若数据集中包含超级管理员的信息,那么无法对超级管理员生效。
3. 错误码解释 编辑
1、名词解释
部门标记:构建树数据集时选择的原始标记字段。
父部门标记:构建树数据集时选择的父标记字段。
2、树数据集构建失败
当同步数据集为树数据集时,往往会因为树数据集构建问题导致同步失败,下面列举各种情况:
1)错误码:21300055
原因:树数据集下,多个部门都用了一个部门标记,比如下图中 DEC 交互,报表的 did 都为 a12。
2)错误码:21300056
原因:一个部门有多个父部门标记,比如下图中报表的 pid 有 a1,a2。
3)错误码:21300057
原因:如果父部门标记为空,那么此部门就是根部门,如果不为空,且父部门标记找不到对应的部门,则报错。如下图中决策平台的 pid 为 a3,但是没有任何部门的 did 为 a3,也即没有该父部门。
4)错误码:21300058
原因:如果部门名相同,且父部门标记相同,那么说明这就是同一个部门,如果他们的部门标记不同,则报错,如下图中报表的 did 有两个:a13,a12。
5)错误码:21300059
原因:如果部门111的父标记指向部门11,部门11的父标记指向部门1,部门1的父标记又指向部门111,构成了环,则报错。
如下图中帆软软件的父标记为a111,指向 DEC 研发,决策平台的 pid 为 a1,指向帆软软件,DEC 研发的 pid 为 a11,指向决策平台。
vv
3、ID校验失败
树数据集情况下,如果还勾选了部门 id,且部门 id 列并非部门标记列,还会做2.3.3节中的 id 校验工作,不同与2.3.3节的是,会导致全局失败。以下所有示例中部门标记列为 did,父部门标记列为 pid,部门 id列为 depId。
1)错误码:21300054
原因:如果部门标记为纯数字,比如11,111,会直接作为 id 项插入到 finedb 的部门表中,此时如果平台又勾选了其他列作为部门 id,且部门标记值和勾选的部门 id 不一样,则报错。建议当数据源当部门标记为纯数字时,使用sql语句的字符串拼接一个英文字母。
2)错误码:21300053
原因:树数据集情况下,勾选部门 id 后如果部门 id 为空,则直接全局报错。
3)错误码:21300051
原因:帆软软件/报表,与帆软软件/决策平台使用了相同的部门 id。
4)错误码:21300050
原因:当部门存在多个部门 id 时会报此错,如下图中帆软软件/报表有 a12,a15 两个部门 id。
5)错误码:21300052
原因:部门 id 发生改变了,会报错与原有部门 id 冲突。