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" );

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值