DMN / Camunda Modeller: как определить параллельный результат нескольких экземпляров - PullRequest
1 голос
/ 15 октября 2019

Я хочу включить таблицу решений в свой процесс.

Поскольку входные данные представляют собой список элементов, я хочу вызвать его для каждого элемента параллельно.

Когда я смотрю на вывод, он включает только одну запись. Таким образом, кажется, что каждое выполнение отменяет предыдущее. Пример: [{pricePerProcessInstance=150.0, pricePerTask=0.0}]

Я подозреваю, что что-то не так в определении.

Вот определение для него:

dmn definition

1 Ответ

2 голосов
/ 18 октября 2019

Я считаю, что слушатель выполнения (1) должен решить вашу проблему.

Вы можете настроить прослушиватель конечного выполнения, как показано здесь

Пожалуйста, взгляните на пример реализации класса, определенного в разделе слушателя выше.

public class MyService implements JavaDelegate {

  @Override
  public void execute(DelegateExecution delegateExecution) {
    List<String> resultList = (List<String>) delegateExecution.getVariable("resultList");

    if (resultList == null) {
      resultList = new ArrayList<>();
    }

    resultList.add((String) delegateExecution.getVariable("processPrices"));

    delegateExecution.setVariable("resultList", resultList);

  }

}

При каждом выполнении таблицы решений переменная результата processPrices будет добавляться к ArrayList resultList.

(1) https://docs.camunda.org/manual/latest/user-guide/process-engine/delegation-code/#execution-listener

...