Integrationsserver mit Open Source

Autoren:
Steffen Schluff
Orientation in Objects GmbH
Kristian Köhler
Orientation in Objects GmbH
Steffen Schluff
Steffen Schluff
Kristian Köhler
Kristian Köhler
Datum:April 2003

Freier Austausch

Integrationsserver und -lösungen sind in der Regel komplexe und kostspielige Systeme, die immer häufiger auf XML und XSLT basieren. Dieser Artikel beschreibt, wie mit verbreiteten Open Source-Tools ein leistungsfähiger und erweiterbarer Integrationsserver realisiert werden kann. Dabei kommen das Build-Tool Ant sowie die Technologien XML, XSLT, Java und JMX zum Einsatz.

Ein Datenaustausch über Unternehmensgrenzen hinweg erfordert häufig eine manuelle Nachbearbeitung der übermittelten Informationen, wodurch die elektronische Dokumentenkette unterbrochen wird. Exemplarisch sei hier eine ausgedruckte eMail-Bestellung genannt, die von einem Mitarbeiter von Hand eingegeben wird. Ein solches Verfahren ist nicht nur zeit- und kostenintensiv, sondern auch fehleranfällig. Eine Integration der einzelnen Systeme scheidet oft aufgrund uneinheitlicher Standards und inkompatibler Schnittstellen der beteiligten Komponenten aus.

Enter Integrationsserver

Eine Lösung zur Automatisierung und Integration von elektronischen Geschäftsvorgängen ist der Einsatz eines Integrationsservers. Es handelt sich hierbei um eine Software, die in der Lage ist, den Austausch von Dokumenten und Nachrichten unterschiedlicher Formate zwischen verschiedenen Systemen zu ermöglichen.
Ein Integrationsserver setzt sich im wesentlichen aus drei Elementen zusammen (siehe auch Abb. 1):

Eingehende Dokumente werden mittels eines Konnektors bzw. Adapters dem System verfügbar gemacht. So können z. B. über einen Mail-Connector alle eMail-Anhänge, die an eine bestimmte Adresse gesendet werden, in einem Verzeichnis hinterlegt werden. Anschließend werden sie, je nach MIME-Type, unterschiedlich aufbereitet und in ein passendes Format überführt (Adapterfunktionalität). Es wird entweder direkt in das Zielformat oder in ein einheitliches Metaformat als Zwischenformat übersetzt.

Elemente eines Integrationsservers
Abbildung 1: Elemente eines Integrationsservers

In einem oder mehreren Umwandlungsschritten werden die dem Integrationsserver übergebenen Dokumente derart verändert, dass sie in einem Format verfügbar sind, welches von der Zielplattform verarbeitet werden kann (Transformation). Das umgewandelte Dokument kann dem Zielsystem z. B. durch Kopieren oder Versenden verfügbar gemacht werden. Besitzt die Zielplattform eine RPC-, RMI-, CORBA- oder SOAP-Aufrufschnittstelle für Ihre Geschäftslogik, so kann der Datenaustausch alternativ unter Verwendung eines weiteren Konnektors abgeschlossen werden.

Um die einzelnen Schritte des Datenaustauschs miteinander zu vernetzen, wird eine möglichst einfache, erweiterbare und flexible Ablaufsteuerung benötigt. Diese regelt den Datenfluss und die Prozessabläufe innerhalb des Integrationsservers sowie die Anbindung an die Zielplattform. Die einzelnen Verarbeitungsschritte können entweder explizit oder automatisiert in festgelegten Intervallen angestoßen werden.

Die zuvor geschilderten Transformationsschritte innerhalb eines Integrationsservers lassen sich mittels XML und der eXtensible Stylesheet Language Transformations (XSLT) realisieren. XML selbst hat im eBusiness-Umfeld den Charakter einer lingua franca, wobei zahlreiche Schnittstellen und Bibliotheken den Einsatz mit nahezu allen Plattformen und Programmiersprachen ermöglichen. Die Explosion der Businessformate wie openTRANS, ebXML oder BMEcat wird aber auch in Zukunft Konvertierungs- und Integrationslösungen notwendig machen.

Die Realisierung der Adapter reduziert sich auf eine bidirektionale Datenkonvertierung aus Fremdformaten wie CSV oder Fließtext nach XML, was von Fall zu Fall eine nicht triviale Aufgabe sein kann.

Für die vom Konnektor zu erledigenden Aufgaben beim Bereitstellen der Daten für den Integrationsserver sind betriebssystemnahe Funktionen wie Kopieren oder Löschen notwendig. Diese Anforderungen ließen sich durch Skriptsprachen der Betriebssysteme realisieren. Eine XML-basierte und somit portable und validierbare Sprache passt jedoch besser zu der Philosophie eines Integrationsservers.

Open Source im Auge ...

Mit einem bereits bestehenden Tool aus der Open Source-Gemeinde lässt sich diese Anforderung erfüllen. Das ursprünglich zum Übersetzen von Java-Projekten vorgesehene Build-Werkzeug Ant des Apache Jakarta-Projekts hat sich mittlerweile durch seine weite Verbreitung und leichte Erweiterbarkeit zu einem mächtigen Allroundwerkzeug entwickelt. Es zeichnet sich durch regelbasierte Dateioperationen sowie die Möglichkeit zur Formulierung von Abhängigkeiten aus. Der Einsatz von Ant kann auch das Yet-Another-Language-Phänomen und das damit verbundene Erlernen einer weiteren Sprache vermeiden.

Eine Aufgabe wird in Ant als Task bezeichnet. Einige Standard-Tasks, die bereits in Ant enthalten sind, wie etwa Copy, Delete, FTP, Mail, SQL, XMLValidate und Zip, sind für die Integration wie geschaffen. Eigene Tasks für anwendungsspezifische Aufgaben lassen sich bei Bedarf in Java implementieren. Mit der Erweiterbarkeit von Ant kann die Adapterfunktionalität des Integrationsservers umgesetzt werden.

Anforderungen an die Ablaufsteuerung wie das Vernetzen von einzelnen Aufgaben sowie das Definieren von Abhängigkeiten lassen sich ebenfalls mit Ant realisieren. Ant ist als Build-Tool in der Lage, einzelne Tasks innerhalb so genannter Targets zu gruppieren und diese zueinander in Beziehung zu setzen. Einziger noch nicht berücksichtigter Aspekt der Ablaufsteuerung ist die periodische Ausführung der durch Ant definierten Integrationsabläufe. Dem Betriebssystem nahe Lösungen, die sich hier anbieten, etwa Cron Jobs unter Linux, widersprechen der bisher verfolgten und mit Ant realisierten portablen Lösung.

Im Java-Umfeld existieren einige frei verfügbare Scheduling-Lösungen, die allerdings eingeschränkte oder keine Möglichkeiten zur komfortablen Wartung und Konfiguration bieten.

Mit den Java Management Extensions (JMX) bietet Sun eine standardisierte Möglichkeit zur Verwaltung und Administration beliebiger Softwarekomponenten. Insbesondere beinhaltet die JMX-Spezifikation die Forderung nach einer Timer- bzw. Schedulingfunktionalität sowie eine Schnittstelle zur Administration. Damit enthält eine JMX-konforme Lösung alle für einen (Integrations-) Server nötigen Bestandteile. Ein zusätzliches Plus ist die Tatsache, dass sich über JMX schlanke Serverlösungen realisieren lassen, die bei Bedarf beliebig erweiterbar sind.

Mittels der zuvor vorgestellten Technologien wurde ein Integrationsserver entwickelt, mit dem sich der in Abbildung 2 dargestellte Workflow realisieren lässt.

Workflow im Beispielszenario
Abbildung 2: Workflow im Beispielszenario

Beipielszenario

In einem Beispielszenario soll ein Katalog in ein eProcurement-System eingespielt werden, wobei eine Formatanpassung von Comma Separated Values (CSV) in den Katalogstandard BMEcat notwendig ist. Ausgangspunkt ist ein Fremdsystem, das eMails an eine dedizierte Empfängeradresse sendet. Die Mails enthalten als Anhang Artikeldaten im CSV-Format, also beispielsweise

artikel_id;beschreibung;preis
300574;Crossoverkabel (schwarz) 3m;2,3
051177;Doppel Kabel;4,5
050477;Crossoverkabel (rot) 3m;2,3
291179;Festklappenkühler;13

Diese Artikeldaten sollen vom Integrationsserver in das BMEcat-Format überführt und an eine andere eMail-Adresse versandt werden. Der Ablauf setzt sich aus den folgenden Prozessabschnitten zusammen:

Das XML-basierte Format der Ant Build-Dateien ermöglicht ein leichtes Lesen der einzelnen Abschnitte des Workflows. Der wesentliche Teil der Ant Build-Datei für das Beispielszenario ist in Listing 2 dargestellt.

Listing 1

<?xml version="1.0" encoding="UTF-8"?>
<csvimport>
	<row>
		<artikel_id>300574</artikel_id>
		<beschreibung>Crossoverkabel (schwarz) 3m</beschreibung>
		<preis>2,3</preis>
	</row>
	<row>
		<artikel_id>051177</artikel_id>
		<beschreibung>Doppel Kabel</beschreibung>
		<preis>4,5</preis>
	</row>
	<row>
		<artikel_id>050477</artikel_id>
		<beschreibung>Crossoverkabel (rot) 3m</beschreibung>
		<preis>2,3</preis>
	</row>
	<row>
		<artikel_id>291179</artikel_id>
		<beschreibung>Festklappenkühler</beschreibung>
		<preis>13</preis>
	</row>
</csvimport>

Listing 2

<pop pop3Host="foo.oio.de"
	userName="uid" password="pwd"
	outDir="${message.dir}" deleteMessages="true" />
<csv2xml basedir="${message.dir}" outDir="${temp.dir}">
	<include name="**/*.csv" />
</csv2xml>
<style basedir="${temp.dir}" destdir="${out.dir}"
	   extension=".xml" style="${xsl.dir}/xml2BMEcat.xsl">
	<include name="**/*.xml" />
</style>
<mail mailhost="foo.oio.de" mailport="25"
	  subject="Integration Server" from="foo@oio.de"
	  tolist="bar@oio.de">
	<message>Integriert!</message>
	<fileset dir="${out.dir}">
		<include name="**/*.xml" />
	</fileset>
</mail>

... und im Herzen!

Für den Kern des Integrationsservers wurden Teile des JBoss Open Source-Applikationsservers verwendet, dessen Architektur auf der JMX-Spezifikation beruht. Die Umsetzung gestaltete sich relativ einfach, da JBoss mit einer Minimalkonfiguration verwendet werden kann, die für diesen Anwendungsfall vollkommen ausreichend ist. Die einzige Erweiterung bestand aus einer Hilfsklasse, die dem JMX Server das periodische Ausführen von Ant Build-Dateien ermöglicht. Die Verwendung des JMX-Standards erlaubt es, den Integrationsserver ohne Mehraufwand um frei verfügbare grafische Verwaltungsoberflächen zu ergänzen. In Frage kommt zum Beispiel das bei Sourceforge erhältliche JMX-Administrationstool MC4J (siehe Abb. 3).

MC4J Management Console
Abbildung 3: MC4J Management Console

Fazit

Mit frei verfügbaren Open Source-Werkzeugen lässt sich ein schlanker und leistungsfähiger Integrationsserver realisieren, der durch die Verwendung offener Standards beliebig erweiterbar ist. Das vorgestellte Beispiel belegt, dass sich durch ausschließliche Verwendung von Open Source-Software und offenen Standards Integrationslösungen realisieren lassen, die den Vergleich mit proprietären, kommerziellen Produkten nicht scheuen müssen.

Referenzen

Jakarta Ant
(http://jakarta.apache.org/ant/)

BMEcat
(http://www.bmecat.org)

JMX Homepage
(http://java.sun.com/products/JavaManagement/index.html)

JBoss.org
(http://www.jboss.org)

MC4J Management Console
(http://mc4j.sourceforge.net/)

Zum Geschaeftsbreich Competence Center
Schulung
Erlernen Sie Maven und Wildfly in unseren Kursen
Newsletter abonnieren