(十六)Activitivi5之内置用户组(角色)设计表以及IdentityService
一、内置用户组(角色)设计表概念
- 用户和组(或者叫做角色),多对多关联,通过关联表实现
act_id_user 用户表;
act_id_group 用户组表;
act_id_membership 用户与组的关联表,用来实现多对多;
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("张三", "普通用户");
} }
(十六)Activitivi5之内置用户组(角色)设计表以及IdentityService的更多相关文章
- ABP框架系列之四十六:(Setting-Management-设置管理)
Introduction Every application need to store some settings and use these settings in somewhere in th ...
- Kafka设计解析(十六)Kafka 0.11消息设计
转载自 huxihx,原文链接 [原创]Kafka 0.11消息设计 目录 一.Kafka消息层次设计 1. v1格式 2. v2格式 二.v1消息格式 三.v2消息格式 四.测试对比 Kafka 0 ...
- python3 第二十六章 - 内置函数之Number相关
数学函数 函数 返回值 ( 描述 ) 实例 abs(x) 返回数字的绝对值,如abs(-10) 返回 10 print(abs(-10)) =======输出:====== 10 ceil(x) 返回 ...
- python学习笔记(十六)内置函数zip、map、filter的使用
1.zip,就是把两个或者多个list,合并到一起,如果想同时循环2个list的时候,就使用zip.示例如下: l1 = ['a','b','c','e','f','g'] l2 = [,,] l3= ...
- 【linux高级程序设计】(第十六章)网络服务器应用设计
xinetd服务介绍 xinetd是Linux下的一个网络守候进程,用来统一管理网络负载不大的一组小型网路服务. 一些小型的网络服务,比如时间,telnet服务,不以守候进程出现,而是让xinetd服 ...
- 第十六章 提升用户体验 之 设计实现routes
1. 概述 ASP.NET MVC route 用来把URL映射到方法中的action,是用户和程序之间的桥梁. 本章内容包括:定义route处理URL Pattern.应用route限制.忽略URL ...
- 十六、dbms_space_admin(提供了局部管理表空间的功能)
1.概述 作用:提供了局部管理表空间的功能 2.包的组成 1).segment_verify作用:用于检查段的区映像是否与位图一致语法:dbms_space_admin.segment_verify( ...
- 赢友网络通用框架V10.0.0(WinuAppSoft) 基础框架设计表
/* * 版权所有:赢友网络(http://www.winu.net/) * 开发人员:新生帝(JsonLei) * 设计名称:赢友网络通用框架V10.0.0(WinuAppSoft) * 设计时间: ...
- 二十六. Python基础(26)--类的内置特殊属性和方法
二十六. Python基础(26)--类的内置特殊属性和方法 ● 知识框架 ● 类的内置方法/魔法方法案例1: 单例设计模式 # 类的魔法方法 # 案例1: 单例设计模式 class Teacher: ...
随机推荐
- HTML中调用带有SoapHeader头的WebService的两种方法
第一种: function CallWebMethodWithHeader() { var soapXML = "<soap:Envelope xmlns:xsi='http://ww ...
- 你了解 Virtual DOM 吗?解释一下它的工作原理
Virtual DOM 是一个轻量级的 JavaScript 对象,它最初只是 real DOM 的副本.它是一个节点树,它将元素.它们的属性和内容作为对象及其属性. React 的渲染函数从 Rea ...
- spring (反射+代理+DI+AOP)
spring https://baijiahao.baidu.com/s?id=1620606848227713760&wfr=spider&for=pc 反射 https://bl ...
- Carve Visual Studio2015编译
下载Carve库 https://github.com/folded/carve 目录结构如下: 用Visual Studio2015打开,点击右键,生成即可 在bin目录下生成了 .lib文件 ...
- EasyUI动态展示用户信息
业务需求:用户登录后展示用户名.用户对应的角色.EasyUI只不过是一个前端的框架,封装了一些组件和样式,你可以用jsp直接调后台获取到用户信息展示,但我这里想用html页面,用目前流行的说法:前后端 ...
- 阶段5 3.微服务项目【学成在线】_day18 用户授权_19-微服务之间认证-Feign 拦截器
4.2 Feign 拦截器 4.2.1 定义Feign拦截器 微服务之间使用feign进行远程调用,采用feign拦截器实现远程调用携带JWT. 在common工程添加依赖: <dependen ...
- Qwidget::update
void QWidget::update ()分析重绘事件激活 1看看手册中这段话 void QWidget::update () [slot] Updates the widget unless u ...
- Github排名靠前的iOS库
//iOS第三方开源库的吐槽和备忘 http://blog.ibireme.com/2013/09/23/ios-third-party-libs/#more-41361 //整理了一份Github上 ...
- asp.net怎样实现批量下载文件(非打包形式下载)
问题: 我想实现的是一个一个的下载. 比如我有一个文件列表.通过checkbox选择.通过单击下载按钮下载选中文件. 百度到都是用打包形式实现批量下载. 这是我自己写的代码,但是点击下载后只能下载一个 ...
- Django——models中导入数据重复的解决办法
如果你导入数据过多,导入时出错了,或者你手动停止了,导入了一部分,还有一部分没有导入.或者你再次运行上面的命令,你会发现数据重复了,怎么办呢? django.db.models 中还有一个函数叫 ge ...