Curso Toba Inicial Sep 2014

Embed Size (px)

Citation preview

  • 8/10/2019 Curso Toba Inicial Sep 2014

    1/79

    Ing. Fernando MartnezSistema de Informacin Universitaria

    [email protected]

    Septiembre 2014

    SIU-TobaNivel inicial

  • 8/10/2019 Curso Toba Inicial Sep 2014

    2/79

    Qu es Toba?

    Es un ambientede desarrollo Web, creado porel SIU con el objetivo de brindar unaherramienta de desarrollo rpido, que posee

    una arquitectura basada en componentespara construir aplicaciones webtransaccionales.

    Licencia software libre.

    2Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    3/79

  • 8/10/2019 Curso Toba Inicial Sep 2014

    4/79

    Conceptos clave

    1. INSTALACIN

    2. INSTANCIA

    3. PROYECTO

    4. PUNTO DE ACCESO

    4Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    5/79

    1. Instalacin

    Una instalacines una carpeta que contieneuna versin de Toba.

    Una instalacin puede correr una oms instancias de distintos proyectos.

    5Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    6/79

    2. Instancia

    Una instanciaes una abstraccin que contienelos metadatos de un conjunto de proyectos.

    Fsicamente es un esquema en la base dedatos de Toba (por defecto llamadodesarrollo).

    6Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    7/79

    3. Proyecto

    Un proyectoen Toba se compone de archivosde cdigo en PHP y definiciones en metadatos.

    Estos metadatos se almacenantemporalmente en la base de Toba, y sepueden volcar al sistema de archivos (aldirectorio metadatosdel proyecto)

    mediante comandos de consola.

    7Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    8/79

    4. Punto de acceso

    8

    Durante la ejecucin, elusuario ingresa la URL delproyecto en el navegador;

    all se liga a una instalacin,instancia y opcionesespecficas de ejecucin.

    Esta unin entre URL y entorno deejecucin es conocida como punto deacceso.

    Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    9/79

    Flujo de trabajo

    9

    2 1

    3

    4

    5

    Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    10/79

    Requisitos tcnicos

    1. Servidor web: Apache (2.2.x).

    2. Lenguaje de programacin: PHP (comomdulo de Apache).

    3. Servidor de base de datos: PostgreSQL.

    4. Sistema de control de versiones: Subversion

    5. Herramientas adicionales: Graphviz

    10

    http://toba.siu.edu.ar/trac/toba/wiki/Instalacion

    Ing. Fernando Martnez - SIU

    http://toba.siu.edu.ar/trac/toba/wiki/Instalacionhttp://toba.siu.edu.ar/trac/toba/wiki/Instalacion
  • 8/10/2019 Curso Toba Inicial Sep 2014

    11/79

    Configuracin de PHP#Mnimos magic_quotes_gpc = Off magic_quotes_runtime = Off extension = php_pdo.dll extension = php_pdo_pgsql.dll extension = php_mbstring.dll

    #Recomendados error_reporting = E_ALL (*) display_errors = On (*)

    memory_limit = 128M post_max_size = 8 M upload_max_filesize = 8 M

    (*) #Solo para desarrollo11Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    12/79

    En una consola en la ubicacin

    c:\path_a_toba\bin, ejecutar instalar.batyseguir las instrucciones.

    Al finalizar la instalacin, no cerrar la

    ventana sin leer antes las instruccionesfinales del instalador.

    Una vez completado, reiniciar Apache.

    Se recomienda mover el archivoentorno_toba_xx.batde la carpeta deusuario a la de la instalacin de Toba.

    Instalacin

    12Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    13/79

    Distribucin de carpetas - Toba

    bin: contiene los lanzadores de comandos deconsola (ej: instalar, o el mas usado: toba).

    php: cdigo fuente de Toba.

    proyectos: rbol de directorios de los

    distintos proyectos. www: contiene archivos estticos (imgenes,

    css, javascript, etc.) de Toba que sonpublicados en el servidor web.

    instalacion: contiene detalles de configuracinde la instalacin actual (alias, bases de datos,etc.).

    13Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    14/79

    Archivos de configuracin

    Carpeta instalacion: localizada en eldirectorio raz de Toba, contiene todas lasconfiguraciones de la instalacin, incluyendola de las instancias contenidas.

    Qu instanciastiene definidas, determinado porcarpetas i__nombre.

    Qu bases de datosse utilizan en la instalacin

    por proyecto; se definen en el archivo bases.ini. Configuraciones varias, globales a toda la

    instalacin, en el archivo instalacion.ini.

    Configuraciones para Apache: toba.conf14Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    15/79

    Creando un nuevo proyecto

    Ejecutar el comando:toba proyecto crear -p curso

    Crea un sistema de archivos inicial,conteniendo metadatos bsicos y los puntosde acceso por defecto.

    Carga en la instancia esos metadatos bsicos.

    Se ejecuta una sola vez durante toda lahistoria del proyecto.

    15Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    16/79

    Distribucin de carpetasProyecto

    id_proyectophp: carpeta que se incluye en el include_path de

    php, por lo que se recomienda usarlo paracontener todas las clases particulares del proyecto.

    metadatos: directorio donde se almacenan losmetadatos propios del proyecto, exportadosmediante comandos.

    www: contiene el punto de acceso y los archivosestticos publicados (imgenes, javascript, css),similares a los de Toba, pero propios del proyecto.

    16Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    17/79

    Editor Toba

    El editor de Toba cubre distintos aspectos de

    la implementacin de una aplicacin:

    Configuracin global del proyecto.

    Creacin y edicin de operaciones.

    Definicin de las distintas fuentes de datos, paraconectarse transparentemente con las bases.

    Previsualizacin de la aplicacin, con utilidades

    como edicin contextual, visualizacin de logs,cronometrado de ejecucin o consumo dememoria.

    17Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    18/79

    Primeros pasos en el editor

    Proyecto que seest editando

    Previsualizacin Edicin deusuarios

    Ayuda Logger

    rbol deoperacionesdisponibles

    Listado decomponentes

    disponibles

    Configuracionesde acceso a datos

    Cdigo PHP Configuracingeneral delproyecto

    18Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    19/79

    Barra de desarrollo

    19Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    20/79

    Barra de desarrollo

    20Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    21/79

    rbol de operaciones Si pensamos en la aplicacin como un catlogo de

    operaciones, a cada una de estas operaciones sela puede pensar como un temde este catlogo.

    Editar

    Nueva carpeta

    Nuevo componente hijo

    Nuevo tem

    Previsualizar operacin

    21Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    22/79

    Ejemplos

    Creacin de carpetas. Creacin de un temPHP plano.

    Previsualizacin.

    Visualizacin en el men de la aplicacin. Creacin de un temEsquema de

    componentes.

    Tipos de pgina. Reubicacin de un tem en el men.

    22Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    23/79

    Base de negocio

    Los proyectos desarrollados en Toba contarn,casi con seguridad, al menos con una base denegocio.

    Al respecto, se puede: Instalar la base de negocio en la misma base que

    contiene la instancia Toba, en otroesquemadePostgreSQL

    O bien definir una nueva base de datos,independiente de la Toba.

    Ing. Fernando Martnez - SIU 23

  • 8/10/2019 Curso Toba Inicial Sep 2014

    24/79

    Base de negocio

    24Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    25/79

    Fuentes de datos

    Una fuente de datos encapsula un mecanismode entrada/salida de datos, tpicamente unabase relacional.

    Un proyecto puede tener asociadas variasfuentes de datos, cada una representandouna base distinta.

    Para administrar estas fuentes existe unaseccin en el Editor dentro de la seccinDatos.

    25Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    26/79

    All se detalla cmo est formada: Identificador: es el nombre con el que esta fuente

    puede ser referenciada desde Toba.

    Datos de conexin: motor, host, puerto, usuario,clave, base, encoding, esquema, etc.

    Definiendo la fuente de datos en el editor, segenera o se actualiza la entrada

    correspondiente en el archivo bases.ini

    26

    Fuentes de datos

    Ing. Fernando Martnez - SIU

    [instancia proyecto id_fuente]Ej: [desarrollo curso curso]

  • 8/10/2019 Curso Toba Inicial Sep 2014

    27/79

    Fuente de datos

    Definiendo la fuente de datos en el editor, segenera una nueva entrada en el archivobases.ini:

    [desarrollo curso curso]

    motor = postgres7profile = localhostpuerto = 5432usuario = postgres

    clave = postgresbase = curso_negocioencoding = LATIN1schema = public

    27Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    28/79

  • 8/10/2019 Curso Toba Inicial Sep 2014

    29/79

    Consultas y Comandos

    $sql = "SELECT id, nombre FROM tabla"$res = toba::db()->consultar($sql);

    $sql = "UPDATE tabla SET nombre = toba";

    toba::db()->abrir_transaccion();$cant = toba::db()->ejecutar($sql);...toba::db()->cerrar_transaccion();

    Ejecucin de comandos dentro de una transaccin:retorna la cantidad de registros afectados.

    29Ing. Fernando Martnez - SIU

    Consulta SQL: retorna un arreglo PHP asociativo.

  • 8/10/2019 Curso Toba Inicial Sep 2014

    30/79

    Completando setup del proyecto

    1. Crear el proyecto.2. Configuracin de parmetros de

    previsualizacin desde el editor.

    3. Crear la base de datos (negocio).4. Definir la fuente de datos.

    5. Copiar la clase con las consultas SQL.

    6. Crear un objeto Consulta PHP desde elEditor, vinculndola con el archivo copiadoen el punto 5.

    30Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    31/79

    Creacin de un ABM simple

    Una operacin se determina en basea componentes, definidos mediante el editor.

    Estos cubren distintos aspectos de

    implementacin de una operacin, y secategorizan segn su funcin:

    Control

    Interfaz Persistencia.

    31Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    32/79

    Componentes

    El comportamiento de un componente se basaen:

    su definicin(con el editor)

    su extensinen cdigo PHP. Se da a travs de laherencia, creando una subclase del componenteen cuestin y asocindola al mismo desde el

    editor. La extensin no siempre es obligatoria.

    32Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    33/79

    Extensin de componentes

    Se podran definir tres objetivos distintos a lahora de hacer una extensin de uncomponente: Atender eventos: El componente notifica sucesos y

    en la extensin se escuchan. Redefinir mtodos propios del componente (por

    ejemplo, la salida HTML).

    Extender el componente en Javascript: Cada

    componente en PHP tiene su par en Javascript, porlo que en la extensin tambin es posible variar elcomportamiento del componente en el lado cliente.

    33Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    34/79

    Controlador de Interfaz (CI)

    Es un componente de control, responsable demanejar:

    las pantallas

    elementos de interfaz contenidos, por ejemplo: Cuadros

    Filtros

    Formularios

    Formularios multilnea Etc

    34Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    35/79

    Pantallas

    La pantallaes la parte grfica de una etapa delCI.

    Se encarga de graficar:

    Un conjunto de dependencias (componentes delCI asociadas a la pantalla actual).

    Un conjunto de tabs, que vinculan con otraspantallas (dependiendo del tipo de navegacin).

    Un conjunto de eventos (en forma de botones).

    35Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    36/79

    Pantallas

    Tipos de navegacin: Definido por la subclase (CI)

    Tab horizontal

    Tab vertical

    Wizzard

    Desde el CI, podemos acceder a las pantallas ysus funciones:

    $this->set_pantalla('id_pantalla');

    $this->pantalla('id_pantalla')->...

    36Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    37/79

    Eventos

    En un ambiente web, la comunicacin entrecliente y servidor no es continua, sinodesconectada.

    El usuario trabaja en su browser modificandola informacin que se visualiza en la pginaactual, y cuando decide ir al servidor (ej.Guardar) todos los componentes de esa

    pantalla notifican los distintos sucesos queacontecieron durante su estada en el cliente.

    37Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    38/79

    Eventos

    Un eventorepresenta la interaccin del usuario(El usuario presiona Guardar) a travs de uncomponente de interfaz (botn).

    Sirve como medio de comunicacin del clientecon el servidor, llevando los parmetrosparticulares del suceso.

    38Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    39/79

    Eventos

    Un evento debe escucharse y atenderse en elservidor.

    El Controlador de Interfaz (CI) est preparado

    para escuchar eventos (propios o decomponentes contenidos) y configurarlos,definiendo as el comportamiento de las

    operaciones.

    39Ing. Fernando Martnez - SIU

    Li t

  • 8/10/2019 Curso Toba Inicial Sep 2014

    40/79

    Listeners Escuchar un evento consiste en definir un mtodo

    (listener) en el CI contenedor del componente. Este mtodo ser invocado junto con parmetros

    de contexto del evento.

    Cuando el evento pertenece al mismo CI, el listener

    se define de la siguiente manera: Prefijo evt__ (doble guin bajo)

    Nombre del evento.

    En caso de que este mtodo no est definido, elevento queda sin atrapar.

    function evt__guardar() { }

    40Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    41/79

    Cuadro

    Un ei_cuadroes un elemento de interfaz, queconsiste en una grilla de registros pensadospara visualizacin de informacin.

    Es comn que cada uno de estos registrostenga identidad propia, por lo que el cuadropermite seleccionarlos individualmente a

    travs de eventos a nivel fila.

    41Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    42/79

    Listener de eventos de componentes

    El nombre de un listener de un componentesedefine de la siguiente manera en el CIcontrolador del componente:

    Prefijo evt__ (doble guin bajo)

    ID del objeto origen con el sufijo __

    Nombre del evento.

    function evt__cuadro__seleccion($seleccion){

    }

    42Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    43/79

    Formulario

    Un ei_formularioes un elemento de interfazque presenta una grilla de campos editables.

    A estos campos se los denominan Elementos

    de Formulario(efs).

    43Ing. Fernando Martnez - SIU

    l d l ( f )

  • 8/10/2019 Curso Toba Inicial Sep 2014

    44/79

    Elementos de Formulario (efs)

    ef_checkbox

    ef_combo

    ef_radio

    ef_popup

    El usuario selecciona un elemento

    44Ing. Fernando Martnez - SIU

    l d l i ( f )

  • 8/10/2019 Curso Toba Inicial Sep 2014

    45/79

    Elementos de Formulario (efs)

    ef_multi_seleccion_lista

    ef_multi_seleccion_doble

    ef_multi_seleccion_check

    El usuario selecciona varios elementos

    45Ing. Fernando Martnez - SIU

    l d l i ( f )

  • 8/10/2019 Curso Toba Inicial Sep 2014

    46/79

    Elementos de Formulario (efs)

    ef_editable

    ef_editable_numero

    ef_editable_fecha

    ef_editable_textarea

    ef_cuit

    El usuario edita

    46Ing. Fernando Martnez - SIU

    ef_upload

    ef_fijo

    Otras acciones

    l

  • 8/10/2019 Curso Toba Inicial Sep 2014

    47/79

    Formulario

    Durante la configuracin se lo carga con unconjunto de datos.

    Cuando vuelve al servidor informa a travs desus eventos el nuevo conjunto de datos editadopor el usuario.

    47Ing. Fernando Martnez - SIU

    P i i

  • 8/10/2019 Curso Toba Inicial Sep 2014

    48/79

    Persistencia

    Los cambios efectuados durante una operacinse deben transaccionarcon una fuente dedatos.

    Existen dos formas principales en que puedetransaccionar una operacin:

    Inmediatamente producidos los eventos,prcticamente en cada pedido de pgina.

    Luego de una confirmacin explcita del usuario,por ejemplo, presionando un botn Guardar.

    48Ing. Fernando Martnez - SIU

    i i di

  • 8/10/2019 Curso Toba Inicial Sep 2014

    49/79

    Transaccin inmediata

    Es la forma ms fcil ydirecta de programar unaoperacin.

    En cada mtodo que

    escucha un evento seejecuta un comando SQL

    function evt__form__modificacion($datos)

    {$sql = "INSERT INTO ... ";toba::db()->ejecutar($sql);

    }

    49Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    50/79

    T i i l i

  • 8/10/2019 Curso Toba Inicial Sep 2014

    51/79

    Transaccin a nivel operacin

    Los componentes de persistenciabrindan tresservicios a la aplicacin:

    Cargar un conjunto de datos relacionados.

    Mantener en memoria los cambios realizados porel usuario a estos datos.

    Finalmente sincronizarlos con el medio depersistencia cuando sea solicitado.

    51Ing. Fernando Martnez - SIU

    D t T bl (DT)

  • 8/10/2019 Curso Toba Inicial Sep 2014

    52/79

    Datos Tabla (DT)

    Un datos_tablaes uncomponente depersistencia, que

    mantiene unaestructura tabular(RecordSet) y brindauna interfaz paratrabajar con ella.

    52Ing. Fernando Martnez - SIU

    D t T bl

  • 8/10/2019 Curso Toba Inicial Sep 2014

    53/79

    Datos Tabla

    1. Carga los datos desde un medio de persistencia.

    Carga sin condiciones:

    Carga con condiciones:

    // En el controlador del datos_tabla

    $this->dep(dt_personas)->cargar();

    $cond = array(persona => 10);

    $this->dep(dt_personas)->cargar($cond);

    53Ing. Fernando Martnez - SIU

    D t T bl

  • 8/10/2019 Curso Toba Inicial Sep 2014

    54/79

    Datos Tabla

    2. Una vez que tenemos los datos en memoria, existenprimitivas para trabajar sobre estos.

    Cuando una tabla en la transaccin puede tener a lo sumo unregistro se simplifica la interfaz:

    get_fila($clave)nueva_fila($registro)

    modificar_fila($clave, $registro)eliminar_fila($clave)

    set($datos)get()

    54Ing. Fernando Martnez - SIU

    D t T bl

  • 8/10/2019 Curso Toba Inicial Sep 2014

    55/79

    Datos Tabla

    3. Los datos y sus modificaciones son mantenidosautomticamente en sesin entre los distintospedidos de pgina. Las modificaciones se retienenhasta el final de la transaccin de negocios.

    4. Una vez terminada la edicin se efecta lasincronizacin con la base de datos, a travs deladministrador de persistencia, marcando el final de latransaccin de negocios.

    $this->dep(dt_personas)->sincronizar();

    55Ing. Fernando Martnez - SIU

    M j tifi i

  • 8/10/2019 Curso Toba Inicial Sep 2014

    56/79

    Mensajes y notificaciones1. toba::notificacion()->agregar('Mensaje

    de ERROR');2. toba::notificacion()->agregar('Otra formade mostrar un mensaje de ERROR', 'error');

    3. toba::notificacion()->agregar('Mensaje deADVERTENCIA', 'warning');

    4. toba::notificacion()->agregar('Mensaje deINFORMACIN', 'info');

    56Ing. Fernando Martnez - SIU

    Extensin JavaScript

  • 8/10/2019 Curso Toba Inicial Sep 2014

    57/79

    Extensin JavaScript

    Todos los elementos de interfaz tienenasociado un objeto en JavaScript, encargadodel comportamiento del componente en el

    cliente. La responsabilidad de estos objetos es manejar

    todo aspecto de la pantalla que no puede ser

    determinado estticamente.

    57Ing. Fernando Martnez - SIU

    Extensin JavaScript

  • 8/10/2019 Curso Toba Inicial Sep 2014

    58/79

    Extensin JavaScript

    Cundo realizar extensin JS?

    Validaciones en el lado cliente.

    Comportamiento dinmico de EFs. Por ejemplo si uncombo necesita deshabilitarse en base al tilde de un

    checkbox. Es un comportamiento dinmico depantalla en el cliente, ya que el servidor no puedeintroducir lgica de este tipo.

    Cundo NO realizar extensin JS?

    Cuando la lgica de pantalla es esttica al pedido

    actual. Por ejemplo, si en un ABM es necesariodeshabilitar un EF en la edicin.

    58Ing. Fernando Martnez - SIU

    Extensin JavaScript

  • 8/10/2019 Curso Toba Inicial Sep 2014

    59/79

    Extensin JavaScript

    Todo cdigo JavaScript necesita ser parte de lasalida PHP.

    Este concepto puede traer a confusin, ya queel cdigo JavaScript necesita ser definido en

    PHP pero lo mismo sucede con la salidaHTML!!!

    Para esto, primero se necesita tener una

    subclase en PHP del componente; all seencuentra una ventana de extensin JavaScript:el mtodo extender_objeto_js

    59Ing. Fernando Martnez - SIU

    Extensin JavaScript

  • 8/10/2019 Curso Toba Inicial Sep 2014

    60/79

    Extensin JavaScript

    extender_objeto_js():

    class ci_X extends toba_ci{function extender_objeto_js()

    {echo {$this->objeto_js}.evt__guardar = function() {

    return prompt(\"Desea Guardar?\");} ;

    }}

    60Ing. Fernando Martnez - SIU

    Creacin de un ABM complejo

  • 8/10/2019 Curso Toba Inicial Sep 2014

    61/79

    Creacin de un ABM complejo

    Propuesta: extender el ABM simple para permitirdar de alta personas y cargar una lista deallegados en una sola operacin.

    61Ing. Fernando Martnez - SIU

    Creacin de un ABM Complejo

  • 8/10/2019 Curso Toba Inicial Sep 2014

    62/79

    Creacin de un ABM Complejo

    62Ing. Fernando Martnez - SIU

    Controlador de Negocio (CN)

  • 8/10/2019 Curso Toba Inicial Sep 2014

    63/79

    Controlador de Negocio (CN)

    Los controladores de negocioson unaherramienta til para desacoplar la lgica denegocio de la presentacin.

    Permite unificar la carga y entrega de datos yservicios a una jerarqua completa decomponentes de interfaz (generalmente losCIs).

    // Ejemplo$this->cn()->get_datos();

    63Ing. Fernando Martnez - SIU

    Controlador de Negocio (CN)

  • 8/10/2019 Curso Toba Inicial Sep 2014

    64/79

    Controlador de Negocio (CN)

    Ventajas: Lograr una mxima independencia entre la lgica

    de pantalla y de negocio.

    Tener un lugar centralizado para brindar servicioscomunes a una jerarqua de componentes.

    Desventajas:

    Esta flexibilidad se consigue a expensas de una

    mayor burocracia y complejidad en el manejo dedatos.

    64Ing. Fernando Martnez - SIU

    Datos Relacin

  • 8/10/2019 Curso Toba Inicial Sep 2014

    65/79

    Ing. Fernando Martnez - SIU 65

    Datos Relacin

    mdp_personas_allegados

    dato_allegado

    persona

    tipo_allegado

    Un datos_relacionmantiene un conjuntorelacionado dedatos_tabla.

    Brinda servicios paracargar y sincronizar estemodelo de relacin conalgn medio depersistencia.

    mdp_personaspersona

    apellido

    nombres

    Datos Relacin

  • 8/10/2019 Curso Toba Inicial Sep 2014

    66/79

    Datos Relacin

    Carga La forma ms comn de cargar una relacin es a

    partir de una restriccin de las tablas races

    (aquellas que no tienen padres). Para esto se utiliza el mtodo cargar:

    $relacion->cargar(array('id' => 8));

    66Ing. Fernando Martnez - SIU

    Datos Relacin

  • 8/10/2019 Curso Toba Inicial Sep 2014

    67/79

    Datos Relacin

    Trabajo en memoria El trabajo posterior a la carga generalmente se

    realiza a travs de las tablas relacionadas.

    Para acceder a un componente tabla:

    La principal diferencia radica en que lasoperaciones sobre las tablas ya no son aisladas,sino que trabajan en el contexto de la relacin.

    $relacion->tabla('id_tabla')->

    67Ing. Fernando Martnez - SIU

    Datos Relacin

  • 8/10/2019 Curso Toba Inicial Sep 2014

    68/79

    Datos Relacin

    Sincronizacin La sincronizacin con el medio de persistencia:

    Sincroniza de manera transaccionaly ordenadalastablas de la relacin, comenzando por la cabecera ysiguiendo por las tablas hijas.

    Si se trata de un alta, el ID de la tabla padre es

    serial y mediante ese campo se vincula con lastablas hijas, el ID se obtiene al sincronizar la tablacabecera, y se utiliza ese valor para completar enlas dependientes.

    $relacion->sincronizar();

    68Ing. Fernando Martnez - SIU

    Formulario Multilnea

  • 8/10/2019 Curso Toba Inicial Sep 2014

    69/79

    Formulario Multilnea

    Un ei_formulario_mlpresenta una grillade campos repetidos una cantidad dadade filas.

    69Ing. Fernando Martnez - SIU

    Formulario Multilnea

  • 8/10/2019 Curso Toba Inicial Sep 2014

    70/79

    Formulario Multilnea

    Permiten recrear la carga de distintos registroscon la misma estructura.

    La definicin y uso de la grilla de campos es

    similar al formulario simple, con el agregadode lgica para manejar un nmero arbitrariode filas.

    Se pueden agregar nuevas filas, y eliminar omodificar las existentes.

    70Ing. Fernando Martnez - SIU

    Formulario Multilnea

  • 8/10/2019 Curso Toba Inicial Sep 2014

    71/79

    Formulario Multilnea

    Brinda un servicio que permite analizar loacontecido con las filas enviadas al cliente.

    Si por ejemplo se envan tres filas al cliente

    se modifican dos la otra se borra

    se agrega una nueva

    el mtodo de anlisis evita que el programadortenga que comparar el estado de las filasenviadas con el recibido.

    71Ing. Fernando Martnez - SIU

  • 8/10/2019 Curso Toba Inicial Sep 2014

    72/79

    Filtro

  • 8/10/2019 Curso Toba Inicial Sep 2014

    73/79

    Filtro

    Un ei_filtroes un componente de interfaz que

    presenta una grilla donde es posibleseleccionar criterios de bsqueda para lasdistintas columnas definidas.

    Segn el tipo de columna (nmero, fecha,opciones) se despliegan distintas condiciones

    de comparacin (es igual a, es mayor a).

    El usuario indica un valor a comparar usandoun elemento de formulario (ef).

    73Ing. Fernando Martnez - SIU

    Filtro

  • 8/10/2019 Curso Toba Inicial Sep 2014

    74/79

    Filtro

    Combinando:

    la condicin seleccionada

    el valor ingresado por el usuario

    una expresin SQL para el campo definida con el

    editores posible obtener del filtro una expresinSQL para integrar en la clusula WHERE de la

    consulta que obtiene los datos:// En el CI controlador del filtro$where = $this->dep('filtro')->get_sql_where();

    74Ing. Fernando Martnez - SIU

    Propiedades en sesin

  • 8/10/2019 Curso Toba Inicial Sep 2014

    75/79

    Propiedades en sesin

    A veces es necesario que el CI pueda recordar

    la informacin que va recolectando entrepedidos de pgina.

    Esto se logra gracias a las llamadas variables

    de sesin.

    La forma de indicar al framework que unapropiedad sea mantenida en sesin es

    prefijando su nombre con s__

    protected $s__seleccion;

    75Ing. Fernando Martnez - SIU

    Metadatos

  • 8/10/2019 Curso Toba Inicial Sep 2014

    76/79

    Metadatos

    Cuando utilizamos el editor web de Toba,

    estamos definiendo un proyecto en base ametadatos, almacenados en una base dedatos definida durante la instalacin.

    Mientras estos metadatos no sean exportadosal sistema de archivos, no podrn sercompartidos con un grupo de desarrollo, ni elproyecto podr ser pasado a produccin.

    Esta necesidad de importar - exportarmetadatos se cubre usando comandos deconsola.

    76Ing. Fernando Martnez - SIU

    Metadatos

  • 8/10/2019 Curso Toba Inicial Sep 2014

    77/79

    toba proyecto exportar

    Vuelca los metadatos del proyecto al sistema dearchivos, y por seguridad exporta tambininformacin local de la instancia (usuarios, logs,etc.) que no forman parte de ningn proyecto en

    particular. toba proyecto regenerar

    Realiza la accin inversa a exportar: carga en lainstancia (BD) los metadatos existentes en el

    sistema de archivos. Regenera nicamente los metadatos del proyecto,

    dejando intacta el resto de la instancia.

    Metadatos

    77Ing. Fernando Martnez - SIU

    Metadatos

  • 8/10/2019 Curso Toba Inicial Sep 2014

    78/79

    Metadatos

    78Ing. Fernando Martnez - SIU

    Material de consulta SIU-Toba

  • 8/10/2019 Curso Toba Inicial Sep 2014

    79/79

    Material de consulta SIU Toba

    Documentacin on-line http://toba.siu.edu.ar/trac/toba/wiki/Documentacion

    Foros de la Comunidad SIU

    http://comunidad.siu.edu.ar/foro

    http://toba.siu.edu.ar/trac/toba/wiki/Documentacionhttp://comunidad.siu.edu.ar/forohttp://comunidad.siu.edu.ar/forohttp://toba.siu.edu.ar/trac/toba/wiki/Documentacion