Activiti7 進階(二)


有時,流程定義可能並不唯一(公司同時使用了多個流程),所以需要  查詢流程定義信息:

/**
 * 查詢流程定義信息
 **/
public class QueryProcessDefinition {

    public static void main(String[] args) {
        //1.創建ProcessEngine對象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

        //2.創建RepositoryService對象
        RepositoryService repositoryService = processEngine.getRepositoryService();

        //3.得到ProcessDefinitionQuery對象,可以認為它就是一個查詢器
        ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();

        //4.設置條件,並查詢出當前的所有流程定義  查詢條件:流程定義的key=holiday
        //.orderByProcessDefinitionVersion() 設置排序方式,根據流程定義的版本號進行排序。
        List<ProcessDefinition> list = processDefinitionQuery.processDefinitionKey("holiday")
                .orderByProcessDefinitionVersion()
                .desc().list();

        //5.輸出流程定義信息
        for (ProcessDefinition processDefinition : list) {
            System.out.println("流程定義ID" + processDefinition.getId());
            System.out.println("流程定義名稱" + processDefinition.getName());
            System.out.println("流程定義Key" + processDefinition.getKey());
            System.out.println("流程定義的版本號" + processDefinition.getVersion());
        }
    }
}

存在多個流程,就肯定會遇到需要刪除流程定義的時候:

/**
 * 刪除已經部署的流程定義
 * 影響的activiti表有哪些
 *   act_re_deployment 部署信息
 *   act_re_procdef    流程定義的一些信息
 *   act_ge_bytearray  流程定義的bpmn文件以及png文件
 **/
public class DeleteProcessDefinition {

    public static void main(String[] args) {
        //1.創建ProcessEngine對象
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

        //2.創建RepositoryService對象
        RepositoryService repositoryService = processEngine.getRepositoryService();

        //3.執行刪除流程定義,參數代表流程部署的id
        repositoryService.deleteDeployment("1");
    }
}

注意:當有流程實例正在運行時,這種方法無法刪除該流程定義定義信息

如果非要強制刪除,可以修改上面方法參數:

//參數true代表級聯刪除,此時就會先刪除沒有完成的流程節點,最后就可以刪除流程定義信息,false代表不級聯
repositoryService.deleteDeployment("1","true");

 

也有可能會有一個流程已經結束了,需要查看它的歷史信息的情況存在:

/**
 * 需求
 * 歷史數據的查看
 **/
public class HistoryQuery {

    public static void main(String[] args) throws IOException {
    //1.得到ProcessEngine對象
    ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
    //2.得到HistoryService
    HistoryService  historyService = processEngine.getHistoryService();
    //3.得到HistoricActivitiInstanceQuery對象
    HistoricActivityInstanceQuery historicActivityInstanceQuery = historyService.createHistoricActivityInstanceQuery();

    historicActivityInstanceQuery.processInstanceId("2501");//設置流程實例的id
    //4.執行查詢
    List<HistoricActivityInstance> list = historicActivityInstanceQuery
            .orderByHistoricActivityInstanceStartTime()
            .asc()//根據流程開始進行的時間來排序
            .list();

    //5.遍歷查詢結果
        for (HistoricActivityInstance instance : list) {
            System.out.println("節點ID:" + instance.getActivityId());
            System.out.println("節點名稱:" + instance.getActivityName());
            System.out.println("流程定義ID:" + instance.getProcessDefinitionId());
            System.out.println("流程實例ID:" + instance.getProcessInstanceId());
            System.out.println("=================================");
        }
    }
}

 


免責聲明!

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



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