Eventos

De Egeasy
Revisión del 16:36 14 abr 2009 de Irodriguez (Discusión | contribuciones) (Modificación de la función $guardar)

Saltar a: navegación, buscar

¿Qué son los eventos en ODL?

Un evento en ODL es un hecho que puede acaecer a la hora de tratar con contenedores o tareas y que conlleva un cambio en el estado de un contenedor o una tarea.

En el caso de los contenedores, los eventos que se pueden producir son los siguientes:

  • Al_crear
  • Al_guardar
  • Al_abrir

Y para el caso de las tareas:

  • Al_crear
  • Al_comenzar
  • Al_finalizar
  • Al_abandonar

¿Para qué sirven?

La utilidad que nos proporcionan los eventos es poder ejecutar código ODL, invocar métodos o lanzar plugins cuando se produce alguno de los eventos comentados en la sección anterior.

Es decir, primero se produce el evento, y luego se ejecuta o bien nuevo código ODL, un método o un plugin.

¿Cuál es su sintaxis?

Para definir un evento y especificar una acción a posteriori utilizaremos tres atributos que podremos combinar con todos aquellos eventos que hemos visto, ya sean de contenedor o de tarea:

-<Nombre_evento>.codigo ==> Para ejecutar código ODL
-<Nombre_evento>.metodo ==> Para ejecutar un método
-<Nombre_evento>.plugin ==> Para ejecutar un plugin, especificando la dll

Ejemplo

  • Ejemplo para contenedores:
tipo [ID1::Expediente de fiscalización] es contenedor
    -descripcion = "Expediente con el que se lleva a cabo una fiscalización.";
    -Al_guardar.nombre = "eventos.Guardar";
    -Al_abrir.plugin = "AsistenteEntradaMercancia.dll";
fin
metodo Guardar();
inicio
    [Datos generales].[Tipo de expediente] = "Guardado";
    $guardar(this);
fin
  • Ejemplo para tareas:
tipo [ADH::Elaborar resolución de otorgamiento] es tarea
    -fuente.definicion = [Entidad];
    -destino.definicion = [ADH::Resolución de otorgamiento de distintivo];
    -destino.valor = $crear([Contenido]);
    -Al_crear.codigo = "[&Destino]->[Datos generales].[Observaciones] = 'Se ha creado la tarea.'; $guardar([&Destino]);";
    -Al_abandonar.nombre = "eventos.abandonar";
fin 
metodo abandonar();
inicio
    [&Destino]->[Datos generales].[Observaciones] = "Se ha abandonado la tarea.";
    $guardar([&Destino]);
fin

Modificación de la función $guardar

La función $guardar nos permite guardar un objeto que especificamos mediante parámetro de entrada. Ahora bien, se ha añadido a esta función la opción de darle un caracter recursivo añadiendo un parámetro lógico adicional. ¿Pero a qué afecta esta recursividad? Veamos un ejemplo para entenderlo mejor: