Altova MapForce 2023 Enterprise Edition

Una asignación puede tener varios componentes de origen y de destino. Cuando hay varios componentes de destino solo puede previsualizar el resultado de un componente cada vez en MapForce, que es el que indique con el botón Vista previa mf_ic_preview. En otros entornos de ejecución (MapForce Server o código generado), todos los componentes de destino se ejecutan de forma secuencial y se produce el resultado correspondiente de cada componente.

 

Por defecto, los componentes de destino se procesan de arriba a abajo y de izquierda a derecha. Si lo necesita, puede modificar este orden cambiando la posición de los componentes de destino en la ventana de asignación. El punto de referencia es la esquina superior izquierda de cada uno de los componentes. Tenga en cuenta lo siguiente:

 

Si dos componentes tienen la misma posición vertical, entonces tiene precedencia el último.

Si dos componentes tienen la misma posición horizontal, entonces tiene precedencia el de nivel superior.

En el caso improbable de que varios componentes tengan la misma posición, entonces se usa automáticamente un ID de componente interno que garantiza un orden bien definido pero que no se puede modificar.

 

Para ver un ejemplo abra la asignación de ejemplo: <Documentos>\Altova\MapForce2023\MapForceExamples\Tutorial\GroupingFunctions.mfd. Esta asignación consiste en varios componentes de origen y varios de destino; en la imagen se ve solamente un fragmento.

mf_semantics_07

Conforme a las reglas, la orden de procesamiento predeterminada de esta asignación en MapForce Server y en código generado es de arriba a abajo. Puede comprobar que es el caso al generar código XSLT 2.0, por ejemplo:

 

1.En el menú Archivo, haga clic en Generar código en | XSLT 2.0.

2.Cuando la aplicación lo pida, seleccione un directorio de destino para el código generado.

 

Una vez lo haya generado, el directorio de destino incluye varios archivos XSLT y un archivo DoTransform.bat. Este último se puede ejecutar con RaptorXML Server (que requiere una licencia aparte). El archivo DoTransform.bat procesa componentes en el mismo orden en el que se definieron en la asignación, de arriba a abajo. Esto se puede comprobar en el parámetro --output de cada transformación.

 

RaptorXML xslt --xslt-version=2 --input="records.xml" --output="group-by.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups.xslt"
IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%
RaptorXML xslt --xslt-version=2 --input="records.xml" --output="group-adjacent.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups2.xslt"
IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%
RaptorXML xslt --xslt-version=2 --input="records.xml" --output="group-into-blocks.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups3.xslt"
IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%
RaptorXML xslt --xslt-version=2 --input="records-v2.xml" --output="group-starting-with.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups4.xslt"
IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%
RaptorXML xslt --xslt-version=2 --input="records-v3.xml" --output="group_ending_with.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups5.xslt"
IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%

 

La última transformación produce un archivo de salida llamado group-ending-with.xml. Ahora vamos a mover este componente de destino en la asignación a la parte de más arriba:

mf_semantics_08

Si ahora vuelve a generar código XSLT 2.0, el orden de procesamiento también cambia:

 

RaptorXML xslt --xslt-version=2 --input="records-v3.xml" --output="group_ending_with.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups.xslt"

IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%

RaptorXML xslt --xslt-version=2 --input="records.xml" --output="group-by.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups2.xslt"

IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%

RaptorXML xslt --xslt-version=2 --input="records.xml" --output="group-adjacent.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups3.xslt"

IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%

RaptorXML xslt --xslt-version=2 --input="records.xml" --output="group-into-blocks.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups4.xslt"

IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%

RaptorXML xslt --xslt-version=2 --input="records-v2.xml" --output="group-starting-with.xml" --xml-validation-error-as-warning=true %* "MappingMapTogroups5.xslt"

IF ERRORLEVEL 1 EXIT/B %ERRORLEVEL%

 

En el fragmento de código anterior, la primera llamada ahora produce group-ending-with.xml.

 

Puede cambiar el orden de procesamiento de forma parecida en otros lenguajes de programación y en los archivos de ejecución compilados de MapForce Server (.mfx).

 

Asignaciones encadenadas

Para las asignaciones encadenadas se sigue la misma secuencia de procesamiento que se describe más arriba. Sin embargo, el grupo de asignaciones encadenadas se entiende como una unidad. Cambiar la posición del componente intermedio o el componente final de una única asignación encadenada no afecta a la secuencia de procesamiento. La posición de los componentes finales de destino de cada grupo determinan qué se procesa primero solamente si existen varias "cadenas" o varios componentes de destino en una asignación.

 

Si dos componentes de destino finales tienen la misma posición vertical, entonces tiene precedencia el último.

Si dos componentes de destino finales tienen la misma posición horizontal, entonces tiene precedencia el de nivel superior.

En el caso improbable de que varios componentes tengan exactamente la misma posición, entonces se usa automáticamente un ID de componente interno que garantiza un orden bien definido pero que no se puede modificar.

© 2017-2023 Altova GmbH