天天看點

《Activiti/Flowable 深入BPM工作流》- BPM任務如何關聯businessKey?一. 問題二. 詳情

           《Activiti/Flowable  深入BPM工作流》- BPM任務如何關聯businessKey?

一. 問題

   1. BPM任務如何關聯businessKey?

   2. 為什麼要關聯businesskey

二. 詳情

     2.1  任務為什麼要進行關聯businessKey?

    解答: 在activiti實際應用時, 查詢代辦任務可能要顯示出業務系統的一些相關資訊, 例如: 查詢待審批請假單任務清單, 需要将請假單的日期,請假天數等資訊顯示出來,請假天數等資訊在業務系統中存在, 而并沒有在activiti 資料庫中存在, 是以無法通過activiti查詢到請假天數等資訊.

    2.2 那怎麼實作呢?

 解答: 在查詢代辦任務是,通過businessKey(業務辨別)關聯業務系統的請假單表,查詢出請假天數等資訊.

/**
     * 關聯businessKey如何實作?
     */
    public void connectBusinessKey() {

        // 1.擷取 ProcessEngine 引擎.
        ProcessEngineConfiguration configuration = ProcessEngineConfiguration
                .createProcessEngineConfigurationFromResource("activiti.cfg.xml");
        ProcessEngine processEngine = configuration.buildProcessEngine();

        // 2.建立 RuntimeService, TaskService對象
        RuntimeService runtimeService = processEngine.getRuntimeService();
        TaskService taskService = processEngine.getTaskService();

        // 3.通過 TaskService查詢到個人任務
        Task task = taskService.createTaskQuery().processDefinitionKey("studentHoliday")
                .taskAssignee("Daniel")
                .singleResult();

        // 4.通過 task對象,得到任務id
        String processInstanceId = task.getProcessInstanceId();

        // 5.通過流程執行個體id,得到流程執行個體對象.
        ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
                .processInstanceId(processInstanceId)
                .singleResult();

        // 6. 對象 processInstance對象, 得到 businessKey
        String businessKey = processInstance.getBusinessKey();

        // 7.根據 businessKey 就可以得到請假單的資訊.
        System.out.println("businessKey: " + businessKey);
    }
           

繼續閱讀