Activiti学习笔记8 — UserTask私有任务的使用

每一个UserTask都会在Execution表和Task表中各产生一条记录

一、创建流程引擎对象

   /**
     * 1、创建流程引擎对象
     */
    private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();        

二、发布一个流程

 1     /**
 2      * 2、发布一个流程
 3      */
 4     @Test
 5     public void  testDeployProcess() {
 6         RepositoryService repositoryService = processEngine.getRepositoryService();
 7         DeploymentBuilder builder = repositoryService.createDeployment();
 8         // 加载发布资源
 9         builder.name("UserTask私有任务流程测试") // 设置流程显示别名
10                 .addClasspathResource("userSigleTask.bpmn") // 设置流程规则文件
11                 .addClasspathResource("userSigleTask.png"); // 设置流程规则的图片
12         // 发布流程
13         builder.deploy();
14     }
View Code

三、启动流程、执行任务,并查看状态

 1     /**
 2      * 3、启动流程、执行任务,并查看状态
 3      */
 4     @Test
 5     public void testUserTask() {        
 6         // 获取RuntimeService服务对象的实例
 7         RuntimeService runtimeService = processEngine.getRuntimeService();
 8         String processDefinitionKey = "userSingleTask";
 9         // 自动执行与Key相对应的流程的最高版本
10         ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey);        
11         String processInstanceId = processInstance.getId();        
12         logger.info("processInstanceId:" + processInstance.getId());
13         
14         // 获取TaskService服务对象的实例
15         TaskService taskService = processEngine.getTaskService();
16         String assignee = "user";
17         List<Task> tasks = taskService.createTaskQuery().taskAssignee(assignee).list();
18         Assert.assertEquals(1, tasks.size());
19         Task task = tasks.get(0);        
20         logger.info("taskName:" + task.getName());
21         Assert.assertEquals("出差",task.getName());
22         
23         //完成任务
24         taskService.complete(task.getId());        
25         
26         //检查结束状态
27         ProcessInstance pInstance = runtimeService
28                                                         .createProcessInstanceQuery()
29                                                         .processInstanceId(processInstanceId)
30                                                         .singleResult();
31         Assert.assertNull(pInstance);
32         logger.info("UserTask私有任务流程成功执行!");        
33         
34     }
View Code

四、执行结果

[INFO][2015-12-02 10:07:24,169][com.mcs.activiti.test.TestPrivateUserTask]processInstanceId:112501
[INFO][2015-12-02 10:07:24,223][com.mcs.activiti.test.TestPrivateUserTask]taskName:出差
[INFO][2015-12-02 10:07:24,576][com.mcs.activiti.test.TestPrivateUserTask]UserTask私有任务流程成功执行!

原文地址:https://www.cnblogs.com/maocs/p/5012112.html