Altova MapForce 2027 Professional Edition

El contexto determina qué datos de origen y qué resultados intermedios están disponibles para el nodo de destino actual y sus descendientes.

 

MapForce establece el contexto actual empezando en el nodo raíz de destino. Aquí es donde comienza la ejecución de una asignación de datos. Tras procesar el nodo raíz de destino, MapForce avanza hacia abajo por la jerarquía de destino, evaluando cada nodo y sus descendientes. Para cada nodo de destino, MapForce sigue las conexiones hasta los componentes de origen, incluidos los componentes de procesamiento intermedios, como funciones y filtros.

 

Cuando se evalúa un nodo de destino, MapForce establece un contexto que hereda los nodos de origen y los resultados intermedios disponibles en el contexto primario. Los nodos de destino del mismo nivel se evalúan independientemente unos de otros, pero cada uno hereda los datos de origen disponibles en el contexto primario. Para más información, consulte Contexto primario.

 

Para más información sobre las reglas fundamentales de la ejecución de asignaciones de datos, consulte Reglas y estrategias básicas.

 

Orden de procesamiento en varios destinos

Cuando una asignación tiene varios componentes de destino, solo se puede previsualizar el resultado de un componente cada vez. Para ello, haga clic en el botón mf_ic_preview Vista previa del componente de destino que le interese (imagen siguiente).

mf_semantics_07_zoom70

Orden de procesamiento en MapForce Server y código generado

En otros entornos de ejecución (MapForce Server y código generado), los componentes de destino se ejecutan de forma secuencial y se genera el resultado de cada componente.

 

Por defecto, los componentes de destino se procesan de arriba a abajo y de izquierda a derecha. Puede modificar este orden cambiando la posición de los componentes de destino en la ventana de asignación.

 

Asignaciones encadenadas

Cambiar la posición del componente intermedio o el componente final de una única asignación encadenada no afecta al orden de procesamiento. Para más información sobre las asignaciones en cadena, consulte Tutorial: Asignación en cadena.

 

Ejemplo

Para poner en práctica los principios descritos anteriormente, analizaremos la asignación que se muestra a continuación (MapForceExamples\PersonListByBranchOffice.mfd). El objetivo principal de la asignación de datos es obtener una lista de empleados con sus datos de una oficina determinada.

mf_udf_19

Estructuras de origen y de destino

En nuestro ejemplo, la asignación contiene un componente XML de origen y un componente XML de destino. Además, hay un componente de entrada simple que también actúa como origen y suministra el nombre de la oficina cuyos empleados nos interesan. La asignación de datos también incluye varios componentes de procesamiento de datos, como un filtro y algunas funciones.

 

 

Contexto y orden de procesamiento

El procesamiento comienza en el nodo raíz de destino llamado PersonList. Podemos rastrear la conexión a través del filtro y la función equal hasta el elemento de origen llamado Office. A medida que MapForce avanza desde el nodo raíz hacia sus descendientes, cada nodo de destino se evalúa en el contexto establecido por su nodo principal.

 

Una sola oficina como contexto para el destino

Dado que la conexión entre el elemento Office y el elemento PersonList pasa por un filtro, solo los datos que cumplen la condición booleana se asignan al destino. Esta condición solo se cumple una vez, porque solo hay una oficina llamada Nanonull, Inc. en el archivo XML de origen. En consecuencia, la conexión desde el elemento PersonList a través del filtro hasta el elemento Office define una única oficina como contexto para todo el documento de destino. Esto significa que todas las conexiones posteriores con los elementos descendientes del elemento raíz tendrán acceso únicamente a los datos de la oficina de Nanonull, Inc., y que los datos de cualquier otra oficina quedarán excluidos del contexto actual.

 

Una persona por cada contacto

La siguiente conexión es la que conecta los elementos Contact y Person. Según la regla principal de asignación de datos, esta conexión creará un elemento Person de destino por cada Contact de origen. En cada iteración, esta conexión establece el Contact actual para las conexiones con los secundarios del elemento Person. Por lo tanto, las conexiones secundarias (first con First, last con Last) seleccionarán el nombre y el apellido del elemento Contact actual y los escribirán en el destino.

 

Función definida por el usuario

La asignación también incluye una función definida por el usuario llamada LookupPerson. La función definida por el usuario también se ejecuta en el contexto de cada Person, debido a la conexión primaria entre Contact y Person. Cada vez que se crea un nuevo elemento Person en el lado de destino, se invoca la función para rellenar el elemento Details del elemento Person.

 

La función admite tres parámetros de entrada: el nombre de la oficina, el nombre y los apellidos. A nivel interno, la función concatena los valores recibidos como argumentos y produce un valor único.

 

Para más información sobre cómo se configura la función LookupPerson, consulte Implementación de la búsqueda.

 

Si los nodos principales no están conectados

Si no se establece la conexión entre los elementos Contact y Person, los elementos first y last del archivo de origen se evaluarán en el contexto del elemento Office. Dado que solo hay una oficina que cumple la condición del filtro, la asignación creará únicamente un elemento Person de destino y lo completará con todos los elementos first y last de todos los contactos de Nanonull, Inc.

 

En casos como este, MapForce muestra una advertencia en la ventana Mensajes (imagen siguiente) y sugiere conectar los nodos primarios para resolver el problema.

mf_semantics_01

Para obtener más información sobre el contexto, consulte Contexto primario y Contexto de prioridad.

 

© 2020-2026 Altova GmbH