activiti基础应用

来源:互联网 发布:centos五笔拼音输入法 编辑:程序博客网 时间:2024/06/13 13:09

花了这么久的时间,终于把所有的异常都撸完,终于可以撸实例了
这里写图片描述

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);        }}