Altova MapForce Server 2023 Advanced Edition

Este ejemplo muestra cómo ejecutar un archivo de ejecución de MapForce (.mfx) desde código C#. En Windows, los archivos de ejemplo están en: C:\Program Files\Altova\MapForceServer2023\etc\Examples.

 

Requisitos

MapForce Server está instalado y tiene asignada una licencia válida.

Si crea un proyecto de Visual Studio nuevo, añada una referencia al ensamblado de MapForce Server (véase Interfaz .NET). Puede saltarse este paso si está ejecutando el ejemplo existente de la API de MapForce, ya que el ejemplo ya contiene esa referencia.

En el menú Compilar de Visual Studio, haga clic en Administrador de configuración y escoja la plataforma correcta, por ejemplo Debug | x86  (o Debug | x64, en su caso). No use Any CPU como plataforma.

Si tiene instalada la versión de 64 bits de MapForce Server, la aplicación que llama a la API (como la del ejemplo que aparece más abajo) deberá estar diseñada para la plataforma de 64 bits en Visual Studio. Además, la ruta de acceso del ejecutable de MapForce Server también debe adaptarse según corresponda en el código.

 

La solución de ejemplo está en el directorio "Archivos de programa", que necesita derechos de administrador. Puede ejecutar Visual Studio como administrador o copiar la solución en una carpeta distinta que no necesite derechos de administrador.

 

Ejecutar el código de la asignación

El código siguiente ejecuta tres archivos de ejecución de servidor (.mfx). La tabla siguiente enumera los archivos de entrada que espera cada archivo .mfx, así como la salida que se genera tras la ejecución.

 

Archivo de ejecución (.mfx)

Entrada

Salida

TokenizeString.mfx

AltovaTools.xml

AltovaToolsFeatures.csv

SimpleTotal.mfx

ipo.xml

String

ClassifyTemperatures.mfx

Temperatures.xml

Temperatures_out.xml

 

Si tiene Altova MapForce puede examinar las asignaciones originales a partir de las cuales se crearon los archivos .mfx para entenderlas mejor. Se trata, respectivamente, de TokenizeString1.mfd, SimpleTotal.mfd y ClassifyTemperatures.mfd. Puede encontrar estas asignaciones en el directorio: C:\users\<user>\Altova\MapForce2023\MapForceExamples.

 

El ejemplo siguiente:

Crea una instancia nueva de Altova.MapForceServer.Server, que es el objeto con el que trabajará de ahora en adelante.

Define el directorio de trabajo en el que se lleva a cabo la ejecución. Se espera que los archivos de entrada estén en este directorio si hace referencia a ellos con una ruta relativa. Los archivos de salida también se crean en este directorio (véase la tabla anterior).

Ejecuta TokenizeString.mfx. La ruta de acceso al archivo se da como argumento para el método Run (tenga en cuenta que la ruta es relativa al directorio de trabajo que se definió antes). Si el archivo se ejecuta correctamente, en el directorio de trabajo se crea un archivo .csv que representa el resultado de la asignación.

Ejecuta SimpleTotal.mfx. En este caso la ruta también es relativa al directorio de trabajo. Esta asignación produce una cadena de salida; para obtenerla debe llamar al método GetOutputParameter.

Ejecuta ClassifyTemperatures.mfx. Esta asignación espera un parámetro como entrada; puede indicarlo con el método 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 + ".\");
 
              // 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