Mulesoft - принудительное исключение согласно statusCode - PullRequest
0 голосов
/ 05 апреля 2019

Я реализовал поток Mule, который читает файлы CSV и вставляет записи в Salesforce с помощью пакета.

Для управления ошибками я создал шаг, который принимает только ошибочные записи.

Я попытался изменить исходные значения, чтобы он не работал, и доказать, что он работает правильно.

Ответным сообщением Salesforce является JSON, содержащий поле с именем statusCode со следующим значением: INVALID_TYPE_ON_FIELD_IN_RECORD.

Однако Мул не распознает его как ошибку и не дает сбоя, поэтому он никогда не входитШаг неудачных записей.

enter image description here

Как я могу изменить это?Должен ли я изменить его в Salesforce или добавить регистры statusCode в Error Mapping?

1 Ответ

2 голосов
/ 05 апреля 2019

В Mule 4 вы можете использовать raiser-error, чтобы вызвать ошибку.Тогда вам просто нужно определить, какое выражение вызвать ваше выражение:

#[sizeOf((payload.errors default [])) > 0]

или

#[payload.errors[0].statusCode=='INVALID_TYPE_ON_FIELD_IN_RECORD']

и т. Д.

Пример использования выбора маршрутизатора:

<choice doc:name="successful?">
            <when expression="#[sizeOf((payload.errors default [])) > 0]">
                <raise-error type="APP:INVALID_TYPE_ON_FIELD_IN_RECORD" />
            </when>
        </choice>

Альтернативой управлению потоком с ошибками является установка выражения acceptExp на шаге пакета с тем же выражением:

<batch:step name="step1" acceptExpression="#[sizeOf((payload.errors default [])) > 0]">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...