使用Flowable工作流引擎的时候,不可避免就需要考虑相应的用户权限,
根据官方文档提供的教程,实现Flowable的用户权限体系总共有两大类:
(一)Flowable提供的IdmEngine身份识别引擎
使用Flowable提供的IdmEngine,也有三种方案:
方案一:Flowable默认提供的IdmEngine已经实现IdmIdentityService接口,包含对用户、组、权限等的操作;
方案二:集成LDAP来实现轻量级用户权限管理。LDAP内部已经实现IdmIdentityService接口,包含对用户、组、权限等的操作;
方案三:自定义实现IdmIdentityService接口,实现对用户、组、权限的操作;
(二)自定义身份识别引擎
有时候在项目上已经实现了自己的用户体系,接入Flowable的工作流引擎时,就需要考虑如何将自己的用户体系映射到Flowable工作流引擎的数据权限上去。Flowable提供的数据权限体系是用户、组、租户的结构体系,因为这里提供一个映射的设计思路:
在实际项目中,往往用户会存在租户、角色、部门之间的对应关系,因而在对应到Flowable的用户、组、租户的时候可以用以下思路来处理:
用户权限体系映射具体的案例如下:
用户A(id值为1) - 角色A(id值为1) - 部门A(id值为1) - 区域A(id值为1)(某个租户的用户A是角色A,所在部门为部门A,所属区域为区域A)
根据上述的映射关系转换成如下
用户转换后的id:1
角色转换后的id:R1
部门转换后的id:O1
区域转换后的id:A1
将映射关系对应到Flowable中
用户:1
组:R1、O1、A1
知道如果映射后,现在的问题就是在哪里去实现这部分的映射关系,以下提供几种实现的思路,目前还没正式验证过,仍处于实验阶段:
一、修改官方的源码
已知对bpmn的用户任务进行解析的方法类为UserTaskXMLConverter,通过该类的源码可以了解相关的解析机制,在此基础上对自己需要的节点添加相关的解析操作
二、找到官方提供的自定义配置,修改自定义配置属性(还未找到方案)
三、在前端设计bpmn文件的时候,通过相关的方法对id进行映射后生成最终的bpmn文件
四、自定义权限的表达式,例如:<userTask id="approveTask" name="刘备审批" flowable:assignee="#{idmTest.org('emp')}"/>
其中idmTest.org就是用来自定义返回的id集的方法
网友评论