zoukankan      html  css  js  c++  java
  • 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字段变成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");

  • 相关阅读:
    【心情】12月22日
    【心情】12月12日
    【心情】12月8日
    【转载】信息学竞赛知识地图
    SharePoint 2013 工作流之年假审批Designer配置篇
    SharePoint 2013 状态机工作流之扩展自定义状态
    SharePoint 2013 状态机工作流之UpdateItemActivity
    SharePoint 2013 状态机工作流之日常报销示例
    SharePoint 2013 对二进制大型对象(BLOB)进行爬网
    SharePoint 2013 图文开发系列之应用程序页
  • 原文地址:https://www.cnblogs.com/libin6505/p/10101873.html
Copyright © 2011-2022 走看看