《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);
}