activiti学习-用户与用户组
activiti学习笔记3-用户与用户组
(本博客都是纯文本手工代码,错误难免,需要在eclipse中自己调整错误代码)
一、表结构
acitiviti建立了默认用户表:
1,从表的名字可以一目了然的看到,activiti其实提供了一个简单的用户表结构,用户组与用户之间通过映射表进行关联,用户信息是一个单独的表;
2,如果要扩展成权限表,只需要增加一个权限表,然后和用户表进行映射,或者和用户组进行映射,即可成为一个简单的权限管理结构表;
3,用户体系表和activiti的其他表没有外键关联,说明acitivi允许你使用自己创建的用户体系表,这样可以和spring security或者shiro容易的结合在一起;
二、activiti操作用户组与用户表
1,创建用户组:
|
1
2
3
4
5
6
7
8
9
10
11
|
//newGroup方法创建Group实例Group group = identityService.newGroup("1");group.setName("经理组");group.setType("manager");// 自定义方法保存用户组public void createGroup(IdentityService identityService, String id,String name, String type) { Group group = identityService.newGroup(id); group.setName(name); group.setType(type); identityService.saveGroup(group);}createGroup(identityService, "1", "经理组", "typeManager"); |
2,保存、删除用户组
|
1
2
|
identityService.saveGroup(group);identityService.deleteGroup("1"); |
3,查询用户组
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//调用listPage方法,从索引为2的记录开始,查询3条记录List<Group> datas = identityService.createGroupQuery().list(); for (Group data : datas) { System.out.println(data.getId() + "---" + data.getName() + " ");}//其他类似查询方法identityService.createGroupQuery().listPage();//分页返回查询结果identityService.createGroupQuery().count();//结果总数identityService.createGroupQuery().groupName("managerA").singleResult();//查询到多个时会抛出异常identityService.createGroupQuery().groupNameLike("%managerA%").singleResult();//identityService.createGroupQuery().groupId("1").singleResult();//identityService.createGroupQuery().groupType("typeA").singleResult();//identityService.createGroupQuery().orderByGroupId().asc().list();//结果升序identityService.createGroupQuery().orderByGroupName().desc().list();//结果降序 |
4,添加,保存,删除用户
|
1
2
3
|
User user = identityService.newUser("新用户ID");identityService.saveUser(user);identityService.deleteUser(id); |
5,验证用户密码
|
1
|
identityService。checkPassword("用户的ID","用户密码"); |
6,用户数据查询
|
1
2
|
//与group查询类似List<User> datas = identityService.createGroupUser().list(); |
7,设置认证用户
|
1
|
identityService.setAuthenticatedUserId("用户ID"); |
认证用户的作用是设置流程发起人:
在流程开始之前设置,会自动在表ACT_HI_PROCINST 中的START_USER_ID_中设置用户ID:
|
1
2
3
4
5
6
7
|
//流程发起前设置发起人,记录在流程历史中identityService.setAuthenticatedUserId("kitty");//开始流程runtimeService.startProcessInstanceByKey("XML中的ID");//查询流程发起人logger.info(historyService.createHistoricProcessInstanceQuery() .startedBy("ketty").singleResult().getProcessDefinitionId()); |
applyUserId
扩展:设置BPMN开始节点initiator初始化参数applyUserId:
|
1
2
|
//XML图中设置其实节点初始化参数,其实就是节点人<startevent id="startevent1" name="Start" activiti:initiator="applyUserId"></startevent> |
接受参数applyUserId,流程返回发起人(<userTask>中):
|
1
|
activiti:assignee="${applyUserId}" |
8,设置用户信息INFO表
|
1
2
3
4
|
//设置用户info信息,设置后type字段变成userinfoidentityService.setUserInfo("INFO表USER_ID","INFO表KEY","INFO表VALUE");//设置账号信息,设置后TYPE字段变成account,一个用户可以用多个账号identityService.setUserAccount("INFO表USER_ID","INFO表KEY","INFO表VALUE"); |
9,查询用户信息INFO表
|
1
2
|
identityService.getUserInfo("INFO表USER_ID","INFO表KEY");identityService.getUserAccount("INFO表USER_ID","INFO表KEY");//不推荐使用 |
二、用户与用户组关系
1,设置用户与用户组关系
|
1
2
|
identityService.createMembership("用户ID","组ID");//绑定identityService.deleteMembership("用户ID","组ID");//删除 |
2,查询用户与用户组关系
|
1
2
|
List<Group> datas = identityService.createGroupQuery().groupMember(user.getId()).list();List<User> datas = identityService.createUserQuery().MemberOfGroup(group.getId()).list(); |
三、创建用户与用户组通用方法
1,用户:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
//创建用户方法public void creatUser(IdentityService identityService, String id, String first, String email, String passwd) { // 使用newUser方法创建User实例 User user = identityService.newUser(id); // 设置用户的各个属性 user.setFirstName(first); user.setLastName("none"); user.setEmail(email); user.setPassword(passwd); // 使用saveUser方法保存用户 identityService.saveUser(user);}//具体创建IdentityService identityService = engine.getIdentityService();creatUser(identityService, "user1", "德玛西亚", "abc@163.com", "123"); |
2,组:
|
1
2
3
4
5
6
7
8
9
10
11
|
// 将用户组数据保存到数据库中public void createGroup(IdentityService identityService, String id,String name, String type) { // 调用newGroup方法创建Group实例 Group group = identityService.newGroup(id); group.setName(name); group.setType(type); identityService.saveGroup(group);}// 写入用户组数据IdentityService identityService = engine.getIdentityService();createGroup(identityService, "group1", "Group A", "type A"); |
activiti学习-用户与用户组的更多相关文章
- Linux基础学习 | 用户及用户组
Linux 用户及用户组 目录 一.用户 添加用户实例 二.用户组 添加用户组实例 三.用户及用户组文件 四.各命令参数对照 一.用户 Linux系统是一个多用户多任务的分时操作系统.任何 ...
- Linux学习 -- 用户和用户组管理
1 用户配置文件 1.1 用户信息文件 /etc/passwd 查看帮助 man 5 passwd -- account:password:UID:GID:GECOS:directory:shell ...
- Linux常用命令学习8---(用户和用户组管理)
1.用户和用户组 用户和用户组概念 用户:使用操作系统的人(Linux支持多个用户在同一时间登陆同一个操作系统) 用户组:具有相同权限的一组用户(Linux系统中可 ...
- Linux用户、用户组、文件权限学习笔记
最近打算更仔细学习一下linux操作系统.先是恶补了一下用户.用户组.文件权限这三样比较重要的知识.学习这几样东西,得先掌握linux的权限系统相关知识.linux的权限系统主要是由用户.用户组和权限 ...
- Linux学习笔记(2)-用户和用户组
用户(user)和用户组(group)概念 linux是一个多用户操作系统,他允许多个用户登录linux系统进行各自不同的操作.为了方便管理用户不同的权限,组的概念应用而生,一个组可以包含多个用户,共 ...
- Linux学习笔记之Linux添加/删除用户和用户组
本文总结了Linux添加或者删除用户和用户组时常用的一些命令和参数. 1.建用户: adduser phpq //新建phpq用户 passwd phpq //给phpq用户设置密码 2.建工作组 g ...
- Linux基础学习(7)--用户和用户组管理
第七章——用户和用户组管理 一.用户配置文件 1.用户信息文件/etc/passwd: (1)用户管理简介:所以越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范. ...
- Linux学习笔记06—系统用户及用户组的管理
一.认识/etc/passwd和/etc/shadow 1./etc/passwd 由 ‘:’ 分割成7个字段,每个字段的具体含义是: 用户名 存放账号的口令:现在存放在/etc/shadow下,在这 ...
- Linux——CentOS7添加/删除用户和用户组(学习笔记)
1.新建用户 adduser testuser //新建testuser 用户 passwd testuser //给testuser 用户设置密码 2.建工作组 groupadd testgroup ...
随机推荐
- [ Continuously Update ] This is an *Index Page*.
The links below present papers in certain fields. Despite overlaps exist, their emphasis is markedly ...
- mongodb redis memcache 对比
从以下几个维度,对 Redis.memcache.MongoDB 做了对比. 1.性能 都比较高,性能对我们来说应该都不是瓶颈. 总体来讲,TPS 方面 redis 和 memcache 差不多,要大 ...
- pygame (1) 移动小乌龟
小乌龟图片素材: 第一个简单的小游戏: 小乌龟会不断的移动,并且每当到达窗口的左右边界的时候,还会自动的掉头. 源码: import pygame import sys# 导入sys模块,退出时使用 ...
- Scrum立会报告+燃尽图(十月二十六日总第十七次)
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2246 项目地址:https://git.coding.net/zhang ...
- 欢迎来怼--第二十三次Scrum会议
一.小组信息 队名:欢迎来怼 小组成员 队长:田继平 成员:李圆圆,葛美义,王伟东,姜珊,邵朔,阚博文 小组照片 二.开会信息 时间:2017/11/11 17:20~17:55,总计35min. 地 ...
- 敏捷开发 Scrum 综述
敏捷开发 Scrum 综述 这一星期学习了敏捷开发,然后阅读了相关的书籍,从网上查找了很多相关的资料,对敏捷开发scrum有了更加深刻了理解,对敏捷开发做了如下总结: 一.什么是敏捷开发? 敏捷开发提 ...
- unrecognized selector send to instancd 快速定位
1.在Debug菜单中Breakpoints->Create Symbolic Breakpoint; 2.在Symbolic中填写方法签名: -[NSObject(NSObject) does ...
- lintcode-477-被围绕的区域
477-被围绕的区域 给一个二维的矩阵,包含 'X' 和 'O', 找到所有被 'X' 围绕的区域,并用 'X' 填充满. 样例 给出二维矩阵: X X X X X O O X X X O X X O ...
- lintcode-407-加一
407-加一 给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组. 该数字按照大小进行排列,最大的数在列表的最前面. 样例 给定 [1,2,3] 表示 123, 返回 [1,2,4 ...
- C++ Primer Plus学习:第十五章
第十五章 友元.异常和其他 友元 友元类 表 0-1 class Tv { public: friend class Remote; } Remote类可以使用Tv的数据成员,Remote类在Tv类后 ...