Donnerstag, 27. September 2012

System Integration mit Xpert.Ivy: Event Start über Dateien

Xpert.Ivy bringt von Haus aus bereits Möglichkeiten mit, andere Systeme über eine Datei basierte asynchrone Kommunikation in Prozesse einzubinden. Die Datei basierte Integration hat den Vorteil, dass sie einfach und ohne zusätzliche Software umsetzbar ist. In einem Prozess Showcase, bei dem drei verschiedene Systeme integriert wurden, haben wir daher auf diese Variante gesetzt für die asynchrone Kommunikation.


Wenn man einen Prozess in Xpert.Ivy durch eine Datei starten oder weiterlaufen lassen möchte, kann man dies über ein "Event Start" oder ein "Intermediate Event" realisieren.


Schauen wir zuerst das Event "Event Start" an. Xpert.Ivy wird bereits mit drei Java Klassen (auch StartEvenBeans genannt) ausgeliefert.


Im Projekt IvyAddOns gibt es darüber hinaus noch weitere EventBeans. Um diese zu finden wechselt man am besten in die Java Perspektive (Menu Window => Open Perspective => Other => Java). Wenn man nun das Projekt IvyAddOns aufmacht, findet man im Ordner src zwei Packages mit weiteren Start- und Intermediate-EventBeans:


Die Klasse XMLFileStartEventBean ist dabei ein guter Startpunkt, wenn man eine eigene Klasse implementieren möchte. Ich werde später ein Beispiel dazu zeigen.



Hier eine kurze Beschreibung der StartEventBeans.

FileStartEventBean

Startet für jede Datei in einem bestimmten Verzeichnis ein Prozess und kopiert die Werte in der Datei in die Prozessdaten. Die Datei muss dafür folgendes Format haben:

Attribute1=Wert1,Attribute2=Wert2,...

Die Pollzeit ist fest auf eine Minute eingestellt. Die Datei wird gelöscht. Attribute die nicht übereinstimmen werden ignoriert.

Beispiel mit Debug Ausgabe der Prozess Attribute:

FilePickupStartEventBean

Startet für jede Datei in einem bestimmten Verzeichnis ein Prozess und kopiert den Dateinamen in ein Prozess-Attribut vom Typ String.

Die Pollzeit ist fest auf eine Minute eingestellt. Die Datei wird wenn das Setzen des Dateinamens funktioniert gelöscht, im Fehlerfall stehen gelassen.

Beispiel mit Debug Ausgabe:

XMLFileStartEventBean (aus IvyAddOns)

Startet für jede Datei in einem Verzeichnis ein Prozess und kopiert die XML Elemente in die Prozess Attribute (analog FileStartEventBean aber mit einer XML Datei).

Die Pollzeit kann eingestellt werden. Das Verzeichniss kann aus den globalen Variablen von Ivy gelesen werden. Im Fehlerfall wird die Datei in ein Verzeichnis "error" verschoben.

Beispiel:




Fazit

Mit den in Ivy integrierten EventStartBeans ist es möglich, schnell eine Datei basierte Kommunikation zwischen dem Prozess und verschiedenen Systemen umzusetzen. Allerdings sind sie für einen produktiven Einsatz nur bedingt brauchbar, da:
  • Die Pollzeit (ausser bei XMLFileStartEventBean) nicht konfigurierbar ist
  • Das Verzeichnis (ausser bei XMLFileStartEventBean) nicht über eine globale Ivy Variable konfigurierbar ist
  • Das Fehler-Handling zu einfach ist
  • Fehler beim gleichzeitigen Schreiben (vom externen System) und Lesen (durch Ivy) nicht ausgeschlossen sind
  • Kein Datei-Filter angewendet werden kann
Wie man selber eine StartEventBean schreiben kann, welche diese Punkte umsetzt, zeige ich in einem späteren Post.

Keine Kommentare: