在前面的系列博客<<【工作流前进之路】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>
-
四.总结
做过或者是了解过权限的人,这部分内容和权限中设置用户组和用户的关系是一样的,学习工作流的时候,可以多想想以前接触过的系统,能够让自己更快的理解.
来源
http://blog.csdn.net/tang_huan_11/article/details/46009989