Varios componentes de destino
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 a la vez en MapForce: el que indique al hacer clic en el botón Vista previa . 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 que:
•Si dos componentes tienen la misma posición vertical, tendrá prioridad el componente situado más arriba.
•Si dos componentes tienen la misma posición horizontal, tendrá prioridad el componente situado más a la izquierda.
•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.
Para ver un ejemplo abra la asignación de ejemplo: <Documentos>\Altova\MapForce2025\MapForceExamples\Tutorial\GroupingFunctions.mfd. Esta asignación está compuesta por varios componentes de origen y varios de destino (en la imagen se ve solamente un fragmento).
Conforme a las reglas, el orden de procesamiento predeterminado 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 generado el código, 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" |
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:
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.