Tipps & Tricks - Verzeichnis überwachen

In diesem Werkstattbeitrag wird gezeigt, wie mit Intrexx ein Verzeichnis auf dem Server überwacht werden kann.

Applikation erstellen

Erstellen Sie im Modul Applikationen eine neue Applikation mit der Vorlage Leere Applikation. Geben Sie ihr den Titel Verzeichnis überwachen. Öffnen Sie den Eigenschaftendialog der Datengruppe und legen Sie dort auf dem Reiter Datenfelder die folgenden Felder an: Die Eingabeseite kann gelöscht werden, sie wird nicht benötigt. Auf der Übersichtsseite wird eine Ansichtstabelle eingefügt, die alle Datensätze der Datengruppe auflistet und beide Felder anzeigt.



Speichern Sie die Applikation.

Prozess erstellen

Erstellen Sie im Modul Prozesse einen neuen Prozess mit dem Titel Verzeichnis überwachen.



Legen Sie eine Generische Ereignisquelle an. Geben Sie ihr den Titel Einfügen in c:\temp. Das Verzeichnis, das Sie hier im Folgenden verwenden, muss auf dem Server vorhanden sein. Auf der zweiten Seite des Eigenschaftendialogs kann die Java-Klasse ausgewählt werden, die die Ereignisquelle definiert:
de.uplanet.lucy.server.workflow.eventsource.FileSystemWorkflowEventSource
Im unteren Bereich des Dialogs werden die folgenden Eigenschaften hinzugefügt:


Klicken Sie OK. Kopieren Sie dann die GUID der Generischen Ereignisquelle, die Sie mit der Taste F4 ermitteln können, wenn die generische Ereignisquelle markiert ist. Dazu müssen die Optionen für Experten aktiviert sein. Legen Sie dann einen Generischen Ereignisbehandler mit dem Titel Ereignis aus Quelle abfangen an. Auch beim Generischen Ereignisbehandler werden im zweiten Fenster des Eigenschaftendialogs eine Java-Klasse und Eigenschaften hinterlegt.


Nun muss die neu hinzugefügte Datei noch in einem Intrexx-Datensatz gespeichert werden. Dazu werden die Dateiinformationen benötigt, die mit einer Groovy-Aktion, die an den Generischen Ereignisbehandler angehängt wird, ausgelesen werden können. Geben Sie der Groovy-Aktion den Titel Dateiinformationen in Verarbeitungskontext schreiben. Hinterlegen Sie das hier folgende Skript.
def myFileName = g_event.getContext() 
def myDir = g_event.getWatchedDirectory() 
def myFile = new File("${myDir}/${myFileName}")
g_sharedState.myFileName = myFileName 
g_sharedState.myFile = myFile 
In den ersten beiden Zeilen werden der Dateiname und das überwachte Verzeichnis ausgelesen. In der dritten Zeile wird ein neues Groovy File-Objekt erzeugt, das dann – ebenso wie der Dateiname – in den Verarbeitungskontext geschrieben wird. Im letzten Schritt wird eine Datengruppenaktion erstellt, die den neuen Datensatz anlegt. Geben Sie ihr den Namen Dateidatensatz anlegen . Wählen Sie die Aktion Datensatz hinzufügen, als Zieldatengruppe die Datengruppe aus der Applikation Verzeichnis überwachen. Bei der Feldzuordnung müssen die vorher gespeicherten Werte wieder aus dem Verarbeitungskontext geholt werden.



Klicken Sie dazu auf Benutzerdefinierter Wert.



Wählen Sie hier die Option Systemwert. Klicken Sie dann auf Bearbeiten.



Wählen Sie hier als Typ Verarbeitungskontext aus. In Wert wird die Variable, die für den Dateinamen in der Groovy-Skript-Aktion steht, eingetragen - in unserem Beispiel myFileName. Bestätigen Sie die Änderungen jeweils mit OK und weisen Sie den Wert myFileName dem Feld Titel zu. Erzeugen Sie mit derselben Vorgehensweise den Systemwert myFile und weisen Sie den Wert dem Feld Datei zu.



Mit dieser Zuweisung wird die Datei kopiert, sie verbleibt also auch weiterhin im Verzeichnis. Wenn die Datei nach dem Hochladen in das Intrexx-Datenfeld im Verzeichnis gelöscht werden soll, so kann dies mit einer weiteren, nachfolgenden Groovy-Aktion erledigt werden. Der Prozess ist nun abgeschlossen und kann gespeichert werden. Sie können ihn testen, indem Sie eine Datei in das überwachte Verzeichnis einfügen und überprüfen, ob die Datei in der Applikation aufgelistet wird.