Skip to end of metadata
Go to start of metadata

URule2技术交流QQ群及在线体验示例

在线体验示例:http://112.124.15.63:8084/为了不同用户操作互不影响,需要注册账号登录体验操作。

URule2技术交流QQ群:423339793

URule2规则引擎产品教学视频:https://pan.baidu.com/s/1oAeJeCM,密码:evsk


简介

       URule开源版中的知识库权限配置功能相对简单,能实现当前URule控制台中哪些人可以看到哪些项目,在可以看到的项目中针对决策集、决策表、决策树、评分卡、决策流都有哪些方面的权限,权限控制粒度相对较粗,如需要更为细致的权限控制粒度可以考虑使用URule的商用PRO版,PRO版中提供了更为完善的权限控制机制。

       要配置知识库权限,首先我们需要打开URule控制台,点击左边上部工具栏上的权限配置图标,在弹出的菜单中选择“资源权限配置”,就会在当前控制台工作区打开知识库的权限配置界面,如下图所示:

       在这个权限配置界面当中,左边是配置权限的目标用户列表,点击任意一个用户名,在中间会出现当前所有项目的项目列表,点击任意一个项目,就会在最右边出现当前用户对当前项目所拥有的权限,默认情况下,这些用户对项目都没有查看当前项目的权限,如果 们把“是否允许查看当前项目”设计为“是”,那么就可以对当前项目下其它的资源信息进行进一步的权限配置,如下图:

       可以看到,当一个用户可以查看一个项目时,那么还可以配置他能看哪些类型的文件,比如“是否允许查看资源包”、“是否允许查看变量库文件”、“是否允许查看参数库文件”等。一旦我们允许用户查看某一类型的文件后,那么还可以进一步配置其是否有修改这种类型文件的权限,如下图:

       通过上述这些配置手段,可快速配置哪些用户可以看哪些项目,对于可以看到的项目,可以进行哪些操作。

       上述权限配置的用户是URule中的普通用户,对于普通用户来说,可以配置的权限就上面介绍的这些。对于诸如项目创建、修改、删除,目录创建、修改、删除,文件的创建、删除之类操作还是只有管理员类型的用户才能进行操作。下面我们就来介绍下什么样的用户是管理员用户,什么样的是普通用户,怎么样将业务系统中的用户信息导入到URule当中来使用。

导入业务系统用户

       在上面的权限配置页面当中,默认就存在user1、user2、user3三个用户,这三个用户是URule当中默认提供的三个示例用户。在URule当中,通过实现com.bstek.urule.console.EnvironmentProvider接口,可以为URule提供需要进行权限配置的用户列表以及当前登录用户,该接口源码如下:

EnvironmentProvider

       在这个接口当中,还涉及到名为User的接口类,其源码如下:

User接口源码

       EnvironmentProvider接口的getLoginUser方法要返回当前登录的User接口对象,User接口中的isAdmin方法就是用来判断当前登录用户是否为管理员,如果不是管理员,那么就是普通用户。

       在URule当中,在外部没有提供EnvironmentProvider接口实现的时候,它采用其内部提供的一个默认EnvironmentProvider接口实现,其源码如下:

EnvironmentProvider接口的默认实现类源码

       在默认的实现类中,getLoginUser返回的是固定的用户名为"admin"的用户,并且它的isAdmin属性为true,表示它是管理员,也就是说默认返回的登录用户是名为admin的管理员,同时他所在的公司ID为"bstek";在getUsers方法中固定返回user1、user2、user3三个用户,他们的公司ID皆为"bstek",与默认返回的登录用户admin的公司ID相同,所以在上面介绍的权限配置页面中我们看到的是user1、user2、user3三个用户。

关于User的公司ID

在URule当中,通过用户的companyId(也就是公司ID)实现在一个URule的存储库中隔离不同公司用户所建的规则项目。

某些时候,你可能只会搭建一个URule Server,在这个Server中会有很多个用户来创建项目、配置规则,但这些用户有可能来自不同的公司,这个时候就需要有一种机制来隔离不同公司的人创建的项目,这里就是通过用户的companyId属性实现。companyId为A的用户创建的项目,companyId为B的人登录后是看不到的,反之亦然。EnvironmentProvider接口中返回的登录用户如果isAdmin为true,也就是管理员,那么它可以看到并操作其所在companyId下所有项目,而不需要做任何权限配置,相反,进行权限配置的工作也必须要由管理员来操作,否则会显示“无权限”的提示。

某个companyId下的管理员进行权限配置的时候,他能配置的用户也有与其companyId相同的普通用户,同时可配置的项目也只有在当前companyId下创建的项目。

       如果我们需要将业务系统中的用户信息引入到URule当中,那么只需要实现一个新的EnvironmentProvider接口,并将其配置到spring的上下文中,让其成为一个标准的bean即可。这样系统启动时会自动检测到该接口实现的存在,从而用它来替换默认的EnvironmentProvider接口实现。

Labels