mule:在批处理中批量提交后捕获失败的Salesforce Upsert记录

时间:2017-12-19 06:40:16

标签: mule

我必须将大量数据存储到salesforce中的机会。在第一批步骤中使用批量提交。 Upsert Bulk的结果是Upsert Result的列表,其中包含成功,id,错误,字段。

迭代此结果,检查失败的记录(成功是错误的),现在我想将错误和原始有效负载发送到电子邮件。

  1. 如何将失败的upsert结果与原始有效负载相关联?
  2. 批量提交后输出有效负载的顺序是否在输出中保留?
  3. 示例:inputpayload:[rec1,rec2,rec3] UpsertResult [success:true,success:false errors:invalid field,success:true]

    我想发送一封电子邮件,说rec2因错误无效字段而失败。

    任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

salesforce操作结果的顺序将保持与每个输入订单相同。 在批处理步骤之前,将输入存储在Hashmap中,其中Id为键,整个输入为值。 批处理步骤之后,迭代结果并在结果状态为false时收集ID。

现在,您可以通过传递Id轻松地从散列映射中检索失败的Id数据。 代码段

def inputPayloadForReprocess = [];

//为重建过程构建错误记录的逻辑 for(int i = 0; i< payload.size(); i ++){
    if(payload.get(i).toString()。contains(" success =' false'")){//检查salesforce失败

{{1}}

}