Erster Schritt zur Erstellung eines verknüpften Prozesses
In dieser Demonstration verwenden wir den Post-Endpunkt /GetProduct_v1. Wir werden versuchen, ihn so nah wie möglich an der Spezifikation zu implementieren. Beginnen wir mit der Erstellung des verknüpften Prozesses aus der API-Ansicht.
Zu Beginn haben wir nur das absolute Minimum des Prozesses selbst. Der Trigger überwacht den Post-Endpunkt, den wir in der API-Spezifikation angegeben haben. Schauen wir uns die automatisch hinzugefügten Elemente genauer an.
Das Trigger-Element wird benannt, ebenso wie der Endpunkt, einschließlich der Basis-URL der API. Wie Sie sehen, ist der Trigger-Typ gesperrt und kann nicht mehr geändert werden, nachdem die API ausgewählt wurde. Dies ist dasselbe Verhalten wie beim Erstellen eines regulären Prozesses. Sie können die API-Spezifikation anzeigen, indem Sie auf die Schaltfläche „API-Spezifikation öffnen“ klicken. Auf diese Weise können Sie sicherstellen, dass die richtige verwendet wird.
Die URL, die zulässigen Protokolle und die Autorisierung wurden wie in der API-Spezifikation festgelegt. Sie können die zulässigen Protokolle jedoch ändern, um HTTPS oder sowohl HTTP als auch HTTPS zu akzeptieren.
Wenn der API-Trigger Anfragen von bestimmten Seiten akzeptieren muss, können Sie die Cross-Origin-Ressourcenfreigabe (CORS) aktivieren, indem Sie den Parameter „Anfragen von diesen Ursprüngen zulassen (CORS)“ aktivieren. Anschließend können Sie die Ursprünge im Eingabefeld unten festlegen. Mehrere Ursprünge können festgelegt werden, indem Sie sie durch Doppelpunkt (,) oder Semikolon (;) trennen. Sie können auch Anfragen von allen Ursprüngen zulassen, indem Sie ein Sternchen (*) verwenden.
Wenn Sie im Parameter-Editor des Triggers nach unten scrollen, können Sie den API-Trigger auf privat setzen, wodurch die Zugänglichkeit auf dem API-Gateway deaktiviert wird.
Das Rückgabeelement wurde automatisch als HTTP-Antworttyp konfiguriert. Wie Sie sehen, wurde der HTTP-Statuscode wie in der API-Spezifikation auf 200 gesetzt. Da in der API-Spezifikation kein Antwortinhalt festgelegt wurde, wurde der HTTP-Inhaltsparameter im Rückgabeelement leer gelassen.
Beide Fehlerantworten wurden ebenfalls zum Canvas hinzugefügt und wie erwartet konfiguriert. Die Antwortelemente sind als HTTP-Antworttyp festgelegt. Im Fehlerfall wird der Prozess mithilfe des Throw-Elements, das ebenfalls vom Typ HTTP-Antwort ist, eine Ausnahme auslösen.
API-Trigger
API Trigger hat mehrere Variablen, auf die mit dem#trigger.daten
Referenz. Diese Variablen enthalten wichtige Informationen zum Anforderungstext, zu Headern, Pfad- und Abfrageparametern, zur Client-IP-Adresse usw.
Überschriften
Mit der Frends API können Sie angeben, welche Header erforderlich sind, wenn Sie eine Anfrage an diese Frends API stellen, z. B. Autorisierung, Inhaltstyp usw. Diese können in den API-Spezifikationen angegeben werden. Um Header in der API anzugeben, müssen Sie Header im Parameterobjekt hinzufügen und die Eigenschaft „in“ als „Header“ verwenden. Die Eigenschaft „Erforderlich“ gibt an, ob der API-Trigger den Parameter benötigt, um die Verbindung zuzulassen.
Sie können hier auch optionale Header-Parameter auflisten, indem Sie „erforderlich: falsch“ angeben oder die erforderliche Eigenschaft ganz weglassen. Der API-Trigger lässt die Verbindung zu, auch wenn diese in der Anfrage nicht vorhanden sind. Sie können diese Header jedoch innerhalb des Prozesses verarbeiten.
Wenn Sie diesen Endpunkt als Trigger im Prozess verwenden, können Sie den Header referenzieren mit#trigger.daten.header.test
Referenz. Dadurch können Sie den in diesem Header angegebenen Wert in der eingehenden Anfrage extrahieren. Diese Funktion ist insbesondere bei Abfrage- und Pfadparametern von entscheidender Bedeutung.
Pfad- und Abfrageparameter
In der API-Spezifikation werden sowohl Pfad- als auch Abfrageparameter angegeben, indem sie zur Anforderungsparameterliste hinzugefügt werden. Pfadparameter müssenin: Pfad
und Abfrageparameterin: Abfrage
Eigenschaft. Wenn Sie Pfadparameter verwenden, müssen Sie auch den Endpunkt angeben, um den Pfadparameter einzuschließen, wie in der Abbildung unten gezeigt. Beachten Sie, dass Pfadparameter immer erforderlich sein müssen: true. Der Swagger-Editor gibt einen Fehler aus, wenn diese Eigenschaft nicht festgelegt ist. Abfrageparameter können sowohl erforderlich als auch optional sein.
Sie können die Abfrage- und Pfadparameter aus der Anfrage extrahieren, indem Sie entweder#trigger.daten.pfad
oder#trigger.daten.abfrage
und fügen Sie der Referenz den Parameternamen hinzu.
Erstellen des Prozesses
Damit dieser Prozess funktioniert, müssen wir die Elemente mithilfe des Global Connect Tools miteinander verbinden und die Funktionalitäten zum Prozess hinzufügen. Normalerweise besteht das erste darin, den HTTP-Text des Triggers in etwas zu zerlegen, das wir im Prozess einfacher verwenden können. Dies kann durch Zerlegen des Texts in ein JToken erfolgen:
JToken.Parse(#trigger.daten.body)
Dies kann mithilfe eines Ausdruckselements erfolgen.
Denken Sie daran, uns eine Variable zuzuweisen, die wir in den folgenden Schritten verwenden können.
Wenn der HTTP-Body in ein JToken geparst wird, können wir die Punktnotation auf die Eigenschaften innerhalb des JTokens anwenden. Wir können beispielsweise ein Anweisungselement hinzufügen, das die Gültigkeit der Eingabe überprüft, oder mithilfe von Entscheidungselementen bestimmen, was mit dem Inhalt geschehen soll.
Beim Umgang mit GET-HTTP-Methoden sollte der Anforderungstext jedoch keinen semantischen Wert haben. Daher müssen wir in diesem Fall den Abfrageparameter aus der eingehenden URL extrahieren. Dies kann durch Referenzieren erfolgen#trigger.daten.abfrage.
. In diesem Beispiel extrahieren wir den benannten Parameter "prod_code", sodass die korrekte Referenz lautet#trigger.daten.abfrage.prod_code
. Wir könnten den Verweis direkt auf die nächste Aufgabe setzen, aber in diesem Fall wollen wir auch einen manuellen Trigger, also muss der Trigger-Abfrageparameter auf eine Variable gesetzt werden.
Hier können wir festlegen, ob der tatsächliche Pfadabfrageparameter oder der manuelle Triggerparameter verwendet werden soll.
Als nächstes können wir in dieser Demo dem Prozess eine SQL-Aufgabe hinzufügen, die die gewünschten Daten aus der Datenbank abfragt, um sie im verknüpften Prozess zu verarbeiten. Sie können das Aufgabenelement aus der Symbolleiste auf der linken Seite des Prozesseditors auswählen oder das Schnelltool verwenden, das sichtbar ist, wenn das vorherige Element ausgewählt ist.
Fügen wir das Aufgabenelement in den Prozess ein und wählen dasMicrosoftSQL.ExecuteQueryAufgabe. Dadurch werden in diesem Beispiel die Daten abgerufen, die wir dann in das JSON-Format konvertieren und je nach Geschäftsbedarf entweder an den Anforderer oder an ein anderes System mit dem API-verknüpften Prozess zurücksenden.
In der Aufgabe können wir die Variable #var.code verwenden, die wir aus dem Abfrageparameter des Triggers erstellt haben.
Nach der SQL-Abfrage können wir prüfen, ob Daten aus der Datenbank zurückgegeben wurden. Dies kann durch Hinzufügen eines Entscheidungselements nach der SQL-Aufgabe erfolgen und durch Prüfen, ob die Dateneigenschaft Werte enthält. Die MicrosoftSQL-Aufgabe gibt die Dateneigenschaft zurück, die ein JArray-Typ ist. Wenn die Aufgabe keine Zeilen aus der Datenbank findet, gibt sie ein leeres JArray zurück.[]
. Dadurch können wir entweder die Anzahl des JArrays überprüfen:#result[Daten aus DB holen].Data.Count > 0
. Wenn keine Zeilen gefunden wurden, können wir eine der fehlgeschlagenen Antworten verwenden. Andernfalls können wir mit der Datenzuordnung fortfahren.
Die Datenzuordnung bedeutet, dass wir versuchen, die Struktur des JSON zu ändern, damit sie besser zum empfangenden Endsystem passt. Das bedeutet, dass wir eine JSON-Zeichenfolge mit korrekten Eigenschaftsnamen und -werten erstellen müssen. Der einfachste Weg, dies zu tun, ist die Verwendung eines TaskFreunde.JSON.Transform.
Zuerst müssen wir einen einzelnen JToken aus dem JArray abrufen. Dazu müssen wir dem Prozess eine Schleife hinzufügen. Verwenden wir dazu das Foreach-Element.
Sie können die Variable, die wir in Foreach iterieren, nach Belieben benennen und wir können die von der MicrosoftSQL-Aufgabe zurückgegebene Dateneigenschaft direkt auf den Ausdruck setzen. Dies ist möglich, weil das von der Aufgabe zurückgegebene JArray ein Enumerable-Objekt ist, das wir durchlaufen können.
Wir können dann die Transform-Aufgabe innerhalb des Foreach-Elements hinzufügen und sie nach Bedarf konfigurieren.
Hier geben wir der Task den Variablenwert des iterierten Produkts, der ein JToken ist. Die Task übernimmt das Mapping für uns und wir können die Eigenschaftsnamen einfach für das neue JSON festlegen. Wenn wir jedoch durch einen großen Datensatz iterieren, benötigen wir eine andere Variable, in der wir die zugeordneten Werte speichern. Dazu müssen wir vor dem Foreach-Element eine neue Variable hinzufügen. Erstellen wir einfach eine neue Variable mit dem Namen „products“ und setzen ihren Ausdruck aufneues JArray()
.
Innerhalb der Schleife müssen wir den zugeordneten JToken zu dieser Variable „products“ hinzufügen. Die JSON.Transform-Aufgabe gibt die zugeordneten Daten als JSON-Zeichenfolge und in JToken-Form zurück. Wir können einfach ein Ausdruckselement hinzufügen und den Ausdruck darin auf#var.products.Add(#result[JSON Transform].JToken)
. Dadurch können wir die gesamten zugeordneten Daten im späteren Prozessstadium verwenden.
Schließlich können wir die zugeordneten Daten entweder an den Anforderer zurückgeben oder an ein empfangendes System senden. In dieser Demo geben wir die Daten einfach mit dem als HTTP-Antwort eingegebenen Return-Element zurück. Damit wir den String-Wert an das Return-Element übergeben können, müssen wir die ToString()-Methode für das von uns erstellte JArray aufrufen. Dies kann innerhalb des Return-Elements erfolgen.
Der endgültige Prozess sieht mit dem manuellen Auslöser wie folgt aus:
Der nächste Artikel istBeispiel zum Testen und Debuggen eines verknüpften Prozesses.
Verwandte ArtikelErstellen und Bearbeiten von ProzessenSo verwenden Sie LINQ in Frends zur Datenextraktion und -manipulationEinführung in JSON-ObjekteEinführung in die Verwendung von LINQ mit JSON-ObjektenEinführung in das Erstellen einer JSON-Nachricht – ein nicht ganz einfaches Beispiel