https://my.oschina.net/acitiviti/blog/283892

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

发表于 3年前

摘要: activiti

(本博客都是纯文本手工代码,错误难免,需要在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");
© 著作权归作者所有

最新文章

  1. 第1章 (ASP.NET MVC简介)
  2. springmvc对同名参数处理-我们到底能走多远系列(44)
  3. [转] 主流JS框架中DOMReady事件的实现
  4. 启用域中对象的&quot;防止意外删除&quot;功能
  5. Linux 内核的文件 Cache 管理机制介绍
  6. golang的连接池例子
  7. 如何使用 Barracuda 防火墙设置/保护 Azure 应用程序
  8. DLNA
  9. AIX缩小逻辑卷报错chfs: 0506-964
  10. 新版Azure Automation Account 浅析(二) --- 更新Powershell模块和创建Runbook
  11. Java8学习笔记(一)--Lambda表达式
  12. Mac苹果电脑没有声音怎么办
  13. 【LOJ#6072】苹果树(矩阵树定理,折半搜索,容斥)
  14. 自己定义控件-DragButton
  15. swift中的UITextField
  16. NumPy Ndarray 对象
  17. IOS初级:NSTimer
  18. 一步一步学android之控件篇——ListView基本使用
  19. Jquery-plugins-toastr-消息提示
  20. IIS经典模式与集成模式

热门文章

  1. day14 python各种推导式详解
  2. Qt3D Shader
  3. office全系列激活脚本-改良版.cmd
  4. bzoj1036 [ZJOI2008]树的统计Count 树链剖分模板题
  5. Ubuntu下载
  6. java第三次上机
  7. jmeter完成md5加密的接口请求参数
  8. mysql中利用show profile很直观的看到查询缓存的作用。
  9. LOJ #10070 最小生成树计数
  10. 【题解】Luogu P1471 方差