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:

  • 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.

//FileUCHelper has to be imported
//as it is not directly available in Groovy

import de.uplanet.lucy.server.businesslogic.util.FileUCHelper
import groovy.io.FileType

// Connection to portal data base

def conn = g_dbConnections.systemConnection

// Source direction

def path = 'c:/img/'

// the source directory should be searched in a depth of three subdirectories
// for .png and .PNG

new File(path).traverse(
	type:FileType.FILES,
	nameFilter:~/.+\.(?i)png$/,
	maxDepth:3
){ pngFile ->

// in the Closure, each .PNG file is available as java.io.file
// in the variable pngFile
// for each file a record is created, to which the files are
// will be added later as an attachment
// the GUID is the GUID of the data group from the application

def id = newGuid()

g_dbQuery.executeUpdate(conn, "INSERT INTO DATAGROUP('B78B96ADA0A81927B7ED013946ED7DC0331CCEC2') (STRID) VALUES (?)") {
		setString(1, id)
	}
// now the file can be attached to the record, where
// the GUID corresponds to the GUID of the file data field
// the source file is moved, i.e. it is no longer located afterwards
// in the source directory

	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.