Manche Leute behaupten, dass Integration eine Kunstform ist. Dem widerspreche ich! Zu sagen, dass Integration eine Kunstform ist, bedeutet, dass man ein Künstler sein muss, um Systeme integrieren zu können. Ich habe nichts gegen Künstler, denn ich glaube, dass ein echter Künstler eine außergewöhnliche Person in ihrem oder seinem Fachgebiet ist, aber ich habe Schwierigkeiten mit der Idee, dass man ein Künstler sein muss, um integrieren zu können. Da nicht jeder ein Künstler sein kann, ist es nur für eine sehr ausgewählte Gruppe von Menschen. Während jeder integrieren kann. Vertrauen Sie mir als Trainer, der über tausend Menschen ausgebildet hat, ich weiß, dass nicht nur Künstler Systeme integrieren können. Aber es gibt ein Wort was, meiner Meinung nach jedoch mit ‚Kunst‘ zu tun hat und , das auf Menschen zutrifft, die Systeme integrieren. Dieses Wort ist ‚Handwerker‘. Wenn das Wort Ihnen unbekannt ist, wird es in einem Wörterbuch erklären, was sie sind, ein Handwerker mit einer schönen Erläuterung, und ich zitiere:
„Handwerker sind nicht dasselbe wie Künstler, aber es kann manchmal schwer sein, den Unterschied zu erkennen. Im Mittelalter organisierten sich Handwerker in Zünften. In jeder Stadt hatte jede Gruppe von Handwerkern – wie Weber, Zimmerleute, Schuhmacher und so weiter – ihre eigene Zunft. Diese Zünfte waren dafür verantwortlich, Löhne und Preise festzulegen, hohe Standards aufrechtzuerhalten und ihre Mitglieder vor externer Konkurrenz zu schützen.“
Ich glaube, dass Integration der Definition eines Handwerkers entspricht. Du kannst ein Lehrling sein, um ein Integrationshandwerker zu werden.
Du könntest fragen, warum ich jetzt über Kunst und Integration spreche? Das ist eine sehr gute Frage und eine, die sehr einfach zu beantworten ist.
Ich habe tatsächlich Kunst integriert. Damit meine ich, dass ich Kunst, die online im Rijksmuseum in den Niederlanden verfügbar ist, heruntergeladen und auf die digitale Leinwand Meural 2 von Netgear übertragen habe.
Meural
Für diejenigen, die nicht mit Meural vertraut sind, kann man es sich als eine digitale Leinwand vorstellen. Ähnlich wie digitale Bilderrahmen, die zu Beginn des 21. Jahrhunderts beliebt waren, jedoch in diesem Fall größer, bis zu 16 x 24 Zoll (40 x 60 cm) oder 19 x 29 Zoll (48 x 74 cm).
Es hat eine Internetverbindung, eine Begleit-App und eine API, die es Ihnen ermöglicht, Kunstwerke, die Sie online herunterladen können, auf Ihrer eigenen Leinwand zu veröffentlichen. Oder sogar die Bilder, die Sie während Ihres Urlaubs gemacht haben, ebenfalls anzuzeigen. Mit der App auf meinem Mobiltelefon konnte ich bereits Bilder von der Website des Rijksmuseums herunterladen und sie auf die Leinwand hochladen, um sie anzuzeigen. Allerdings würde ich das gerne von einem Programm aus tun, das ich selbst kontrolliere. In diesem Blog werde ich erklären, wie Sie eine solche Integration durchführen können, indem Sie Ressourcen von einer Seite nehmen und sie auf eine digitale Leinwand setzen.
Ein weiterer Grund, dies zu tun, ist, dass ich oft feststelle, dass Menschen denken, dass Integration auf den Austausch von XML- oder JSON-Payloads beschränkt ist. Das ist nicht wahr. Der Micro Integrator von WSO2 ist in der Lage, alle Arten von Dateien zu verarbeiten, sogar binäre Dateien, wie ich Ihnen zeigen werde.
Die Einrichtung
Um die Integration zu erklären und damit du es auf deinem eigenen Computer nachvollziehen kannst, benötigst du einige Dinge:
- Eine Version des Micro Integrator (ich verwende Version 4.2.0).
- Integration Studio, um die Artefakte zu entwickeln, die wir bereitstellen werden (ich verwende Version 8.2).
- Einen API-Schlüssel vom Rijksmuseum, um ihre API nutzen zu können.
- Eine Meural-Leinwand, wenn du den kompletten Ablauf haben möchtest. Falls nicht, kannst du das Bild lokal speichern.
WSO2
Entwickeln Sie die WSO2-Umgebung einrichten ist recht einfach. Laden Sie einfach den Micro Integrator und das Integration Studio von der WSO2-Website herunter. Sie finden die Links oben und stellen sicher, dass Sie die richtige Version von Java installiert haben, wie zum Beispiel OpenJDK 11. Führen Sie einige geringfügige Konfigurationen durch, wie das Festlegen von JAVA_HOME und stellen Sie sicher, dass Java vom Pfad aus erreichbar ist. Ich habe bereits mehrere Blogs darüber geschrieben, wie man WSO2 sowohl unter Windows als auch unter Linux einrichtet. Sie können auch an Schulungen teilnehmen, um praktische Erfahrungen bei der Einrichtung zu sammeln.
Das Integration Studio ist ein zusätzlicher Download auf derselben Seite, von der Sie den Micro Integrator heruntergeladen haben, etwas weiter unten. Das Integration Studio ist ein Plugin, das auf Eclipse basiert. Wenn Sie mit Eclipse vertraut sind, haben Sie keine Probleme bei der Arbeit mit dem Integration Studio. Auch wenn Sie neu in der Integration Programmierung sind, ist das Integration Studio ein großartiges Werkzeug, da es Ihnen ermöglicht, hochrangige grafische Strukturen von Proxies oder APIs zu erstellen. Das ist auch der Grund, warum ich es als Entwicklungsumgebung für alle Labore in unserer Micro Integrator Core Schulung verwende.
Rijksmuseum
Ein weiterer Schritt besteht darin, einen API-Schlüssel zum Zugriff auf die Rijksstudio-Sammlung zu erhalten. Erstellen Sie ein eigenes Konto, indem Sie einen Benutzernamen, eine E-Mail-Adresse und ein Passwort angeben, und melden Sie sich in der Rijksstudio-Umgebung an. Wenn Sie möchten, können Sie sich auch mit Ihrem Facebook-Konto anmelden.
Sie müssen Ihre E-Mail-Adresse bestätigen, was einige Minuten dauern kann, bis die E-Mail eintrifft. Sobald Sie angemeldet sind, klicken Sie auf Ihr Profilsymbol (in unserem Fall ein „Y“) und Sie sehen ein Einstellungssymbol (ein Zahnrad).
Scrollen Sie nach unten zum Abschnitt „Rijksmuseum API“. Geben Sie den beabsichtigten Verwendungszweck ein und klicken Sie auf „Einen Schlüssel anfordern“. Der Schlüssel wird an die angegebene E-Mail-Adresse gesendet.
Der per E-Mail erhaltene Schlüssel wird der API-Schlüssel sein, den wir im GET-Anfrage verwenden, um Kunstwerke abzurufen. Entgegen der Angabe auf der Website erhalten Sie tatsächlich nur den Schlüssel per E-Mail. Es gibt jedoch auch einen Link zur API-Dokumentation, der hilfreich ist, wenn Sie weitere Funktionen und verfügbare Ressourcen erkunden möchten. In diesem Blog werden wir uns jedoch nicht allzu tief in die Dokumentation vertiefen und uns stattdessen darauf konzentrieren, was wir erreichen möchten: das Abrufen eines digitalisierten Meisterwerks.
Die Rijksmuseum API verwendet eine bekannte Methode zum Abrufen von Informationen, nämlich das Ausführen einer HTTP GET-Anfrage auf eine bestimmte Ressource. Da wir den Schlüssel als Parameter in der URL angeben, können wir diese Anfrage problemlos direkt über den Browser ausführen und so die erhaltenen Antworten anzeigen.
Aber zunächst werfen wir einen Blick auf die URL, die wir verwenden müssen. Durch Durchsuchen der API-Dokumentation können wir die genauen Informationen finden, die wir benötigen. Die API „Collections details“ ermöglicht uns eine GET-Anfrage mit mehreren Parametern, wie im unten stehenden Bild zu sehen ist. Die Parameter umfassen den Schlüssel, das Format, die Kultur und die Objektnummer. Im roten Rechteck sehen Sie eine Beispielanfrage ohne den API-Schlüssel, um Rembrandts berühmtestes Meisterwerk, „Die Nachtwache“, abzurufen:
https://www.rijksmuseum.nl/api/nl/collection/SK-C-5?key=[api-key]
Ersetzen Sie [api-schlüssel] durch Ihren eigenen API-Schlüssel, um die Antwort anzuzeigen.
Wie bereits erwähnt, können Sie die URL auch direkt in Ihrem Browser eingeben, um die Antwort anzuzeigen.
Ich habe die URL sowie Teile der JSON-Antwort markiert, die für uns interessant sind. Die angezeigte URL ist der Ort, an dem Sie das Bild herunterladen und auf Ihrer lokalen Festplatte speichern können.
Wenn Sie die URL kopieren und in Ihren Browser einfügen, sehen Sie das resultierende Bild.
In diesem Blog werde ich die Integration in kleinere Teile aufteilen und zunächst untersuchen, wie wir Informationen zum digitalisierten Bild des Meisterwerks abrufen können.
Erstellung der API
Ich werde eine API verwenden, um die Verbindung herzustellen. Das mag logisch klingen, da APIs die gängigste Methode der Verbindung sind. Der Vorteil einer Enterprise Service Bus-Lösung wie dem Micro Integrator besteht jedoch darin, dass er verschiedene Nachrichtentypen akzeptieren kann, wie zum Beispiel SOAP-Nachrichten, und sie an eine API senden kann.
Ich werde jedoch bei einer API bleiben. Um diesen Blog nicht zu lang werden zu lassen, werde ich nicht jeden Schritt erklären, den Sie beim Arbeiten mit dem Integration Studio durchführen müssen. Ich werde die Hauptpunkte hervorheben, aber nicht alle Screenshots und Konfigurationen zeigen, die normalerweise bei der Erstellung eines Integrationsprojekts für den Einsatz in Ihrem Micro Integrator erforderlich sind.
Der erste Schritt besteht darin, ein Integrationsprojekt zu erstellen. Wie auf dem Screenshot zu sehen ist, verwende ich die Standardeinstellungen, füge jedoch auch ein Connector-Teilprojekt hinzu, da wir es später benötigen werden.
Was die API betrifft, werde ich sie mit dem HTTP-Verb POST veröffentlichen, sodass sie eine Nutzlast erfordert, über die wir die IDs der Gemälde übergeben können, die wir abrufen und verwenden möchten. Wenn wir die API vom Rijksmuseum aufrufen, wird tatsächlich ein GET-HTTP-Verb verwendet, da dies das ist, was uns das Museum erlaubt: Informationen abrufen.
Die API selbst ist ziemlich einfach, und ich halte sie absichtlich so einfach wie möglich. Das bedeutet, dass einige der Codierungen inline statt in einem separaten Artefakt wie einem Endpunkt erfolgen. Das erste, was im Objektnummer-Eigenschaftsteil passiert, ist, dass wir den empfangenen Wert zuweisen.
Dann werden wir den Endpunkt zusammenstellen, indem wir die Objektnummer zwischen der Webadresse und dem API-Schlüssel einfügen. Wir rufen dann die URL auf, die uns das Bild gibt, das wir herunterladen möchten. In der letzten Eigenschaft haben wir die URL abgerufen, von der aus wir das Bild herunterladen können. Mit dieser URL werden wir das Bild zu einem späteren Zeitpunkt herunterladen.
<?xml version="1.0" encoding="UTF-8"?>
<api context="/art" name="MeuralAPI" xmlns="http://ws.apache.org/ns/synapse">
<resource methods="POST">
<inSequence>
<property expression="json-eval($.object)" name="objectnr" scope="default" type="STRING"/>
<property expression="fn:concat('https://www.rijksmuseum.nl/api/en/collection/',//object,'?key=Z6sfcxEM')" name="uri.var.rmaddress" scope="default" type="STRING"/>
<call>
<endpoint name="RM">
<http method="get" uri-template="{uri.var.rmaddress}">
<suspendOnFailure>
<initialDuration>-1</initialDuration>
<progressionFactor>1</progressionFactor>
</suspendOnFailure>
<markForSuspension>
<retriesBeforeSuspension>0</retriesBeforeSuspension>
</markForSuspension>
</http>
</endpoint>
</call>
<property expression="json-eval($.artObject.webImage.url)" name="uri.var.imageurl" scope="default" type="STRING"/>
<log level="custom">
<property expression="get-property('uri.var.imageurl')" name="url"/>
</log>
<respond/>
</inSequence>
<outSequence/>
<faultSequence/>
</resource>
</api>
Ich habe eine JSON-Payload erstellt, {„object“: „SK-C-5“}, die ich an die API übergebe.
Das reicht für diesen Blog. In der nächsten Episode, die Teil 2 genannt wird, werde ich es ermöglichen, dass ein JSON-Array eingereicht und verarbeitet wird. Wir werden tatsächlich die Bilder herunterladen und speichern, die wir von den Antworten erhalten.