每一个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 }
三、启动流程、执行任务,并查看状态
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 }
四、执行结果
[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私有任务流程成功执行!