activiti学习(一)user与groupAPI

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());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值