Altova MapForce Server 2025 Advanced Edition

L'exemple suivant illustre comment exécuter un fichier d'exécution de mappage (.mfx) depuis le code C#. Sous Windows, les fichiers d'exemple sont disponibles sous le chemin suivant : C:\Program Files\Altova\MapForceServer2025\etc\Examples.

 

Conditions préalables

MapForce Server est installé et mis sous licence

Si vous créez un nouveau projet Visual Studio, ajoutez une référence à l'assembly de MapForce Server (voir Interface .NET). Vous pouvez sauter cette étape si vous exécutez l'exemple API MapForce Server existant, parce que l'exemple référence déjà l'assembly de MapForce Server.

Sur le menu Build de Visual Studio, cliquer sur Configuration Manager et définir une plateforme de build correcte, par exemple Debug | x86  (ou Debug | x64, le cas échéant). Ne pas utiliser "Any CPU" en tant que plateforme.

Si vous avez installé MapForce Server 64-bit, alors l'application qui appelle l'API (comme l'échantillon ci-dessous) doit aussi être construite pour la plateforme 64-bit dans Visual Studio. De même, le chemin vers le programme d'exécution de MapForce Server doit être ajusté conformément au code.

 

La solution d'exemple se trouve dans le répertoire "Program Files", qui nécessite des droits administratifs. Vous devrez soit exécuter Visual Studio en tant qu'administrateur, soit copier la solution dans un fichier différent dans lequel vous n'avez pas besoin de droits d'administrateur.

 

 

Exécuter le fichier .mfx

Le code ci-dessous exécute trois fichiers d'exécution de serveur (.mfx). La table ci-dessous recense les fichiers d'entrée attendus par chaque fichier .mfx, et la sortie qui sera créée après l'exécution.

 

Fichier d'exécution (.mfx)

Entrée

Sortie

TokenizeString.mfx

AltovaTools.xml

AltovaToolsFeatures.csv

SimpleTotal.mfx

ipo.xml

String

ClassifyTemperatures.mfx

Temperatures.xml

Temperatures_out.xml

 

Si vous disposez de Altova MapForce, vous pouvez également consulter les mappages originaux à partir desquels les fichiers .mfx ont été compilés pour mieux les comprendre. Ils sont appelés TokenizeString1.mfd, SimpleTotal.mfd et ClassifyTemperatures.mfd, respectivement. Vous trouverez les mappages dans les répertoires suivants : C:\users\<user>\Altova\MapForce2025\MapForceExamples.

 

L'exemple ci-dessous procède comme suit :

 

Il crée une nouvelle instance de Altova.MapForceServer.Server. Il s'agit de l'objet avec lequel vous travaillerez par la suite.

Il définit un répertoire de travail dans lequel l'exécution aura lieu. Les fichiers d'entrée sont censés exister dans ce répertoire si vous vous y référez comme utilisant un chemin relatif. Des fichiers de sortie seront aussi créés dans ce répertoire.

Il exécute le fichier TokenizeString.mfx. Le chemin vers ce fichier est fourni en tant qu'un argument pour la méthode Run (veuillez noter que le chemin est relatif au répertoire de travail qui a été défini précédemment). En cas d'exécution réussie, un fichier .csv représentant la sortie de mappage sera créé dans le répertoire de travail.

Il exécute SimpleTotal.mfx. Le chemin de fichier est également relatif au répertoire de travail. Ce mappage produit une sortie de string, nous appelons donc la méthode GetOutputParameter pour obtenir la sortie de string.

Il exécute ClassifyTemperatures.mfx. Ce mappage attend un paramètre en tant qu'entrée, qui a été fourni avec l'aide de la méthode AddParameter

 

 

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 + ".\n");
 
              // 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("\nExecuting 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("\nExecuting 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("\nExecuting 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);
          }
      }
  }
}

© 2018-2024 Altova GmbH