sep 5

¿Función o proceso?

En Velneo V7, como en la mayoría de los lenguajes y herramientas de programación, hay problemas que podemos resolverlos de distintas formas y obtener el mismo resultado.

La diferencia no esta en el resultado en si, que de un modo u otro será el mismo, la verdadera diferencia está en usar el método óptimo para llegar a ese resultado.

Y es aqui, donde se nos plantea la siguiente duda, en multitud de ocasiones, para solucionar un problema, podemos usar una “Función” o un “Proceso”.

A fin de cuentas, una “Función” es muy similar a un “Proceso” en muchos aspectos, aunque también tienen algunas diferencias

La función:

  • Permite hasta 10 parámetros de entrada, aunque esa barrera ya la habiamos superado cuando se publicó este articulo: Parámetros en funciones de V7
  • Tiene un parámetro de salida, aunque también habiamos solucionado este problema encadenando los valores (en el mismo artículo).
  • La función no tiene una tabla de origen, y tampoco destino.

El proceso:

  • Podemos usar tantos parámetros como necesitemos, eso si, usando el manejador de objetos para poder pasar y recibir parámetros.
  • Podemos obtener varios valores de retorno.
  • No es necesario indicar todos los parámetros en la llamada, solo aquellos que sean realmente necesarios.
  • El proceso puede ser: sin origen, o con origen y destino en una misma tabla (de tipo ficha o lista) dependiendo de donde lo vayamos a llamar.

Veamos ahora un ejemplo real que podriamos usar para solucionar un problema común:

La función:

El proceso:

Como podemos observar, las dos imagenes representan lo mismo:

Pasamos como parámetros de entrada los campos #ALM (almacén) y #ART (artículo), y comprobamos si existe el registro en la tabla de “Stock”, y si no existe, lo creamos. Al finalizar retornamos el #ID del registro creado (esto no es necesario pero se ha incluido para ver el retorno de valores).

Ademas, la definición es practicamente igual:

  • Las mismas variables en el panel de subobjetos
  • Las mismas instrucciones en el editor central
  • Y el mismo origen, en el panel de propiedades, aunque en el caso del proceso, esto puede cambiar.

Hemos visto como se definen las funciones y los procesos, pero como sería la llamada para ejecutarlos, porque aqui es donde realmente se diferencian:

En el caso de la función, la llamada es asi:

Necesitamos una variable a la cual asignamos el resultado que retorna la función, y despues, llamamos a la función pasandole todos los parámetros que necesita.

En el caso del proceso, la llamada mediante el manejador de objetos es asi:

La llamada mediante el manejador de objetos es un poco más compleja, ya que hay que definir el objeto en el manejador, luego asignar los valores a las variables con SET, después, ejecutar el proceso y, en último lugar, recoger los valores retornados con GET.

A la vista de los ejemplos, podemos ver que el uso de uno u otro método es aconsejable en los siguientes casos:

  • La función es obligatoria cuando necesitemos hacer uso de ella desde un contenido inicial.
  • El proceso es recomendable cuando necesitemos muchos parámetros o vayamos a retornar varios valores.
  • El proceso es obligatorio si queremos ejecutar en 3º plano.
  • El proceso es recomendable cuando los parámetros de entrada no sean obligatorios

Gracias por la visita y hasta pronto.

PDF Creator    Enviar artculo en formato PDF   
comments: Closed

6 Responses to “¿Función o proceso?”

  1. Miguel dice:

    Hola Jose Luis, muy bueno el post, una reflexión sobre dos de tus puntos.

    Una: La función es obligatoria cuando necesitemos hacer uso de ella desde un contenido inicial.
    ¿Se podría crear una función que ejecute un proceso en 3P para los contenidos iniciales?

    Dos: El proceso es obligatorio si queremos ejecutar en 3º plano.
    Lo mismo que antes.

  2. Miguel dice:

    Por cierto ¿como se puede escribir un post como el tuyo, letra pequeña, puntitos cuadrados,, etc.?

    Saludos y gracias.

  3. Fernando dice:

    Gracias por el artículo Pepeto. En cuanto al rendimiento… mejor una opción que otra?
    En 6.x creo recordar algún post en el antiguo foro que recomendaba el uso de procesos respecto a funciones respecto al rendimiento.

  4. admin dice:

    @Miguel,

    En primer lugar, gracias por la visita.

    En cuanto a tu primer comentario, las respuestas las tienes aqui:
    http://www.ascsl.com/2012/06/oferta-en-funciones-3-x-1/

    Respecto al segundo comentario, te dire que solo es necesario usar dentro del articulo, algunas etiquetas de HTML para conseguir los eefctos que indicas: UL y LI para los puntitos, STRONG y algunas otras para otros efectos, pero que lo hace el propio editor desde la toolbar. Del resto se encarga el CSS de la web.

    un saludo.

  5. admin dice:

    @Fernando,

    En cuanto al rendimiento, siempre es mejor en 3º plano.

    Asi que, si lees este articulo, y el de mi respuesta anterior a Miguel, deberias tener la respuesta que deseas.

    La ventaja del proceso, es que se puede ejecutar en 3º plano. Y como bien indica @Miguel, desde una función, se puede ejecutar un proceso en 3ºplano perfectamente.

    un saludo

  6. Miguel dice:

    Claro, ya sabía yo que había visto algo sobre el tema, ademas era tuyo.

    Saludos.
    Miguel.



Pings responses to this post