1. 概述
1.1 版本
| 报表服务器版本 | 功能变更 |
|---|---|
| 11.0 | - |
| 11.0.1 | 「重复验证字段」默认方式由「名称」改为「ID」 |
| 11.0.2 | 微信管理/钉钉管理插件 V11.0.54 及以上:新增用户禁用状态配置;支持从企业微信、钉钉同步用户 |
| 11.0.10 | 飞书管理插件 V11.0.75 及之后,支持将飞书通讯录用户同步到平台 |
| 11.0.27 | 同步用户删除,再次同步恢复后,用户信息配置保留,无需重新配置 |
| 11.5.16 | 1)同步异常中断默认开启,且新增钉企飞应用误删保护 2)「用户可编辑」逻辑优化为:仅保留平台主动修改过用户的信息,未修改过的用户继续随数据源更新 |
1.2 应用场景
同步用户用于将服务器数据集或第三方通讯录中的用户信息更新到帆软应用。
企业人员入职、离职或调整部门后,管理员可通过定时同步或立即同步更新平台用户,无需逐个维护。
1.3 注意事项
1)若设置了同步用户,请勿轻易取消同步/调整同步数据源。因为角色用户中间关系数据不会软删除,且无法恢复!!!
注:11.0.27 及之后版本,通过同步删除用户,支持再次通过同步恢复用户,用户信息配置保留,无需重新配置。
2)同步用户时一些注意事项及报错请参见:用户同步时报错整理
2. 准备用户数据
选择服务器数据集同步时,根据部门结构准备数据;选择第三方通讯录时,完成对应插件配置后跳至第 3 节。
| 部门结构 | 数据集方案 | 准备方式 |
|---|---|---|
| 部门职务无层级 | SQL 数据集 | 将用户信息表导入数据库,再创建 SQL 数据集 |
| 部门职务无层级 | 文件数据集 | 通过 Excel 等文件提供用户信息 |
| 部门职务有层级 | 树数据集 | 先创建 SQL 数据集,再用部门标记及父标记构建树 |
2.1 部门职务间无层级结构-SQL 数据集
本节示例所用的用户信息表部门职务间无层级结构,如下图所示:

2.1.1 准备用户信息表
准备一张用户信息表,表结构如下图所示:
点击下载用户信息表:导入用户1.xlsx
注1:导入用户时,用户名、姓名、密码为必填项,此外内容可以不填。
注2:用户手机号支持绑定中国大陆、中国台湾、中国香港、土耳其、韩国、日本、新加坡、马来西亚手机号
中国大陆手机号可自行选择是否加区号,其他地区和国家手机号需要加区号。
注3:如单个用户有多个角色/部门,明细表中添加多行数据即可,同步后会自动合并为同一用户的多个角色。

2.1.2 创建服务器数据集
请自行使用第三方数据库管理工具,将上表导入数据库,并建立系统与该数据库的 数据连接 。下文将以 FRDemo 数据库为例。
管理员登录数据决策系统,点击「管理系统>数据连接>服务器数据集」,创建「SQL数据集」。如下图所示:

设置数据集名称为「同步用户1」,数据连接选择「FRDemo」,SQL 语句为:
select * from 导入用户1

2.2 部门职务间无层级结构-文件数据集
本节示例所用的用户信息表部门职务间无层级结构。同步的用户的部门都是并列在「所有部门」下,如下图所示:

2.2.1 准备用户信息表
准备一张用户信息表,表结构如下图所示:
点击下载用户信息表:导入用户1.xlsx
注1:导入用户时,用户名、姓名、密码为必填项,此外内容可以不填。
注2:用户手机号支持绑定中国大陆、中国台湾、中国香港、土耳其、韩国、日本、新加坡、马来西亚手机号
中国大陆手机号可自行选择是否加区号,其他地区和国家手机号需要加区号。
注3:也可使用 TXT / XML 文件,设置方式请参见:文件数据集 。

2.2.2 创建服务器数据集
将该表保存在本地,或者上传至报表工程的%FR_HOME%\webapps\webroot\WEB-INF\reportlets目录下。
管理员登录数据决策系统,点击「管理系统>数据连接>服务器数据集」,创建「文件数据集」。如下图所示:

设置数据集名称为「同步用户-文件」,选择上文准备的表格。
注1:若选择服务器文件,则选择报表工程的 %FR_HOME%\webapps\webroot\WEB-INF\reportlets 目录下的文件。
若选择本地文件,上传后文件自动保存至报表工程的 %FR_HOME%\webapps\webroot\WEB-INF\reportlets\excel 目录下。
注2:也可使用 TXT / XML / 远程 URL 文件,支持数据集参数,设置方式请参见:文件数据集 。

2.3 部门职务间有层级结构-树数据集
本节示例所用的用户信息表部门职务间有层级结构,如下图所示:

2.3.1 准备用户信息表
准备一张用户信息表,表结构如下图所示:
点击下载用户信息表:部门职务间有层级结构.xls
注1:同步用户数据集时,若服务器数据集为树数据集 ,顶层机构的父机构应为Null(而非空值)。如下图所示的 Abby 用户的 fid 字段。
注2:部门下没有用户也是可以的,例如总部只有下属部门,但没有直属职务和用户,也是可以生成树数据集和同步用户的。
注3:用户手机号支持绑定中国大陆、中国台湾、中国香港、土耳其、韩国、日本、新加坡、马来西亚手机号
中国大陆手机号可自行选择是否加区号,其他地区和国家手机号需要加区号。

2.3.2 创建SQL数据集
请自行使用第三方数据库管理工具,将上表导入数据库,并建立系统与该数据库的 数据连接 。下文将以 FRDemo 数据库为例。
管理员登录数据决策系统,点击「管理系统>数据连接>服务器数据集」,创建「SQL数据集」。如下图所示:

设置数据集名称为「同步用户2」,数据连接选择「FRDemo」,SQL 语句为:
select * from 部门职务间有层级结构

2.3.3 创建树数据集
管理员登录数据决策系统,点击「管理系统>数据连接>服务器数据集」,创建「树数据集」。如下图所示:

设置数据集名称为「同步用户-有层级」,构建自数据集「同步用户2」,原始标记字段为「did」,父标记字段为「fid」,如下图所示:
注:同步用户树数据集,仅支持依赖所选数据集的父标记字段构建树,不支持依赖所选数据集的标记字段的长度构建树。

3. 首次同步时处理现有数据
注1:若之前同步过用户,将不会出现本节弹窗,可直接跳过本章节。
本章面向「之前从未同步用户,首次同步用户」、「清空同步数据后,首次同步用户」的数据更新规则。
注2:同步的用户与「手动添加/导入的用户」可并存。
管理员进入「管理系统>用户管理>所有用户」,单击「同步用户」。
从未同步过用户,或清空同步数据后再次首次同步时,系统提示「是否保留现有非同步数据,包括导入/添加的用户、部门职务、角色」。已经同步过且未清空的配置不出现该弹窗。

不同选择对应的更新逻辑如下:
选择「清空」会删除平台现有手动添加或导入的用户及其部门、职务、角色和权限。若需保留现有用户,选择「保留」。
| 选择 | 定义 |
|---|---|
| 保留 | 如果现有用户不在同步的服务器数据集中,该用户信息和权限将被保留,不修改 如果现有用户在服务器数据集中(用户名相同):
|
| 清空 | 平台现有「手动添加/导入的用户」的用户名、姓名、密码、手机、邮箱、部门、职务、角色、权限均被删除,重新同步用户 |
注:根据选择的更新逻辑,首次同步后有部分用户信息被更新。
之后能被自动更新的只有已变为同步类型的用户。
之后的同步,数据集不能再覆盖更新内置数据,否则将冲突报错。
4. 配置同步用户
配置同步数据集信息,如下图所示:

4.1 同步频率
支持通过两种方式执行同步用户操作:简单重复执行、表达式设置。
| 配置方式 | 填写说明 |
|---|---|
| 简单重复执行 | 设置自动同步间隔,默认 43,200 秒 注意:同步频率过高会使后台日志持续刷新并增加日志体积。请按人员数据实际更新频率设置同步间隔,不要为追求实时更新而持续缩短间隔。
|
| 表达式设置 | 使用 Cron 表达式指定每天、隔日或单次等执行时间 详情请参见:Cron 表达式。
|
4.2 用户可编辑
「用户可编辑」默认不勾选。勾选后,允许在平台手动修改同步用户的姓名、密码、手机、邮箱,并可使用「忘记密码」。
勾选了「用户可编辑」后,不同用户的可编辑范围如下:
| 操作 | 超级管理员 | 次级管理员 | 普通同步用户 |
|---|---|---|---|
| 在「管理系统>用户管理」编辑用户信息 | 可修改有权限用户的姓名、密码、手机、邮箱 不可修改同步过来的角色 | 无权进行本操作 | |
| 在「账号设置」编辑自己账号的信息 | 可修改自己账号的姓名、密码、手机、邮箱 | ||
| 登录时使用「忘记密码」重置自己账号的密码 | 支持 | ||
同步用户时的信息同步情况如下:
| 配置和用户情况 | 再次手动或自动同步时的处理 |
|---|---|
| 未勾选「用户可编辑」 | 对应用户的姓名、密码、手机、邮箱按同步数据源更新 |
| 已勾选,用户未在平台主动修改过信息 | |
| 已勾选,用户在平台主动修改过信息 | 保留对应用户在平台侧的姓名、密码、手机、邮箱,不按同步数据源更新 |
注1:密码策略对同步用户生效。
注2:未勾选「用户可编辑」时,使用「忘记密码」修改密码会提示「您的账号无法修改密码,如有疑问请联系管理员」。
注3:11.5.15 及之前版本,如勾选了「用户可编辑」,无论用户是否在平台主动修改过信息,均保留对应用户在平台侧的姓名、密码、手机、邮箱,不按同步数据源更新。
4.3 用户来源
选择用户信息对应的来源。
| 用户来源 | 配置方式与限制 |
|---|---|
| 服务器数据集 | 选择第 2 节准备的数据集
|
| 从 LDAP 服务器中同步 | 用户认证方式选择「LDAP 认证」,安装「同步 LDAP 域用户」插件后选择该来源 详情请参见:同步LDAP域用户 |
| 从企业微信同步 | 配置「微信管理」插件的「成员管理」,再选择要同步的企业微信应用 详情请参见:企业微信集成 |
| 从钉钉同步 | 配置「钉钉管理」插件的「成员管理」,再选择要同步的钉钉应用 详情请参见:钉钉管理插件 |
| 从飞书同步 | 配置「飞书管理」插件的「成员管理」,再选择要同步的飞书应用 详情请参见:飞书集成 |
注1:同步成功后,不支持在平台修改同步用户所属的同步部门职务和同步角色,需在同步来源中修改。
注2:企业微信、钉钉成员管理中的通讯录「立即更新」及定时「自动更新」都会触发用户同步。
注3:飞书成员管理中的通讯录手动、自动更新及「用户管理>同步用户」均可更新平台用户。
注4:企业微信接口不支持同步密码,平台用户初始密码随机生成。因此用户如需通过账号密码登录,请先开启「用户可编辑」,再让用户通过「忘记密码」重置密码。
注5:11.5.16 及之后版本,企业微信、飞书或钉钉应用被作为同步用户数据源引用时,不允许在集成配置中删除对应应用,删除时提示「当前应用正在被用户同步配置引用,请先修改同步配置后再删除」。

4.4 用户重复验证字段
为了防止同名用户/不同部门下的同名职务,帆软提供「用户重复验证字段」功能。
「重复验证字段」包含两种验证方式:名称和 ID 。
注:FineReport 11.0.1 版本前,默认的重复验证字段为名称。
FineReport 11.0.1 版本及之后,默认的重复验证字段为 ID。
1)用户信息保存位置
注:用户信息保存在 FineDB 数据库的表 中。
| 字段信息 | 所在表 |
|---|---|
| 用户ID、用户名 | fine_user |
| 职务ID、职务名称 | fine_post |
| 部门ID、部门名称 | fine_department |
| 角色ID、角色名称 | fine_custom_role |
2)具体说明
| 重复验证字段 | 逻辑 | 场景 | 备注 |
|---|---|---|---|
用户ID 部门ID 职务ID 角色ID | 若选择 ID,则同步「ID+名称」字段,所在表中的 ID 字段值为同步用户时服务器数据集中的 ID | 如果数据集中某 ID 对应的用户名发生修改,平台中用户名也会跟着修改,权限也会被继承。部门,职位,角色同理 | 非树数据集中,若重复验证字段选择 ID ,那么职务的 ID 、名称都必须是一对一且唯一不重复的关系,同一 ID 对应多个名称 、同一名称对应多个 ID 都不允许。用户,部门,角色同理 树数据集中,用户、职务、角色的名称与 ID 必须是一对一且唯一不重复的关系 注:前台看不到职务ID,只通过职务名称来区分、配置权限等。如果出现同一部门下两个不同id职务同名的情况,将无法区分和配置权限。故直接要求两者都必须唯一 且 一一对应的关系,不满足则直接同步失败 |
用户名 部门名称 职务名称 角色名称 | 若选择名称,则同步「名称」字段,所在表中的 ID 字段值将由系统随机生成 | 如果修改数据集中某用户的用户名,平台中用户名也会跟着修改,所对应用户 ID 由系统随机生成,新用户名的用户会丢失之前单独为该用户配置的权限。同理,部门,职位,角色则会丢失继承自部门/职务/角色的权限 | 若重复验证字段选择职务名称,那么数据源中名称相同但 ID 不同的职务会作为一个职务看待,若同一部门下有两个名称为「财务」的不同职务,会直接显示为同一个职务,其下用户也会合并显示 但如果两个「财务」属于不同部门,则虽算作一个职务,但因部门-职务关系的不同,其下用户不会合并在一起显示。用户,部门,角色同理 |
4.5 字段名称
用户名、姓名、密码、部门名称、职务名称、角色名称、手机、邮箱为对应服务器数据集中的字段名称。
注1:邮箱支持包含符号‘#’和‘&’。
注2:支持仅配置部门,不配置职务。
4.6 加密方式
系统可对存储到FineDB配置库的用户密码进行加密。保证即使数据库被破解,也无法得到用户的真正登录信息。
有两种加密方式,「内置 SHA 加密」和「自定义密码加密」。
| 加密方式 | 说明 |
|---|---|
| 内置 SHA 加密 | 适用场景:同步的服务器数据集中的密码为明文时,选择内置 SHA 加密 加密简介: 数据决策系统采用 SHA256 加密方式,以保证密码安全。 用户通过接口自定义修改密码后,会自动进行 SHA256 加密。 登录密码:登录密码即为本文 2.1 节用户信息表中的密码,非 fine_user用户表 中加密的密码。 |
| 自定义密码加密 | 适用场景:同步的服务器数据集中的密码为自定义加密后的密文,则必须使用自定义加密。 加密简介: 自定义密码加密,即自定义一个密码加密类。 加密方式在类中描述,并保存在%BI_Home%\webapps\webroot\WEB-INF\classes文件夹中。 数据决策系统会在用户自定义加密算法的基础上再进行 SHA256 二次加密,以保证密码安全。 登录密码:登录密码为服务器数据集的密文解密之后的明文 |
注1:自定义加密示例详情参见:同步用户密码加密设置 。
注2:自定义加密算法,必须继承 AbstractPasswordValidator 类。
注3:若勾选了「用户可编辑」,且设置了加密方式,保存成功后,再次更换加密方式,FineDB 中的密文无法同步更换,用户将无法成功登录。
注4:修改同步用户加密方式后无需重启工程,立即生效。
4.7 用户禁用状态
11.0.2 及之后版本新增该设置项,方便管理员通过同步用户数据管理用户状态。非必填项。
若需要使用该设置项,在第二章的数据源中新增一个字段,字段值为0/1。
| 配置或字段值 | 平台行为 |
|---|---|
| 未配置状态字段 | 可在平台手动启用或禁用同步用户 |
已配置,字段值为 0 | 禁用用户,状态完全由数据源维护,不支持在平台手动修改 |
已配置,字段值为 1 | 启用用户,状态完全由数据源维护,不支持在平台手动修改 |
注:手动添加的用户仍可通过平台配置启用/禁用状态,不受影响。

5. 管理同步与处理异常
同步完成后,「同步用户」管理区域出现「立即同步」「编辑」「清空同步数据」等操作。

5.1 立即同步
单击「立即同步」,执行一次用户同步。
注:11.0.27及之后版本,通过同步删除用户,再次通过同步恢复用户,用户信息配置保留,无需重新配置。
5.2 编辑
打开同步用户对话框,可修改同步用户数据集配置。
请谨慎切换用户来源,这会导致之前同步的用户及其部门、职务、角色、权限等均被清空。若用户坚持切换同步用户来源数据集,在点击「确定」时,会提示「切换数据集后将清空原有同步数据,包括用户及其部门、职务、角色、权限等,确认切换数据集?」

若未开启 4.2 节「用户可编辑」设置,支持管理员「禁用用户」,支持在「编辑用户」时为用户增删改非同步性质的角色和部门职务,不支持「删除用户」。
若开启了 4.2 节「用户可编辑」设置,支持管理员「禁用用户」和「编辑用户」,不支持「删除用户」。
注:禁用、编辑、删除用户的操作,请参见 添加用户 第 3、4、5 章

5.3 清空同步数据
「清空同步数据」按钮,支持一键取消同步用户。
清空同步数据将删除所有同步的用户、部门职务、角色、相关权限,且不再继续同步,恢复未同步的状态。
5.4 异常数据中断同步
「异常数据中断同步」用于在同步用户数量异常减少时停止本次同步,防止异常来源数据造成平台用户删除。
管理员开启「异常数据中断同步」后,可设置用户数量减少达到X%,停止同步。X为1-100的正整数。
例如系统中原有100个同步用户(不包含手动添加/导入的用户数),设置为30%,即同步减少30(100*30%)个用户及以上,就会停止本次同步。
11.5.16 及之后版本,「异常数据中断同步」功能默认开启。
11.5.16 及之后版本,同步用户数据源为企业微信、飞书、钉钉时,系统会检查同步来源是否可用,钉企飞应用不可用导致同步用户来源异常时,自动中断更新。

同步失败的提醒如下图所示:
失败提醒:21300031 - 本次同步用户数量将减少XX%(XX个),达到设定的中断值XX%。请检查数据源数据是否正常,或暂时关闭"异常数据中断同步"功能。

5.5 下次同步时间
系统会根据 4.1 节设置的「同步频率」,提醒管理员下次自动同步的时间。
6. 同步失败提醒
在同步用户过程中,可能会因为冲突出错,导致部分或全部用户、部门、职务、角色数据同步失败,带来权限没有更新。
以上情况需要及时通知到对应的管理员,因此 FineReport 提供「同步失败提醒」功能。
6.1 设置方法
管理员登录数据决策系统,点击「管理系统>用户管理>全局设置」,配置同步失败提醒推送的接收人,点击「保存」,如下图所示:
注1:使用短信提醒之前需要先开通短信服务,开通方法参见文档:短信 。
注2:使用邮件提醒之前需要先配置邮箱,具体步骤请参见:邮箱 。

6.2 效果预览
系统会在「第一次」手动同步/自动同步失败后,给管理员发送短信/邮件/平台提醒。直到下一次同步成功为止,之后再同步失败才会再次发送提醒。
注:若多次连续同步失败,只会在「第一次同步失败」发送提醒消息。
直到出现「同步成功/重启工程/关闭同步用户」的情况,才会重置提醒监控状态。
之后再次出现同步失败才会再次发送提醒。
1)短信提醒

2)平台消息

3)邮件提醒

