2017.2.20 activiti實戰--第五章--用戶與組及部署管理(一)用戶與組


學習資料:《Activiti實戰》

 

第五章 用戶與組及部署管理(一)用戶與組

內容概覽:講解activiti中內置的一套用戶、組的關系,以及如何通過API添加、刪除、查詢。

 

5.1 用戶與組

5.1.1 用戶

 1 public class IdentityServiceTest{
 2  @Rule  3     public ActivitiRule ar = new ActivitiRule();//使用默認的acitiviti.cfg.xml作為參數,當創建activitirule時,會自動創建引擎對象processEngine。
 4     
 5     @Test
 6     public void testUser() throws Exception(){
 7         IdentityService is = ar.getIdentityService();
 8 
 9         User user = is.newUser("henryyan"); 10         user.setFirstName("Henry");
11         user.setLastName("yan");
12         user.setEmail("yanhonglei@gamil.com");
13    
14  is.saveUser(user); 15         
16         User userInDb = is.createUserQuery().userId("henryyan").singleResult(); 17         assertNotNull(userInDb);
18         
19         is.deleteUser("henryyan"); 20         userInDb = is.createUserQuery().userId("henryyan").singleResult();
21         assertNull(userInDb);
22     }   
23 }

 

5.1.2 組

 1 public class IdentityServiceTest{
 2     @Rule
 3     public ActivitiRule ar = new ActivitiRule();//使用默認的acitiviti.cfg.xml作為參數,當創建activitirule時,會自動創建引擎對象processEngine。
 4     
 5     @Test
 6     public void testGroup() throws Exception(){
 7         IdentityService is = ar.getIdentityService();
 8 
 9         Group group = is.newGroup("deptLeader"); 10         group .setName("部門領導");
11         group .setType("assignment");
12    
13  is.saveGroup(group); 14         
15         List<Group> groupList = is.createGroupQuery().groupId("deptLeader").list(); 16         assertEquals(1,groupList.size());
17         
18         is.deleteGroup("deptLeader"); 19         groupList = is.createGroupQuery().groupId("deptLeader").list();
20         assertEquals(0,groupList.size());
21     }   
22 }

 

5.1.3 用戶與組的關系

 1 public class IdentityServiceTest{
 2     @Rule
 3     public ActivitiRule ar = new ActivitiRule();//使用默認的acitiviti.cfg.xml作為參數
 4       
 5     @Test
 6     public void testUserAndGroupMembership() throws Exception(){
 7         IdentityService is = ar.getIdentityService();
 8 
 9         Group group = is.newGroup("deptLeader");
10         group .setName("部門領導");
11         group .setType("assignment");
12         is.saveGroup(group);
13         
14         User user = is.newUser("henryyan");
15         user.setFirstName("Henry");
16         user.setLastName("yan");
17         user.setEmail("yanhonglei@gamil.com");
18         is.saveUser(user);
19 
20         is.createMembership("henryyan","deptLeader"); 21 
22         //查詢組deptLeader所擁有的用戶
23         User userInGroup = is.createUserQuery().memberOfGroup("deptLeader").singleResult(); 24         assertNotNull(userInGroup);
25         assertEquals("henryyan",userInGroup.getId());
26 
27         //查詢用戶henryyan所屬的組
28         Group groupContainsHenryyan = is.createGroupQuery().groupMember("henryyan").singleResult(); 29         assertNotNull(groupContainsHenryyan);
30         assertEquals("deptLeader",groupContainsHenryyan.getId());
31     }   
32  }

 

5.1.4 UserTask中的用戶與組

(1)測試場景及測試模板

假設一個流程圖示意圖為:開始--->用戶任務--->結束

共用的xml文件模板如下:

1 <process id="userAndGroupInUserTask" name="userAndGroupInUserTask">
2     <startEvent id="startEvent1" name="Start"></startEvent>
3     <userTask id="studyUserAndGroupInUserTask" name="學習用戶與組在用戶任務中的應用"></userTask>
4     <sequenceFlow id="flow1" name="" sourceRef="startEvent1" targetRef="studyUserAndGroupInUserTask"></sequenceFlow>
5     <endEvent id="endEvent1" name="End"></endEvent>
6     <sequenceFlow id="flow2" name="" sourceRef="studyUserAndGroupInUserTask" targetRef="endEvent1"></sequenceFlow>
7 </process>

 

共用的測試代碼模板如下:即此時有兩個用戶,位於組deptLeader里。

 1 public class UserAndGroupInUserTaskTest{
 2  @Before  3     public void setup() throws Exception(){
 4         //初始化7個Service
 5         super.setUp();
 6          
 7         Group group = identityService.newGroup("deptLeader");
 8         group .setName("部門領導");
 9         group .setType("assignment");
10         identityService.saveGroup(group);
11         //henryyan示例,jackchen的略
12         User user = identityService.newUser("henryyan");
13         user.setFirstName("Henry");
14         user.setLastName("yan");
15         user.setEmail("yanhonglei@gmail.com");
16         identityService.saveUser(user);
17         //henryyan示例,jackchen的略
18         identityService.createMembership("henryyan","deptLeader");
19     }   
20 
21  @After 22     public void afterInvokeTestMethod() throws Exception(){
23         identityService.deleteMembership("henryyan","deptLeader");
24         identityService.deleteGroup("deptLeader");
25         identityService.deleteUser("henryyan");
26     }
27     ...
28  }

 

(2)候選組

修改上面的UserTask如下:屬於這個的用戶都可以簽收任務。一旦有一個人簽收,其他人的用戶任務里就沒有這個任務了。

1 <userTask id="studyUserAndGroupInUserTask" 
2      name="學習用戶與組在用戶任務中的應用"
3  activiti:candidateGroups="deptLeader">
4 </userTask>

 

(3)候選人

修改上面的UserTask如下:列出來的用戶都可以簽收任務。一旦有一個人簽收,其他人的用戶任務里就沒有這個任務了。

1 <userTask id="studyUserAndGroupInUserTask" 
2       name="學習用戶與組在用戶任務中的應用"
3  activiti:candidateUsers="jackchen,henryyan">
4 </userTask>

 

(4)共用測試代碼

在類userAndGroupTestInUserTask添加方法如下:

 1 public class UserAndGroupInUserTaskTest{  2  @Test  3 @Deployment(resources={"chapter5/userAndGroupInUserTask.bpmn"})  4 public void testUserAndGroupInUserTask() throws Exception{  5 ProcessInstance pi = runtimeService.startProcessInstanceByKey("userAndGroupInUserTask");  6  assertNotNull(pi);  7  8 //該任務屬於所有位於候選組的用戶/ 該任務屬於所有列出來的候選人  9 Task jackchenTask = taskService.createTaskQuery().taskCandidateUser("jackchen").singleResult(); 10  assertNotNull(jackchenTask); 11 Task henryyanTask = taskService.createTaskQuery().taskCandidateUser("henryyan").singleResult(); 12  assertNotNull(henryyanTask); 13 14 taskService.claim(jackchenTask.getId(),"jackchen");//jackchen簽收任務 15 //taskService.complete(jackchenTask.getId());//jackchen完成任務 16 17 //被jackchen簽收后,henryyan不再擁有該任務 18 henryyanTask = taskService.createTaskQuery().taskCandidateUser("henryyan").singleResult(); 19  assertNull(henryyanTask); 20  } 21 }

 

綜上,主要涉及的方法:

 1 主要涉及到的方法:
 2 //創建、保存和刪除用戶/組
 3 User user/Group group = identityService.newUser("userid")/newGroup("groupid");
 4 identityService.saveUser("userid")/saveGroup("groupid");
 5 identityService.deleteUser("userid")/deleteGroup("groupid");
 6 
 7 //查詢User
 8 User user = identityService.createUserQuery().userId("userid").singleResult();
 9 List<User> userList = identityService.createUserQuery().userId("userid").list();
10 //查詢Group
11 Group group = identityService.createGroupQuery().groupId("groupid").singleResult();
12 List<Group> groupList = identityService.createGroupQuery().groupId("groupid").list();
13 
14 //創建、查詢關系
15 identityService.createMembership("userid",groupid);
16 User userInGroup = identityService.createUserQuery().memberOfGroup("deptLeader").singleResult();
17 Group groupContainsHenryyan = identityService.createGroupQuery().groupMember("henryyan").singleResult();
18 
19 //查詢用戶擁有的任務,簽收及完成
20 Task task = taskService.createTaskQuery().taskCandidateUser("userid").singleResult();
21 List<Task> taskList = taskService.createTaskQuery().taskCandidateUser("userid").list();
22 taskService.claim(task.getId(),"userid");
23 taskService.complete(task.getId());

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM