Altova MapForce 2023 Enterprise Edition

Ejemplo: usar nombres de archivo como parámetros de asignación

Inicio Anterior Inicio Siguiente

En este ejemplo se explica paso a paso cómo ejecutar una asignación que toma parámetros de entrada en tiempo de ejecución. El archivo de diseño de asignación que utilizamos en este ejemplo está en <Documentos>\Altova\MapForce2023\MapForceExamples\FileNamesAsParameters.mfd.
 
Esta asignación lee datos de un archivo XML de origen y los escribe en un archivo XML de destino. Los datos se escriben en el archivo de destino prácticamente sin cambios (los atributos PrimaryKey y Name se rellenan con valores constantes de la asignación). El objetivo principal de la asignación es permitir que se pueda indicar el nombre de los archivos de entrada y salida como parámetros al ejecutar la asignación.

 

La asignación utiliza dos componentes de entrada: InputFileName y OutputFileName. Estos componentes aportan el nombre de archivo de entrada (y el nombre de archivo de salida respectivamente) del archivo XML de origen y de destino. Por este motivo, están conectados con el nodo Archivo: <dinámico>. Puede cambiar un componente a este modo haciendo clic en el botón Archivo/Cadena (btn_file_string)  y seleccionando Usar nombres de archivo dinámicos dados por la asignación.

mf_simple_input_03

FileNamesAsParameters.mfd (MapForce Basic Edition)

Si hace doble clic en la barra del título de uno de los componentes (InputFileName u OutputFileName), puede ver o editar sus propiedades. Por ejemplo, puede indicar el tipo de datos del parámetro de entrada o cambiar el nombre del parámetro de entrada, como se explica en Configurar componentes de entrada simples. En este ejemplo los parámetros de entrada y salida se han configurado así:

 

El parámetro InputFileName es de tipo "cadena" y tiene un valor predeterminado dado por una constante definida en la misma asignación. Esa constante es de tipo "cadena" y su valor es "Altova_Hierarchical.xml". Por tanto, al ejecutar la asignación, esta intentará leer datos de un archivo llamado "Altova_Hierarchical.xml", siempre que no indique otro valor como parámetro.

El parámetro OutputFileName es de tipo "cadena" y su valor predeterminado también viene dado por una constante definida en la misma asignación. Esa constante también es de tipo "cadena" y se llama "Altova_Hierarchical_output.xml", por lo que al ejecutar la asignación esta genera un archivo XML de salida llamado "Altova_Hierarchical_output.xml", siempre que no indique otro valor como parámetro.

 

Ambos componentes (InputFileName y OutputFileName) son componentes de entrada simples, así que podrá suministrarlos como parámetros de entrada a la hora de ejecutar la asignación. A continuación explicamos cómo hacerlo en estos lenguajes de transformación:

 

XSLT 2.0, con ayuda de RaptorXML Server

Built-in (archivo de ejecución de MapForce Server), con ayuda de MapForce Server

Java

C#

C++

 

XSLT 2.0

Si genera código en XSLT 1.0, XSLT 2.0 o XSLT 3.0, los parámetros de entrada se escriben en el archivo por lotes DoTransform.bat que se ejecutará con RaptorXML Server (véase Automatización con RaptorXML Server). Para usar otro archivo de entrada (o de salida), puede pasar los parámetros necesarios en la línea de comandos cuando llame al archivo DoTransform.bat o editar este último para incluir los parámetros necesarios.

 

Siga estos pasos para suministrar un parámetro de entrada personalizado al archivo DoTransform.bat:

 

1.Primero genere código XSLT. Por ejemplo, genere 2.0 (Archivo | Generar código en | XSLT 2.0) a partir del diseño de asignación FileNamesAsParameters.mfd.

 

2.Copie el archivo Altova_Hierarchical.xml del directorio <Documentos>\Altova\MapForce2023\MapForceExamples\ al directorio donde generó el código XSLT 2.0 (en este ejemplo usamos el directorio de salida c:\codegen\examples\xslt2\). Este archivo hará las veces de parámetro personalizado.

 

3.Edite el archivo por lotes DoTransform.bat para incluir el parámetro de entrada personalizado antes o después de %* (ver texto resaltado más abajo). Observe que el valor de parámetro va entre comillas simples. Los parámetros de entrada disponibles se enumeran en la sección rem (Remark).

@echo off

 

RaptorXML xslt --xslt-version=2 --input="MappingMapToAltova_Hierarchical.xslt" --param=InputFileName:'Altova_Hierarchical.xml' %* "MappingMapToAltova_Hierarchical.xslt"

rem --param=InputFileName:

rem --param=OutputFileName:

IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%

Cuando ejecute el archivo por lotes DoTransform.bat, RaptorXML Server finaliza la transformación usando Altova_Hierarchical.xml como parámetro de entrada.

mf_simple_input_04

 

Archivo de ejecución de MapForce Server

Siga estos pasos para suministrar un parámetro de entrada personalizado a un archivo de ejecución de MapForce Server:

 

1.Compile el diseño de asignación FileNamesAsParameters.mfd en un archivo de ejecución de MapForce Server (véase Compilar asignaciones en archivos de ejecución de MapForce Server). Cuando llegue el momento, guarde el archivo de ejecución .mfx en un directorio del equipo (en este ejemplo usamos c:\codegen\examples\mfx\).

 

2.Copie el archivo Altova_Hierarchical.xml del directorio <Documentos>\Altova\MapForce2023\MapForceExamples\ al directorio donde guardó el archivo de ejecución .mfx. Este archivo hará las veces de parámetro personalizado para el archivo de ejecución de la asignación.

 

3.Ejecute MapForce Server con este comando:

MapForceServer.exe run "C:\codegen\examples\mfx\FileNamesAsParameters.mfx" -p=InputFileName:"C:\codegen\examples\mfx\Altova_Hierarchical.xml" -p=OutputFileName:"C:\codegen\examples\mfx\OutputFile.xml"

Observe que, en este comando de MapForce Server, -p=InputFileName y -p=OutputFileName son los parámetros de entrada para la asignación. Como valor de OutputFileName puede usar cualquier nombre de archivo. Sin embargo, el nombre de archivo dado en InputFileName debe existir como archivo físico para que la ejecución pueda realizarse correctamente.

 

Nota:si recibe el mensaje "MapForceServer.exe no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable", cambie el directorio actual por el directorio donde está instalado el ejecutable de MapForce Server. Si no quiere tener que cambiar de directorio cada vez que ejecute una asignación, basta con añadir la ruta de acceso del directorio donde está instalado MapForce Server a la variable de entorno PATH del sistema operativo (p. ej. C:\Archivos de programa (x86)\Altova\MapForceServer2023\bin) .

 

Con MapForce Server también puede ejecutar asignaciones llamando a la API del servidor (a la que puede invocar con lenguajes como C++, C#, o Java. Para más información sobre este procedimiento consulte la documentación de MapForce Server (https://www.altova.com/es/documentation).

 

Java

Siga estos pasos para suministrar un parámetro de entrada personalizado a una aplicación Java .jar:

 

1.Genere código Java (Archivo | Generar código en | Java) a partir del diseño de asignación FileNamesAsParameters.mfd.

2.Compile el código Java en un archivo ejecutable JAR (encontrará instrucciones en este apartado: Ejemplo: generar una aplicación Java con Eclipse y Ant).

3.Copie el archivo Altova_Hierarchical.xml del directorio <Documentos>\Altova\MapForce2023\MapForceExamples\ al directorio donde está el archivo .jar. Este archivo hará las veces de parámetro personalizado para la aplicación de asignación Java.

4.En la línea de comandos introduzca java -jar Mapping.jar /InputFileName "InputFile.xml"

Si usa comodines a la hora de pasar parámetros a archivos .jar, debe poner los parámetros comodín entre comillas. Por ejemplo:

 

java -jar Mapping.jar /InputFileName "altova-*.xml"

 

 

C#

Para indicar un parámetro de entrada personal a la aplicación línea de comandos en C# generada por MapForce:

 

1.Abra el ejemplo FileNamesAsParameters.mfd que encontrará en el directorio <Documentos>\Altova\MapForce2023\MapForceExamples\.

2.En el menú Archivo haga clic en Generar código en | C# y seleccione un directorio de destino (que en este ejemplo es C:\codegen\examples\cs).

3.Abra la solución en Visual Studio y pulse Ctrl + Mayús + B para generarla.

4.Copie el archivo Altova_Hierarchical.xml desde <Documentos>\Altova\MapForce2023\MapForceExamples\ al directorio en el que se genera Mapping.exe (en este ejemplo, C:\codegen\examples\cs\Mapping\bin\Debug). Como hemos explicado anteriormente, la asignación intentará leer este archivo si no indica otro valor para el parámetro InputFileName.

5.Abra una ventana de la línea de comandos y cambie al directorio en el que se encuentra Mapping.exe.

 

cd C:\codegen\examples\cs\Mapping\bin\Debug

 

6.Ejecute la aplicación con este comando:

 

Mapping.exe /OutputFileName output.xml

 

En el comando anterior el parámetro de entrada /OutputFileName indica el nombre del archivo de salida que se va a generar.

 

C++

Para indicar un un parámetro de entrada personal a la aplicación línea de comandos en C++ generada por MapForce:

 

1.Abra el ejemplo FileNamesAsParameters.mfd que encontrará en el directorio <Documentos>\Altova\MapForce2023\MapForceExamples\.

7.En el menú Archivo haga clic en Generar código en Generar código en | C++ y seleccione un directorio de destino (que en este ejemplo es C:\codegen\examples\cpp).

2.Abra la solución en Visual Studio y pulse Ctrl + Mayús + B para generarla.

3.Copie el archivo Altova_Hierarchical.xml desde <Documentos>\Altova\MapForce2023\MapForceExamples\ al directorio en el que se genera Mapping.exe (en este ejemplo C:\codegen\examples\cpp\Mapping\Debug). Como hemos explicado anteriormente, la asignación intentará leer este archivo si no indica otro valor para el parámetro InputFileName.

8.Abra una ventana de la línea de comandos y cambie al directorio en el que se encuentra Mapping.exe.

 

cd C:\codegen\examples\cpp\Mapping\Debug

 

4.Ejecute la aplicación con este comando:

 

Mapping.exe /OutputFileName output.xml

 

En el comando anterior el parámetro de entrada /OutputFileName indica el nombre del archivo de salida que se va a generar.

© 2017-2023 Altova GmbH