Tipps & Tricks - Dateien importieren
Mit dem
FileUCHelper können beliebige Dateien
als Dateianhang in eine Intrexx Applikation importiert werden. In diesem
Beispiel wird ein zeitlich gesteuerter Prozess verwendet, der mit Groovy-Skript
ein Verzeichnis nach .png-Dateien durchsucht und diese als Anhang in eine
beliebige Applikation schreibt. Beispielapplikation, Prozess und vier PNG-Bilddateien
können Sie
hier herunterladen.
Entpacken Sie die Downloaddatei. Enthalten sind das Verzeichnis
bilddateien-png, im dem Sie vier PNG-Dateien finden, die Sie zum
Testen verwenden können, und die Datei
tipps-tricks-dateien-importieren-app-process.zip. Diese können
Sie wie gewohnt
importieren.
Hier finden Sie weitere Informationen zur Klasse
FileUCHelper. Grundsätzlich stehen folgende Methoden zur Verfügung:
- copyFileToIntrexx()
kopiert Dateien in Intrexx, ohne sie auf Filesystemebene zu verändern
- deleteFileFromIntrexx()
löscht Dateien aus Intrexx
- moveFileToIntrexx()
schneidet Dateien auf Filesystemebene aus und fügt sie in Intrexx ein
Die Beispiel-Applikation besitzt eine Datengruppe mit einem
Primärschlüssel
in Form einer
GUID.
Dieser Datentyp kann bei der Anlage einer neuen Datengruppe ausgewählt werden.
Außerdem gibt es ein Datei-Datenfeld in der Datengruppe.
Auf der Übersichts-Seite befindet sich eine Tabelle, die mit dem Datenfeld
aus der Datengruppe verbunden ist.
Der Beispielprozess enthält einen
Timer mit dem entsprechenden
Timer-Ereignisbehandler und eine
Groovy-Aktion. Der Eigenschaftendialog der Groovy-Aktion kann mit einem
Doppelklick geöffnet werden. Wechseln Sie dort auf den Reiter
Skript und öffnen Sie den Intrexx-Editor. Hier
finden Sie das folgende Groovy-Skript.
//Der FileUCHelper muss importiert werden, da er nicht direkt
//in Groovy zur Verfügung steht.
import de.uplanet.lucy.server.businesslogic.util.FileUCHelper
import groovy.io.FileType
// Verbindung zur Portal-Datenbank
def conn = g_dbConnections.systemConnection
// Quell-Verzeichnis
def path = 'c:/img/'
// das Quell-Verzeichnis soll in einer Tiefe von drei Unterverzeichnissen
// nach .png und .PNG durchsucht werden
new File(path).traverse(
type:FileType.FILES,
nameFilter:~/.+\.(?i)png$/,
maxDepth:3
){ pngFile ->
// in der Closure steht jede .PNG-Datei als java.io.File
// unter der Variablen pngFile zur Verfügung
// für jede Datei wird ein Datensatz angelegt, dem die Dateien
// später als Anhang beigefügt werden
// die GUID ist die GUID der Datengruppe aus der Applikation
def id = newGuid()
g_dbQuery.executeUpdate(conn, "INSERT INTO DATAGROUP('B78B96ADA0A81927B7ED013946ED7DC0331CCEC2') (STRID) VALUES (?)") {
setString(1, id)
}
// jetzt kann die Datei dem Datensatz als Anhang beigefügt werden, dabei entspricht
// die GUID der GUID vom Datei-Datenfeld
// die Quelldatei wird verschoben, befindet sich also anschließend nicht mehr
// im Quell-Verzeichnis
FileUCHelper.moveFileToIntrexx(g_context, pngFile, "185C69FFD1D97C10F3C09BC1D0D2C1633BEAE039", id, false)
}
Ersetzen Sie den Pfad
c:/img/ mit dem Namen des Verzeichnisses, in
dem die Bilder liegen, die Sie importieren möchten. Natürlich können auch andere Typen wie
z.B. PDF-Dateien importiert werden. Das Skript muss dann entsprechend angepasst werden.
|
Das Verzeichnis, in dem sich die Dateien befinden, muss vom
Dienstausführenden des Portals beschrieben werden können. Besonders bei Netzlaufwerken
ist auf diesen Umstand zu achten. Wenn sich in einem Verzeichnis nicht nur png-Dateien
befinden, müssen die Endungen der Dateien geprüft werden.
|
Ersetzen Sie die
GUID der Datengruppe und des Datenfeldes im Groovy-Skript mit
den entsprechenden
GUIDs aus Ihrer Applikation. Sie können Ihre Zielapplikation im
Bereich
Applikationsstruktur auswählen und dort die entsprechenden
GUIDs ermitteln.
Schließen Sie anschließend den Editor und den Eigenschaftendialog der Groovy-Aktion mit
Klick auf
OK. Speichern Sie den Prozess und starten Sie den
Timer über das
Kontextmenü.
Hier sehen Sie die Dateien in der Zielapplikation.