Altova MapForce Server 2026 

Ejemplo: ejecutar asignaciones de datos con parámetros

Inicio Anterior Inicio Siguiente

Este ejemplo muestra cómo compilar una asignación de MapForce en un archivo de ejecución de MapForce Server (.mfx) y ejecutarlo desde la API de MapForce. El ejemplo ilustra específicamente el caso en el que la asignación toma el nombre del archivo de entrada como parámetro. Consulte también cualquiera de los ejemplos anteriores de C#, C++, VB.NET, VBScript o Java.

 

En este ejemplo, se utiliza MapForce para que pueda ver y comprender el diseño original de la asignación. MapForce también se utiliza para compilar la asignación en un archivo de ejecución de MapForce Server (.mfx) y configurar ajustes como las rutas relativas frente a las absolutas.

 

La plataforma de servidor utilizada en el ejemplo es Windows. Puede ser el mismo equipo en el que está instalado MapForce o uno diferente. También puede ejecutar este ejemplo en una máquina Linux (en Java), siempre que ajuste las rutas de estilo Windows según corresponda a su plataforma.

 

Requisitos previos

Para ejecutar esta asignación se deben cumplir los mismos requisitos previos que se describen en los ejemplos anteriores de C#, C++, VB.NET, VBScript o Java.

 

Preparación de la asignación para la ejecución en el servidor

Después de instalar MapForce y ejecutar MapForce por primera vez, hay varios archivos de diseño de asignación de muestra disponibles en la siguiente ruta:

 

C:\Usuario\<usuario>\Documentos\Altova\MapForce2026\MapForceExamples

 

Asegúrese de cambiar la ruta anterior según corresponda si tiene una versión diferente de MapForce.

 

El diseño de asignación utilizado en este ejemplo se denomina FileNamesAsParameters.mfd. Como se ilustra a continuación, se trata de una asignación sencilla que copia los datos de un archivo XML de origen a uno de destino prácticamente sin cambios. Solo los campos PrimaryKey y Name del archivo XML de destino se rellenan con constantes de la asignación.

mfs_example_design

FileNamesAsParameters.mfd

La asignación tiene dos parámetros de entrada: InputFileName y OutputFileName. Para poder obtener una vista previa de la asignación en MapForce, los valores de los parámetros se proporcionan mediante dos constantes. Como se describe más adelante, podrá sustituir los valores de los parámetros por los suyos propios cuando la asignación se ejecute con MapForce Server.

 

Tenga en cuenta que tanto los componentes de la asignación de origen como los de destino están configurados para obtener el nombre del archivo dinámicamente a partir de la asignación. Es decir, hay un conector de entrada File: <dinámico> disponible en la parte superior del componente, que lee los datos del parámetro de asignación correspondiente (InputFileName u OutputFileName). En MapForce, puede establecer o cambiar esta opción haciendo clic en el botón Archivo/Cadena situado en la esquina superior derecha del componente. Tenga en cuenta que el nombre del archivo de entrada proporcionado como parámetro debe ser una referencia a un archivo XML físico que proporcione datos de entrada a la asignación (en este ejemplo, Altova_Hierarchical.xml de la misma carpeta que el archivo de diseño de asignación). El nombre del archivo de salida puede ser cualquier nombre válido, por ejemplo, Output.xml.

 

Antes de compilar la asignación en un archivo de ejecución de MapForce Server (.mfx), lo habitual es revisar la configuración de la asignación. Haga clic con el botón derecho en un área vacía de la asignación y seleccione Configurar asignación en el menú contextual.

mfs_example_mapping_settings

Para este ejemplo, cambie la configuración como se muestra arriba. En concreto, cuando desactiva la casilla Convertir las rutas de acceso en absolutas en el código generado, cualquier ruta absoluta a archivos de entrada o salida utilizados por la asignación se resuelve como relativa al archivo de diseño de la asignación (.mfd). Durante la ejecución de la asignación, MapForce Server buscará estas rutas en el directorio de trabajo del programa. El directorio de trabajo predeterminado depende de la plataforma que utilice para acceder a la API de MapForce Server. Por ejemplo, en el caso de una aplicación C#, es el mismo directorio que el ejecutable. Además, como se ilustra más adelante, puede cambiar el directorio de trabajo con la ayuda de una propiedad API llamada WorkingDirectory (o el método Java setWorkingDirectory, si procede).

 

Notas:

 

En el cuadro de diálogo Configurar asignación, las únicas opciones de configuración que afectan directamente a la compilación del archivo .mfx son Convertir las rutas de acceso en absolutas en el código generado y La línea termina.

En esta asignación, no fue necesario editar cada componente en MapForce para cambiar las rutas absolutas a relativas, ya que todas las rutas ya eran relativas. De lo contrario, también debería realizar este paso adicional; consulte Preparar asignaciones para ejecución en servidor.

 

En este ejemplo, utilizaremos C:\MappingExample como directorio de trabajo. Por lo tanto, copie el archivo de entrada Altova_Hierarchical.xml al que hace referencia la asignación desde C:\Users\<usuario>\Documentos\Altova\MapForce2026\MapForceExamples al directorio de trabajo.

 

En este ejemplo, tanto el origen como el destino son archivos XML, y no es necesario copiar el archivo de esquema XML al servidor, ya que la información derivada de él se incrusta en el archivo .mfx durante la compilación. Si la asignación utiliza otros tipos de componentes (por ejemplo, bases de datos), es posible que existan requisitos previos adicionales, tal y como se describe en Preparar asignaciones para ejecución en servidor.

 

Por último, para compilar la asignación a un archivo de ejecución del servidor, haga lo siguiente:

 

En el menú Archivo, haga clic en Compilar en archivo de ejecución de MapForce Server y seleccione un directorio de destino. En este ejemplo, el directorio de destino es el mismo que el directorio de trabajo, C:\MappingExample.

 

Los siguientes ejemplos de código ilustran cómo ejecutar la asignación desde distintos entornos utilizando la API de MapForce Server. En los ejemplos de código que aparecen a continuación, observe que a ambos parámetros se les hace referencia con el mismo nombre que tienen en el diseño de asignación. Además, el valor del parámetro tiene el mismo tipo de datos que se ha definido en la asignación (en este caso, string).

 

Ejecutar la asignación desde C++

Ahora puede ejecutar el archivo .mfx utilizando código C++ como el que se muestra a continuación. Para ejecutar correctamente este listado de código, asegúrese de que MapForce Server tiene una licencia válida; consulte también el comando verifylicense de la línea de comandos.

C++

#include <iostream>
#include "atlbase.h"
 
// 32-bit MapForce Server
#import "progid:MapForce.Server"
 
int _tmain(int argc, _TCHAR* argv[])
{
  CoInitialize( NULL );
 
  try
  {
    //Create a MapForce Server object
    MapForceServerLib::IServerPtr pMFS;
    CoCreateInstance( __uuidof( MapForceServerLib::Server ), NULL, CLSCTX_ALL, __uuidof( MapForceServerLib::IServer ), reinterpret_cast< void** >( &pMFS ) );
 
    //Set a working directory - used as a base for relative paths
    pMFS->WorkingDirectory = "C:\\MappingExample";
 
    //Prepare the parameters
    pMFS->AddParameter("InputFileName", "Altova_Hierarchical.xml");
    pMFS->AddParameter("OutputFileName", "Output.xml");
 
    //Run the mapping
    if (pMFS->Run("FileNamesAsParameters.mfx"))
        std::cout << "Success - finished execution" << std::endl;
    else
        std::cout << pMFS->LastExecutionMessage << std::endl;
 
  }
  catch (_com_error& err )
  {
    BSTR bstrMessage;
    (err).ErrorInfo()->GetDescription( &bstrMessage );
    std::cout << "Exception occurred: " << _com_util::ConvertBSTRToString( bstrMessage ) << std::endl;
 
  }
 
  CoUninitialize();
  return 0;
 
}

 

Ejecutar la asignación desde C#

Ahora puede ejecutar el archivo .mfx utilizando código C# como el que se muestra a continuación. Para ejecutar correctamente este listado de código, primero añada una referencia al archivo DLL de MapForce Server en Visual Studio, tal y como se describe en Interfaz .NET, y asegúrese de que MapForce Server tiene una licencia válida; consulte también el comando verifylicense de la línea de comandos.

C#

static void Main(string[] args)
{
  try
  {
    // Create a MapForce Server object
    Altova.MapForceServer.Server objMFS = new Altova.MapForceServer.Server();
 
    // Set the working directory - all relative paths will be resolved against it
    objMFS.WorkingDirectory = "C:\\MappingExample";
 
    //Prepare the parameters
    objMFS.AddParameter("InputFileName", "Altova_Hierarchical.xml");
    objMFS.AddParameter("OutputFileName", "Output.xml");
 
    //Run the mapping
    if (objMFS.Run("FileNamesAsParameters.mfx"))
        System.Console.WriteLine("Success - finished execution");
    else
        System.Console.WriteLine(objMFS.LastExecutionMessage);
  }
  catch(System.Runtime.InteropServices.COMException ex)
  {
    System.Console.WriteLine("Internal Error: " + ex.Message);
  }
}

 

Ejecutar la asignación desde Java

Ahora puede ejecutar el archivo .mfx utilizando código Java como el que se muestra a continuación. Para ejecutar correctamente este código, asegúrese de que:

 

La variable de entorno Java CLASSPATH incluye una referencia a la biblioteca MapForceServer.jar, tal y como se describe en Información sobre la interfaz Java.

MapForce Server tiene una licencia válida; consulte también el comando verifylicense de la línea de comandos.

Java

public static void main(String[] args) {
    try {
        // Create a MapForce Server object
        com.altova.mapforceserver.MapForceServer objMFS = new com.altova.mapforceserver.MapForceServer();
       
        // Set the working directory - all relative paths will be resolved against it
        // objMFS.setWorkingDirectory("/home/ubuntu/Downloads/MappingExample");
        objMFS.setWorkingDirectory("C:\\MappingExample");
       
        // Add the mapping parameters
        objMFS.addParameter("InputFileName", "Altova_Hierarchical.xml");
        objMFS.addParameter("OutputFileName", "Output.xml");
       
        // Run the mapping
        if ( objMFS.run( "FileNamesAsParameters.mfx" ) )
              System.out.println( "Success - finished execution" );
        else
              System.out.println( objMFS.getLastExecutionMessage() );
       
       
    } catch (Exception e) {
        e.printStackTrace();
    }
     
    System.out.println("Finished execution");
  }

© 2019-2025 Altova GmbH