Diferencia entre revisiones de «Eventos»
(→Modificación de la función $guardar) |
(→¿Cuál es su sintaxis?) |
||
Línea 23: | Línea 23: | ||
-<Nombre_evento>.{{AT|codigo}} ==> Para ejecutar código ODL | -<Nombre_evento>.{{AT|codigo}} ==> Para ejecutar código ODL | ||
-<Nombre_evento>.{{AT|metodo}} ==> Para ejecutar un método | -<Nombre_evento>.{{AT|metodo}} ==> Para ejecutar un método | ||
− | -<Nombre_evento>.{{AT|plugin}} ==> Para ejecutar un plugin, especificando la | + | -<Nombre_evento>.{{AT|plugin}} ==> Para ejecutar un plugin, especificando la DLL |
===Ejemplo=== | ===Ejemplo=== |
Revisión del 15:42 14 abr 2009
Contenido
¿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: