转自:https://www.cnblogs.com/liuqing576598117/p/9815013.html

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

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

Activiti服务类- IdentityService服务类的更多相关文章

  1. Spring容器装饰者模式应用之实现业务类与服务类自由组合的解决方式

    在不论什么一个项目中都不可或缺的存在两种bean,一种是实现系统核心功能的bean,我们称之为业务类,第二种是与系统核心业务无关但同一时候又提供十分重要服务bean,我们称之为服务类.业务类的bean ...

  2. Windows服务 System.ServiceProcess.ServiceBase类

    一.Windows服务 1.Windows服务应用程序是一种需要长期运行的应用程序,它适合服务器环境. 2.无用户界面,任何消息都会写进Windows事件日志. 3.随计算机启动而启动,不需要用户一定 ...

  3. 属性 每秒10万吞吐 并发 架构 设计 58最核心的帖子中心服务IMC 类目服务 入口层是Java研发的,聚合层与检索层都是C语言研发的 电商系统里的SKU扩展服务

    小结: 1. 海量异构数据的存储问题 如何将不同品类,异构的数据统一存储起来呢? (1)全品类通用属性统一存储: (2)单品类特有属性,品类类型与通用属性json来进行存储: 2. 入口层是Java研 ...

  4. 避免在ASP.NET Core 3.0中为启动类注入服务

    本篇是如何升级到ASP.NET Core 3.0系列文章的第二篇. Part 1 - 将.NET Standard 2.0类库转换为.NET Core 3.0类库 Part 2 - IHostingE ...

  5. 集成新版(5.17+)Activiti Modeler与Rest服务

    声明: 此教程适合Activiti 5.17+版本. 本博客所涉及的内容均可在kft-activiti-demo中找到. 在线demo可以访问 http://demo.kafeitu.me:8080/ ...

  6. 微服务和SOA服务

    微服务和SOA都被认为是基于服务的架构,这意味着这两种架构模式都非常强调将“服务”作为其架构中的首要组件,用于实现各种功能(包括业务层面和非业务层面).微服务和SOA是两种差异很大的架构模式,但是他们 ...

  7. 内省、JavaBean、PropertyDescriptor类、Introspector类、BeanUtils工具包、注解、Rentention、Target、注解的基本属性和高级属性

      本文转载自:http://blog.sina.com.cn/s/blog_5d65a16901011kom.html 关键字:内省.JavaBean.PropertyDescriptor类.Int ...

  8. .net 根据匿名类生成实体类,根据datatable生成实体类,根据sql生成实体类

    在开发中可能会遇到这几种情况 1.EF或LINQ查询出来的匿名对象在其它地方调用不方便,又懒的手动建实体类 2.通过datatable反射实体需要先建一个类 ,头痛 3.通过SQL语句返回的实体也需要 ...

  9. SuperSocket入门(三)-Telnet多服务实例和服务实例交互配置详解

        在SuperSocket入门(二)中我们已经简单了解了通过配置App.config文件使用BootStrap启动SuperSocket服务.我们先来看一下上个案例中的基本配置文件示例: < ...

随机推荐

  1. [MA] 有关 Likelihood

    当提到 Linear Regression 或是 Logistic regression 等关键词时,都会涉及一个概念,叫做 Likelihood Function 以及 Maximum Likeli ...

  2. python学习-44 程序的解耦 (不是特别懂的,回头在复习)

    import os def file_handler(backend_data,res=None,type='fetch'): # 查询功能 if type == 'fetch': with open ...

  3. Python--jsonpath

    JsonPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种原因实现保本:JavaScript/Python/PHP和Java. 使用方法如: import jsonpathre ...

  4. C++浮点数据的输出控制

    #include <iostream> #include <Windows.h> using namespace std; int main(void) { double va ...

  5. 20190705-Python数据驱动之DDT

    DDT ddt 是第三方模块,需安装, pip install ddt DDT包含的装饰器 包含一个类装饰器@ddt和两个方法装饰器@data和@file_data 通常情况下,@data中的数据按照 ...

  6. 解决springboot乱码和window cmd乱码

    @Bean public FilterRegistrationBean filterRegistrationBean() { FilterRegistrationBean registration = ...

  7. Luogu5363 SDOI2019移动金币(博弈+动态规划)

    容易想到可以转化为一个有m堆石子,石子总数不超过n-m的阶梯博弈.阶梯博弈的结论是相当于只考虑奇数层石子的nim游戏. nim和不为0不好算,于是用总方案数减掉nim和为0的方案数.然后考虑dp,按位 ...

  8. Python 的 Mixin 类(转)

    转1:https://www.cnblogs.com/aademeng/articles/7262520.html 转2:https://blog.csdn.net/u010377372/articl ...

  9. php 获取某个月的周一

    今天有个朋友问了一个问题,最后解决了下,先整理记下来,后面用到了再说 function getMonday($month = ''){ if(empty($month)){ $month = date ...

  10. 【Transact-SQL】找出不包含字母、不包含汉字的数据

    原文:[Transact-SQL]找出不包含字母.不包含汉字的数据 测试的同事,让我帮忙写个sql语句,找出表中xx列不包含汉字的行. 下面的代码就能实现. IF EXISTS(SELECT * FR ...