• 【工作流引擎】Activiti的使用03


    流程定义查询

      // 获取部署时的信息
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            RepositoryService repositoryService = processEngine.getRepositoryService();
            ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
            //根据表 act_re_procdef 表中的key查询部署的流程定义
            List<ProcessDefinition> myEvection = processDefinitionQuery.processDefinitionKey("MyEvection").orderByProcessDefinitionVersion().desc().list();
            for (ProcessDefinition pro :
                    myEvection) {
                System.out.println(pro.getId());
                System.out.println(pro.getName());
                System.out.println(pro.getKey());
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    流程定义删除

    
        @Test
        public void deleteProcess() {
            ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
    
    
            RepositoryService repositoryService = defaultProcessEngine.getRepositoryService();
    
            //先获取已经部署的;
            ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
            List<ProcessDefinition> myEvection = processDefinitionQuery.processDefinitionKey("MyEvection").orderByProcessDefinitionVersion().desc().list();
            for (ProcessDefinition pro :
                    myEvection) {
                System.out.println(pro.getDeploymentId());//1
            }
            repositoryService.deleteDeployment("1");
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    当流程没走完的时候,这种方式是不可以的,我们可以用级联删除的方式
    repositoryService.deleteDeployment("1",true);

    流程资源文件下载

    
        /**
         * 流程资源文件下载
         */
    
        @Test
        public void downloadProcessSource() {
            ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
            RepositoryService repositoryService = defaultProcessEngine.getRepositoryService();
            //获得流程定义的服务
            ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
            //获得流程定义实例
            ProcessDefinition myEvection = processDefinitionQuery.processDefinitionKey("MyEvection").singleResult();
            //获得流程部署id
            String deploymentId = myEvection.getDeploymentId();
            //获得流程部署资源名称
            String pngName = myEvection.getDiagramResourceName();
            //读取数据---获得一个流
            InputStream pngStream = repositoryService.getResourceAsStream(deploymentId, pngName);
    //        获得bpmn资源信息
            String bpmnName = myEvection.getResourceName();
            InputStream bpmnStream = repositoryService.getResourceAsStream(deploymentId, bpmnName);
    
    //将流输出到本地
    
            File pngFile = new File("d:/evePng.png");
            File bpmnFile = new File("d:/eveBpmn.bpmn");
            try {
                FileOutputStream pngFileStream = new FileOutputStream(pngFile);
                FileOutputStream bpmnFileStream = new FileOutputStream(bpmnFile);
    
                IOUtils.copy(pngStream, pngFileStream);
                IOUtils.copy(bpmnStream, bpmnFileStream);
                bpmnFileStream.close();
                pngFileStream.close();
                pngStream.close();
                bpmnStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    在这里插入图片描述

    历史记录查询

        /**
         * 流程历史信息查看
         */
        @Test
        public void SeeHistory() {
            ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
            //获取历史服务service
            HistoryService historyService = processEngine.getHistoryService();
            //创建历史查询实例
            HistoricActivityInstanceQuery historicActivityInstanceQuery = historyService.createHistoricActivityInstanceQuery();
            //查询条件
            List<HistoricActivityInstance> list = historicActivityInstanceQuery.processInstanceId("2501").orderByHistoricActivityInstanceStartTime().asc().list();
            for (HistoricActivityInstance his : list
            ) {
                System.out.println(his.getActivityId());
                System.out.println(his.getActivityName());
                System.out.println(his.getAssignee());
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    demo部分差不多就这些,我们实际运用中要运用activiti表与实际业务表进行关联以满足复杂的业务需求;

    在这里插入图片描述

  • 相关阅读:
    【ACM学习】【STL】单向链表forward_list 和 数组array
    shell [stdin/stdout/stderr][重定向]
    mac下mysql 常用命令
    Kotlin高仿微信-第8篇-单聊
    测试一下 Baichuan2-7B-Chat 的性能
    个人秋招面经——百度
    Docker 的学习笔记-docker的常用命令
    JavaFX入门和网格布局面板的使用,Dao层交互,舞台与场景切换以及其他控件的使用
    Java编程规范(命名规则),Java程序的运行过程(执行流程)分析
    iPhone 15有始终显示功能吗?它会出现在更多的苹果手机上吗?
  • 原文地址:https://blog.csdn.net/weixin_54061333/article/details/133765912