Ayuda sobre productos BOLD:

Creación de nuevas funciones

Página:
< Volver

ATENCIÓN: El siguiente contenido es de uso avanzado y su utilización puede ocasionar daños irreparables en la configuración del sistema

Es posible añadir nuevas funciones al sistema utilizando la siguiente sección <Functions> en los ficheros de configuración. Como las funciones pueden ocupar bastantes líneas, puede resultar más conveniente aislarlas dentro de su propio fichero de configuración XML. El artículo Utilización de múltiples ficheros de personalización explica cómo repartir la configuración en diversos ficheros XML en lugar de incluirlo todo en el mismo querycustom.

Ejemplo de definición de una función

<Functions>
  <Function Name="Multiply2" Type="string" Description="Multiplies two numbers">
    <Param Name="p1" Type="double" ShowName="p1" Description="Term 1"/>
    <Param Name="p2" Type="double" ShowName="p2" Description="Term 2"/>
    <Expression>
      <![CDATA[
        p1 * p2
      ]]>
    </Expression>
  </Function>
</Functions>

La función anterior multiplica por sí mismo el parámetro proporcionado. Se puede utilizar en cualquier expresión simplemente escribiendo: Multiply(2,3). El resultado será: 6

Descripción de los atributos más significativos

  • Name: nombre de la función. No podrá contener caracteres especiales ni comenzar por un número.
  • Type: define el tipo de párametro que retorna la función
  • Param: define cada uno de los parámetros

Tipos de datos

Los tipos posibles utilizados tanto en el retorno de la función como en los parámetros puede ser cualquiera de tipos básicos habituales:

  • bool
  • int
  • double
  • string
  • dateTime

También es posible pasar como parámetro y retornar cualquiera de los siguiente tipos complejos:

  • refObj
  • boldProperty
  • boldDate
  • periodList
  • automat: este tipo si se pasa como parámetro luego internamente en la expresión de definición de la función sólo se podrá acceder a las propiedades del objeto pasado como parámetro utilizando la función GetProperty.

Nombres de las funciones

El campo Name del nodo Function. Se propone adoptar la siguiente política:

  • Agrupar las funciones en diferentes ficheros dependiendo del tipo de la función en lugar de poneras todas en el mismo fichero. Esto se ha visto que facilita bastante su uso. Por ejemplo:
  • las funciones relacionadas con las necesidades en el fichero Need functions.xml
  • las funciones relacionadas con los contratos en el fichero Contract functions.xml
  • las funciones que manipulan PL en general en el fichero PL functions.xml
  • En función del tipo de retorno de la función su nombre debería tener uno de los siguiente sufijos:
    • _PL si retorna un PL: MiFuncion_PL
    • _H si retorna un double que son horas: Mifuncion_H
    • _D si retorna un int o un double que es en realidad una cuenta de nº de días: Mifuncion_D
    • retorna un string: MiFuncion (sin sufijo, pero escoger bien el nombre)
    • retorna un int: MiFuncion (sin sufijo, pero escoger bien el nombre)

TBD ojo que esto está en evolución….

Los nombres de la función empiezan siempre con una letra mayúscula.

IMPORTANTE! Detallar bien el campo Description del nodo Function. Esto es lo que va a servir para facilitar la reutilización de una función. Hay que ser los más exhaustivos posible. Del mismo modo explicar bien el atributo Description de cada uno de los parámetros.

Biblioteca de funciones externas

En la siguiente página puede consultar un listado de algunas funciones externas ya definidas de ejemplo. Puede añadirlas a su sistema simplemente copiando el código necesario.

Biblioteca de funciones externas

Was this article helpful?
0 out Of 5 Stars
5 Estrellas 0%
4 Estrellas 0%
3 Estrellas 0%
2 Estrellas 0%
1 Estrellas 0%
5
How can we improve this article?
How Can We Improve This Article?
Tags:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Contenido