天天看点

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

继续阅读