1.用户与组的创建以及用户与组的关系均通过identityService获取。
/**
* 用户与组的API演示
*/
public class IdentityServiceTest {
@Rule
//创建activitiRule时会默认通过activiti.cfg.xml创建activitiEngine
public ActivitiRule activitiRule = new ActivitiRule();
/**
* 有关user的API演示
*/
@Test
public void testUser() throws Exception{
//通过activitiRule获取identityService
IdentityService identityService = activitiRule.getIdentityService();
//创建id为zp的用户
User user = identityService.newUser("zrt");
//设置用户相关信息
user.setFirstName("ritian");
user.setLastName("zhao");
user.setEmail("71919752@qq.com");
user.setPassword("123456789");
//保存用户到数据库
identityService.saveUser(user);
//通过用户id查询用户
User userInDb = identityService.createUserQuery().userId("zrt").singleResult();
assertNotNull(userInDb);
//删除用户
identityService.deleteUser("zrt");
userInDb = identityService.createUserQuery().userId("zrt").singleResult();
assertNull(userInDb);
}
/**
* 有关group的API演示
*/
@Test
public void testGroup(){
//通过activitiRule获取identityService
IdentityService identityService = activitiRule.getIdentityService();
//创建组并设置相关信息
Group group = identityService.newGroup("student");
group.setName("学生");
group.setType("assignment");
//保存组到数据库
identityService.saveGroup(group);
//通过组id查询组
Group groupInDb = identityService.createGroupQuery().groupId("student").singleResult();
assertNotNull(groupInDb);
identityService.deleteGroup("student");
groupInDb = identityService.createGroupQuery().groupId("student").singleResult();
assertNull(groupInDb);
}
/**
* 用户与组的关系
*/
@Test
public void testUserAndGroup(){
//通过activitiRule获取identityService
IdentityService identityService = activitiRule.getIdentityService();
//创建组并设置相关信息
Group group = identityService.newGroup("student");
group.setName("学生");
group.setType("assignment");
identityService.saveGroup(group);
//创建用户并设置相关信息
User user = identityService.newUser("zrt");
user.setFirstName("ritian");
user.setLastName("zhao");
user.setEmail("71919@qq.com");
user.setPassword("123456789");
identityService.saveUser(user);
//把zrt加到组student中
identityService.createMembership("zrt", "student");
//查询zrt所在的组
Group groupContainsZRT = identityService.createGroupQuery().groupMember("zrt").singleResult();
assertNotNull(groupContainsZRT);
assertEquals("student",groupContainsZRT.getId());
User userInGroup = identityService.createUserQuery().memberOfGroup("student").singleResult();
assertNotNull(userInGroup);
assertEquals("zrt",userInGroup.getId());
identityService.deleteUser("zrt");
identityService.deleteGroup("student");
}
}
2.用户与组在流程中的应用
创建一个简单的流程
XML配置
<process id="userAndGroupInUserTask" name="My process" isExecutable="true">
<startEvent id="startevent1" name="Start"></startEvent>
<userTask id="usertask1" name="用户任务中的用户与组" activiti:candidateGroups="deptLeader">
</userTask>
<sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
<endEvent id="endevent1" name="End"></endEvent>
<sequenceFlow id="flow2" sourceRef="usertask1" targetRef="endevent1"></sequenceFlow>
</process>
编写测试基类
/**
* 测试基类
*/
public abstract class AbstractTest {
@Rule
public ActivitiRule activitiRule = new ActivitiRule("activiti.cfg.xml");
protected ProcessEngine processEngine;
protected RepositoryService repositoryService;
protected IdentityService identityService;
protected TaskService taskService;
protected RuntimeService runtimeService;
protected HistoryService historyService;
protected FormService formService;
protected ManagementService managementService;
/**
* 开始测试
*/
@BeforeClass
public static void setUpForClass() throws Exception{
System.out.println("++++++++++++++++++++开始测试++++++++++++++++++++");
}
/**
* 测试结束
*/
@AfterClass
public static void testOverForClass() throws Exception{
System.out.println("++++++++++++++++++++测试结束++++++++++++++++++++");
}
/**
* 初始化变量
*/
@Before
public void setUp() throws Exception{
processEngine = activitiRule.getProcessEngine();
repositoryService = activitiRule.getRepositoryService();
identityService = activitiRule.getIdentityService();
taskService = activitiRule.getTaskService();
runtimeService = activitiRule.getRuntimeService();
historyService = activitiRule.getHistoryService();
formService = activitiRule.getFormService();
managementService = activitiRule.getManagementService();
}
}
编写测试类
public class UserAndGroupInUserTaskTest extends AbstractTest {
/**
* 每个test方法开始前
* 初始化创建用户、组并将它们联系起来
*/
@Before
public void setUp() throws Exception{
//初始化7个service
super.setUp();
//创建并保存组
Group group = identityService.newGroup("deptLeader");
group.setName("部门领导");
group.setType("assignment");
identityService.saveGroup(group);
//创建并保存用户
User user = identityService.newUser("zrt");
user.setFirstName("ritian");
user.setLastName("zhao");
user.setEmail("71919752@qq.com");
user.setPassword("123456789");
identityService.saveUser(user);
//将用户加入到组中
identityService.createMembership("zp", "deptLeader");
}
/**
* 每个test方法结束后,删除关系,组,用户
*/
@After
public void afterInvokeTestMethod(){
identityService.deleteMembership("zrt", "deptLeader");
identityService.deleteUser("zrt");
identityService.deleteGroup("deptLeader");
}
@Test
@Deployment(resources = {"bpmn/chapter5_001.bpmn"})
public void testUserAndGroupInUserTask(){
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("userAndGroupInUserTask");
assertNotNull(processInstance);
Task task = taskService.createTaskQuery().taskCandidateUser("zrt").singleResult();
taskService.claim(task.getId(), "zrt");
taskService.complete(task.getId());
}
}