Activiti服务类- IdentityService服务类
转自:https://www.cnblogs.com/liuqing576598117/p/9815013.html
一、内置用户组(角色)设计表概念
- 用户和组(或者叫做角色),多对多关联,通过关联表实现
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("张三", "普通用户");
} }

Activiti服务类- IdentityService服务类的更多相关文章
- Spring容器装饰者模式应用之实现业务类与服务类自由组合的解决方式
在不论什么一个项目中都不可或缺的存在两种bean,一种是实现系统核心功能的bean,我们称之为业务类,第二种是与系统核心业务无关但同一时候又提供十分重要服务bean,我们称之为服务类.业务类的bean ...
- Windows服务 System.ServiceProcess.ServiceBase类
一.Windows服务 1.Windows服务应用程序是一种需要长期运行的应用程序,它适合服务器环境. 2.无用户界面,任何消息都会写进Windows事件日志. 3.随计算机启动而启动,不需要用户一定 ...
- 属性 每秒10万吞吐 并发 架构 设计 58最核心的帖子中心服务IMC 类目服务 入口层是Java研发的,聚合层与检索层都是C语言研发的 电商系统里的SKU扩展服务
小结: 1. 海量异构数据的存储问题 如何将不同品类,异构的数据统一存储起来呢? (1)全品类通用属性统一存储: (2)单品类特有属性,品类类型与通用属性json来进行存储: 2. 入口层是Java研 ...
- 避免在ASP.NET Core 3.0中为启动类注入服务
本篇是如何升级到ASP.NET Core 3.0系列文章的第二篇. Part 1 - 将.NET Standard 2.0类库转换为.NET Core 3.0类库 Part 2 - IHostingE ...
- 集成新版(5.17+)Activiti Modeler与Rest服务
声明: 此教程适合Activiti 5.17+版本. 本博客所涉及的内容均可在kft-activiti-demo中找到. 在线demo可以访问 http://demo.kafeitu.me:8080/ ...
- 微服务和SOA服务
微服务和SOA都被认为是基于服务的架构,这意味着这两种架构模式都非常强调将“服务”作为其架构中的首要组件,用于实现各种功能(包括业务层面和非业务层面).微服务和SOA是两种差异很大的架构模式,但是他们 ...
- 内省、JavaBean、PropertyDescriptor类、Introspector类、BeanUtils工具包、注解、Rentention、Target、注解的基本属性和高级属性
本文转载自:http://blog.sina.com.cn/s/blog_5d65a16901011kom.html 关键字:内省.JavaBean.PropertyDescriptor类.Int ...
- .net 根据匿名类生成实体类,根据datatable生成实体类,根据sql生成实体类
在开发中可能会遇到这几种情况 1.EF或LINQ查询出来的匿名对象在其它地方调用不方便,又懒的手动建实体类 2.通过datatable反射实体需要先建一个类 ,头痛 3.通过SQL语句返回的实体也需要 ...
- SuperSocket入门(三)-Telnet多服务实例和服务实例交互配置详解
在SuperSocket入门(二)中我们已经简单了解了通过配置App.config文件使用BootStrap启动SuperSocket服务.我们先来看一下上个案例中的基本配置文件示例: < ...
随机推荐
- Python 基础教程 | 菜鸟教程
https://www.runoob.com/python/python-install.html
- 03 HttpServletRequest_HttpServletResponse
HttpServletRequest:一次来自客户端的请求的相关信息 请求行 request.getMethod() 获取http请求方式 request.getRequestURI() 获取统一资源 ...
- (四)Maven中的仓库
一.分类 maven的仓库只有两大类: 1.本地仓库 2.远程仓库,在远程仓库中又分成了3种: 2.1 中央仓库 2.2 私服 2.3 其它公共库 二.本地仓库 本地仓库,顾名思义,就是Maven在本 ...
- 通用http状态码
400:Bad Request 表示客户端发出的请求不支持或无法识别,这通常是并未使用正确的请求语法.例如post或者put请求中资源的某个字段被设置为空的话,这将会导致一个Bad Request响应 ...
- ubuntu16.04安装aquatone
很坑 网上的那些教程 不知道怎么搞得.... 误人子弟 首先 一台服务器 ubuntu16.04 首先aquatone github https://github.com/michenr ...
- 【Day4】5.Request对象之Http Post请求案例分析
import urllib.parse as up import urllib.request as ur import json word = input('请输入要翻译的中文') data = { ...
- 3.Vue过滤器
1.概念: Vue.js 允许你自定义过滤器,可被用作一些常见文本的格式化,过滤器可以用在两个地方:mustache 插值和 v-bind 表达式.过滤器应该被添加在 JavaScript 表达式的尾 ...
- SQL SERVER 2008 数据库隔离级别代码演示
SQL SERVER 2008 数据库隔离级别代码演示 个隔离级别(其实这是SQL 工业标) 种隔离级别,本身没有优劣之分,完全取决于应用的场景. 本质上,他们是在 隔离性(紊乱程度) 和 灵活性 ...
- [转]10分钟了解分布式CAP、BASE理论
原文: https://www.cnblogs.com/chengtian/p/11278072.html ---------------------------------------------- ...
- linux实操_shell位置参数变量
基本语法: 脚本内容: 输出效果: