Funciones definidas por el usuario

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

Inicio >  Funciones >

Funciones definidas por el usuario

Las funciones definidas por el usuario (FDU) son funciones personalizadas que se definen una vez y se pueden reutilizar una y otra vez en una misma asignación o en varias distintas. Las funciones definidas por el usuario son como mini asignaciones: suelen consistir en uno o más parámetros de entrada, algunos componentes intermedios para procesar datos y un componente de salida para devolver los datos al usuario. Este emisor puede ser la asignación principal o una función definida por el usuario.

 

Nota: también es posible crear funciones definidas por el usuario que devuelvan varios componentes de salida. Esto solo se puede hacer si la función está definida como "inline" (véase el apartado Funciones definidas por el usuario inline y de tipo estándar).

 

Además de ser reutilizables, las funciones definidas por el usuario también son prácticas si quiere meter partes de la asignación en componentes más pequeños y abstraer los detalles de implementación para que la asignación principal sea más fácil de leer.

mff_udf

Por lo general se crean funciones definidas por el usuario para procesar cadenas de texto, números, fechas y otros datos de una forma personalizada que amplía las funciones integradas de MapForce. Por ejemplo, puede que quiera concatenar o dividir texto de una forma determinada, realizar cálculos avanzados, manipular fechas y horas, o simplemente esconder partes de una asignación metiéndolas en una función reutilizable. Las funciones definidas por el usuario a menudo también se usan para para buscar un campo en un archivo XML.

 

La siguiente imagen es un ejemplo de una función definida por el usuario que divide una cadena de texto en dos cadenas distintas. Esta función definida por el usuario es parte de una asignación de ejemplo: <Documentos>\Altova\MapForce2019\MapForceExamples\ContactsFromPO.mfd. Toma un nombre como parámetro (por ejemplo "Helen Smith"), aplica las funciones integradas substring-before y substring-after, y entonces devuelve los dos valores resultantes ("Helen" y "Smith").

mf_udf_01

ContactsFromPO.mfd

Como hemos explicado, puede llamar a una función definida por el usuario desde la asignación principal o desde otra función definida por el usuario. En otras palabras, las funciones definidas por el usuario se pueden anidar, como ilustramos a continuación.

mff_udf_nested

Por ejemplo, la siguiente asignación llama a una función definida por el usuario ("LookupPerson") para buscar el nombre de una persona en un archivo XML. Si hace doble clic en el encabezado del componente "LookupPerson" se abrirá su definición en el panel de la asignación y podrá observar que esta función llama a su vez a otras funciones definidas por el usuario: "EqualAnd" y "Person2Details". Esta asignación está disponible como ejemplo en la siguiente ruta: <Documentos>\Altova\MapForce2019\MapForceExamples\PersonListByBranchOffice.mfd.

mf_udf_02

PersonListByBranchOffice.mfd

Las funciones definidas por el usuario también se pueden llamar recursivas (es decir, una función que se llama a sí misma). Sin embargo, para que sea recursiva la función definida por el usuario tiene que estar definida como función de tipo erstándar, no inline (véase el apartado Funciones definidas por el usuario inline y de tipo estándar).

mff_udf_recursive

Las funciones definidas por el usuario recursivas permiten, entre otras tareas complejas de las asignaciones, iterar sobre estructuras de datos con una profundidad de N secundarios donde N no se conoce de antemano (véase el ejemplo Ejemplo: búsqueda recursiva).

 

Una vez haya creado una función definida por el usuario, esta queda guardada en la misma asignación en la que fue creada. Sin embargo, puede llamarla desde o importarla a otras asignaciones. Para más información consulte el apartado Llamar e importar funciones definidas por el usuario.


© 2019 Altova GmbH