Ejemplo: devolver un valor de forma condicional

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Diseño de asignaciones > Filtros y condiciones >

Ejemplo: devolver un valor de forma condicional

Este ejemplo explica cómo obtener un valor simple de un componente con ayuda de una condición true/false. Para conseguirlo se utiliza una condición If-Else ( mff_ic_if_else ). Las condiciones If-Else no se deben confundir con los componentes de filtrado. Las primeras son adecuadas para procesar valores simples de forma condicional (cadenas, enteros, etc.). Los componentes de filtrado, sin embargo, deben utilizarse para filtrar valores complejos como nodos (véase Ejemplo: filtrar nodos).

 

La asignación de este ejemplo es <Documentos>\Altova\MapForce2019\MapForceExamples\ClassifyTemperatures.mfd.

mff_map_ClassifyTemperatures

Esta asignación lee datos de un XML de origen que contiene datos sobre temperaturas ("Temperatures") y escribe datos en un XML de destino que cumple el mismo esquema. Entre el destino y el origen existen varios componentes más. De ellos el más relevante es la condición if-else (marcada en rojo).

 

El objetivo de la asignación es agregar una breve descripción a cada registro de temperatura en el documento de destino. Concretamente, si la temperatura supera los 20 grados centígrados, la descripción será "high" (alta). Si, por el contrario, la temperatura no supera los 5 grados centígrados, la descripción será "low" (baja). En el resto de los casos, no se incluirá ninguna descripción.

 

Para conseguir nuestro objetivo es necesario un procesamiento condicional y, por tanto, se añadió una condición if-else a la asignación. (Para añadir una condición if-else haga clic en el menú Insertar y después elija el comando Condición If-Else). En esta asignación la condición if-else se amplió (con ayuda del botón gui_add_function_parameter) para que incluyera dos condiciones: bool1 y bool2.

 

Las condiciones propiamente dichas vienen dadas por las funciones greater y less, que se añadieron desde la biblioteca core de MapForce (véase Trabajar con funciones). Estas funciones evalúan los valores que aportan dos componentes de entrada llamados "upper" y "lower". (Para añadir un componente de entrada haga clic en el menú Insertar y elija el comando Insertar componente de entrada. Consulte el apartado Supplying Parameters to the Mapping para obtener más información.)

 

Las funciones greater y less devuelven el valor true o false. El resultado de la función determina qué texto se escribe en la instancia de destino. Es decir, si el valor del atributo "temp" del XML de origen es superior a 20, entonces se pasa el valor de constante "high" a la condición if-else. Si el valor del atributo "temp" del XML de origen es inferior a 5, entonces se pasa el valor de constante "low" a la condición if-else. La entrada otherwise de la condición se deja sin conectar. Por tanto, si no se cumple ninguna de las condiciones anteriores, no se pasará nada al conector de salida result.

 

Por último, el conector de salida result suministra este valor (uno por cada registro de temperatura) al atributo "desc" del componente de destino.

 

Para consultar una vista previa del resultado de la asignación haga clic en el panel Resultados. Observe que el XML de salida resultante incluye ahora el atributo "desc" cuando la temperatura es superior a 20 o inferior a 5.

 

...  
  <data temp="-3.6" month="2006-01" desc="low"/>
  <data temp="-0.7" month="2006-02" desc="low"/>
  <data temp="7.5" month="2006-03"/>
  <data temp="12.4" month="2006-04"/>
  <data temp="16.2" month="2006-05"/>
  <data temp="19" month="2006-06"/>
  <data temp="22.7" month="2006-07" desc="high"/>
  <data temp="23.2" month="2006-08" desc="high"/>
...

XML de salida después de ejecutarse la asignación


© 2019 Altova GmbH