ProcessVariables.java
package com.activiti.study.processVariables;
import java.io.InputStream;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.junit.Test;
public class ProcessVariables {
/**
*加载默认的流程引擎: 加载 activiti.cfg.xml 文件
*/
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/**
* 部署流程定义
*/
@Test
public void testDeployProcessDefination_inputStream(){
/**
-- 从classPath根目录下加载指定名称的文件
this.getClass().getClassLoader().getResourceAsStream("/diagrams/ProcessVariables.bpmn");
-- 从当前包下加载指定名称的文件
this.getClass().getResourceAsStream("diagrams/ProcessVariables.bpmn");
-- 从classPath根目录下加载指定名称的文件
this.getClass().getResourceAsStream("/diagrams/ProcessVariables.bpmn");
*/
InputStream inputStreamBpmn = this.getClass().getResourceAsStream("/diagrams/ProcessVariables.bpmn");
InputStream inputStreamPng = this.getClass().getResourceAsStream("/diagrams/ProcessVariables.png");
Deployment deployment = processEngine.getRepositoryService()
.createDeployment()
.name("Process Variables Defination") //设定流程名称
.addInputStream("/diagrams/ProcessVariables.bpmn", inputStreamBpmn)
.addInputStream("/diagrams/ProcessVariables.png", inputStreamPng)
.deploy();
System.out.println("Id: " + deployment.getId());
System.out.println("Name: " + deployment.getName());
System.out.println("Category: " + deployment.getCategory());
}
/**
* 启动流程
*/
@Test
public void testStartProcessDefination(){
String processDefinationKey = "ProcessVariables";
ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinationKey);
System.out.println("Key" + pi.getBusinessKey());
System.out.println("ActivityId" + pi.getActivityId());
System.out.println("DefinitionId" + pi.getProcessDefinitionId());
System.out.println("ProcessInstanceId" + pi.getProcessInstanceId());
}
/*
* 删除流程定义
*/
@Test
public void deleteProcessDefinition(){
//使用部署ID,完成删除
String deploymentId = "401";
/*
* 不带级联的删除
* 只能删除没有启动的流程,如果流程启动,就会抛出异常
*/
// processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
// .deleteDeployment(deploymentId);
/*
* 能级联的删除
* 能删除启动的流程,会删除和当前规则相关的所有信息,正在执行的信息,也包括历史信息
*/
processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
.deleteDeployment(deploymentId, true);
processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
.deleteDeployment("501", true);
System.out.println("删除成功");
}
}
流程定义: