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:
- Titel (Typ Kurzer Text)
- Datei (Typ Datei)
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:
- watchCreate (boolean): true
- watchedDirectory (String): <Name des zu überwachenden Verzeichnis>, z.B. c:\temp
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.
- Klasse: de.uplanet.lucy.server.workflow.eventhandler.FileSystemWorkflowEventHandler
- handleWatchDirectoryCreateEvent: true
- eventSourceGuid: Hier wird die die kopierte GUID der generischen Ereignisquelle eingetragen.
So wird dem Ereignisbehandler mitgeteilt, dass er nur auf create-Events von dieser Quelle reagieren soll.
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.