Erfassen Sie Datenänderungen mit einer API-Manager API oder einem HTTP- Endpoint in Jitterbit Design Studio
Anwendungsfall
In diesem Muster fragt Jitterbit nicht eine Quelle ab oder liest sie, sondern eine externe Quelle sendet eine Payload an Jitterbit, wobei eine Operation als Host fungiert. Normalerweise ist die Payload ein einzelner Datensatz, der sofort bis zum Ziel verarbeitet wird, was sich von einer periodischen Abfrage unterscheidet, die einen Batch von Datensätzen verarbeitet. Die Skalierbarkeit muss in Bezug auf die Anzahl der Datensätze, die innerhalb eines kurzen Zeitraums empfangen werden können, berücksichtigt werden. Außerdem müssen asynchrone Aufrufe verwendet werden, wenn eine Bestätigung an die Quelle erforderlich ist.
Beispiel 1 - API
Hier ist ein Beispiel, bei dem die gesamte Payload gesendet wird und nicht nur eine ID. In diesem Fall sendet die Quelle Five9 eine Payload an die Jitterbit API Plattform. Der erste Operation empfängt die Daten, der zweite fügt die Daten in SFDC ein.
Die interne Jitterbit-Variable wird verwendet, um die Felder (mit den Namen „i“, „a“, „d“ usw.) abzurufen und sie globalen Variablen zuzuweisen. Anschließend wird der SFDC- Operation ausgeführt:
$i=$jitterbit.api.request.body.i;
$a=$jitterbit.api.request.body.a;
$d=$jitterbit.api.request.body.d;
$e=$jitterbit.api.request.body.e;
$f=$jitterbit.api.request.body.f;
$h=$jitterbit.api.request.body.h;
$k=$jitterbit.api.request.body.k;
$l=$jitterbit.api.request.body.l;
$m=$jitterbit.api.request.body.m;
$n=$jitterbit.api.request.body.n;
$p=$jitterbit.api.request.body.p;
$q=$jitterbit.api.request.body.q;
$r=$jitterbit.api.request.body.r;
$s=$jitterbit.api.request.body.s;
$t=$jitterbit.api.request.body.t;
$u=$jitterbit.api.request.body.u;
$y=$jitterbit.api.request.body.y;
RunOperation("<TAG>Operations/Inbound from Five9/Insert Tasks</TAG>",false)
Die globalen Variablen werden der Transformation zugewiesen und verarbeitet.
Dieses Muster ist weniger komplex als die Muster in Erfassen von Datenänderungen mit zeitstempelbasierten Abfragen oder Erfassen von Datenänderungen mit Quellfeldwerten. Offensichtlich sind die Geschäftsregeln, die in diesem Fall festlegen, wann Daten gesendet werden sollen, in die Quellanwendung eingebettet. Andernfalls muss das Integrationstool sie integrieren, was zu mehr Komplexität führt. Unabhängig vom Ansatz kann Jitterbit dies berücksichtigen.
Beispiel 2 - API
Hier ist ein weiteres Beispiel unter Verwendung der Jitterbit API Plattform.
Tipp
Ein weiteres Beispiel mit Schritt-für-Schritt-Anleitungen finden Sie unter Konfigurieren ausgehender Nachrichten mit einer API-Manager API.
Von SFDC wird eine ausgehende Nachricht mit einer einzelnen ID empfangen, die an eine Abfrage weitergegeben wird. Anschließend wird ein SAP IDoc an SAP gesendet.
Wenn Sie sich die API Konfiguration ansehen, werden der Projektname und die spezifische Operation ausgewählt. Beachten Sie auch, dass „Systemvariable“ aktiviert ist. Dabei handelt es sich um die Antwort auf die ausgehende Nachricht.
Die Transformation erfasst die eingehenden IDs. Eine ausgehende Nachricht kann mehr als einen Datensatz enthalten.
Die Logik in diesem Script durchläuft jede ID, weist sie der globalen Variable $accountId zu und übergibt sie an die nächste Operation. Die Systemvariable (wie in der API -Konfiguration gefordert) wird dem Standard-XML zugewiesen, das von der ausgehenden Nachricht erwartet wird.
Beispiel 3 - HTTP
Das Quellsystem ist SFDC und das Ziel ist SAP. Der Jitterbit Operation verwendet einen HTTP- Endpoint. Eine Alternative zur Verwendung eines HTTP- Endpoint mit einem privaten Agenten (und zur Vermeidung des Öffnens von Ports in Ihren Firewalls) ist die Verwendung der Jitterbit API Plattform, die für die Verarbeitung von Szenarien mit hohem Datenverkehr ausgelegt ist und die bevorzugte Methode ist.
Dieser Operation ist so konfiguriert, dass er einen HTTP- Endpoint verwendet und mit einer Bestätigung antwortet.
Der HTTP- Endpoint ist so konfiguriert, dass er mit einer globalen Variable antwortet. Nebenbei bemerkt: Wenn SFDC keine Antwort erhält, wird die ausgehende Nachricht nach einer gewissen Zeit erneut gesendet. Es empfiehlt sich, die Bestätigung so schnell wie möglich zurückzusenden.
Die Transformation ordnet das eingehende XML einer flachen Dateistruktur zu.
Im "Id
"-Knoten werden globale Variablen zugewiesen und Informationen in das Betriebsprotokoll geschrieben.
$WorkOrderId = Envelope$Body$notifications$Notification.sObject$Id$;
$QuotedWorkOrderId = Quote($WorkOrderId);
$WorkOrderIdsQueryString = $WorkOrderIdsQueryString + $QuotedWorkOrderId + ",";
$WorkOrderIdsClean = RTrimChars($WorkOrderIdsQueryString, ",");
WriteToOperationLog(" ");
WriteToOperationLog("(" + TargetInstanceCount() + ")");
WriteToOperationLog("Work Order Id: " + $WorkOrderId);
WriteToOperationLog("Ids String: " + $WorkOrderIdsQueryString);
WriteToOperationLog("Clean Ids String: " + $WorkOrderIdsClean);
$WorkOrderId;
Das Post-Operation Script lädt die Bestätigung in eine globale Variable, die der HTTP- Endpoint gemäß seiner Konfiguration zurückgeben soll.
$salesforce.ack=
'<?xml version="1.0" encoding="UTF-8"?><Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://soap.sforce.com/2005/09/outbound">
<Body>
<ns:notificationsResponse>
<ns:Ack>1</ns:Ack>
</ns:notificationsResponse>
</Body>
</Envelope>
';
Nachdem der erste Operation ausgeführt wurde, wird eine Salesforce Abfrage mit der ID aus der Payload ausgeführt.
Hier wird die globale Variable aus der ersten Operation mit der Notation '[]' verwendet:
Dies ist ein gängiges Muster. Anstatt die eingehende Payload mit allen Daten zu laden, wird nur eine ID an den Datensatz übergeben und in einer Abfrage verwendet. Es ist auch üblich, globale Variablen zu verwenden, anstatt temporäre Dateien zu schreiben, was bei periodischen Abfragen und Datenstapeln üblicher ist. Da globale Variablen spezifisch für verkettete Vorgänge sind, werden die Variablenwerte nicht überschrieben, selbst wenn Nachrichten schneller empfangen werden, als eine einzelne Kette abgeschlossen werden kann. Wenn temporäre Dateien verwendet wurden, kann dies ein Problem darstellen, sofern keine zusätzlichen Maßnahmen ergriffen wurden, z. B. das Anhängen einer GUID an den Dateinamen, um die Dateien eindeutig zu machen.