【问题标题】:how to get taskId based on processInstanceId in camunda如何根据camunda中的processInstanceId获取taskId
【发布时间】:2020-08-19 15:07:30
【问题描述】:

我想确保我对 camunda 工作流程 (WF) 的看法是正确的。例如我有 foo 事务,那么 foo 事务将通过执行来启动进程 方法“ProcessInstance startProcessInstanceByKey(String processDefinitionKey)”,作为回报 foo 事务可以获得 WF 的 processInstanceId, 然后 foo 事务将被保存到 DB 事务中。 对于下一次批准,foo 事务必须命中“void complete(String taskId, Map variables);”要完成任务,如何根据 processInstanceId 获取 taskId ? .一个processInstanceId是否只有一个taskId?

【问题讨论】:

    标签: java camunda


    【解决方案1】:

    流程实例在启动后可能会创建多个任务实例,作为其执行的一部分。您可以使用 TaskQuery(根据需要应用过滤器)查询给定流程实例 ID 的待处理(用户)任务实例。

    休息: https://docs.camunda.org/manual/7.13/reference/rest/task/get-query/

    JAVA: https://docs.camunda.org/javadoc/camunda-bpm-platform/7.14/org/camunda/bpm/engine/TaskService.html#createTaskQuery--

    RuntimeService runtimeService = engine.getRuntimeService();
    ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("MyProcess");
    
    TaskService taskService = engine.getTaskService();
    List<Task> taskList = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();
    
    Task task = taskList.get(0);
    Map<String, Object> inputData = new HashMap<String, Object>();
    inputData.put("myInput", true);
    taskService().complete(task.getId(), inputData);
    

    【讨论】:

    • 你如何在这里导入引擎?
    【解决方案2】:

    类似的东西 流程引擎 .getManagementService() .createJobQuery() .executionId(执行Id) .singleResult() .getId()

    【讨论】:

      猜你喜欢
      • 2020-11-09
      • 2020-12-16
      • 1970-01-01
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多