Altova MapForce 2025 Professional Edition

Todas las variables tienen un elemento de entrada compute-when (imagen siguiente) que permite controlar el alcance de la variable. Esto significa que puede controlar cuándo y con qué frecuencia se computa el valor de la variable cuando se ejecuta la asignación. En muchos casos este elemento de entrada puede dejarse sin conectar, pero en ocasiones puede ser imprescindible a la hora de reemplazar el contexto predeterminado o para optimizar el rendimiento de la asignación de datos.

mf_variable_simple

Los siguientes términos son relevantes para la discusión del alcance y el contexto de las variables: subestructura y valor de la variable. Una subestructura es un conjunto formado por un elemento/nodo de un componente de destino y todos sus descendientes: por ejemplo, un elemento <Persona> con sus elementos secundarios <Nombre> y <Apellido>.

 

El valor de la variable son los datos disponibles en el lado de salida del componente de variable.

 

En el caso de las variables simples, se trata de una secuencia de valores atómicos cuyo tipo de datos está especificado en las propiedades del componente.

En el caso de las variables complejas, se trata de una secuencia de nodos raíz (del tipo especificado en las propiedades del componente), cada uno de ellos con sus nodos descendientes.

 

La secuencia de valores atómicos (o nodos) puede contener un elemento e incluso cero. Esto depende de cómo esté conectado el lado de entrada de la variable y de con qué elementos principales del componente de origen/destino esté conectado.

 

Compute-when no está conectado (configuración predeterminada)

Si el elemento de entrada compute-when no está conectado (a ningún nodo de salida de un componente de origen), entonces el valor de la variable se calcula cuando se use por primera vez en una subestructura de destino (ya sea por conexión directa entre el componente de variable y un nodo del componente de destino o por conexión indirecta a través de funciones). El mismo valor de variable se utiliza después para todos los nodos secundarios de destino incluidos dentro de la subestructura.

 

El valor real de la variable dependerá de las conexiones que existan entre los elementos principales del componente de origen y de destino. Este comportamiento predeterminado es idéntico al de los resultados complejos de funciones definidas por el usuario y de llamadas a función de servicio web. Si el resultado de la variable se conecta a varios nodos de destino que no guardan relación entre sí, el valor de la variable se calcula por separado para cada uno de ellos. Esto puede dar lugar a resultados distintos porque las distintas conexiones principales influyen en el contexto en el que se evalúa el valor de la variable.

 

Compute-when está conectado

Si se conecta un conector de salida de un componente de origen con el elemento compute-when, el valor de la variable se calcula cuando dicho elemento de origen se use por primera vez en una subestructura de destino.

 

En realidad, la variable actúa como si fuera un elemento secundario del elemento conectado a compute-when. Esto permite vincular la variable con un elemento de origen concreto. Es decir, en tiempo de ejecución la variable se vuelve a evaluar cada vez que se lea un elemento nuevo de la secuencia del componente de origen. Esto está relacionado con la regla general que rige las conexiones en MapForce: por cada elemento de origen, se crea uno de destino. En este caso, compute-when indica a MapForce que calcule el valor de la variable para cada elemento de origen. Para más información, consulte Reglas y estrategias de asignación.

 

Compute-once

Si es necesario, puede optar por calcular el valor de la variable una vez antes de cada uno de los componentes de destino, haciendo que la variable sea esencialmente una constante global para el resto de la asignación. Para ello, haga clic con el botón derecho en el elemento compute-when y seleccione Calcular una vez en el menú contextual:

mf_variable_compute-once

Cuando se cambia el ámbito de una variable por compute-when=once, el conector de entrada se elimina del elemento compute-when (porque dicha variable solamente se evaluará una vez). En funciones definidas por el usuario, la variable compute-when=once se evalúa cada vez que se llama a la función y antes de que el resultado de la función se evalúe.

 

Parent-context

parent-context es un argumento opcional de algunas funciones de agregado de la biblioteca de funciones core de MapForce (como las funciones min, max, avg y count). En un componente de origen que tiene varias secuencias jerárquicas, el contexto primario determina en qué conjunto de nodos debe operar la función.

 

Agregar un elemento parent-context puede ser necesario, por ejemplo, si su asignación utiliza varios filtros y necesita un nodo primario adicional sobre el que iterar. Para más detalles, consulte Ejemplo: cambiar el contexto primario. Para agregar un parent-context a una variable, haga clic con el botón derecho en el nodo raíz (en este ejemplo, PersonList) y seleccione Agregar contexto primario en el menú contextual. Como resultado se añade un nodo nuevo llamado parent-context a la jerarquía de la variable.

inter7

 

El contexto primario agrega un nodo primario virtual a la jerarquía dentro del componente. Esto le permite iterar sobre un nodo adicional en el mismo componente de origen o en otro diferente.

 

© 2018-2024 Altova GmbH