首页 > 服务 > 自助服务 > 知识库 > i@Report > 高阶应用 > 系统集成

I与第三方系统用户库同步

I作为辅系统与第三方系统集成时,除了配置单点登录之外,将的用户库同步也是实现单点登录的必要工作。

1. 用户库同步

由于I的单点登录只支持服务器用户,所以需要分别同步I的机构表和服务器用户表,并分配权限。对于服务器用户来说,若不给其分配权限,本身是没有任何权限的,所以需要对服务器用户分配数据填报的权限。若要给服务器用户分配数据填报的权限,则每个服务器用户都要对应到具体的报表户身上,因此,我们也要对I的报表户列表进行同步。

需要注意的是,存放主系统用户库的数据库用户必须与I所连接的用户库相同,同时该用户应该有查看和管理主系统用户库数据的权限(可通过授权或者同义词等方式分配),以便完成用户库同步的操作。

完成用户库的同步需要以下三个步骤:

1.1 机构表的同步

数据库中存放I的机构信息的数据库表是IRPT_DEPARTMENTS,表结构如下图所示:

上表中,除了IDCAPTIONPARENTISJCENABLED这几个字段是必须的以外,还需要有UPID0······UPID9这几个字段,所以需要在数据库中将用户库表中这几个字段中的数据抽取到IRPT_DEPARTMENTS这张表中。

此处需要注意的是,主系统的用户库中可能没有ISJCENABLED 以及UPID0······UPID9这几个字段,需要手动添加。其中,ISJC表示是否为基层机构,‘9’表示汇总单位,‘0’表示基层单位;ENABLED表示是否可用,‘1’表示可用,‘0’表示不可用;UPID0······UPID9是上级代码的冗余字段,UPIDI表示该机构在机构树形结构的第I级上级代码,例如,UPID0表示该机构在机构树形结构的顶级代码;UPID1表示该机构在机构树形结构的第1级上级代码········

1.2 服务器用户的同步

数据库中存放I的服务器用户信息的数据库表是IRPT_USERS,表结构如下图所示:

上表中,前五个字段是必须的,需要在数据库中将用户库表中这几个字段的数据抽取到IRPT_USERS这张表中。此处需要注意的是,机构代码的字段名是DEPARMENT而不是DEPARTMENT,没有中间的T

通过服务器用户的表结构可以看到,服务器用户本身并没有任何层级关系,需要通过所在的机构来划分服务器用户之间的层级关系,以实现服务器用户与报表户的一一对应。

1.3 报表户列表的同步

数据库中存放I的报表户信息的数据库表是UL_任务组名首字母缩写,表结构如下图所示:

上表中,前五个字段和第11-20个字段是必须的。其中,btype表示报表户的类型,‘0’表示基层户,‘9’表示汇总户;upid0······upid9同机构代码。有两种方式可实现报表户列表的同步,分别是数据抽取的方式和建立视图的方式。

1.3.1数据抽取

这里的数据抽取,同机构表和服务器用户表的数据同步过程一样,都是将主系统用户库表中的必须字段的数据抽取到存放报表户信息的数据库表中。

1.3.2 建立视图

在i中,有自定义报表户列表的功能,报表户可来自于其它表或者视图。因此,可以在数据库中根据主系统的用户库表创建一个与报表户列表结构相同的视图,在i中直接引用这个视图,具体实现步骤如下:

首先,点击任务组的属性进入任务组属性界面,如下图所示:

然后,点击自定义报表户列表,进入自定义报表户列表界面:

在空白处找到刚才建的视图,然后点击自动匹配,就可以完成报表户的同步同样的,btypeupid可能在主系统的用户库中没有,需要手动添加。


2.权限分配

首先,确定每一个报表户的权限;然后,通过定义角色实现服务器用户数据填报权限的批量分配。需要说明的是,由于顶级汇总户所属的机构为顶级机构,顶级机构的上级机构代码均为空,而其他服务器用户所属的机构均有上级机构代码,所以需要创建两个角色,分别进行匹配,具体操作步骤如下:

2.1 顶级汇总户角色

1)为顶级汇总户创建一个角色,并设置相应的匹配公式,使得满足条件的服务器用户被自动授予该角色的权限,匹配公式如下图所示:


上图中的顶级机构代码即为顶级机构的机构号,如下图所示:


2)为该角色分配相应任务的数据填报权限。首先,找到并选中需要填报的任务组;然后,点开数据填报窗口,选择“ ”定义匹配公式批量匹配报表户;最后,选中已经定义好的匹配公式,右侧会将该任务组下的所有任务列出来,选择读写这一列,即可完成该角色数据填报权限的分配,具体如下图所示:

2.2 其他用户的角色

1)除了顶级汇总户之外的用户可以共用一个角色,首先,创建一个角色,并设置相应的匹配公式,使得满足条件的服务器用户被自动授予该角色的权限,匹配公式如下图所示:

上图中的顶级机构代码即为顶级机构的机构号。


2)为该角色分配相应任务的数据填报权限,该操作步骤与顶级汇总户角色权限分配的步骤完全一致,此处不再赘述。

通过以上两个步骤就可以完成服务器用户数据填报权限的分配,使得服务器用户与报表户权限一一对应。

i中,每次新增服务器用户,需要在角色管理中手动点击保存才能实现角色与用户的自动匹配,研发提供了Webservice接口,更新war包之后,通过Webservice地址:services/RoleMatchService?wsdl获取web服务,调用RoleMatchService接口的方式实现新增用户与角色的自动匹配,接口说明:

public interface RoleMatchService {

/**

* 对指定用户ID进行角色自动匹配计算。

* @param userId 要同步的用户id

* @param sync 是否同步, true 等待该方法执行完成返回,false 则新开一个线程独立运行匹配操作,调用处立即返回。

*/

public void matchUser(String userId, boolean sync);

/**

* 对系统中所有用户进行角色匹配计算

* @param sync 是否同步,同上

*/

public void matchAll(boolean sync);

}

联系
电话

您好,商务咨询请联系

咨询热线:400-0011-866转0

手机咨询:137-0121-6790

社区
交流

产品技术问题交流

bbs.esensoft.com

9分钟快速处理问题