Zum Inhalt springen

Zieldatensätze bedingt im Jitterbit Design Studio verarbeiten

Anwendungsfall

Eingehende Datensätze mit mehreren Datensätzen und einer Teilmenge von Datensätzen müssen verarbeitet werden. Die Payload des Datensatzes kann das Ergebnis einer Abfrage sein, es ist jedoch eine zusätzliche Filterung erforderlich.

Beispiel

Anhang

Die Operation 0101 Query SF Accounts führt eine Abfrage von SFDC-Konten durch und erstellt dann Kunden in NetSuite, wodurch wiederum das SFDC-Konto aktualisiert wird. Ein Fehlerprozess aktualisiert Konten bei einem Fehlerzustand, der mit dem PDF-Vorlagentyp verknüpft ist.

Die Kontendatensätze müssen Datensatz für Datensatz ausgewertet und je nach Wert eines Felds im Haupterfolgsszenario verarbeitet oder an die Fehlerverarbeitung übergeben werden.

Anhang

Durch die Verwendung einer Bedingung in einer Transformation können Sie jeden Datensatz auswerten. Wenn die Bedingung wie in diesem Fall als wahr ausgewertet wird, wird der Datensatz in die temporäre Datei geschrieben. Wenn sie falsch ist, wird sie übersprungen.

Konkret werden Werte übergeben an RunScript(), das die Zeichenfolge „Error“ zurückgibt, wenn die Suche fehlschlägt. Wenn also die lokale Variable „result“ gleich „Error“ ist, wird die Operation ausgeführt, die lokale Variable „cond“ auf „false“ gesetzt und der Datensatz übersprungen.

// Skip records where the pdf template lookup is incorrect
result = RunScript("<TAG>Scripts/PDF Template Lookup</TAG>",
root$transaction.response$body$queryResponse$result$records.Account$CccccccAaaaaaaa_Entity__c$,
root$transaction.response$body$queryResponse$result$records.Account$CurrencyIsoCode$,
root$transaction.response$body$queryResponse$result$records.Account$Payment_Method__c$,
root$transaction.response$body$queryResponse$result$records.Account$BillingCountry$);
// Set Sync Error Code to 3 if cannot find a match. Determine if returned an "Error" or not.
WriteToOperationLog("Template Lookup: "+result);
If(result=="Error",
$Id = root$transaction.response$body$queryResponse$result$records.Account$Id$;
RunOperation("<TAG>Operations/01 SF->NS Create Customer/0199 Update Accounts PDF Template Error</TAG>");
 cond=false, cond=true);
cond

Der Vollständigkeit halber sei angemerkt, dass dies die RunScript() Anruf. Interessant ist die Verwendung von ArgumentList(), wodurch sich dieses Script wie eine wiederverwendbare Funktion verhalten kann:

ArgumentList(Sub,Cur,Pay,Cnt);
Case(
Sub=='CccccccAaaaaaa AU' && Cur=='AUD' && (Pay =='Check'||Pay =='Wire/EFT/BACS'||Pay == 'PayPal'),2,
Sub=='CccccccAaaaaaa AU' && Cur=='AUD' && (Pay =='Credit Card'||Pay == 'Bank Draft'||Pay == 'Direct Debit'),3,
Sub=='CccccccAaaaaaa Brands UK' && (Cur=='USD'||Cur=='EUR'||Cur=='GBP'),26,
Sub=='CccccccAaaaaaa YY LTDA' && Cur=='BRL',17,
Sub=='CccccccAaaaaaa Corporation' && Cur=='USD' && (Pay =='Check'||Pay =='Wire/EFT/BACS' ||Pay == 'PayPal') && Cnt != 'CccccccAaaaaaa',4,
Sub=='CccccccAaaaaaa Corporation' && Cur=='USD' && Cnt == 'CccccccAaaaaaa',5,
Sub=='CccccccAaaaaaa Corporation' && Cur=='USD' && (Pay =='Credit Card'||Pay == 'Bank Draft'||Pay == 'Direct Debit'),1,
Sub=='CccccccAaaaaaa Hong Kong' && Cur=='USD',19,
Sub=='CccccccAaaaaaa UK' && Cur=='GBP' && (Pay =='Check'||Pay =='Wire/EFT/BACS' ||Pay == 'PayPal'),6,
Sub=='CccccccAaaaaaa UK' && Cur=='EUR' && (Pay =='Credit Card'||Pay == 'Bank Draft'||Pay == 'Direct Debit'),24,
Sub=='CccccccAaaaaaa UK' && Cur=='GBP' && (Pay =='Credit Card'||Pay == 'Bank Draft'||Pay == 'Direct Debit'),7,
Sub=='CccccccAaaaaaa UK' && Cur=='EUR' && (Pay =='Check'||Pay =='Wire/EFT/BACS' ||Pay == 'PayPal'),8,
Sub=='CccccccAaaaaaa Washington LLC' && Cur=='USD' && (Pay =='Credit Card'||Pay == 'Bank Draft'||Pay == 'Direct Debit'),9,
Sub=='CccccccAaaaaaa Washington LLC' && Cur=='USD' && (Pay =='Check'||Pay =='Wire/EFT/BACS' ||Pay == 'PayPal'),10,
true,"Error"
)

Siehe auch: Aktualisieren mehrerer Ziele aus einem einzigen Quelldatensatz