Groovy 从MuleSoft连接器返回的SaveResult获取SFDC ID

Groovy 从MuleSoft连接器返回的SaveResult获取SFDC ID,groovy,salesforce,mule,Groovy,Salesforce,Mule,我正在使用MuleSoft和SalesForce开发一个POC,并试图提高流程的效率。当前,在创建了一组案例之后,我正在执行另一个查询,以获取所创建的所有案例的ID。我注意到,在创建之后转储有效负载时,每个已创建案例的ID都会作为SaveResult列表的一部分返回,但是该格式看起来不容易作为映射引用。由于ID是在创建之后返回的,如果我可以从SaveResult解析ID,那么我可以避免为了获取ID而进行额外的查询 这是一个在Mule中作为#[payload]返回的示例: [[SaveResult

我正在使用MuleSoft和SalesForce开发一个POC,并试图提高流程的效率。当前,在创建了一组案例之后,我正在执行另一个查询,以获取所创建的所有案例的ID。我注意到,在创建之后转储有效负载时,每个已创建案例的ID都会作为SaveResult列表的一部分返回,但是该格式看起来不容易作为映射引用。由于ID是在创建之后返回的,如果我可以从SaveResult解析ID,那么我可以避免为了获取ID而进行额外的查询

这是一个在Mule中作为#[payload]返回的示例:

[[SaveResult  errors='{[0]}'id='500c0000002IDQnAAO' success='true'], [SaveResult  errors='{[0]}' id='500c0000002IDQoAAO' success='true']]

看起来在Apex中您可以引用这些,但是,我不知道在Mule中,或者在Groovy等受支持的脚本引擎中,是否有类似的方法。如果我无法访问这些值,我是否可以使用Groovy字符串操作来查找开始标记为“id=”、结束标记为“id=”的所有值,然后将它们连接起来?

这只是有效负载的字符串表示形式。create操作返回SaveResults的列表。您可以使用MEL/MVEL轻松访问这些文件。下面是一个获取所有ID并将其作为流变量放入新列表的示例:

<sfdc:create ... />

<expression-component>
 flowVars.ids = (Id in payload)
</expression-component>

<logger level="INFO"  message="Ids = #[flowVars.ids]" />

flowVars.ids=(有效负载中的Id)

您应该会看到这样的内容:Ids=['xxxx',yyyy',zzzz']

您确定这不仅仅是
SaveResult
对象列表的
toString()


如果是,您应该能够执行
results.id

您确定这不仅仅是
SaveResult
对象的
toString()
?如果是,您应该能够执行
results.id
,还可以使用MEL投影在新列表中提取所有这些id:谢谢@tim_yates和@David Dossot!groovy中的payload.id工作得很好代码'payload.id是[500C0000002IDTMAO,500c0000002IDTnAAO]作为答案添加的。很高兴它成功了!酷,不需要使用Groovy,除非您使用的是Mule<3.3