Activiti7 獲取資源信息及其查詢流程歷史信息


獲取資源信息

/**
     * 獲取資源信息
     *
     * @throws IOException
     */
    @Test
    public void getProcessResources() throws IOException {

        // 1:流程定義ID
        String processDefinitionId = "holiday:1:7504";

        // 2:獲取RepositoryService
        RepositoryService repositoryService = defaultProcessEngine.getRepositoryService();

        // 3:創建查詢對象
        ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();

        // 4:查詢流程定義
        ProcessDefinition processDefinition = processDefinitionQuery.processDefinitionId(processDefinitionId).singleResult();

        // 5:獲取資源名稱
        String resourceName = processDefinition.getResourceName();

        System.out.println("bpmn名稱:" + resourceName);

        // 6:獲取圖片名稱
        String diagramResourceName = processDefinition.getDiagramResourceName();

        System.out.println("png名稱:" + diagramResourceName);

        File bpmnFile = new File("E:\\dance\\activiti7\\src\\main\\resources\\cp\\holiday.bpmn");
        File pngFile = new File("E:\\dance\\activiti7\\src\\main\\resources\\cp\\holiday.png");

        // 7:根據部署ID和資源名稱獲取資源流
        InputStream resourceAsStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), resourceName);

        // 8:創建輸出流
        FileOutputStream fileOutputStream = new FileOutputStream(bpmnFile);

        // 寫文件
        writeByte(resourceAsStream, fileOutputStream);

        // 獲取圖片
        resourceAsStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), diagramResourceName);

        fileOutputStream = new FileOutputStream(pngFile);

        // 寫文件
        writeByte(resourceAsStream, fileOutputStream);

        System.out.println("獲取資源成功!");

    }

寫出流方法

private void writeByte(InputStream resourceAsStream, OutputStream fileOutputStream) throws IOException {
        int i = -1;
        byte[] content = new byte[1024];
        while ((i = resourceAsStream.read(content)) != -1) {
            fileOutputStream.write(content, 0, i);
        }
        // 釋放資源
        fileOutputStream.flush();
        fileOutputStream.close();
        resourceAsStream.close();
    }

查詢流程歷史信息

/**
     * 獲取歷史信息
     */
    @Test
    public void testHistoric01() {

        // 獲取歷史信息Service
        HistoryService historyService = defaultProcessEngine.getHistoryService();

        // 啟動的流程實例的ID
        String processInstanceId = "10001";

        // 根據流程實例ID查詢 歷史記錄
        List<HistoricActivityInstance> list = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list();

        // 輸出信息
        list.forEach(historicActivityInstance -> {
            System.out.println("---------------------------------------------------");
            System.out.println("當前激活ID:" + historicActivityInstance.getActivityId());
            System.out.println("當前激活名稱:" + historicActivityInstance.getActivityName());
            System.out.println("流程定義ID:" + historicActivityInstance.getProcessDefinitionId());
            System.out.println("流程實例ID:" + historicActivityInstance.getProcessInstanceId());
            System.out.println("---------------------------------------------------");
        });

    }

作者:彼岸舞

時間:2020\08\31

內容關於:Activiti工作流

本文來源於網絡,只做技術分享,一概不負任何責任


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM