Altova MapForce Server 2024 

Im folgenden Beispiel sehen Sie, wie Sie eine Mapping-Ausführungsdatei (.mfx) von Java-Code aus ausführen. Unter Windows stehen die Beispieldateien unter dem folgenden Pfad zur Verfügung: C:\Programme\Altova\MapForceServer2024\etc\Examples. Folgende Beispieldateien stehen zur Verfügung:

 

TokenizeString.mfx - eine MapForce Server-Ausführungsdatei, die vom Java-Programm ausgeführt wird.

AltovaTools.xml - eine XML-Datei, die die Input-Daten für das Mapping-Programm bereitstellt.

 

Auf Linux- und Mac-Plattformen werden keine Beispiele vorinstalliert, Sie können jedoch eine ausführbare .mfx-Datei wie die in diesem Beispiel gezeigte folgendermaßen vorbereiten:

 

1.Öffnen Sie die gewünschte Mapping-Design-Datei (.mfd) mit MapForce unter Windows.

2.Wählen Sie im Menü Datei den Befehl Mapping-Einstellungen und deaktivieren Sie das Kontrollkästchen Pfade im generierten Code absolut machen, falls es aktiviert ist.

3.Öffnen Sie für jede Mapping-Komponente das Dialogfeld Eigenschaften (z.B. durch Doppelklick auf die Titelleiste) und ändern Sie alle Dateipfade von absoluten in relative um. Aktivieren Sie außerdem das Kontrollkästchen Alle Dateipfade relativ zur MFD-Datei speichern. Sie können alle Input-Dateien und Schemas aus praktischen Gründen in denselben Ordner wie das Mapping kopieren und diese einfach über den Dateinamen referenzieren. Nähere Informationen zum Arbeiten mit relativen und absoluten Pfaden bei der Erstellung eines Mappings finden Sie in der Dokumentation zu MapForce.

4.Wählen Sie im Menü Datei den Befehl Zu MapForce Server-Ausführungsdatei kompilieren. Dadurch wird die .mfx.Datei generiert, die Sie in der Folge mit MapForce Server ausführen werden, wie im Codefragment unten gezeigt.

 

Voraussetzungen

Bevor Sie den nachstehenden Code ausführen, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt werden:

 

MapForce Server ist installiert und lizenziert.

Die java-CLASSPATH-Datei enthält eine Referenz zur MapForceServer.jar-Bibliothek (Beispiel siehe Informationen zur Java-Schnittstelle).

 

Wenn Sie, wie unten gezeigt, eine benutzerdefinierte .mfx-Datei verwenden, variieren die Voraussetzungen eventuell je nach Art der vom Mapping verarbeiteten Daten. Nähere Informationen dazu finden Sie unter Vorbereiten von Mappings für die Server-Ausführung.

 

Das Java-Beispielprojekt befindet sich unter Windows im Verzeichnis "Programme", für das Sie Administratorrechte benötigen. Starten Sie Ihre Java-Entwicklungsumgebung (z.B. Eclipse) entweder als Administrator oder kopieren Sie das Beispiel in einen anderen Ordner, für den Sie keine Administratorrechte benötigen.

 

Ausführen des Java-Programms

Mit dem nachstehenden Codefragment wird zuerst ein MapForce Server-Objekt erstellt. Als nächstes wird das Arbeitsverzeichnis, in dem die Applikation nach Input-Dateien für das Mapping suchen soll und in dem die Mapping-Ausgabedateien erzeugt werden sollen, definiert. Wie oben erwähnt, werden in der Beispiel-Mapping-Datei Daten aus einer XML-Quelldatei ausgelesen. Stellen Sie also sicher, dass sich sowohl die XML-Datei aus auch das dazugehörige Schema im Arbeitsverzeichnis befindet.

 

Die Methode setServerPath definiert den Pfad zur ausführbaren MapForce Server-Datei. Auf Ubuntu wäre der Pfad /opt/Altova/MapForceServer2024/bin/mapforceserver. Sie können setServerPath weglassen, wenn Sie die MapForceServer.jar -Datei nicht aus ihrem Standardordner verschoben haben.

 

Mit der Methode run wird schließlich ein Mapping (.mfx-Datei) ausgeführt, das mit MapForce kompiliert wurde (z.B. TokenizeString.mfx). Bei Erfolg generiert das unten stehende Programm eine CSV- und eine XML-Datei im Arbeitsverzeichnis sowie Ausgabetext in der Befehlszeile. Bei einem Fehler versucht das Programm die letzte von MapForce Server generierte Ausführungsmeldung zu drucken.

 

import com.altova.mapforceserver.MapForceServer;

 

public class Program {

 

      public static void main(String[] args)

      {

             MapForceServer objMFS;

             try

             {

             // set up the server

                objMFS = new MapForceServer();

             

             // The default location of the server is the directory that the java native library is in.

             // With the following line you could select a different server binary.

             // objMFS.setServerPath(strServerPath);

 

             // The sample data is located in the parent folder of the Java sample code

                objMFS.setWorkingDirectory("..");

 

                System.out.println("Running " + objMFS.getProductNameAndVersion());

 

           //Set global resource file and configuration, if your mapping uses global resources

           //objMFS.setOption( "globalresourcefile", "GlobalResources.xml" ); // "gr" can be used as short name for "globalresourcefile"

           //objMFS.setOption( "globalresourceconfig", "Default" ); // "gc" can be used as short name for "globalresourceconfig"

 

           // -----------------------------------------------------------------------------------

           // An example with input and output paths stored inside the MFX file

              System.out.println("\Executing TokenizeString.mfx...");

              if (objMFS.run("TokenizeString.mfx"))

                 System.out.println("Success: " +  objMFS.getLastExecutionMessage());

              else

                 System.out.println("Unsuccessful: " + objMFS.getLastExecutionMessage());

                 

           // ----------------------------------------------------------------------------------

           // An example creating a simple output so that we can retrieve the result explicitly

              System.out.println("\Executing SimpleTotal.mfx...");

              if (objMFS.run("SimpleTotal.mfx"))

                 System.out.println("Mapping result is: " + objMFS.getOutputParameter("total"));

              else

              {

                 // execution failed (e.g. somebody deleted file ipo.xml)

                 System.out.println(objMFS.getLastExecutionMessage());

              }

           // ----------------------------------------------------------------------------------

           // An example with parameterized input

           // the default of 'lower = 5' gets changed to the value '10'

           // mfx reads file Temperatures.xml and writes its output to Temperatures_out.xml.

           System.out.println("\Executing ClassifyTemperatures.mfx with parameter 'lower' set to '10' ...");

           objMFS.addParameter("lower", "10");

           if (objMFS.run("ClassifyTemperatures.mfx"))

              System.out.println("File Temperatures_out.xml has been written successfully.");

           else

           {

               // execution failed. maybe no write permissions in working directory? Run this program as administrator.

               System.out.println(objMFS.getLastExecutionMessage());

           }

 

           // You can stop the server explicitly by invoking the 'stop' method if you don't want to let the garbage collector decide.

              objMFS.stop();

         }

             catch (Exception e)

             {

                System.out.println("ERROR: " + e.getMessage());

             }

      }

 

}

 

© 2017-2023 Altova GmbH