• (十六)Activitivi5之内置用户组(角色)设计表以及IdentityService


    一、内置用户组(角色)设计表概念

    • 用户和组(或者叫做角色),多对多关联,通过关联表实现
    1. act_id_user 用户表;

    2. act_id_group 用户组表;

    3. act_id_membership 用户与组的关联表,用来实现多对多;

    4. act_id_info 用户信息表;

         1.  act_id_user 用户表;

    • 这里的设计可能和我们想象的不一样,比如_ID,字符串类型 我们直接可以把他当作用户名 

      FIRST_ LAST_ 是英文命名习惯  EMAIL_ PWD 邮箱 密码 字段 等等。

      2.  act_id_group 用户组表(或者叫做角色)

      3.  act_id_membership 用户与组的关联表,用来实现多对多

     

    • 只有两个字段 USER_ID_ 和 GROUP_ID_ 分别关联用户表的主键和组表的主键;

       4.  act_id_info 用户信息表

     

    •  主要是用来扩展用户信息,以及可以实现组织机构层次关系,比如雇员领导用户设计

       5.  说明

    • 这个是activiti给我们内置的一个用户组设计,
    • 这里说明下:正常的企业级项目都有自己的组织机构用户权限设置表,所以一般不会用到内置的;
    • 但是假如一个很小的系统,例如 学生请假系统 就那么几十个用户,两三中角色,那我们就可以用内置的,用内置的更加方便;

    二、IdentityService 基本使用

    package com.shyroke.activiti.firstActiviti;
    
    import org.activiti.engine.IdentityService;
    import org.activiti.engine.ProcessEngine;
    import org.activiti.engine.ProcessEngines;
    import org.activiti.engine.identity.Group;
    import org.activiti.engine.identity.User;
    import org.activiti.engine.impl.persistence.entity.GroupEntity;
    import org.activiti.engine.impl.persistence.entity.UserEntity;
    import org.junit.Test;
    
    public class IdentityTest {
        /**
         * 获取默认流程引擎实例,会自动读取activiti.cfg.xml文件
         */
        ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();
        
        
        /**
         * 添加用户测试
         */
        @Test
        public void saveUser() {
            IdentityService identityService=processEngine.getIdentityService();
            User user1=new UserEntity();
            user1.setId("张三");
            user1.setPassword("123");
            User user2=new UserEntity();
            user2.setId("李四");
            user2.setPassword("456");
            identityService.saveUser(user1);
            identityService.saveUser(user2);
        }
        
        /**
         * 删除用户
         */
        @Test
        public void deleteUser() {
            IdentityService identityService=processEngine.getIdentityService();
            identityService.deleteUser("李四");
        }
        
          /**
         * 测试添加组(角色)
         */
        @Test
        public void testSaveGroup(){
            IdentityService identityService=processEngine.getIdentityService();
            Group group=new GroupEntity(); // 实例化组实体
            group.setId("管理员");
            Group group2=new GroupEntity(); // 实例化组实体
            group2.setId("普通用户");
            identityService.saveGroup(group);
            identityService.saveGroup(group2);
        }
        
        /**
         * 测试删除组(角色)
         */
        @Test
        public void testDeleteGroup(){
            IdentityService identityService=processEngine.getIdentityService();
            identityService.deleteGroup("管理员");
        }
        
        /**
         * 测试添加用户和组(角色)关联关系
         */
        @Test
        public void testSaveMembership(){
            IdentityService identityService=processEngine.getIdentityService();
            identityService.createMembership("张三", "普通用户");
        }
        
        /**
         * 测试删除用户和组(角色)关联关系
         */
        @Test
        public void testDeleteMembership(){
            IdentityService identityService=processEngine.getIdentityService();
            identityService.deleteMembership("张三", "普通用户");
        }
        
    }
  • 相关阅读:
    Xcode And iOS9新特性
    AutoLayout
    本地化
    Map
    iOS多线程编程
    第三方抽屉效果
    iPad编程
    CoreData / MagicalRecord
    js清除单选框所选的值
    js获取背景颜色
  • 原文地址:https://www.cnblogs.com/shyroke/p/8005374.html
Copyright © 2020-2023  润新知