分析Mule ESB中Salesforce连接器的错误

分析Mule ESB中Salesforce连接器的错误,mule,mule-studio,mule-el,Mule,Mule Studio,Mule El,我正在使用Mule ESB 3.4 CE。我有一个使用Salesforce connector创建联系人的流程。我想分析错误并执行一些操作 .... <sfdc:create config-ref="Salesforce" type="Contact" doc:name="Create Contacts"> <sfdc:objects ref="#[payload]"/> </sfdc:create> <expression-component

我正在使用Mule ESB 3.4 CE。我有一个使用Salesforce connector创建联系人的流程。我想分析错误并执行一些操作

....
<sfdc:create config-ref="Salesforce" type="Contact" doc:name="Create Contacts">
     <sfdc:objects ref="#[payload]"/>
</sfdc:create>
<expression-component doc:name="Get Successful List">flowVars.listSuccess = ($ in payload if $.success=='true')</expression-component>
<expression-component doc:name="Get Failed List">flowVars.listErrors = ($.errors in payload if $.success=='false')</expression-component>
我能够通过以下表达式组件获取ID:

<expression-component doc:name="Get Failed List">flowVars.listIds = (Id in payload)</expression-component>
flowVars.listIds=(有效负载中的Id)

但是,如果出现错误,我无法查看状态代码和消息。我尝试了各种组合,但都没有成功。例如#[(flowVars.listErrors中的错误)中的消息]。当Salesforce返回错误时,如何获取状态码和消息?

您的flowVars.listErrors将包含错误数组列表。请查看以下组件以获取灵感:

<logger message="#[flowVars.listErrors[0][0].message]" level="INFO" doc:name="Logger"/>

<scripting:component doc:name="Groovy">
   <scripting:script engine="Groovy"><![CDATA[
      flowVars.listErrors.each{it->it.each{it2->println('message:'+it2.message)}}
   ]]></scripting:script>
</scripting:component>

每个{it2->println('message:'+it2.message)}
]]>

我可以在控制台中看到输出,但是如何将消息和状态代码提取到变量中,以便我可以登录到数据库?我不知道是否可以在MEL中展平此类嵌套列表,或者这是否是记录错误的最佳方法,但您可以始终在Groovy中遵循我的示例,使用这种方法提取消息tatus编码并将其分配给变量。
<logger message="#[flowVars.listErrors[0][0].message]" level="INFO" doc:name="Logger"/>

<scripting:component doc:name="Groovy">
   <scripting:script engine="Groovy"><![CDATA[
      flowVars.listErrors.each{it->it.each{it2->println('message:'+it2.message)}}
   ]]></scripting:script>
</scripting:component>