Altova MapForce 2023 Enterprise Edition

Valores predeterminados y funciones de nodo

Inicio Anterior Inicio Siguiente

Los valores predeterminados y las funciones de nodo son especialmente útiles si quiere aplicar la misma lógica de procesamiento a varios elementos descendientes en una estructura. Normalmente se copia y pega la función varias veces en la asignación. Sin embargo, esto puede hacer que la asignación sea poco legible. Los valores predeterminados y las funciones de nodo se pueden aplicar a un solo elemento o a varios a la vez. Los valores predeterminados reemplazan las secuencias vacías. Si la conexión transporta un valor, el valor predeterminado se ignora.

 

Los valores predeterminados y las funciones de nodo se pueden usar en cualquier componente que tenga una estructura con nodos (como XML, EDI, componentes de combinación, etc.)

 

Los valores predeterminados y las funciones de nodo solo son compatibles con el lenguaje de transformación BUILT-IN. Es decir, no se pueden ejecutar esas asignaciones desde código generado en C#, C++ o Java, ni desde transformaciones XSLT/XQuery generadas. En el lado servidor puede ejecutar este tipo de asignaciones con MapForce Server Advanced Edition.

 

Ventajas de los valores predeterminados y las funciones de nodo

Crear funciones de nodo y valores predeterminados es definir una regla. Las reglas tienen las siguientes características importantes que además las hacen flexibles y fáciles de usar:

 

Herencia. Cuando defina una regla en un elemento que tenga descendientes, por defecto la heredarán los descendientes, a no ser que deshabilite esa opción. Si el elemento para el que define la función tiene varios niveles de secundarios anidados, puede escoger entre aplicar esa regla únicamente a los secundarios directos o a todos los secundarios.

Filtros. MapForce aplica reglas de forma condicional basándose en el tipo de datos de cada elemento. Esto permite, por ejemplo, aplicar un valor predeterminado o una función en concreto a todos los elementos de tipo cadena y otro valor predeterminado u otra función a todos los elementos de tipo decimal. Para más detalles consulte el Caso 2 de Casos de uso. También puede definir filtros más avanzados: Por ejemplo, puede indicar un tipo de datos con el que debe coincidir la función (puede ser una categoría de tipos de datos, como numérico) y después filtrar los nodos de ese tipo de datos en función del nombre o tipo de nodo (p. ej. entero). Para más detalles consulte el Caso 5.

 

Por ejemplo, puede indicar a MapForce que:

 

Cada vez que encuentre un valor null, lo reemplace con otro valor y que haga esto de forma recursiva para todos los elementos descendientes.

Cada vez que encuentre un valor específico, lo reemplace con otro valor (o una cadena vacía) y que haga esto de forma recursiva para todos los elementos descendientes.

Reemplace todos los valores null de BD con cadenas de texto vacías o con texto personalizado.

Anexe un prefijo o sufijo personal a todos los valores que se escriben en un archivo o una BD de destino.

 

Lado de salida vs. de entrada.

Puede definir las funciones de nodo y los valores predeterminados en el lado de entrada, en el de salida o en ambos lados de un componente, según lo que necesite. En MapForce las asignaciones funcionan como sigue: (i) primero lee datos de un componente de origen (p. ej. un archivo XML), (ii) después puede procesarlos datos (p. ej. con una función) y (iii) por último escribe datos en un componente de destino (p. ej. una BD). SI tiene esto en cuenta puede colocar funciones de nodo y valores predeterminados en varias etapas:

 

Inmediatamente después de que los datos se lean desde el origen, pero antes de que la asignación los siga procesando, lo que quiere decir que la función o el valor predeterminado se define en el lado de salida del componente de origen (imagen siguiente).

mf_funcdef_01

Inmediatamente antes de que se escriban datos en el componente de destino (y después de que haya finalizado todo el procesamiento intermedio), lo cual quiere decir que la función o el valor predeterminado se definen en el lado de entrada del componente de destino (véase el ejemplo siguiente).

mf_funcdef_02

En una etapa intermedia del proceso de asignación de datos. Por ejemplo, si la asignación contiene variables de tipo complejo (como una estructura XML), puede reducir todos los valores antes de pasarlos a la estructura XML o inmediatamente después de que se hayan devuelto a la estructura XML (véase el ejemplo siguiente).

mf_funcdef_03

En el lado de salida de un componente de origen y en el lado de entrada de un componente de destino. En el ejemplo siguiente se ha definido un valor predeterminado para todos los nodos de tipo cadena del componente ArticlesOfClothing. En el componente ArticlesInfo hemos definido una función de nodo que transforma todos los valores de los nodos de tipo cadena en caracteres en mayúsculas.

mf_funcdef_04

 

Apartados de esta sección

En esta sección explicamos cómo configurar reglas, casos de la vida real en los que los valores predeterminados y las funciones de nodo pueden ser útiles y cómo agregar metadatos de nodo a las funciones de nodo. Estos son los apartados de esta sección:

 

Configurar reglas

Casos de uso

Suministrar metadatos del nodo a funciones de nodo

 

© 2017-2023 Altova GmbH