activiti-用户与用户组
https://my.oschina.net/acitiviti/blog/283892
activiti学习笔记3-用户与用户组
(本博客都是纯文本手工代码,错误难免,需要在eclipse中自己调整错误代码)
activiti默认建立用户表,默认的用户表可以构建简单的用户管理功能。
一、表结构
acitiviti建立了默认用户表:

1,从表的名字可以一目了然的看到,activiti其实提供了一个简单的用户表结构,用户组与用户之间通过映射表进行关联,用户信息是一个单独的表;
2,如果要扩展成权限表,只需要增加一个权限表,然后和用户表进行映射,或者和用户组进行映射,即可成为一个简单的权限管理结构表;
3,用户体系表和activiti的其他表没有外键关联,说明acitivi允许你使用自己创建的用户体系表,这样可以和spring security或者shiro容易的结合在一起;
二、操作用户组与用户表
1,创建用户组:
//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,保存、删除用户组
identityService.saveGroup(group);
identityService.deleteGroup("1");
3,查询用户组
//调用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,添加,保存,删除用户
User user = identityService.newUser("新用户ID");
identityService.saveUser(user);
identityService.deleteUser(id);
5,验证用户密码
identityService。checkPassword("用户的ID","用户密码");
6,用户数据查询
//与group查询类似
List<User> datas = identityService.createGroupUser().list();
7,设置认证用户
identityService.setAuthenticatedUserId("用户ID");
认证用户的作用是设置流程发起人:
在流程开始之前设置,会自动在表ACT_HI_PROCINST 中的START_USER_ID_中设置用户ID:
//流程发起前设置发起人,记录在流程历史中
identityService.setAuthenticatedUserId("kitty");
//开始流程
runtimeService.startProcessInstanceByKey("XML中的ID");
//查询流程发起人
logger.info(historyService.createHistoricProcessInstanceQuery()
.startedBy("ketty").singleResult().getProcessDefinitionId());
applyUserId
扩展:设置BPMN开始节点initiator初始化参数applyUserId:
//XML图中设置其实节点初始化参数,其实就是节点人
<startevent id="startevent1" name="Start" activiti:initiator="applyUserId"></startevent>
接受参数applyUserId,流程返回发起人(<userTask>中):
activiti:assignee="${applyUserId}"
8,设置用户信息INFO表
//设置用户info信息,设置后type字段变成userinfo
identityService.setUserInfo("INFO表USER_ID","INFO表KEY","INFO表VALUE");
//设置账号信息,设置后TYPE字段变成account,一个用户可以用多个账号
identityService.setUserAccount("INFO表USER_ID","INFO表KEY","INFO表VALUE");
9,查询用户信息INFO表
identityService.getUserInfo("INFO表USER_ID","INFO表KEY");
identityService.getUserAccount("INFO表USER_ID","INFO表KEY");//不推荐使用
二、用户与用户组关系
1,设置用户与用户组关系
identityService.createMembership("用户ID","组ID");//绑定
identityService.deleteMembership("用户ID","组ID");//删除
2,查询用户与用户组关系
List<Group> datas = identityService.createGroupQuery().groupMember(user.getId()).list();
List<User> datas = identityService.createUserQuery().MemberOfGroup(group.getId()).list();
三、创建用户与用户组通用方法
1,用户
//创建用户方法
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,组
// 将用户组数据保存到数据库中
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-用户与用户组的更多相关文章
- Liferay7 BPM门户开发之46: 集成Activiti用户、用户组、成员关系同步
在实际的BPM集成开发过程中,Liferay和Activiti这两个异构的系统之间,用户.组的同步需求非常重要,用来实现签收组的概念,比如指定签收组.会签.抢签都需要用到. Activiti可以通过自 ...
- activiti学习-用户与用户组
activiti学习笔记3-用户与用户组 2015年05月07日 14:43:06 cq1982 阅读数:4142更多 个人分类: activiti工作流引擎 (本博客都是纯文本手工代码,错误难免 ...
- Linux 系统常用命令汇总(三) 用户和用户组管理
用户和用户组管理 命令 选项 注解 示例 useradd [选项] 用户名 新建用户 创建一个名为tester的用户,并指定他的UID为555,指定加入test群,指定其使用C-shell: use ...
- 【荐】如何规划 Nginx 网站目录的权限(用户,用户组,ssh,sftp)
从上一篇文章:PHP网站(nginx.php-fpm.mysql) 用户权限解析,可以学习了解到,nginx 和 php-fpm 的用户是如何运作的. 有个工作场景: 1.公司的一台 CentOS 服 ...
- Linux中的用户和用户组
在Linux中,有三种用户: Root 用户:也称为超级用户,对系统拥有完全的控制权限.超级用户可以不受限制的运行任何命令.Root 用户可以看做是系统管理员. 系统用户:系统用户是Linux运行 ...
- MVC4做网站后台:用户管理 ——用户组
用户管理这块包含用户和用户组两部分. 用户组包括浏览 用户组列表,添加.修改.删除用户组等.按照前面思路系统是依据用户组来判断用户权限的,用户组的最主要目的是划分权限.权限这块以后单独在做. 下面实现 ...
- Linux的用户及用户组
一./etc/group下存储当前系统中所有的用户组信息 -Group: x : 123 :abc,def,xyz -组名称:组密码占位符:组编号:组中用户名列表 二./etc/gshado ...
- Linux 新建用户、用户组,给用户分配权限(chown、useradd、groupadd、userdel、usermod、passwd、groupdel)
Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行 ...
- Linux常用命令学习8---(用户和用户组管理)
1.用户和用户组 用户和用户组概念 用户:使用操作系统的人(Linux支持多个用户在同一时间登陆同一个操作系统) 用户组:具有相同权限的一组用户(Linux系统中可 ...
- Linux 用户和用户组管理
Linux 用户和用户组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统. 用户的账号一方面可以帮助 ...
随机推荐
- Objective-C RunTime 学习笔记 之 消息转发流程
1) 当向某个对象发送消息时,先从cache(cache_t)中查找方法对象(method_t),如果找到则进行回调:否则通过查找对象的类(元类)定义中方法列表,一直追溯到NSObject, 如果找到 ...
- 编程规范(初尝ES6与webpack)
//针对ES6规范(第1-5条)start1.块级作用域let/const取代var:在let和const之间,建议优先使用const,尤其是在全局环境,不应该设置变量,只应设置常量. 2.解构赋值1 ...
- 解决SVN提交和更新代码冲突?
解决冲突有三种选择: 1.放弃自己的更新,使用svn revert(回滚),然后提交.在这种方式下不需要使用svn resolved(解决) 2.放弃自己的更新,使用别人的更新.使用最新获取的版本覆盖 ...
- Oarcle 之连接查询
连接查询:连接查询是关系数据库中最主要的查询,主要包括内连接.外连接和交叉连接等.通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的 ...
- Swagger结合mustache模板生成后台接口代码、以及前后台建模代码
之前项目中使用的的thrift来建模,维护前后台模型以及rest接口,前台使用的是angular2: 但是使用thrift只能生成建模,后台的rest接口的Controller文件还是需要手动去写,一 ...
- linux随
Linux 1991芬兰大学生linus 安全 开源 免费 可靠 (堡垒机)(跳转机) 多用户 多任务 处理并发及速度比windows好很多 命令:ifconfig pwd ls -a -l -t(时 ...
- Java笔记 #06# 自定义简易参数校验框架——EasyValidator
索引 一.校验效果演示 二.校验器定义示例 定义一个最简单的校验器 正则校验器 三.EasyValidator的实现 四.更好的应用姿势——配合注解和面向切面 “参数校验”属于比较无聊但是又非常硬性的 ...
- 【题解】Luogu CF817F MEX Queries
原题传送门 817,我突然想到了某8位质数 这题珂以说是珂朵莉树的模板 三个操作都肥肠简单,前两个区间赋值,第三个区间0变1,1变0 每次输出从头开始扫描就行(我忘了珂朵莉树的性质,竟然还动态维护最左 ...
- word模板导出的几种方式:第一种:占位符替换模板导出(只适用于word中含有表格形式的)
1.占位符替换模板导出(只适用于word中含有表格形式的): /// <summary> /// 使用替换模板进行到处word文件 /// </summary> public ...
- Bootstrap3基础 栅格系统 列中有行,行中有列
内容 参数 OS Windows 10 x64 browser Firefox 65.0.2 framework Bootstrap 3.3.7 editor ...