花了这么久的时间,终于把所有的异常都撸完,终于可以撸实例了
package com.shikun.activiti;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.List;
import java.util.zip.ZipInputStream;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.repository.ProcessDefinitionQuery;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskQuery;
import org.junit.Test;
public class HellowWorld {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/**
* 使用默认配置 1、配置文件必须在classpath根目录下
* 2、配置文件名称必须为activiti-context.xml或者activiti.cfg.xml
* 3、配置文件中配置对象的id必须为processEngineConfiguration 4、工厂对象的id必须为processEngine
*/
@Test
public void test1(){
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
}
/**
* 部署流程定义,操作的数据表:act_re_deployment(部署表)、act_re_procdef(流程定义表)、
* act_ge_bytearray(二进制表)
* @throws FileNotFoundException
*/
@Test
public void test2() throws FileNotFoundException{
//创建一个部署构建器对象
//方式一:加载单个的流程定义文件
DeploymentBuilder deploymentBuilder = processEngine.getRepositoryService().createDeployment();
//读取流程定义文件
/* deploymentBuilder.addClasspathResource("qjlc.bpmn");
deploymentBuilder.addClasspathResource("qjlc.png");
//部署流程定义
Deployment deployment = deploymentBuilder.deploy();
System.out.println(deployment.getId());*/
//方式二:加载zip文件
ZipInputStream zipInputStream = new ZipInputStream( new FileInputStream(new File("d:\\process.zip")));
deploymentBuilder.addZipInputStream(zipInputStream);
deploymentBuilder.deploy();
}
/**
* 查询流程定义,操作数据表:act_re_procdef
*/
@Test
public void test3(){
//流程定义查询对象
ProcessDefinitionQuery query = processEngine.getRepositoryService().createProcessDefinitionQuery();
List<ProcessDefinition> list = query.list();
for (ProcessDefinition processDefinition : list) {
System.out.println("id = "+processDefinition.getId()+"name = "+processDefinition.getName()+"varsion = "
+processDefinition.getVersion()+"key = " +processDefinition.getKey());
}
}
/**
* 根据流程定义启动流程实例,操作的数据表:act_ru_execution(流程实例表)、act_ru_task(任务表)
* 方式二:根据流程定义key启动流程实例(建议)-----可以根据当前最新版本的流程定义启动流程实例
*/
@Test
public void test4(){
// String processDefinitionId = "qjlc:1:304";
// ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceById(processDefinitionId );
// System.out.println(processInstance.getId());
String processDefinitionKey ="qjlc";
ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey);
System.out.println(processInstance.getId()+processInstance.getProcessDefinitionId());
}
/**
* 查询个人任务,操作的数据表:act_ru_task(任务表)
*/
@Test
public void test6() {
// 任务查询对象
TaskQuery query = processEngine.getTaskService().createTaskQuery();
query.taskAssignee("张三");// 根据办理人过滤
query.orderByTaskCreateTime().desc();
List<Task> list = query.listPage(0, 10);
for (Task task : list) {
System.out.println("id = " + task.getId() + " name = "
+ task.getName() + " processInstanceId = "
+ task.getProcessInstanceId());
}
}
/**
* 办理个人任务,操作的数据表:act_ru_execution(流程实例表)、act_ru_task(任务表)
*/
@Test
public void test7(){
TaskQuery query = processEngine.getTaskService().createTaskQuery();
query.taskAssignee("张三");
query.orderByTaskCreateTime().desc();
List<Task> list = query.list();
for (Task task : list) {
System.out.println(task.getId());
}
}
/**
* 删除流程定义
*/
@Test
public void test8(){
String deploymentId = "701"; //部署id
boolean cascade = true; //级联删除
processEngine.getRepositoryService().deleteDeployment(deploymentId, cascade );
}
/**
* 删除流程实例
*/
@Test
public void test9(){
String processInstanceId = "1201";
String deleteReason = "不请假了 哈哈哈";
processEngine.getRuntimeService().deleteProcessInstance(processInstanceId, deleteReason);
}
}