工作流引擎Flowable是从Activiti引擎Fork出来的一个版本,它更加友好,且与Activiti完全兼容,值得推荐(事实上是因为访问flowable.org比访问activiti.org要快一些)。本文讨论的方案均可用于Activiti引擎。
因为Flowable有自己的一套用户权限体系,但是我们的业务系统都会提供更完善的用户权限,所以,整合这两套用户就是一个我们在实践中必须要解决的问题。官方提供的方案无外乎三个:一是同步用户数据;二是扩展代码,实现自己的UserEntityManager等;三是用视图取代原来的几个表。很显然,方案三是最简单的,完全不需要写代码。
本文讨论的就是方案三。Flowable提供的权限体系比较简单:用户User-组Group,但我们的业务系统却是:用户User-部门Group-角色Role。比如,我们会有『组织部秘书』或『组织部部长』这样的区分,而原来的Flowable则只有简单的『管理员』或『用户』,我们需要做的事情就是如何将『部门-角色』映射到『Group』。
下面我们就切入正题,说说如何具体实现用户视图取代表来解决两个系统的统一用户认证。
首先,我们先将Flowable中的三张表改名:
原表名 | 新表名 |
---|---|
ACT_ID_USER | XXX_ACT_ID_USER |
ACT_ID_GROUP | XXX_ACT_ID_GROUP |
ACT_ID_MEMBERSHIP | XXX_ACT_ID_MEMBERSHIP |
我们有这样的几张业务表需要映射到Flowable中,下面分述之。
用户表(t_user)
字段名 | 说明 |
---|---|
id | 用户ID |
login_name | 登录名(账号) |
real_name | 真实姓名(显示名称) |
邮箱 | |
avatar_url | 头像ID |