Temporalidad en una operación con componentes
Construccion
Una vez que el constructor consigue la definición del componente, este se crea como objeto php y se inicializa. Dentro del mecanismo de inicialización del objeto CI, se suceden las siguientes acciones:
- Si es la primera vez que se inicializa el objeto (es decir, primera vez que se lo ejecuta), se lanza el método ini__operacion
- Como segundo paso del proceso de inicialización se invoca el método ini
Etapa de Eventos
Cada interacción entre cliente y servidor, se realiza mediante el disparo de eventos del primero donde se envían datos e intenciones de acción hacia el segundo. El objeto CI es el encargado de que dichos eventos se procesen durante esta etapa, en general existen dos cursos de acción:
Si el evento actual a procesar no maneja datos para el pedido de página, se dispara el evento propio del CI, se procesa solamente eso y se retorna, ej: evt__cancelar.
Si el evento actual maneja datos, se toman las dependencias del pedido anterior y se las inicializa. Una vez hecho esto, se las separa según su tipo en tres grandes categorías (cuadro, formulario multilinea, otros componentes).A esta altura podemos tener uno o mas componentes de cada tipo, es por ello que internamente, se decide un orden específico para garantizar que los eventos siempre se disparen de la misma manera.
- En ultimo lugar, se disparan los eventos de los cuadros.
- Previo a ello se disparan los eventos de los formularios ML.
- Y anteriormente, se disparan los eventos de cualquier otro componente visual que exista en la pantalla.
Esto quiere decir que una vez se decidió como quedan ordenadas las componentes, el control de que eventos se disparan pasa del CI al componente visual en particular, el cual maneja el disparo de sus eventos de manera interna. Veamos un par de ejemplos: Supongamos una pantalla que posee un formulario con evento implícito de modificación y un cuadro con selección, el orden de disparo de eventos en este caso sería:
evt__formulario__modificacion($datos)
evt__cuadro__seleccion($id)
Si existieran un formulario
y formulario_ml
en la pantalla, ambos con
evento implícito de modificación, el orden de disparo sería:
evt__formulario__modificacion($datos)
evt__form_ml__modificacion($datos)
Si en cambio existieran varios formularios con evento implícito de modificación el orden tomado sería el visual:
evt__formulario1__modificacion($datos1)
evt__formulario2__modificacion($datos2)
evt__formulario3__modificacion($datos3)
Dicho de otra manera, excepto cuando existen cuadros o formularios multilinea, el orden que se respeta en el lanzamiento de eventos es el visual declarado en el editor. Luego se dispara el evento del CI, que fue el que inicio toda la interacción, durante el disparo del mismo se controla si es un evento de navegación por ej: avance o retroceso en un wizard.
Posteriormente al procesado de los eventos, se controla si existió un cambio de pantalla explícito, esto es, se utilizó el método set_pantalla. En dicho caso, se disparan los eventos de salida y entrada correspondientes a cada pantalla, esto es.. la pantalla de eventos (pedido anterior) y la pantalla de servicio (pedido actual)
evt__idpantallaeventos__salida()
evt__idpantallaservicio__entrada()
Finalmente, se elimina la lista interna de eventos atendidos para que no se puedan volver a lanzar en este pedido de pagina.
Etapa de configuracion
Durante la etapa de configuración se acondicionan los componentes para responder al cliente con la información que se enviara.
El primer paso de esta etapa es configurar el objeto CI en que nos encontramos, por lo que el primer método invocado será conf()
Luego se define e instancia la pantalla que se va a graficar y se invoca la configuración de la misma conf__idpantalla(), disparándose a continuación la post configuración de la misma, la cual para cada dependencia que se encuentra en la pantalla:
Inicializa la dependencia mediante el método inicializar()
Lanza la pre-configuración de la dependencia con pre_configurar()
Se lanza el método de configuración de la misma por ej: conf__cuadro, conf__formulario, en gral conf__iddependencia
Lanza la post-configuración de la dependencia con post_configurar() donde se filtran eventos posibles y se aplican restricciones funcionales.
Etapa Servicios
Una vez configuradas adecuadamente las dependencias y la pantalla, se procede a hacer la generación del código que se enviara al cliente. En esto consiste normalmente la etapa de servicio, aquí se invoca el método generar_html, que invoca a su homónimo en el objeto representando la pantalla. Dicho método, genera el contenido según el tipo de navegación seleccionado para la operación y cede el control al método generar_layout, que recorre las distintas dependencias invocando su correspondiente generar_html
Es en esta etapa también donde se invocan las distintas salidas de los componentes, asi por ejemplo encontraremos durante esta etapa a las exportaciones mediante la vista_pdf, vista_excel, vista_impresion_html