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 help.2.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:


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 Hauptmenü "Bearbeiten".



Hier sehen Sie die Dateien in der Zielapplikation.