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