SprinbBoot 中 Acitivi6.0通过创建视图解决用户同步方案

在集成Activiti的的过程中账户组数据同步是一难题,有很多人提供了几个方案,目前最最省力的方案我认为是创建视图覆盖同名的 ACT_ID_ 系列表,这样直接对接到自己的系统,而不用单独维护Acitivi账户组数据。

如下面是自身的业务表,

CREATE TABLE `sys_user` (

   `id` int(11) NOT NULL AUTO_INCREMENT,

   `username` varchar(255) NOT NULL,

   `password` varchar(255) NOT NULL,

   `email` varchar(255) NOT NULL,

   `org_id` int(11) NOT NULL,

   PRIMARY KEY (`id`)

 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

CREATE TABLE `sys_role` (

   `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键',

   `role_code` varchar(255) NOT NULL COMMENT '角色代码',

   `role_name` varchar(255) NOT NULL COMMENT '角色名称',

   PRIMARY KEY (`id`)

 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

CREATE TABLE `sys_user_role` (

   `id` int(11) NOT NULL AUTO_INCREMENT,

   `role_id` int(11) NOT NULL,

   `user_id` int(11) NOT NULL,

   PRIMARY KEY (`id`)

 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

删除表act_id_*

    DROP TABLE `act_id_membership`;

    DROP TABLE `act_id_group`;

    DROP TABLE `act_id_user`;

创建视图

    -- 用户视图

   CREATE OR REPLACE VIEW act_id_user 
    AS
    SELECT u.username AS ID_,0  AS REV_,u.username AS FIRST_,'' AS LAST_,u.email AS EMAIL_,u.`password` AS PWD_,'' as PICTURE_ID_ 
    FROM sys_user u;

   -- 角色实体

   CREATE OR REPLACE VIEW act_id_group
AS
    SELECT r.role_name AS ID_,NULL AS REV_,r.role_name AS NAME_,'assignment' AS TYPE_
    FROM sys_role r;

   -- 用户-角色对应视图

   CREATE OR REPLACE VIEW act_id_membership
AS
    SELECT u.username  AS USER_ID_, r.role_name AS GROUP_ID_ 
    FROM sys_user_role ur
    LEFT JOIN sys_user u ON u.id=ur.user_id
    LEFT JOIN  sys_role r on r.id=ur.role_id;

最后,我们要在配置中修改一下,

      a.springboot

# 检测身份信息表是否存在

spring.activiti.db-identity-used=false

#或者在注解配置中加入,如

 @Bean
    public StandaloneProcessEngineConfiguration processEngineConfiguration() {
        StandaloneProcessEngineConfiguration configuration = new StandaloneProcessEngineConfiguration();
        configuration.setDataSource(dataSource);
        configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
        configuration.setDbIdentityUsed(false); // 设置不检查身份信息表
        configuration.setAsyncExecutorActivate(false);
        return configuration;
    }

      b. springmvc

<bean class="org.activiti.spring.SpringProcessEngineConfiguration" id="processEngineConfiguration">  
     <property ref="false" name="isDbIdentityUsed"></property>
</bean>
发布了70 篇原创文章 · 获赞 16 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/ucicno000/article/details/100740768
今日推荐