activiti 排他网关的使用

一. 流程图的绘制

 

二.排他网关相关代码

package com.activiti;

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.history.HistoricTaskInstance;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.junit.Test;

public class ActivitiLeave3Test {

	/**
	  *  获取默认流程引擎实例,会自动读取activiti.cfg.xml文件
     */
    private ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();
    
    private String deploymentId = "82501";
     
    /**
       *  部署流程定义
     */
    @Test
    public void deploy(){
        Deployment deployment=processEngine.getRepositoryService().createDeployment()
        			.addClasspathResource("disgrams\\LeaveThird.bpmn")
        			.addClasspathResource("disgrams\\LeaveThird.png")
        			.name("leave3")
        			.deploy();
        System.out.println("流程部署ID:"+deployment.getId()); 
        System.out.println("流程部署Name:"+deployment.getName());
    }
	
    /**
       *  开始流程
     */
    @Test
    public void start() {
    	
    	ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey("leaveThired");
    	System.out.println("流程实例ID:"+pi.getId());
        System.out.println("流程定义ID:"+pi.getProcessDefinitionId()); 
        
    }
	
    
    /**
     * student apply 
     */
    @Test
	public void step1() {
		
		Map<String, Object> vars = new HashMap<String, Object>();
		vars.put("days", 1); // 请假天数
		
		processEngine.getTaskService().claim("97504", "zhangsan");
		processEngine.getTaskService().complete("97504");
	}
	
	/**
	 * 教师 或者校长审批
	 */
    @Test
	public void step2() {
		
		// 查看上一个节点的变量
		//Map<String, Object> maps = (Map<String, Object>) processEngine.getTaskService().getVariable("82504", "days");
		
		//int days = (int) maps.get("days");
		//System.out.println(days);
		processEngine.getTaskService().claim("92510","lisi");
		processEngine.getTaskService().complete("92510");
		
	}
	
	/**
	 *  发现任务
	 */
	@Test
	public void findTask() {
		
		List<HistoricTaskInstance> his = processEngine.getHistoryService().createHistoricTaskInstanceQuery()
				.processInstanceId(deploymentId).finished().list();
		
		
		for (HistoricTaskInstance hai : his) {
			
			System.out.println("任务ID:"+hai.getId());
	        System.out.println("流程实例ID:"+hai.getProcessInstanceId());
	        System.out.println("活动名称:"+hai.getName());
            System.out.println("办理人:"+hai.getAssignee());
            System.out.println("开始时间:"+hai.getStartTime());
            System.out.println("结束时间:"+hai.getEndTime());
            System.out.println("===========================");
			
			
		}
		
		
		
	}
	
	
	
	
	
	
}

排他网关主要是用于流程中进行选择所以要和 ${days == 4} 等此类条件相结合使用,如果没有排他网关,则系统会直接生成三条任务。

问题:   activiti5 中 今天我copy过来一个流程图 , 部署 和 启动都没有问题就是 ru_task 表中不能插入数据实例。

解决办法:  重新用本地的activiti 工具画图上传可以使用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值