【工作流前进之路】Activiti 权限之处理用户组和用户关系

    在前面的系列博客<<【工作流前进之路】Activiti权限之用户组-数据查询>><<【工作流前进之路】Activiti权限之用户管理>>,我已经介绍过用户和用户组了,那么如何把它们放到一块呢,这篇博客,我们就把它们放到一块去.在我们使用过的系统中或者开发过的系统中,一个用户可以被分配到多个用户组中,一个用户组中可以包含多个用户,所以用户组和用户之间的关系如下:



    Activiti,是使用第三张表(ACT_ID_MEMBERSHIP)的来保存这两种数据间的关系.通过关系表就可以清楚的看到用户组和用户之间的关系.Activiti也提供了相应的API来进行操作.

 

.绑定关系

要绑定用户和用户组的关系,就需要往表ACT_ID_MEMBERSHIP中写入数据,再此需要写入的数据主要是用户ID和用户组ID.具体实现如下:

public static voidmain(String[] args) {
 
//创建一个流程引擎
ProcessEngineengine = ProcessEngines.getDefaultProcessEngine();
//得到身份服务组件实例
IdentityServiceidentityService = engine.getIdentityService();
                Useruser = identityService.newUser("12");
                identityService.saveUser(user);
                Groupgroup = identityService.newGroup("23");
                identityService.saveGroup(group);
                System.out.println(user.getId());
                System.out.println(group.getId());
//绑定关系
                identityService.createMembership(user.getId(),group.getId());
 
}
 

删除关系就用deleteMembership方法就可以了.

 

.查询用户组下的用户

一个用户组会拥有多个用户,那么如何查询这些用户呢,具体代码如下:

public static voidmain(String[] args) {
// 创建流程引擎
ProcessEngineengine = ProcessEngines.getDefaultProcessEngine();
// 得到身份服务组件实例
IdentityServiceidentityService = engine.getIdentityService();
// 查询
ListGroupList = identityService.createGroupQuery()
.groupMember("1").list();
 
System.out.println("张三属于的用户组有: ");
for(Groupgroup : GroupList){
System.out.println(group.getName());
}
}
 
 

.查询用户所属于的组

在前面一个方法中,介绍如何查询组下有哪些用户,那么此处就介绍一下如果通过用户查询出它所属于的组.

public static voidmain(String[] args) {
// 创建一个流程引擎
ProcessEngineengine = ProcessEngines.getDefaultProcessEngine();
// 得到身份服务组件实例
IdentityServiceidentityService = engine.getIdentityService();
// 查询
Listuserlist = identityService.createUserQuery()
.memberOfGroup("22").list();
System.out.println("经理组有如下人员: ");
for(User user : userlist) {
System.out.println(user.getFirstName());
}
}
 

.总结

    做过或者是了解过权限的人,这部分内容和权限中设置用户组和用户的关系是一样的,学习工作流的时候,可以多想想以前接触过的系统,能够让自己更快的理解.


你可能感兴趣的:(【工作流前进之路】Activiti 权限之处理用户组和用户关系)