Releases

VersionDatumHinweiseKompatibilität
1.0.201.09.2019Erste veröffentlichte Fassungab Nuclos 4.33.8
1.0.215.03.2021Protokoll SFTP hinzugefügtab Nuclos 4.44.2

Überblick

Das Nuclet "FTP" unterstützt den FTP-Upload auf einen FTP-Server sowie den FTP-Download von einem FTP-Server.

Version 1.0.2

Beschreibung von Version 1.0.2

ThemaBeschreibung
FTP ServerUnter System > FTP-Server können verschiedene FTP-Server definiert werden
FTP Umleitung

Für den Testbetrieb kann die Umleitung aktiviert werden. Dabei werden alle Uploads auf einen festgelegten Server umgeleitet.

FTP ProtokollAlle hochzuladenden und alle hochgeladenen Dateien werden im FTP-Upload-Protokoll (unter System) gespeichert. Das Speichern der hochgeladenen Dateien kann in den Nucletparametern ausgeschaltet werden.
FTP Queue

Für den FTP-Upload gibt es zwei verschiedene Möglichkeiten:

Sofort hochladen

Die Datei wird sofort hochgeladen. Ist der Upload von einem Benutzer angestoßen (z.B. durch einen Statuswechsel, der einen Upload auslöst), so muss er warten, bis dieser Vorgang abgeschlossen ist, bevor er weiter arbeiten kann. Kommt es beim Upload zu einem Fehler, so wird die gesamte Aktion (z.B. Statuswechsel) des Benutzers rückgängig gemacht.

Hochladen über Queue

Die hochzuladende Datei wird erst im FTP-Upload-Protokoll als noch nicht hochgeladene Datei gespeichert und erst durch einen regelmäßig laufenden Job versendet (Administration > Jobsteuerung > FTP-Upload). Dieser muss natürlich aktiviert sein. Der Benutzer wird dadurch bei seiner Bearbeitung nicht unnötig lange aufgehalten und ein fehlerhafter Upload führt nicht zum Abbruch seiner Aktion.

Verwendung in RegelnDie Klasse FTPUtils stellt dazu mehrere Methoden bereit

Verwendung in der Regelprogrammierung von Version 1.0.2

Klasse FTPUtils
static boolean uploadFile(FTPContext context)
Lädt eine Datei auf einen FTP-Server
static boolean uploadFileNow(FTPContext context)
Lädt eine Datei sofort auf einen FTP-Server, unabhängig von den Einstellungen in den Nucletparametern
static List<String> listFilesNow(FTPContext context, JobContext jobContext)
Liefert eine Liste aller gefundenen Dateien
static boolean downloadFileNow(FTPContext context)
Lädt eine Datei sofort auf vom FTP-Server herunter, unabhängig von den Einstellungen in den Nucletparametern
Klasse FTPContext
void setServer(String name)
Definiert den zu verwendenden FTP-Server
void setServer(FTPServer server)
Definiert den zu verwendenden FTP-Server
void setFile(NuclosFile file)
Definiert die Upload-Datei
void setFile(File file)
Definiert die Upload-Datei
void setReference(String reference)
Definiert eine Referenz. Das kann z.B. eine Auftragsnummer sein. Die Referenz hat keinen Einfluss auf den Upload oder Download, hilft aber, Dateien im Protokoll wiederzufinden, die zu einem bestimmten Auftrag gehören.
void setDeleteAfterDownload(Boolean deleteAfterDownload)
Die Datei wird nach dem erfolgreichen Download auf dem FTP-Server gelöscht
void setDownloadTarget(String downloadTarget)
Ziel-Datei des Downloads (darf noch nicht existieren)
void setDownloadSource(String downloadSource)
Quell-Datei des Downloads 
FTPServer getServer()
Liefert den definierten Server
NuclosFile getFile()
Liefert die hochzuladende Datei
String getDownloadSource()
Liefert den Pfad der herunterzulandenden Datei
String getReference()
Liefert die definierte Referenz (fachlicher Hinweis)
boolean isDeleteAfterDownload()
Liefert die Einstellung zum Löschen der Datei auf dem Server nach dem Download
Beispiel (Upload)

FTPContext context = new FTPContext();
context.setFile(auftrag.getRechnung());
context.setServer(auftrag.getKundeBO().getServerBO());
context.setReference("Auftrag " + auftrag.getAuftragsnr());
boolean success = FTPUpload.uploadFile(context);
if (success) {
MessageContext.sendMessage("Die Rechnung wurde erfolgreich übermittelt.", "FTP Upload");
}
Beispiel (Download)

FTPContext ftpContext = new FTPContext();
ftpContext.setServer(server);
List<String> list = FTPUtils.listFilesNow(ftpContext);
context.joblog(list.size() + " Dateien gefunden.");
ftpContext.setDeleteAfterDownload(true);
String path = localTempDir;
File file = null;
for (String filename : list) {
boolean success = false;
ftpContext.setDownloadSource(filename);
ftpContext.setDownloadTarget(path + filename);
try {
file = FTPUtils.downloadFileNow(ftpContext);
success = true;
context.joblog("Datei " + filename + " erfolgreich heruntergeladen.");
} catch (Exception ex) {
context.joblogError("Fehler beim Download von \"" + filename + "\": " + ex.getMessage());
}
if (success) {
if (file == null) {
context.joblogError("Heruntergeladene Datei \"" + filename + "\" ist leer ");
} else {
this.processFile(file, context);
}
}
}

Integration

Die Integration nach erfolgtem Nucletimport (siehe Nuclet Import) ist wie folgt vorzunehmen.

SchrittBeschreibungScreenshot
1

Konfigurieren Sie die Nuclet Parameter des Nuclets FTP (unter Konfiguration > Nuclet Management)

NameBeschreibung
Dateien sofort hochladenDateien werden sofort hochgeladen und nicht in der FTP-Queue zwischen gespeichert (Y/N)
FTP UmleitungAlle Uploads werden umgeleitet (Y/N)
FTP Umleitung aufZiel der Umleitung (Name eines FTP-Servers)
Hochgeladene Dateien löschenErfolgreich hochgeladene Dateien aus dem FTP-Upload-Protokoll löschen


2Führen Sie einmalig den Job Initialisiere Nuclet FTP (unter Administration > Jobsteuerung) aus
3

Konfigurieren Sie Ihre FTP-Server

ParameterBeschreibung
NameEindeutiger Name des Servers
ServerServeradresse
ProtokollArt des Protokolls
LoginBenutzer - Login (optional)
PasswortPasswort (optional)
VerzeichnisZielverzeichnis auf dem Server
PortPort des Servers
Binär?Binärer Übermittlungsmodus
Aktiv?Server ist aktiv / benutzbar