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

  • 用户和组(或者叫做角色),多对多关联,通过关联表实现
  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 基本使用

  1. package com.shyroke.activiti.firstActiviti;
  2.  
  3. import org.activiti.engine.IdentityService;
  4. import org.activiti.engine.ProcessEngine;
  5. import org.activiti.engine.ProcessEngines;
  6. import org.activiti.engine.identity.Group;
  7. import org.activiti.engine.identity.User;
  8. import org.activiti.engine.impl.persistence.entity.GroupEntity;
  9. import org.activiti.engine.impl.persistence.entity.UserEntity;
  10. import org.junit.Test;
  11.  
  12. public class IdentityTest {
  13. /**
  14. * 获取默认流程引擎实例,会自动读取activiti.cfg.xml文件
  15. */
  16. ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();
  17.  
  18. /**
  19. * 添加用户测试
  20. */
  21. @Test
  22. public void saveUser() {
  23. IdentityService identityService=processEngine.getIdentityService();
  24. User user1=new UserEntity();
  25. user1.setId("张三");
  26. user1.setPassword("123");
  27. User user2=new UserEntity();
  28. user2.setId("李四");
  29. user2.setPassword("456");
  30. identityService.saveUser(user1);
  31. identityService.saveUser(user2);
  32. }
  33.  
  34. /**
  35. * 删除用户
  36. */
  37. @Test
  38. public void deleteUser() {
  39. IdentityService identityService=processEngine.getIdentityService();
  40. identityService.deleteUser("李四");
  41. }
  42.  
  43. /**
  44. * 测试添加组(角色)
  45. */
  46. @Test
  47. public void testSaveGroup(){
  48. IdentityService identityService=processEngine.getIdentityService();
  49. Group group=new GroupEntity(); // 实例化组实体
  50. group.setId("管理员");
  51. Group group2=new GroupEntity(); // 实例化组实体
  52. group2.setId("普通用户");
  53. identityService.saveGroup(group);
  54. identityService.saveGroup(group2);
  55. }
  56.  
  57. /**
  58. * 测试删除组(角色)
  59. */
  60. @Test
  61. public void testDeleteGroup(){
  62. IdentityService identityService=processEngine.getIdentityService();
  63. identityService.deleteGroup("管理员");
  64. }
  65.  
  66. /**
  67. * 测试添加用户和组(角色)关联关系
  68. */
  69. @Test
  70. public void testSaveMembership(){
  71. IdentityService identityService=processEngine.getIdentityService();
  72. identityService.createMembership("张三", "普通用户");
  73. }
  74.  
  75. /**
  76. * 测试删除用户和组(角色)关联关系
  77. */
  78. @Test
  79. public void testDeleteMembership(){
  80. IdentityService identityService=processEngine.getIdentityService();
  81. identityService.deleteMembership("张三", "普通用户");
  82. }
  83.  
  84. }

(十六)Activitivi5之内置用户组(角色)设计表以及IdentityService的更多相关文章

  1. ABP框架系列之四十六:(Setting-Management-设置管理)

    Introduction Every application need to store some settings and use these settings in somewhere in th ...

  2. Kafka设计解析(十六)Kafka 0.11消息设计

    转载自 huxihx,原文链接 [原创]Kafka 0.11消息设计 目录 一.Kafka消息层次设计 1. v1格式 2. v2格式 二.v1消息格式 三.v2消息格式 四.测试对比 Kafka 0 ...

  3. python3 第二十六章 - 内置函数之Number相关

    数学函数 函数 返回值 ( 描述 ) 实例 abs(x) 返回数字的绝对值,如abs(-10) 返回 10 print(abs(-10)) =======输出:====== 10 ceil(x) 返回 ...

  4. python学习笔记(十六)内置函数zip、map、filter的使用

    1.zip,就是把两个或者多个list,合并到一起,如果想同时循环2个list的时候,就使用zip.示例如下: l1 = ['a','b','c','e','f','g'] l2 = [,,] l3= ...

  5. 【linux高级程序设计】(第十六章)网络服务器应用设计

    xinetd服务介绍 xinetd是Linux下的一个网络守候进程,用来统一管理网络负载不大的一组小型网路服务. 一些小型的网络服务,比如时间,telnet服务,不以守候进程出现,而是让xinetd服 ...

  6. 第十六章 提升用户体验 之 设计实现routes

    1. 概述 ASP.NET MVC route 用来把URL映射到方法中的action,是用户和程序之间的桥梁. 本章内容包括:定义route处理URL Pattern.应用route限制.忽略URL ...

  7. 十六、dbms_space_admin(提供了局部管理表空间的功能)

    1.概述 作用:提供了局部管理表空间的功能 2.包的组成 1).segment_verify作用:用于检查段的区映像是否与位图一致语法:dbms_space_admin.segment_verify( ...

  8. 赢友网络通用框架V10.0.0(WinuAppSoft) 基础框架设计表

    /* * 版权所有:赢友网络(http://www.winu.net/) * 开发人员:新生帝(JsonLei) * 设计名称:赢友网络通用框架V10.0.0(WinuAppSoft) * 设计时间: ...

  9. 二十六. Python基础(26)--类的内置特殊属性和方法

    二十六. Python基础(26)--类的内置特殊属性和方法 ● 知识框架 ● 类的内置方法/魔法方法案例1: 单例设计模式 # 类的魔法方法 # 案例1: 单例设计模式 class Teacher: ...

随机推荐

  1. Alpha冲刺(4/4)

    队名:福大帮 组长博客链接:https://www.cnblogs.com/mhq-mhq/p/11913386.html 作业博客 :https://edu.cnblogs.com/campus/f ...

  2. js的基本数据类型

    Undefined.Null.Boolean.Number.String.ECMAScript 2015 新增:Symbol(创建后独一无二且不可变的数据类型 )

  3. OpenTK学习笔记(3)-你好!窗体!

    参考:http://dreamstatecoding.blogspot.com/2017/01/opengl-4-with-opentk-in-c-part-1.html http://www.cnb ...

  4. golang基于当前1.9版本进行源码编译升级到1.10

    一.起因 golang出了最新的1.10版本,而刚出的vgo也是需要基于该最新版本的.为了测试vgo,因此需要将我的v1.9升级到v1.10版本. 安装过golang的同学都知道,golang常用的有 ...

  5. JavaScript WebSocket 使用总结

    翻看之前写的 Highcharts使用总结  和 前后台交互之传参方式,想对 WebSocket 单独写一个使用总结. 一.认识 WebSocket . WebSocket 是 H5 新出的一种协议, ...

  6. JAVA_SWT 事件的四种写法

    一:匿名内部类写法 在一个组件下加入以下语句 text.addMouseListener(new MouseAdapter(){ public void mouseDoubleClich(MouseE ...

  7. 多网卡下如何配置指定IP走某个路由器(适用于外网不通,但是钉钉服务器通的情况)

    # 多网卡下如何配置指定IP走某个路由器(适用于外网不通,但是钉钉服务器通的情况) ## 如何查看一个进程建立的网络连接,方式一 - 查看进程pid `ps -ef|grep dingtalk`- 查 ...

  8. SSD论文学习

    SSD: Single Shot MultiBox Detector——目标检测 参考https://blog.csdn.net/u010167269/article/details/52563573 ...

  9. c# 扫描局域网IP列表的几种方法

    很多软件都有获知局域网在线计算机IP的功能,但是在.net怎么实现呢,有好多方法, 下面我给大家介绍几种,供大家参考. 1.微软社区上介绍了使用Active Directory 来遍历局域网 利用Di ...

  10. Promise和Generator

    异同: 1.promise解决的是串行的嵌套异步问题. 2.yield把Generator Function切割为有多个出口的Generation. 3.Promise是社区的研发产物,yield是E ...