Call activity Error handle

Подскажите, если в call activity выбрасывается ошибка, как ее обработать и продолжить дальнейшую работу. Обычные делегаты у меня обрабатываются через error start event, а call avticity не воспринимает его и при ошибке просто заканчивает работы bpmn

1 лайк

Добрый день!

  1. Обрабатываются только ошибки BpmnError. Создать их можно следующим образом:

Embedded Engine / Java Delegates:

throw new BpmnError(String errorCode)

External Task

externalTaskService.handleBpmnError(externalTask, ErrorConstant.CONNECT_ERROR);

User Task / Embedded Forms - по кнопке

<button cam-error-code="bpmn-error-543"
 cam-error-message="anErrorMessage" />

Или можно использовать соответствующие методы REST API для User Task и External Task.

  1. Обработать созданные ошибки можно с помощью Error Boundary Event или Event Subprocess стартующий с Error Event.

Подозреваю, что в Call Activity у вас делегаты, создающие не BpmnError, а обычное исключение (порождающее в свою очередь инцидент в Camunda). Если вы хотите обрабатывать технические ошибки делегатного кода с помощью Error Event, необходимо оборачивать исключения в try/catch блок и создавать BpmnError.

        try {
            // может быть ошибка
            List<Issue> issueList = new ArrayList<>();
            ResponseEntity<RedmineResponse> responseEntity = redmineClient
                .findIssuesByProjectAndStatus(statusId, projectId);
    
            delegateExecution.setVariable(
                ProcessVariables.ISSUE_LIST, issueList);
        } catch (Exception e) {
            log.error("{} {}", Errors.GET_INCIDENTS_ERROR, e.getMessage());
            throw new BpmnError(Errors.GET_INCIDENTS_ERROR, e.getMessage());
        }