2019独角兽企业重金招聘Python工程师标准>>>
安装流程设计器插件:
使用框架提供的方式创建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();//部署流程定义两种方式@Testpublic 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();}//查询最新版本的流程定义@Testpublic 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();List<ProcessDefinition> list = query.listPage(0, 10);for (ProcessDefinition processDefinition : list) {System.out.println(processDefinition);}}//删除流程定义@Testpublic void test3(){String deploymentId = "101";//部署idprocessEngine.getRepositoryService().deleteDeployment(deploymentId);}//查询流程定义文件(bpmn、png)名称和对应的输入流@Testpublic void test4() throws Exception{String deploymentId = "901";//部署idList<String> 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];//1KBin.read(b);out.write(b);out.close();*/FileUtils.copyInputStreamToFile(in, new File("d:\\"+name));in.close();}}//启动流程实例两种方式@Testpublic void test5(){//方式一:根据流程定义的id启动流程实例//String processDefinitionId;//流程定义id//processEngine.getRuntimeService().startProcessInstanceById(processDefinitionId);//方式二:根据流程定义key启动流程实例(建议使用)----自动选择最新版本的流程定义String processDefinitionKey = "qjlc";//流程定义keyProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey);System.out.println(processInstance.getId());}//查询流程实例@Testpublic void test6(){List<ProcessInstance> list = processEngine.getRuntimeService().createProcessInstanceQuery().list();for (ProcessInstance processInstance : list) {System.out.println(processInstance);}}//删除流程实例@Testpublic void test7(){String processInstanceId = "1301";//流程实例idString deleteReason = "不请假了";//删除原因processEngine.getRuntimeService().deleteProcessInstance(processInstanceId, deleteReason);}//查询个人任务@Testpublic void test8(){//任务查询对象,可以查询act_ru_taskTaskQuery query = processEngine.getTaskService().createTaskQuery();query.taskAssignee("张三");//添加排序条件query.orderByTaskCreateTime().desc();//分页查询List<Task> list = query.listPage(0, 5);for (Task task : list) {System.out.println(task);}}//办理个人任务@Testpublic void test9(){String taskId = "1504";//任务idprocessEngine.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:操作任务的