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