zoukankan      html  css  js  c++  java
  • Activiti(二)

    1.压缩包流程部署

     将这两个文件压缩成zip格式的压缩包

    import org.activiti.engine.ProcessEngine;
    import org.activiti.engine.ProcessEngines;
    import org.activiti.engine.RepositoryService;
    import org.activiti.engine.repository.Deployment;
    import org.junit.Test;
    
    import java.io.InputStream;
    import java.util.zip.ZipInputStream;
    
    public class Test2 {
    
        @Test
        public void deploymentByZip(){
            //获取processEngine对象
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            //获取一个RepositoryService对象
            RepositoryService repositoryService = processEngine.getRepositoryService();
            //定义一个输入流,加载Zip文件
            InputStream inputStream=this.getClass().getClassLoader().getResourceAsStream("bpmn/holiday.zip");
            //定义一个ZIPInputStream对象
            ZipInputStream zipInputStream=new ZipInputStream(inputStream);
            //流程部署
            Deployment deploy = repositoryService.createDeployment()
                    .addZipInputStream(zipInputStream)
                    .name("请求审批流程")
                    .key("holidayKey")
                    .deploy();
            System.out.println("流程名称:"+deploy.getName());
    
        }
    }

    二:启动流程实例

        @Test
        //启动流程实例
        public void startProcessInstance() {
            RuntimeService runtimeService = processEngine.getRuntimeService();
            ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess_1");
            System.out.println(processInstance.getName());
            System.out.println(processInstance.getDeploymentId());
            System.out.println(processInstance.getActivityId());
        }

    三:流程定义的查看

     
                @Test
                public void getProDef(){
                    //获取processEngine对象
                    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
                    //获取一个RepositoryService对象
                    RepositoryService repositoryService = processEngine.getRepositoryService();
                    //得到流程定义查看对象ProcessDefinitionQuery
                    ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
                    //指定查看的流程   processDefinitionKey()指定流程定义的key值   orderByProcessDefinitionVersion根据流程定义版本号排序
                    List<ProcessDefinition> holiday = processDefinitionQuery.processDefinitionKey("holiday").orderByProcessDefinitionVersion().desc().list();
                    for (ProcessDefinition proDef:holiday) {
                        System.out.println("流程定义ID:"+proDef.getId());
                        System.out.println("流程定义的名称:"+proDef.getName());
                        System.out.println("流程定义的Key:"+proDef.getKey());
                        System.out.println("流程定义的版本号:"+proDef.getVersion());
                    }
                }

     四:删除流程

        /**
         * 删除流程:
         * 假设在删除时,当前正在有该流程实例执行,那么会导致删除失败
         * 如果强制要求,则可以使用repositoryService.deleteDeployment("1",true); true代表级联删除
         */
        @Test
        public void deleteDeployment(){
            //获取processEngine对象
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            //获取一个RepositoryService对象
            RepositoryService repositoryService = processEngine.getRepositoryService();
            //删除流程
            repositoryService.deleteDeployment("32501",true);
        }

    五:从数据库读取资源

     /**
         * 从数据中读取资源文件到本地
         */
        @Test
        public void getResource() throws IOException {
            //获取processEngine对象
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            //获取一个RepositoryService对象
            RepositoryService repositoryService = processEngine.getRepositoryService();
            //获取到流程查询对象
            ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
            //获取到流程资源
            processDefinitionQuery.processDefinitionKey("myProcess_1");
            //获取单一结果
            ProcessDefinition processDefinition = processDefinitionQuery.singleResult();
            //流程部署的ID
            String deploymentId = processDefinition.getDeploymentId();
            //获取到bpmnResource
            InputStream bpmnStream = repositoryService.getResourceAsStream(deploymentId, processDefinition.getResourceName());
            //获取到png
            InputStream pngStream = repositoryService.getResourceAsStream(deploymentId, processDefinition.getDiagramResourceName());
            //构建输出流
            OutputStream bpmnOut = new FileOutputStream("F:\study\IDEAY2\MyTest\Active\Active\Day01\src\main\resources\" + processDefinition.getResourceName());
            OutputStream pngOut = new FileOutputStream("F:\study\IDEAY2\MyTest\Active\Active\Day01\src\main\resources\" + processDefinition.getDiagramResourceName());
            //将数据输出到磁盘当中
            IOUtils.copy(bpmnStream,bpmnOut);
            IOUtils.copy(pngStream,pngOut);
            //关流
            pngOut.close();
            bpmnOut.close();
            pngStream.close();
            bpmnStream.close();
        }

    六:启动流程实例和业务系统关联

     /**
         * 启动流程实例和业务系统关联
         * 正常应该先添加数据到业务表当中,拿到当前添加数据的主键ID,通过启动流程实例,将主键ID交给BuessniessKkey
         * 代表和流程系统进行关联
         */
        @Test
        public void startInstance(){
            //获取processEngine对象
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            RuntimeService runtimeService = processEngine.getRuntimeService();
            //生成流程
            ProcessInstance holiday = runtimeService.startProcessInstanceByKey("myProcess_1","2");
            //获取一个TaskService对象
            TaskService taskService = processEngine.getTaskService();
            List<Task> list = taskService.createTaskQuery().taskAssignee("ty").processDefinitionKey("myProcess_1").list();
            //任务审批
            for (Task task:list){
                taskService.complete(task.getId());
    
            }
        } 

    七:流程挂起

    /**
         * 所有流程定义的挂起
         */
        @Test
        public void allSuspend(){
            //获取processEngine对象
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            //获取repositoryService对象
            RepositoryService repositoryService = processEngine.getRepositoryService();
            //获取流程定义
            ProcessDefinition holiday = repositoryService.createProcessDefinitionQuery().processDefinitionKey("myProcess_1").singleResult();
            //获取到当前流程定义是否为暂停状态   suspended方法为true代表为暂停   false就是运行的
            boolean suspended = holiday.isSuspended();
            if(suspended){
                repositoryService.activateProcessDefinitionById(holiday.getId(),true,null);
                System.out.println("该流程定义激活");
            }else{
                repositoryService.suspendProcessDefinitionById(holiday.getId(),true,null);
                System.out.println("该流程定义暂停");
            }
        }

    八:单个流程的挂起

     /**
         * 单个流程实例的挂起
         */
        @Test
        public void singleSuspend(){
            //获取processEngine对象
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            //获取RuntimeService对象
            RuntimeService runtimeService = processEngine.getRuntimeService();
            ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId("7501").singleResult();
            //获取到当前流程定义是否为暂停状态   suspended方法为true代表为暂停   false就是运行的
            boolean suspended = processInstance.isSuspended();
            if(suspended){
                runtimeService.activateProcessInstanceById("7501");
                System.out.println("xx的请假流程激活");
            }else{
                runtimeService.suspendProcessInstanceById("7501");
                System.out.println("xx的请假流程挂起");
            }
        }
  • 相关阅读:
    2020.9.21
    企业应用架构模式003——对象-关系结构模式
    企业应用架构模式002
    企业应用架构模式001
    代码大全003/
    代码大全002/
    每日总结
    数论必刷题
    Tarjan求割点(割顶) 割边(桥)
    Luogu 2018 秋令营 Test 2
  • 原文地址:https://www.cnblogs.com/yjc1605961523/p/12621223.html
Copyright © 2011-2022 走看看