这里写自定义目录标题
- 用户权限体系
- Flowable提供的IdmEngine身份识别引擎
- 自定义身份识别引擎
- 根据上述的映射关系转换成如下
- 将映射关系对应到Flowable中
用户权限体系
使用Flowable工作流引擎的时候,不可避免就需要考虑相应的用户权限,根据官方文档提供的教程,实现Flowable的用户权限体系总共有两大类。
Flowable提供的IdmEngine身份识别引擎
在接入Flowable的用户权限体系的时候,有3种方式:
- 使用Flowable提供的默认IdmEngine进行用户体系管理,该引擎包含了用户、组的概念。
- 集成LDAP,实现轻量级用户权限管理。通过IdentityService进行认证,用于由IdentityService处理所有认证业务的场景。
- 实现IdmIdentityService接口,自定义实现用户、组的查询
自定义身份识别引擎
有时候在项目上已经实现了自己的用户体系,接入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
- 单用户(assignee=“用户id”)、多用户(candidateUsers=“用户id1,用户id2”)
- 单角色、多角色(candidateGroups=":角色id1,:角色id2")
- 单部门、多部门(candidateGroups=“部门id1:,部门id2:”)
- 角色或部门(candidateGroups=“角色id1:, :部门id1”)
- 角色且部门
在实际项目中,往往用户会存在租户、角色、部门之间的对应关系,因而在对应到Flowable的用户、组、租户的时候可以用以下思路来处理:
知道如果映射后,现在的问题就是在哪里去实现这部分的映射关系,以下提供几种实现的思路,目前还没正式验证过,仍处于实验阶段:
一、修改官方的源码
已知对bpmn的用户任务进行解析的方法类为UserTaskXMLConverter,通过该类的源码可以了解相关的解析机制,在此基础上对自己需要的节点添加相关的解析操作
二、找到官方提供的自定义配置,修改自定义配置属性(还未找到方案)
三、在前端设计bpmn文件的时候,通过相关的方法对id进行映射后生成最终的bpmn文件
四、自定义权限的表达式,例如:
其中idmTest.org就是用来自定义返回的id集的方法