测试activiti中的taskService

my-process-task.bpnm20.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
<process id="my-process">
    <startEvent id="start"/>
    <sequenceFlow sourceRef="start" targetRef="someTask" id="flow1"/>
    <userTask id="someTask"
    		<!-- 指定候选人 -->
              activiti:candidateUsers="shr, user1, user2">
        <documentation>some task ${message}}</documentation>
    </userTask>
    <endEvent id="end"/>
    <sequenceFlow id="flow3" sourceRef="someTask" targetRef="end"/>
</process>
</definitions>

测试taskService中的指定候选人完成任务,测试类内容如下:

@Test
    @Deployment(resources = {"my-process-task.bpmn20.xml"})
    public void testTaskServiceUser() {

        //构建参数变量,方便查看描述
        Map<String, Object> var = Maps.newHashMap();
        var.put("message", "this is my test message");
        //加载时加载描述信息
        activitiRule.getRuntimeService().startProcessInstanceByKey("my-process", var);
        //获取task服务
        TaskService taskService = activitiRule.getTaskService();
        //因为在这里只部署了一个流程定义,所以获取单例
        Task task = taskService.createTaskQuery().singleResult();
        //输出查看内容
        LOGGER.info("task = {}", ToStringBuilder.reflectionToString(task, ToStringStyle.JSON_STYLE));
        LOGGER.info("task.description = {}", task.getDescription());
        //指定该任务拥有者 user1
        taskService.setOwner(task.getId(), "user1");
        //查找候选人为shr的task,但无代办人的流程
        List<Task> tasks = taskService.createTaskQuery()
                .taskCandidateUser("shr").taskUnassigned().listPage(0, 100);

        //指定代办人为shr
        tasks.forEach(t -> {
            try {
                taskService.claim(task.getId(), "shr");
            } catch (Exception e) {
                LOGGER.error(e.getMessage());
            }
        });
        //查询都是谁关联了这个任务
        List<IdentityLink> identityLinksForTask = taskService.getIdentityLinksForTask(task.getId());
        identityLinksForTask.forEach(i -> {
            LOGGER.info("{}关联了这个任务", i);
        });

        //查询代办人关联的任务,并且完成它
        List<Task> shr = taskService.createTaskQuery().taskAssignee("shr").listPage(0, 100);
        shr.forEach(s -> {
            Map<String, Object> variables = Maps.newHashMap();
            variables.put("完成key1", "完成key1");
            taskService.complete(s.getId(), variables);
        });

        LOGGER.info("流程是否存在 {}", CollectionUtils.isEmpty(shr));
    }

测试任务中添加附件

   /**
     * 添加附件
     */
    @Test
    @Deployment(resources = {"my-process-task.bpmn20.xml"})
    public void testTaskAttachment() {

        //构建参数变量
        Map<String, Object> var = Maps.newHashMap();
        var.put("message", "this is my test message");
        activitiRule.getRuntimeService().startProcessInstanceByKey("my-process", var);
        TaskService taskService = activitiRule.getTaskService();
        Task task = taskService.createTaskQuery().singleResult();
        //添加附件,并列出附件 附件类型 任务id 流程实例id 描述 地址
        Attachment attachment = taskService.createAttachment("url", task.getId(), task.getProcessInstanceId(), "name", "desc", "/url/test.png");
        List<Attachment> taskAttachments = taskService.getTaskAttachments(task.getId());
        taskAttachments.forEach(taskAttachment -> {
            LOGGER.info("taskAttachment = {}", ToStringBuilder.reflectionToString(taskAttachment, ToStringStyle.JSON_STYLE));
        });
    }

测试任务中添加评论,event会记录评论变化:

 @Test
    @Deployment(resources = {"my-process-task.bpmn20.xml"})
    public void testTaskComment() {

        //构建参数变量
        Map<String, Object> var = Maps.newHashMap();
        var.put("message", "this is my test message");
        activitiRule.getRuntimeService().startProcessInstanceByKey("my-process", var);
        TaskService taskService = activitiRule.getTaskService();
        Task task = taskService.createTaskQuery().singleResult();

        //为了展示events和comment的不同,特意添加这两个信息在任务中
        taskService.setOwner(task.getId(), "user1");
        taskService.setAssignee(task.getId(), "shr");

        //添加评论信息
        taskService.addComment(task.getId(), task.getProcessInstanceId(), "我是评论");
        taskService.addComment(task.getId(), task.getProcessInstanceId(), "我是评论2");

        //获取评论信息
        List<Comment> taskComments = taskService.getTaskComments(task.getId());
        taskComments.forEach(comment -> {
            LOGGER.info("评论 = {}", ToStringBuilder.reflectionToString(comment, ToStringStyle.JSON_STYLE));
        });

        //Event会记录task的变化,
        List<Event> taskEvents = taskService.getTaskEvents(task.getId());
        taskEvents.forEach(taskEvent -> {
            LOGGER.info("Events评论 = {}", ToStringBuilder.reflectionToString(taskEvent, ToStringStyle.JSON_STYLE));
        });
    }
 /** 结果
         * 11:35:52.791[main][INFO ]评论 = {"type":"comment","userId":null,"time":"Mon Sep 16 11:35:52 CST 2019","taskId":"32509","processInstanceId":"32504","action":"AddComment","message":"我是评论","fullMessage":"我是评论","id":"32518","isInserted":false,"isUpdated":false,"isDeleted":false} ProcessDefinitionId=     executionId= mdcProcessInstanceID= mdcBusinessKey= c.e.a.s.RepositoryServiceTest.lambda$testTaskComment$4:154
         * 11:35:52.792[main][INFO ]评论 = {"type":"comment","userId":null,"time":"Mon Sep 16 11:35:52 CST 2019","taskId":"32509","processInstanceId":"32504","action":"AddComment","message":"我是评论2","fullMessage":"我是评论2","id":"32519","isInserted":false,"isUpdated":false,"isDeleted":false} ProcessDefinitionId=     executionId= mdcProcessInstanceID= mdcBusinessKey= c.e.a.s.RepositoryServiceTest.lambda$testTaskComment$4:154
         * 11:35:52.796[main][INFO ]Events评论 = {"type":"event","userId":null,"time":"Mon Sep 16 11:35:52 CST 2019","taskId":"32509","processInstanceId":null,"action":"AddUserLink","message":"user1_|_owner","fullMessage":null,"id":"32516","isInserted":false,"isUpdated":false,"isDeleted":false} ProcessDefinitionId=     executionId= mdcProcessInstanceID= mdcBusinessKey= c.e.a.s.RepositoryServiceTest.lambda$testTaskComment$5:160
         * 11:35:52.796[main][INFO ]Events评论 = {"type":"event","userId":null,"time":"Mon Sep 16 11:35:52 CST 2019","taskId":"32509","processInstanceId":null,"action":"AddUserLink","message":"shr_|_assignee","fullMessage":null,"id":"32517","isInserted":false,"isUpdated":false,"isDeleted":false} ProcessDefinitionId=     executionId= mdcProcessInstanceID= mdcBusinessKey= c.e.a.s.RepositoryServiceTest.lambda$testTaskComment$5:160
         * 11:35:52.797[main][INFO ]Events评论 = {"type":"comment","userId":null,"time":"Mon Sep 16 11:35:52 CST 2019","taskId":"32509","processInstanceId":"32504","action":"AddComment","message":"我是评论","fullMessage":"我是评论","id":"32518","isInserted":false,"isUpdated":false,"isDeleted":false} ProcessDefinitionId=     executionId= mdcProcessInstanceID= mdcBusinessKey= c.e.a.s.RepositoryServiceTest.lambda$testTaskComment$5:160
         * 11:35:52.797[main][INFO ]Events评论 = {"type":"comment","userId":null,"time":"Mon Sep 16 11:35:52 CST 2019","taskId":"32509","processInstanceId":"32504","action":"AddComment","message":"我是评论2","fullMessage":"我是评论2","id":"32519","isInserted":false,"isUpdated":false,"isDeleted":false} ProcessDefinitionId=     executionId= mdcProcessInstanceID= mdcBusinessKey= c.e.a.s.RepositoryServiceTest.lambda$testTaskComment$5:160
         */

猜你喜欢

转载自blog.csdn.net/qq_42046342/article/details/100881836