Taschenrechner - Profilkette zeitlich gesteuert mit HTTP-Ausgang

Bis hierhin wurden die Daten über den integrierten HTTP-Server entgegen genommen und verarbeitet.

Im nächsten Beispiel wird das Ziel angestrebt, eine zeitgesteuerte, statische Anfrage via JSON an den Taschenrechner-Service auszulösen. Die JSON-Antwort des Taschenrechner-Service wird darauf verarbeitet und in eine CSV-Datei umgewandelt.

Schritt 1 - Basis-Daten anpassen


Klonen Sie gerne wieder ein schon vorhandenes Profil. In den Basis-Daten sind folgende Einstellungen zu treffen:


  • Eingabeformat: JSON

  • Kodierung: UTF-8

  • Aktivierung des Mappings bei der Mapping-Art.

  • Passen Sie den Profilnamen an, z. B. Lobster_Tutorial_HTTP_calculator_cron_json

images/download/attachments/137305192/bsp4_basis_2-version-1-modificationdate-1686289443360-api-v2.png

Schritt 2 - Phase 1 konfigurieren


images/download/attachments/137305192/bsp4_phase1-version-1-modificationdate-1686289443438-api-v2.png


  • Gewählter Eingangsagent: Zeitgesteuert - HTTP

  • URL aus Profil Lobster_Tutorial_HTTP_calculator_json_body, z. B. http://localhost:80/dw/Request/calculator_json_body

  • HTTP-Methode: POST

  • MimeType: application/json

  • Daten im Body eines POST-Requests.


Body des Requests
{
"OP1": 42,
"OP2": 24,
"OPR": "+"
}


In Phase 1 des zeitgesteuerten HTTP-Eingangsagenten können MSG_CALL-Variablen verwendet werden, um Anfragen dynamisch zu gestalten, z. B. den Query-Part der URL oder im Header bzw. Body der Daten.

Insbesondere Datumsangaben ("von" bzw. "bis") müssen gelegentlich spezifiziert werden. Das aktuelle Datum kann leider nicht als Systemkonstante definiert werden. Platzhalter, wie <yyyy>, führen zu keiner Substitution im Cron-HTTP-Eingangsagenten (Stand Version 4.1). Alternativ können diese Angaben in einem vorgelagerten Profil über Funktionen berechnet und in MSG_CALL-Variablen gespeichert und weitergereicht werden.

Schritt 3 - Mapping


Die Quellstruktur besteht aus einem einzigen Feld. Mittels 1:1-Mapping wird in der Zielstruktur ein Knoten Created_TopLevel_Node mit einem RESULT-Feld darunter erstellt.


images/download/attachments/137305192/bsp4_phase3-version-1-modificationdate-1686289443449-api-v2.png

Schritt 4 - Integration Unit in Phase 5


Die Integration Unit wird in diesem Profil nicht benötigt. Somit kann diese in Phase 5 deaktiviert werden.

Schritt 5 - Antwortweg konfigurieren in Phase 6


Der Antwortweg speichert die Datei "wie empfangen" als Backup. Das Ergebnis können Sie im Control Center in der Log-Übersicht einsehen.


Ausgabe - zur Erinnerung
{
"RESULT": "66"
}

Exkurs - Dynamische Anfrage im Cronjob


Für Experten.

In diesem Beispiel wurde erst einmal ein einfacher Fall mit einer statischen HTTP-Anfrage berücksichtigt. In anderen Fällen werden in einem zeitgesteuerten HTTP-Job variable Werte, sei es als Query-Parameter oder im Body, erwartet.

Angenommen Sie benötigen einen GET-Aufruf (für die Methode POST ist das im Prinzip ähnlich) in der Form https://some.rest.api/myquery?customerFrom=....&customerTo=.... wobei die Werte der Parameter customerFrom und customerTo bei jedem Aufruf von unterschiedlichen Rahmenbedingen abhängen.

Diesen Fall können Sie mittels einer Profilkette lösen:


  • Erstellen Sie ein Profil mit den entsprechenden Bedingungen für die Werte.

  • Phase 1: Zeitgesteuerter Eingangsagent - Eigene KlasseDummyDataCron.

  • Phase 3: Legen Sie die Variablen var_customerfrom und var_customerto an (Namen bitte an Anforderung anpassen) und belegen diese mit den Werten (z. B. mittels Funktionen), die für den Aufruf benötigt werden.

  • Phase 6: Antwortweg - Message mit Inhalt Profil anstoßen unter Angabe des aufzurufenden Profils (in diesem Fall Cron-Profil mit dem HTTP-Eingangsagenten).


Das aufgerufene Profil wird wie folgt konfiguriert bzw. angepasst:


  • Basis-Daten: Encoding UTF-8

  • Phase 3: Anlegen zweier neuer Variablen mit dem Präfix "MSG_CALL_" und den im Elternprofil vergebenen Namen, hier also MSG_CALL_var_customerfrom und MSG_CALL_var_customerto.

  • Phase 1: URL anpassen: https://some.rest.api/myquery?customerFrom=@MSG_CALL_var_customerfrom@&customerTo=@MSG_CALL_var_customerto@

Das Elternprofil kann in Phase 1 mit den Zeiten konfiguriert werden, zu denen der Prozess laufen soll. Beim Triggern des Cron-Profils wird die HTTP-Antwort verarbeitet.