Flowable默认提供了一套本身的权限管理接口(IDM),可是从Flowable 6开始,IDM的组件被独立出来,分为几个不一样的模块:flowable-idm-api, flowable-idm-engine, flowable-idm-spring 和 flowable-idm-engine-configurator。spring
官方之因此将IDM拆分出来,一个是由于IDM模块并非核心的模块,另外在不少使用Flowable的场景中,权限管理并不须要,或者大多使用权限的时候须要咱们使用本身的权限模块,而不是默认的实现。api
Flowable默认提供了两种方式能够处理权限相关:bash
1 经过IdentityService,这个服务主要用来管理用户和组,不能操做具体的权限。是简单版数据结构
processEngine.getIdentityService();
复制代码
2 经过IdmIdentityService,能够用户和组,同时能够处理具体的权限(Privilege),在IdentityService之上作了加强,但二者是不一样的接口。app
IdmEngineConfigurator idmEngineConfigurator = new IdmEngineConfigurator();
cfg.setIdmEngineConfigurator(idmEngineConfigurator);
// 会初始化processEngine,同时初始化配置在里面的Configurator,如IdmEngineConfigurator
ProcessEngine processEngine = cfg.buildProcessEngine();
IdmIdentityService idmIdentityService = idmEngineConfigurator.getIdmEngineConfiguration().getIdmIdentityService();
复制代码
两个服务用到的是Flowable中相同的表:分布式
**备注:**能够看出来,Flowable官方提供的IDM在必定程度上也能够进行RBAC(Role-Based Access Control)的操做,只是权限管理会复杂一点的时候,IDM就知足不了咱们的操做。ui
user -> userspa
group -> role设计
PRIV -> access controlcode
若是咱们以为默认的权限管理知足不了咱们的须要,或者已经有本身的权限管理系统,则须要额外处理。有2种能够与本身业务兼容的方案:
咱们在上面已经说过Flowable权限管理的几张表的内容,按结构将咱们的权限数据导入其中便可。但考虑到数据方面内容,可能也须要必定的代码开发量。
注意:
官方的IDM模块以及被单独拆分出来,咱们的实现的代码不会对Flowable的工做量有影响,另外IDM模块,只须要关心可否提供权限控制便可。
以LDAP为例,在使用的时候只需使用正确的IDM配置器便可:
// 只需改动这一行的配置器便可
IdmEngineConfigurator idmEngineConfigurator = new LDAPConfigurator();
cfg.setIdmEngineConfigurator(idmEngineConfigurator);
ProcessEngine processEngine = cfg.buildProcessEngine();
IdmIdentityService idmIdentityService = idmEngineConfigurator.getIdmEngineConfiguration().getIdmIdentityService();
复制代码
根据本身的业务须要,提供用户的管理功能。关键部分:
若是咱们的已经有本身的权限管理系统,在必定程度上至关于作本身的权限管理系统的客户端。
在业务发展一段时间后引入工做流,采用第二种方案更合适一些。