一. 流程图的绘制
二.排他网关相关代码
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 工具画图上传可以使用了。