安装流程设计器插件:
使用框架提供的方式创建23张表:
流程部署,定义,启动&查询,办理任务:
流程的部署,查询,删除 & 获取流程定义文件 & 流程实例的启动,查询,删除 & 查询,办理个人任务:
package cn.itcast.activiti;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.List;import java.util.zip.ZipInputStream;import org.activiti.engine.ProcessEngine;import org.activiti.engine.ProcessEngines;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.apache.commons.io.FileUtils;import org.junit.Test;/** * 测试API * @author zhaoqx * */public class ActivitiAPITest { ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //部署流程定义两种方式 @Test public void test1() throws Exception{ DeploymentBuilder deploymentBuilder = processEngine.getRepositoryService().createDeployment(); //方式一:加载单个的流程定义文件 //deploymentBuilder.addClasspathResource("qjlc.bpmn"); //deploymentBuilder.addClasspathResource("qjlc.png"); //deploymentBuilder.deploy(); //方式二:加载zip压缩文件 ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(new File("d:\\Desktop.zip"))); deploymentBuilder.addZipInputStream(zipInputStream); deploymentBuilder.deploy(); } //查询最新版本的流程定义 @Test public void test2() throws Exception{ //processEngine.getXXXService().createXXXQuery(); //processEngine.getRepositoryService().createDeploymentQuery().list(); //processEngine.getRuntimeService().createProcessInstanceQuery().list(); //processEngine.getTaskService().createTaskQuery().list(); //processEngine.getHistoryService().createHistoricActivityInstanceQuery().list(); ProcessDefinitionQuery query = processEngine.getRepositoryService().createProcessDefinitionQuery(); //添加过滤条件 //query.processDefinitionNameLike("请假%"); //添加过滤条件,查询最新的 //query.latestVersion(); //添加排序条件 query.orderByProcessDefinitionId().asc(); Listlist = query.listPage(0, 10); for (ProcessDefinition processDefinition : list) { System.out.println(processDefinition); } } //删除流程定义 @Test public void test3(){ String deploymentId = "101";//部署id processEngine.getRepositoryService().deleteDeployment(deploymentId); } //查询流程定义文件(bpmn、png)名称和对应的输入流 @Test public void test4() throws Exception{ String deploymentId = "901";//部署id List list = processEngine.getRepositoryService().getDeploymentResourceNames(deploymentId); for (String name : list) { InputStream in = processEngine.getRepositoryService().getResourceAsStream(deploymentId, name); System.out.println(name); //通过一个输出流写 OutputStream out = new FileOutputStream(new File("d:\\"+name)); /*byte[] b = new byte[1024];//1KB in.read(b); out.write(b); out.close();*/ FileUtils.copyInputStreamToFile(in, new File("d:\\"+name)); in.close(); } } //启动流程实例两种方式 @Test public void test5(){ //方式一:根据流程定义的id启动流程实例 //String processDefinitionId;//流程定义id //processEngine.getRuntimeService().startProcessInstanceById(processDefinitionId); //方式二:根据流程定义key启动流程实例(建议使用)----自动选择最新版本的流程定义 String processDefinitionKey = "qjlc";//流程定义key ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey); System.out.println(processInstance.getId()); } //查询流程实例 @Test public void test6(){ List list = processEngine.getRuntimeService().createProcessInstanceQuery().list(); for (ProcessInstance processInstance : list) { System.out.println(processInstance); } } //删除流程实例 @Test public void test7(){ String processInstanceId = "1301";//流程实例id String deleteReason = "不请假了";//删除原因 processEngine.getRuntimeService().deleteProcessInstance(processInstanceId, deleteReason); } //查询个人任务 @Test public void test8(){ //任务查询对象,可以查询act_ru_task TaskQuery query = processEngine.getTaskService().createTaskQuery(); query.taskAssignee("张三"); //添加排序条件 query.orderByTaskCreateTime().desc(); //分页查询 List list = query.listPage(0, 5); for (Task task : list) { System.out.println(task); } } //办理个人任务 @Test public void test9(){ String taskId = "1504";//任务id processEngine.getTaskService().complete(taskId); }}
总结API
l 几个接口(和表有对应关系)
1、Deployment对应部署表act_re_deployment
2、ProcessDefinition对应流程定义表act_re_procdef
3、ProcessInstance对应流程实例表act_ru_execution
4、Task对应任务表act_ru_task
l 几个Query对象(查询对应的数据表)
1、DeploymentQuery对应部署表act_re_deployment
2、ProcessDefinitionQuery对应流程定义表act_re_procdef
3、ProcessInstanceQuery对应流程实例表act_ru_execution
4、TaskQuery对应任务表act_ru_task
l 几个Service对象
1、RepositoryService:操作流程定义相关信息的、部署流程定义、删除流程定义、查询流程定义、查询流程定义文件名称和输入流
2、RuntimeService:操作流程实例的
3、TaskService:操作任务的
框架提供的网页版流程设计器使用: