2017-12-19 5 views
0

Ich muss eine große Datenmenge auf Opportunitys in Salesforce hochladen. Verwendetes Batch-Commit im ersten Batch-Schritt. Das Ergebnis von Upsert Bulk ist die Liste von Upsert Result, die Erfolg, ID, Fehler, Felder hat.mule: Capturing fehlgeschlagener Salesforce-Datensatz nach Batch-Commit in Stapelverarbeitung aufheben

Iterating über dieses Ergebnis, um nach fehlgeschlagenen Datensatz zu überprüfen (Erfolg ist falsch), jetzt wollte ich den Fehler und die ursprüngliche Nutzlast an E-Mail senden.

  1. Wie verknüpfe ich das fehlgeschlagene Upsert-Ergebnis mit der ursprünglichen Nutzlast?
  2. Wird die Reihenfolge der Eingabedaten in der Ausgabe nach dem Batch-Commit beibehalten?

Beispiel: inputpayload: [rec1, rec2, REC3] UpsertResult [Erfolg: true, Erfolg: falsche Fehler: ungültiges Feld, Erfolg: true]

Ich möchte eine E-Mail zu sagen rec2 senden fehlgeschlagen wegen ungültigem Feld des Fehlers.

Jede Hilfe würde sehr geschätzt werden.

Antwort

0

Die Reihenfolge der Salesforce-Betriebsergebnisse wird wie in der Reihenfolge der Eingaben beibehalten. Speichern Sie die Eingabe in einer Hashmap mit der ID als Schlüssel und der gesamten Eingabe als Wert vor dem Stapelschritt. Nach dem Batch-Schritt Iterieren Sie das Ergebnis und sammeln Sie die IDs, wenn das Ergebnis den Status false hat.

Jetzt können Sie einfach fehlgeschlagene Id-Daten aus der Hashmap abrufen, indem Sie Id übergeben. Code-Schnipsel

def inputPayloadForReprocess = [];

// Logik Fehlerdatensätze für reprocess für den Bau (int i = 0; i < payload.size(); i ++) {
if (payload.get (i) .toString() enthält (“. Erfolg = 'false' ")) {// für Ausfälle Salesforce

inputPayloadForReprocess.add(message.getInvocationProperty("storePayload").get(i)); 
    break; 
} 

prüfen}

Verwandte Themen