Mulesoft-根据statusCode强制异常

时间:2019-04-05 07:45:05

标签: exception salesforce mule throw

我已经实现了一个Mule流,该流可以读取CSV文件,并使用批处理将记录插入Salesforce。

为管理错误,我创建了一个仅接受失败记录的步骤。

我尝试修改原始值,以使其失败并证明其正常工作。

Salesforce响应消息是一个JSON,其中包含一个名为statusCode的字段,其值为以下值:INVALID_TYPE_ON_FIELD_IN_RECORD

但是Mule不会将其识别为错误并且不会失败,因此它永远不会进入失败记录的步骤。

enter image description here

我该如何修改?我应该在Salesforce中更改它还是在错误映射中添加statusCode大小写?

1 个答案:

答案 0 :(得分:2)

在Mule 4中,您可以使用引发器错误来强制执行错误。然后,您只需要定义触发表达式的表达式即可:

#[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>

控制错误的流程的另一种方法是在批处理步骤中使用相同的表达式设置acceptExpression:

<batch:step name="step1" acceptExpression="#[sizeOf((payload.errors default [])) > 0]">