前言:
一个企业的职工人数是相当多的,并且由于人员的流动性,用户信息一直在变化,如果每次都通过手动添加修改,工作量将会非常大。
FineReport 用户同步数据集功能可以实现动态更新平台中的用户信息,使之随着数据库中的用户信息一起变化。
一、初衷
跨系统同步解决的问题,我们一般做系统同步是为了啥?信息交流?信息同步?智能运维?标准化?等等。哈哈哈哈,我觉得都是,因为成年人不做选择题。
1、需要准备啥?
首先我们需要建立一个标准的同步库,即我们得确定哪个系统为同步的标准系统或者标准库。根据一般企业的应用来说,会选择OA或者ERP系统。因为这两个系统一般最初建立,也最开始做标准化的系统。
2、同步接口或者数据集
本次以OA与帆软report为例,我们只需要建立标准的数据集即可。但是我们需根据我们企业架构来建立数据集。同步的用户数据来自服务器数据集,支持用户部门有层级和无层级两种。用户可根据自身用户结构选择其中一种。
无层级结构
层级结构
3、建立服务器数据集
本次同步以有层次的部门同步为例来说明。
代码:
select ry.code, ry.name ryname, gw.name gwname, bm.sjbm,bm.fid sjbmid, bm.name bm,ORG_DEPARTMENT_ID bmid, ry.ORG_POST_ID gwid, nvl(ry.EXT_ATTR_1, ry.EXT_ATTR_3) sj, ry.EXT_ATTR_2 yx, bm.bmcode, bm.sjbmcode from V3XUSER.ORG_MEMBER ry left join V3XUSER.org_post gw on ry.ORG_POST_ID = gw.id left join (select ry.name, ry.id, dw.name sjbm, dw.id fid, ry.code bmcode, dw.code sjbmcode from V3XUSER.org_unit ry left join V3XUSER.org_unit dw on case when length(ry.code)>=8 then substr(ry.code,0,6) else to_char(ry.ORG_ACCOUNT_ID) end=case when length(ry.code)>=8 then dw.code else to_char(dw.id) end --on ry.ORG_ACCOUNT_ID = dw.id where 1=1 and ry.STATus = 1 and ry.IS_DELETED = 0 and ry.IS_ENABLE = 1) bm on ry.ORG_DEPARTMENT_ID = bm.ID where ry.STATE = 1 and ry.IS_DELETED = 0 and ry.IS_ENABLE = 1 and gw.IS_DELETED = 0 and gw.IS_ENABLE = 1 union all select '1' code,'总部' ryname,'','总部',1,'总部',1,1,'总部','','company','' from dual
效果:
二、正式同步
1、建立服务器数据集
2、建立服务器树状数据集
3、选择对应关系进行同步
4、等待与设置同步频率
同步过程一般在1-10分钟内,后面会根据设置的同步的频率自动同步更新。
5、注意事项
如果允许同步后的账号,可以修改密码,记得勾选[同步状态下用户信息可编辑] 。