activiti学习笔记3-用户与用户组

2015年05月07日 14:43:06 cq1982 阅读数:4142更多

个人分类: activiti工作流引擎
 

(本博客都是纯文本手工代码,错误难免,需要在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字段变成userinfo
identityService.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学习-用户与用户组的更多相关文章

  1. Linux基础学习 | 用户及用户组

    Linux 用户及用户组 目录 一.用户    添加用户实例 二.用户组    添加用户组实例 三.用户及用户组文件 四.各命令参数对照 一.用户 Linux系统是一个多用户多任务的分时操作系统.任何 ...

  2. Linux学习 -- 用户和用户组管理

    1 用户配置文件 1.1 用户信息文件 /etc/passwd 查看帮助 man 5 passwd -- account:password:UID:GID:GECOS:directory:shell ...

  3. Linux常用命令学习8---(用户和用户组管理)

    1.用户和用户组     用户和用户组概念        用户:使用操作系统的人(Linux支持多个用户在同一时间登陆同一个操作系统)        用户组:具有相同权限的一组用户(Linux系统中可 ...

  4. Linux用户、用户组、文件权限学习笔记

    最近打算更仔细学习一下linux操作系统.先是恶补了一下用户.用户组.文件权限这三样比较重要的知识.学习这几样东西,得先掌握linux的权限系统相关知识.linux的权限系统主要是由用户.用户组和权限 ...

  5. Linux学习笔记(2)-用户和用户组

    用户(user)和用户组(group)概念 linux是一个多用户操作系统,他允许多个用户登录linux系统进行各自不同的操作.为了方便管理用户不同的权限,组的概念应用而生,一个组可以包含多个用户,共 ...

  6. Linux学习笔记之Linux添加/删除用户和用户组

    本文总结了Linux添加或者删除用户和用户组时常用的一些命令和参数. 1.建用户: adduser phpq //新建phpq用户 passwd phpq //给phpq用户设置密码 2.建工作组 g ...

  7. Linux基础学习(7)--用户和用户组管理

    第七章——用户和用户组管理 一.用户配置文件 1.用户信息文件/etc/passwd: (1)用户管理简介:所以越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范.   ...

  8. Linux学习笔记06—系统用户及用户组的管理

    一.认识/etc/passwd和/etc/shadow 1./etc/passwd 由 ‘:’ 分割成7个字段,每个字段的具体含义是: 用户名 存放账号的口令:现在存放在/etc/shadow下,在这 ...

  9. Linux——CentOS7添加/删除用户和用户组(学习笔记)

    1.新建用户 adduser testuser //新建testuser 用户 passwd testuser //给testuser 用户设置密码 2.建工作组 groupadd testgroup ...

随机推荐

  1. NO.06--聊一聊“币”吧!

    近期博主更新的频率明显慢来 ,一来是最近的工作比较忙碌,几个项目几乎同时要上线.二来是在思考是不是把我平时生活中的一些事情写进来博客,不只是分享分享技术. 趁着区块链.比特币火爆,博主也算是略有涉猎, ...

  2. Eclipse将Java项目打成jar工具包

    jar包:就是别人已经写好的一些类,然后将这些类进行打包,你可以将这些jar包引入你的项目中,然后就可以直接使用这些jar包中的类和属性以及方法. jar包可分为可执行jar包和jar工具包,在这里, ...

  3. Zookeeper--java操作zookeeper

    如果是使用java操作zookeeper,zookeeper的javaclient 使我们更轻松的去对zookeeper进行各种操作,我们引入zookeeper-3.4.5.jar 和 zkclien ...

  4. Kibana TypeError : Object #<GlobalState> has no method 'setDefaults'

    在windows server中装完elasticsearch和kibana后,elasticsearch能正常访问(http://localhost:9200): 而访问kibana的地址(http ...

  5. 【RL系列】马尔可夫决策过程——Jack‘s Car Rental

    本篇请结合课本Reinforcement Learning: An Introduction学习 Jack's Car Rental是一个经典的应用马尔可夫决策过程的问题,翻译过来,我们就直接叫它“租 ...

  6. [笔记] centos6.6编译安装httpd2.4.10

    系统安装包是CentOS-6.6-x86_64-minimal.iso 查看一下uname信息 [root@localhost ~]# uname -a Linux localhost.localdo ...

  7. PCAP文件格式分析(做抓包软件之必备)

    转载源:http://blog.csdn.net/anzijin/article/details/2008333 http://www.ebnd.cn/2009/09/07/file-format-a ...

  8. Alpha阶段第2周/共2周 Scrum立会报告+燃尽图 02

    此次作业要求参见 [https://edu.cnblogs.com/campus/nenu/2018fall/homework/2285] Scrum master:祁玉 一.小组介绍 组长:王一可 ...

  9. Kafka集群无法外网访问问题解决攻略

    Kafka无法集群外网访问问题解决方法  讲解本地消费者和生产者无法使用远程Kafka服务器的处理办法 服务搭建好Kafka服务后,机本.测试 OK,外面机器却无法访问,很是怪异. 环境说明:  Ka ...

  10. 【.Net】HttpClient 的使用

    class Program { public static HttpClient Client; static HttpResponseMessage response; static void Ma ...