【问题标题】:How to Retrieve execution from ProcessInstance如何从 ProcessInstance 中检索执行
【发布时间】:2018-08-20 12:53:22
【问题描述】:

刚开始在 camunda 中创建流程并使用流程变量。我可以成功创建这些流程变量,然后在服务任务中读取它们,然后使用输入/输出参数输出它们。但是我正在努力在实际启动此流程的程序中再次检索这些参数的更新值。这是sn-ps:

//测试用例

RuntimeService rs = processEngine().getRuntimeService();
      Map<String, Object> variables = new HashMap<>();
      variables.put("percentageCompletion", "11");
      ProcessInstance processInstance = rs.startProcessInstanceByKey(PROCESS_DEFINITION_KEY, variables);

percentageCompletion 可通过以下方式在服务任务中访问

Object pc = execution.getVariable("percentageCompletion");// Update and set its new value

现在如何在测试用例中再次获取percentageCompletion 的更新值?我已经关注了类似的问题Process Variables in Camunda-BPM

【问题讨论】:

    标签: java bpmn camunda


    【解决方案1】:

    这就是我在 junit 中获取它们的方式

     @Test
      @Deployment(resources = "process.bpmn")
      public void testParsingAndDeployment() {
     }
    
      @Test
      @Deployment(resources = "process.bpmn")
      public void testHappyPath() {
          RuntimeService rs = processEngine().getRuntimeService();
          Map<String, Object> variables = new HashMap<>();
          variables.put("percentageCompletion", "11");
          ProcessInstance processInstance = rs.startProcessInstanceByKey(PROCESS_DEFINITION_KEY, variables);
          System.out.println(processInstance.isEnded() + ", " + processInstance.isSuspended());
          VariableInstance vi = processEngine().getRuntimeService().createVariableInstanceQuery().processInstanceIdIn(processInstance.getId()).variableName("percentageCompletion").singleResult();
          System.out.println(processInstance.isEnded() + ", " + processInstance.isSuspended());
          System.out.println("********* " + processEngine().getHistoryService().createHistoricDetailQuery().processInstanceId(processInstance.getProcessInstanceId()).count());
    
          String executionId = processEngine().getHistoryService().createHistoricDetailQuery().processInstanceId(processInstance.getProcessInstanceId()).list().get(0).getExecutionId();
          System.out.println("executionId " + executionId);
    
          List<HistoricVariableInstance> hvis = processEngine().getHistoryService().createHistoricVariableInstanceQuery().executionIdIn(executionId).list();
          System.out.println("------------ " + hvis.size());
    
          for (HistoricVariableInstance hi : hvis) {
              System.out.println(hi.getName() + " : "+ hi.getValue());
          }
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-12
      • 2011-09-15
      • 2020-10-15
      • 2016-03-28
      • 2013-01-27
      • 1970-01-01
      • 2012-03-12
      • 1970-01-01
      相关资源
      最近更新 更多