【工作流前行之路】Activiti 权限之处理用户组和用户关系
【工作流前进之路】Activiti 权限之处理用户组和用户关系
在前面的系列博客<<【工作流前进之路】Activiti权限之用户组-数据查询>>和<<【工作流前进之路】Activiti权限之用户管理>>中,我已经介绍过用户和用户组了,那么如何把它们放到一块呢,这篇博客,我们就把它们放到一块去.在我们使用过的系统中或者开发过的系统中,一个用户可以被分配到多个用户组中,一个用户组中可以包含多个用户,所以用户组和用户之间的关系如下:
在Activiti中,是使用第三张表(ACT_ID_MEMBERSHIP)的来保存这两种数据间的关系.通过关系表就可以清楚的看到用户组和用户之间的关系.Activiti也提供了相应的API来进行操作.
一.绑定关系
要绑定用户和用户组的关系,就需要往表ACT_ID_MEMBERSHIP中写入数据,再此需要写入的数据主要是用户ID和用户组ID.具体实现如下:
<span style="font-family:Times New Roman;">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()); }</span>
删除关系就用deleteMembership方法就可以了.
二.查询用户组下的用户
一个用户组会拥有多个用户,那么如何查询这些用户呢,具体代码如下:
public static voidmain(String[] args) { // 创建流程引擎 ProcessEngineengine = ProcessEngines.getDefaultProcessEngine(); // 得到身份服务组件实例 IdentityServiceidentityService = engine.getIdentityService(); // 查询 List<Group>GroupList = identityService.createGroupQuery() .groupMember("1").list(); System.out.println("张三属于的用户组有: "); for(Groupgroup : GroupList){ System.out.println(group.getName()); } }
三.查询用户所属于的组
在前面一个方法中,介绍如何查询组下有哪些用户,那么此处就介绍一下如果通过用户查询出它所属于的组.
<span style="font-family:Times New Roman;">public static voidmain(String[] args) { // 创建一个流程引擎 ProcessEngineengine = ProcessEngines.getDefaultProcessEngine(); // 得到身份服务组件实例 IdentityServiceidentityService = engine.getIdentityService(); // 查询 List<User>userlist = identityService.createUserQuery() .memberOfGroup("22").list(); System.out.println("经理组有如下人员: "); for(User user : userlist) { System.out.println(user.getFirstName()); } }</span>
四.总结
做过或者是了解过权限的人,这部分内容和权限中设置用户组和用户的关系是一样的,学习工作流的时候,可以多想想以前接触过的系统,能够让自己更快的理解.