Activiti 权限之处理用户组和用户关系

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



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

 

.绑定关系

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

[java]  view plain  copy
 print ?
  1. "font-family:Times New Roman;">public static voidmain(String[] args) {  
  2.    
  3. //创建一个流程引擎  
  4. ProcessEngineengine = ProcessEngines.getDefaultProcessEngine();  
  5. //得到身份服务组件实例  
  6. IdentityServiceidentityService = engine.getIdentityService();  
  7.                 Useruser = identityService.newUser("12");  
  8.                 identityService.saveUser(user);  
  9.                 Groupgroup = identityService.newGroup("23");  
  10.                 identityService.saveGroup(group);  
  11.                 System.out.println(user.getId());  
  12.                 System.out.println(group.getId());  
  13. //绑定关系  
  14.                 identityService.createMembership(user.getId(),group.getId());  
  15.    
  16. }  
  17.    

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

 

.查询用户组下的用户

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

[java]  view plain  copy
 print ?
  1. public static voidmain(String[] args) {  
  2. // 创建流程引擎  
  3. ProcessEngineengine = ProcessEngines.getDefaultProcessEngine();  
  4. // 得到身份服务组件实例  
  5. IdentityServiceidentityService = engine.getIdentityService();  
  6. // 查询  
  7. ListGroupList = identityService.createGroupQuery()  
  8. .groupMember("1").list();  
  9.    
  10. System.out.println("张三属于的用户组有: ");  
  11. for(Groupgroup : GroupList){  
  12. System.out.println(group.getName());  
  13. }  
  14. }  
  15.    
  16.    

.查询用户所属于的组

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

[java]  view plain  copy
 print ?
  1. "font-family:Times New Roman;">public static voidmain(String[] args) {  
  2. // 创建一个流程引擎  
  3. ProcessEngineengine = ProcessEngines.getDefaultProcessEngine();  
  4. // 得到身份服务组件实例  
  5. IdentityServiceidentityService = engine.getIdentityService();  
  6. // 查询  
  7. Listuserlist = identityService.createUserQuery()  
  8. .memberOfGroup("22").list();  
  9. System.out.println("经理组有如下人员: ");  
  10. for(User user : userlist) {  
  11. System.out.println(user.getFirstName());  
  12. }  
  13. }  
  14.    

.总结

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

来源

http://blog.csdn.net/tang_huan_11/article/details/46009989

你可能感兴趣的:(activiti)