Flowable用户权限体系

这里写自定义目录标题

  • 用户权限体系
    • 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
  1. 单用户(assignee=“用户id”)、多用户(candidateUsers=“用户id1,用户id2”)
  2. 单角色、多角色(candidateGroups=":角色id1,:角色id2")
  3. 单部门、多部门(candidateGroups=“部门id1:,部门id2:”)
  4. 角色或部门(candidateGroups=“角色id1:, :部门id1”)
  5. 角色且部门

在实际项目中,往往用户会存在租户、角色、部门之间的对应关系,因而在对应到Flowable的用户、组、租户的时候可以用以下思路来处理:
Flowable用户权限体系_第1张图片
知道如果映射后,现在的问题就是在哪里去实现这部分的映射关系,以下提供几种实现的思路,目前还没正式验证过,仍处于实验阶段:

一、修改官方的源码

已知对bpmn的用户任务进行解析的方法类为UserTaskXMLConverter,通过该类的源码可以了解相关的解析机制,在此基础上对自己需要的节点添加相关的解析操作

二、找到官方提供的自定义配置,修改自定义配置属性(还未找到方案)

三、在前端设计bpmn文件的时候,通过相关的方法对id进行映射后生成最终的bpmn文件

四、自定义权限的表达式,例如:

其中idmTest.org就是用来自定义返回的id集的方法

你可能感兴趣的:(flowable,flowable)