| Docs Hilfe
  AppSource  
Docs  /  NVXCFT Cloud File Transfer  /  Aufgaben

Arbeiten mit Cloud File Transfer


2024/07/22 • 4 Min. Lesedauer
Man kann mithilfe von Codeunit CFTFileInterfaceMgtNVX Dateien laut CFT Setup exportieren oder importieren. Die App kann entweder in einer Cloud Datenbank mit Flows verwendet werden oder mit der Erweiterung OnPremise File Transfer für OnPremise Datenbanken den direkten Dateizugriff erlauben und so die Flows zu umgehen. Welche Variante verwendet wird steuert welche Apps Installiert sind und was in der CFT Einrichtung eingestellt ist.

Einrichten der Flows

Über einen HTTP Request an eine der im CFT Setup definierten Uri kann der Export bzw. Import Flow gestartet werden. Die Flows senden ein HTTP POST oder GET Request an die als Webservice freigegebenen Pages um eine Datei nach BC zu importieren oder über zb. einen Dateisystem-Connector in einen vorhandenen Ordner zu exportieren.

Achtung

Für den Flow wird eine PowerAutomate Premium Lizenz benötigt.
In der Repository sind 2 Beispieldateien für den Import oder Export vorhanden. ExportFile_CloudFileTransfer_Demo_20220113070553.zip ImportFile_CloudFileTransfer_Demo_20211020045958.zip In diesen Flows sind Passwörter zur Anmeldung gespeichert. Diese Anmeldedaten müssen nach dem Import der Vorlagen mit echten Daten ersetzt werden. Beim Import sind Anmeldedaten in dem HTTP2 Schritt. Beim Export sind die Anmeldedaten beim HTTP als auch HTTP2 Schritt. Für die Anmeldedaten wird eine Azure Active Directory Application benötigt mit einem Secret. So sind die Daten Einzugeben:

Achtung

Eine Azure Active Directory Registration muss zuvor von den Cloud Administratoren auf den Tenant eingerichtet sein.
Hier sind die Referenzen für die Anlage: Automation APIS Using S2S Authentication V2 OAUTH Client Creds Grant Flow Für den Zugriff auf Lokale Daten auf der OnPremise Infrastruktur wird ein OnPremise Data Gateway benötigt: Gateway Reference OnPremise Data Gateway Ist das Gateway korrekt eingerichtet so ist dann in PowerAutomate eine Verbindung ersichtlich.

Hinweis

Der Flow läuft in der Standardeinrichtung immer Asynchron. Wenn der Flow synchron abgearbeitet werden soll, das heißt, dass die Dateien importiert werden müssen, damit sie in einem Code verwendet werden können. Dann muss das Flow-Beispiel um ein Response-Element erweitert werden. In dem Response-Element (sobald vorhanden) kann dann eingestellt werden, ob der Flow Synchron oder Asynchron verarbeitet wird. Ohne Response-Element wird er immer Asynchron verarbeitet.

Testen der Flows

Nach dem Einrichten können die Flows manuell getestet werden. In den CFT Files können Dateien manuell importiert oder exportiert werden, als auch die Flows manuell gestartet werden. Dafür muss in der CFT Einrichtung bereits der jeweilige Flow eingerichtet sein. Bei dem OnPremise Variante müssen die Flows natürlich nicht getestet werden, da es diese hier nicht gibt.

Implementierung in Anwendungen

Beispielcode für die Implementierung in Prozessen. Die Implementierung ist dieselbe für die Verwendung von Flows oder OnPremise für die Verwendung von direktem Dateizugriff.

Export

Das CFT File muss vor dem Export angelegt werden und die zu exportierende Datei als Blob darin abgelegt werden. Danach kann der Export gestartet werden.
    procedure ExportFile(FileName: Text; FileSubPath: Text; TempBlob: Codeunit "Temp Blob");
    var
        CFTFile: Record "CFT Files NVX";
        CFTSetup: Record "CFT Setup NVX";
        FileInterfaceMgt: Codeunit CFTFileInterfaceMgtNVX;
        RecRef: RecordRef;
    begin
        CFTSetup.Get();

        CFTFile.Init();
        CFTFile.Usage := CFTFile.Usage::SCHILLPDFFileExportNVX;
        CFTFile.TransferDirection := CFTFile.TransferDirection::Export;
        CFTFile.Filename := CopyStr(FileName, 1, MaxStrLen(CFTFile.Filename));
        CFTFile.FilePath := CopyStr(FileSubPath, 1, MaxStrLen(CFTFile.FilePath));
        CFTFile.ExportType := CFTFile.ExportType::Folder;

        RecRef.GetTable(CFTFile);
        TempBlob.ToRecordRef(RecRef, CFTFile.FieldNo(FileContent));
        RecRef.SetTable(CFTFile);

        CFTFile.Insert(true);

        FileInterfaceMgt.RunFileExport(CFTSetup, CFTFile);
    end;

Import

Vor dem Import müssen die Dateien importiert werden und danach können sie verarbeitet werden. Die Dateien werden Asynchron importiert, das bedeuted, dass sie ggf. noch nicht importiert wurden, wenn sie wie im Codebeispiel ersichtlich durchlaufen werden.
    procedure ImportAllFilesFromImportPath(ImportPath: Text)
    var
        CFTSetup: Record "CFT Setup NVX";
        FileInterfaceMgt: Codeunit CFTFileInterfaceMgtNVX;
    begin
        CFTSetup.Get();
        FileInterfaceMgt.RunFileImport(CFTSetup, ImportPath);

        CFTFile.Reset();
        CFTFile.SetRange(Usage, Usage::MyUsage);
        CFTFile.SetRange(HasValue, true);
        if CFTFile.FindSet() then
            repeat
                ProcessImportedFile(CFTFile);
            until CFTFile.Next() = 0;
    end;

Siehe auch




Feedback senden für
DE|EN Impressum