Altova MapForce Server 2024 

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

 

Voraussetzungen

MapForce Server ist installiert und lizenziert.

Wenn Sie ein neues Visual Studio-Projekt erstellen, fügen Sie eine Referenz zur MapForce Server Assembly hinzu (siehe Informationen zur .NET-Schnittstelle). Sie können diesen Schritt überspringen, wenn Sie das vorhandene MapForce Server API-Beispiel ausführen, da die MapForce Server Assembly darin bereits referenziert wird.

Klicken Sie im Menü Build von Visual Studio auf Configuration Manager und definieren Sie eine korrekte Build-Plattform, z.B. Debug | x86 (oder gegebenenfalls Debug | x64). Verwenden Sie nicht "Any CPU" als Plattform.

Wenn Sie eine MapForce Server 64-Bit-Version installiert haben, so muss auch die Applikation, die die API aufruft (wie z.B. die unten gezeigte Beispielapplikation) für die 64-Bit-Plattform in Visual Studio erstellt sein. Außerdem muss der Pfad zur ausführbaren MapForce Server-Datei im Code entsprechend angepasst werden.

 

Die Beispiellösung befindet sich im Verzeichnis "Programme", für das Sie Administratorrechte benötigen. Starten Sie Visual Studio entweder als Administrator oder kopieren Sie die Lösung in einen anderen Ordner, für den Sie keine Administratorrechte benötigen.

 

Ausführen des Mapping-Codes

Mit dem nachstehenden Code werden drei Server-Ausführungsdateien (.mfx) ausgeführt. Die Tabelle unten enthält eine Liste der von den einzelnen .mfx.-Dateien erwarteten Input-Dateien sowie der nach der Ausführung erstellten Ausgabedateien.

 

Ausführungsdatei (.mfx)

Input

Augabe

TokenizeString.mfx

AltovaTools.xml

AltovaToolsFeatures.csv

SimpleTotal.mfx

ipo.xml

String

ClassifyTemperatures.mfx

Temperatures.xml

Temperatures_out.xml

 

Wenn Sie Altova MapForce installiert haben, haben Sie die Möglichkeit, sich zum besseren Verständnis die Original-Mappings, anhand derer die .mfx-Dateien kompiliert wurden, anzusehen. Diese haben die Namen TokenizeString1.mfd, SimpleTotal.mfd bzw. ClassifyTemperatures.mfd. Sie finden die Mapping im folgenden Verzeichnis: C:\Benutzer\<Benutzer>\Altova\MapForce2024\MapForceExamples.

 

In diesem Beispiel geschieht Folgendes:

 

Es wird eine neue Instanz von Altova.MapForceServer.Server erstellt. Dies ist das Objekt, mit dem Sie später arbeiten werden.

Darin wird ein Arbeitsverzeichnis konfiguriert, in dem die Dateien ausgeführt werden. Die Input-Dateien sollten in diesem Verzeichnis vorhanden sein, falls Sie diese über einen relativen Pfad referenziert haben. Auch die Ausgabedateien werden in diesem Verzeichnis erstellt (siehe Tabelle oben).

TokenizeString.mfx wird ausgeführt. Der Dateipfad wird als Argument für die Methode Run bereitgestellt (Beachten Sie, dass der Pfad relativ zum zuvor definierten Arbeitsverzeichnis ist). Nach erfolgreicher Ausführung wird im Arbeitsverzeichnis eine .csv-Datei, die die Mapping-Ausgabe darstellt, erstellt.

SimpleTotal.mfx wird ausgeführt. Auch hier ist der Dateipfad wieder relativ zum Arbeitsverzeichnis. Mit diesem Mapping wird eine String-Ausgabe erzeugt, daher wird die Methode GetOutputParameter aufgerufen, um die String-Ausgabe zu erhalten.

ClassifyTemperatures.mfx wird ausgeführt. In diesem Mapping wird ein Parameter als Input erwartet, der mit Hilfe der Methode AddParameter bereitgestellt wurde.

 

namespace MapForceServerAPI_sample
{
  class Program
  {
      static void Main(string[] args)
      {
          try
          {
              // Create a MapForce Server object
              Altova.MapForceServer.Server objMFS = new Altova.MapForceServer.Server();
 
              // Set a working directory - used as a base for relative paths (you may need to adapt the path to the installation folder)
              objMFS.WorkingDirectory = "..\\..\\..";
 
              // Default path to the MapForce Server executable is the installation path (same dir with the MapForceServer.dll)
              // In case you moved the binaries on the disk, you need to explicitly set the path to the .exe file
              // objMFS.ServerPath = "C:\\Program Files (x86)\\Altova\\MapForceServer2020\\bin\\MapForceServer.exe";
              // objMFS.ServerPath = "C:\\Program Files\\Altova\\MapForceServer2020\\bin\\MapForceServer.exe";
 
              System.Console.WriteLine("Running " + objMFS.ProductNameAndVersion + ".\");
 
              // 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.Console.WriteLine("\Executing TokenizeString.mfx...");
              if (objMFS.Run("TokenizeString.mfx"))
                  System.Console.WriteLine("Successfully generated file 'AltovaToolFeatures.csv'.");
              else
              {
                  // execution failed. maybe no write permissions in working directory? Run this program as administrator.
                  System.Console.WriteLine(objMFS.LastExecutionMessage);
              }
 
              // ----------------------------------------------------------------------------------
              // An example creating a simple output so that we can retrieve the result explicitly
              System.Console.WriteLine("\Executing SimpleTotal.mfx...");
              if (objMFS.Run("SimpleTotal.mfx"))
                  System.Console.WriteLine("Mapping result is: " + objMFS.GetOutputParameter("total"));
              else
              {
                  // execution failed (e.g. somebody deleted file ipo.xml)
                  System.Console.WriteLine(objMFS.LastExecutionMessage);
              }
 
              // ----------------------------------------------------------------------------------
              // 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.Console.WriteLine("\Executing ClassifyTemperatures.mfx with parameter 'lower' set to '10' ...");
          objMFS.AddParameter("lower", "10");
              if (objMFS.Run("ClassifyTemperatures.mfx"))
                  System.Console.WriteLine("File Temperatures_out.xml has been written successfully.");
              else
              {
                  // execution failed. maybe no write permissions in working directory? Run this program as administrator.
                  System.Console.WriteLine(objMFS.LastExecutionMessage);
              }
          }
          catch (System.Runtime.InteropServices.COMException ex)
          {
              System.Console.WriteLine("Internal Error - " + ex.Message);
          }
      }
  }
}

© 2017-2023 Altova GmbH