activiti入门八(同步或者重构用户数据)

本文介绍了三种同步或重构Activiti用户数据的方法:1) 使用identityService接口;2) 自定义sessionFactory;3) 创建视图覆盖act_id_*表。通过分析,方案一涉及数据双向同步,适合小型项目;方案二适用于有独立身份系统的企业,通过自定义SessionFactory实现;方案三通过视图简化操作,但可能无法满足复杂权限需求。

在咖啡兔的blog中有一篇文章同步或者重构activiti用户数据的比较,在这里再做简单的介绍以及补充

方案1:通过identityService接口进行同步。

在上篇文章identityService介绍中,讲解了用户,用户组,用户与用户组关系的使用。
那么在我们业务系统中,在新增用户,角色,角色分配等功能中,增加activiti用户,用户组等操作即可实现用户数据的同步。

比如保存系统用户信息:
1. 调用系统业务代码保存用户
2. 调用identityService接口将用户数据保存到activiti中。注意的userId唯一性。
3. 同步用户组,用户与用户组关系等操作

简单点说就是两套表结构,都是用来存储用户,用户组信息的。只要保证数据一致性即可。

方案二:自定义sessionFactory

引擎内部与数据库交互使用的是MyBatis,对不同的表的CRUD操作均由一个对应的实体管理器(XxxEntityManager,有接口和实现类),引擎的7个Service接口在需要CRUD实体时会根据接口获取注册的实体管理器实现类(初始化引擎时用Map对象维护两者的映射关系),并且引擎允许我们覆盖内部的实体管理器,查看源码后可以知道有关Identity操作的两个接口分别为:UserIdentityManager和GroupIdentityManager。

查看引擎配置对象ProcessEngineConfigurationImpl类可以找到一个名称为“customSessionFactories”的属性,该属性可以用来自定义SessionFactory(每一个XXxManager类都是一个Session<实现Session接口>,由SessionFactory来管理),为了能替代内部的实体管理器的实现我们可以自定义一个SessionFactory并注册到引擎。

这种自定义SessionFactory的方式适用于公司内部有独立的身份系统或者公共的身份模块的情况,所有和用户、角色、权限的服务均通过一个统一的接口获取,而业务系统则不保存这些数据,此时引擎的身份模块表就没必要存在(ACT_ID_*)。

具体配置如下:

    <!-- 定义基于Spring引擎配置对象bean -->
    <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
        <property name="dataSource" ref="dataSource" />
        <property name="transactionManager" ref="transactionManager" />
        <!--<property name="deploymentResources" value="classpath*:/act/deployments/**/*.bar"/>-->
        <property name="databaseSchemaUpdate" value="true" />
        <property name="jobExecutorActivate" value="true" />
        <property name="history" value="full" />
        <property name="processDefinitionCacheLimit" value="10"/>

        <!-- UUID作为主键生成策略 -->
        <property name="idGenerator" ref="idGen" />

        <!-- 生成流程图的字体 -->
        <property name="activityFontName" value="${activiti.diagram.activityFontName}"/>
        <property 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值