activiti5.22之学习之路,并行网关的使用



  
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  
  
    
      
        
      
      
        
      
      
        
      
      
        
      
      
        
      
      
        
      
      
        
      
      
        
      
      
        
        
      
      
        
        
      
      
        
        
      
      
        
        
      
      
        
        
      
      
        
        
      
      
        
        
      
      
        
        
      
    
  

图形如下:

activiti5.22之学习之路,并行网关的使用_第1张图片

activiti5.22之学习之路,并行网关的使用_第2张图片

 

 

package com.ljw.c_parallelGateWay;

import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test;

/**
 * 并行网关
 * @author lenovo
 *
 */
public class ParallelGateWayTest {


	ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

	// 部署流程定义(classpath)
	@Test
	public void deploymentProcessDefinition_inputStream() {
		InputStream bpmn = this.getClass().getResourceAsStream("parallelGateWay.bpmn");
		InputStream png = this.getClass().getResourceAsStream("parallelGateWay.png");
		Deployment deployment = processEngine.getRepositoryService()// 与流程定义和部署对象相关的sevices
				.createDeployment()// 创建一个部署对象
				.name("并行网关")// 添加部署名称
				.addInputStream("parallelGateWay.bpmn", bpmn)
				.addInputStream("parallelGateWay.png", png)
				.deploy();
		System.out.println("部署ID:" + deployment.getId());
		System.out.println("部署名称:" + deployment.getName());

	}
	
	// 启动流程实例
		@Test
		public void deploymentProcessInstance() {
			String key = "parallelGateWay";
			ProcessInstance pi = processEngine.getRuntimeService()// 与正在执行的流程是咧和执行对象相关的services
					.startProcessInstanceByKey(key);// 使用流程定义的key启动流程实例key对呀的helloworld.bnpm文件里的id的属性值
			System.out.println("流程实例ID:" + pi.getId());
			System.out.println("流程定义ID:" + pi.getProcessDefinitionId());
		}
	
		// 查询当前人的个人任务
		@Test
		public void findMyPersonalTask() {
			String assingnee = "买家";
			List list = processEngine.getTaskService()// 与正在执行的任务管理相关的services
					.createTaskQuery()// 创建任务查询对象
					/** 查询条件(where部分) */
					.taskAssignee(assingnee)// 指定个人任务查询,指定
//						.taskCandidateUser(candidateUser)//组任务的班里人查询
//						.processDefinitionId(processDefinitionId)//使用流程定义ID查询
//						.processInstanceId(processInstanceId)//使用流程实例额ID查询
//						.executionId(executionId)//使用执行对象ID查询
					/** 排序 */
					.orderByTaskCreateTime().asc()// 创建时间升序排序
					/** 返回结果集 */
//						.singleResult()//返回唯一结果集
//						.count()//返回结果集的数量
//						.listPage(firstResult, maxResults)//分页查询
					.list();
			if (list != null && list.size() > 0) {
				for (Task task : list) {
					System.out.println("任务ID:" + task.getId());
					System.out.println("任务名称:" + task.getName());
					System.out.println("任务的创建时间:" + task.getCreateTime());
					System.out.println("任务的办理人:" + task.getAssignee());
					System.out.println("流程实例ID:" + task.getProcessInstanceId());
					System.out.println("执行对象ID:" + task.getExecutionId());
					System.out.println("流程定义ID:" + task.getProcessDefinitionId());
				}
			}
		}
		// 完成我的任务
		@Test
		public void completeMyPersonalTask() {
			// 任务ID
			String taskId = "130003";
			Map variables=new HashMap();
			processEngine.getTaskService()// 与正在执行的任务管理相关的services
					.complete(taskId,variables);
			System.out.println("任务完成,任务ID:" + taskId);
		}
		
		
		
		
		
		
		
		
		
}

执行// 完成我的任务
        @Test
        public void completeMyPersonalTask() {

之后数据库的数据如下

activiti5.22之学习之路,并行网关的使用_第3张图片

activiti5.22之学习之路,并行网关的使用_第4张图片

activiti5.22之学习之路,并行网关的使用_第5张图片

 

你可能感兴趣的:(activiti)