Beruflich Dokumente
Kultur Dokumente
Nivel inicial
Qu es Toba?
Es un ambiente de desarrollo Web, creado por
el SIU con el objetivo de brindar una
herramienta de desarrollo rpido, que posee
una arquitectura basada en componentes
para construir aplicaciones web
transaccionales.
Licencia software libre.
Conceptos clave
1.
2.
3.
4.
INSTALACIN
INSTANCIA
PROYECTO
PUNTO DE ACCESO
1. Instalacin
Una instalacin es una carpeta que contiene
una versin de Toba.
Una instalacin puede correr una o
ms instancias de distintos proyectos.
2. Instancia
Una instancia es una abstraccin que contiene
los metadatos de un conjunto de proyectos.
Fsicamente es un esquema en la base de
datos de Toba (por defecto llamado
desarrollo).
3. Proyecto
Un proyecto en Toba se compone de archivos
de cdigo en PHP y definiciones en metadatos.
Estos metadatos se almacenan
temporalmente en la base de Toba, y se
pueden volcar al sistema de archivos (al
directorio metadatos del proyecto)
mediante comandos de consola.
4. Punto de acceso
Durante la ejecucin, el
usuario ingresa la URL del
proyecto en el navegador;
all se liga a una instalacin,
instancia y opciones
especficas de ejecucin.
Flujo de trabajo
1
2
3
4
5
Requisitos tcnicos
1. Servidor web: Apache (2.2.x).
2. Lenguaje de programacin: PHP (como
mdulo de Apache).
3. Servidor de base de datos: PostgreSQL.
4. Sistema de control de versiones: Subversion
5. Herramientas adicionales: Graphviz
http://toba.siu.edu.ar/trac/toba/wiki/Instalacion
Ing. Fernando Martnez - SIU
10
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
11
Instalacin
En una consola en la ubicacin
c:\path_a_toba\bin, ejecutar instalar.bat y
seguir las instrucciones.
Al finalizar la instalacin, no cerrar la
ventana sin leer antes las instrucciones
finales del instalador.
Una vez completado, reiniciar Apache.
Se recomienda mover el archivo
entorno_toba_xx.bat de la carpeta de
usuario a la de la instalacin de Toba.
Ing. Fernando Martnez - SIU
12
13
Archivos de configuracin
Carpeta instalacion: localizada en el
directorio raz de Toba, contiene todas las
configuraciones de la instalacin, incluyendo
la de las instancias contenidas.
Qu instancias tiene definidas, determinado por
carpetas i__nombre.
Qu bases de datos se 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.conf
Ing. Fernando Martnez - SIU
14
15
16
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, para
conectarse transparentemente con las bases.
Previsualizacin de la aplicacin, con utilidades
como edicin contextual, visualizacin de logs,
cronometrado de ejecucin o consumo de
memoria.
Ing. Fernando Martnez - SIU
17
Edicin de
usuarios
Previsualizacin
Ayuda
Logger
rbol de
operaciones
disponibles
Listado de
componentes
disponibles
Configuraciones
de acceso a datos
Cdigo PHP
Configuracin
general del
proyecto
18
Barra de desarrollo
19
Barra de desarrollo
20
rbol de operaciones
Si pensamos en la aplicacin como un catlogo de
operaciones, a cada una de estas operaciones se
la puede pensar como un tem de este catlogo.
Editar
Nueva carpeta
Nuevo componente hijo
Nuevo tem
Previsualizar operacin
21
Ejemplos
Creacin de carpetas.
Creacin de un tem PHP plano.
Previsualizacin.
Visualizacin en el men de la aplicacin.
Creacin de un tem Esquema de
componentes.
Tipos de pgina.
Reubicacin de un tem en el men.
Ing. Fernando Martnez - SIU
22
Base de negocio
Los proyectos desarrollados en Toba contarn,
casi con seguridad, al menos con una base de
negocio.
Al respecto, se puede:
Instalar la base de negocio en la misma base que
contiene la instancia Toba, en otro esquema de
PostgreSQL
O bien definir una nueva base de datos,
independiente de la Toba.
Ing. Fernando Martnez - SIU
23
Base de negocio
24
Fuentes de datos
Una fuente de datos encapsula un mecanismo
de entrada/salida de datos, tpicamente una
base relacional.
Un proyecto puede tener asociadas varias
fuentes de datos, cada una representando
una base distinta.
Para administrar estas fuentes existe una
seccin en el Editor dentro de la seccin
Datos.
Ing. Fernando Martnez - SIU
25
Fuentes de datos
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.
26
Fuente de datos
Definiendo la fuente de datos en el editor, se
genera una nueva entrada en el archivo
bases.ini:
[desarrollo
motor
=
profile
=
puerto
=
usuario
=
clave
=
base
=
encoding =
schema
=
curso curso]
postgres7
localhost
5432
postgres
postgres
curso_negocio
LATIN1
public
27
Fuente de Datos
La fuente de datos nos permite acceder al
objeto db, que cuenta con una API de
consultas y comandos.
28
Consultas y Comandos
Consulta SQL: retorna un arreglo PHP asociativo.
$sql = "SELECT id, nombre FROM tabla"
$res = toba::db()->consultar($sql);
29
30
31
Componentes
El comportamiento de un componente se basa
en:
su definicin (con el editor)
su extensin en cdigo PHP. Se da a travs de la
herencia, creando una subclase del componente
en cuestin y asocindola al mismo desde el
editor. La extensin no siempre es obligatoria.
32
Extensin de componentes
Se podran definir tres objetivos distintos a la
hora de hacer una extensin de un
componente:
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, por
lo que en la extensin tambin es posible variar el
comportamiento del componente en el lado cliente.
Ing. Fernando Martnez - SIU
33
Cuadros
Filtros
Formularios
Formularios multilnea
Etc
34
Pantallas
La pantalla es la parte grfica de una etapa del
CI.
Se encarga de graficar:
Un conjunto de dependencias (componentes del
CI asociadas a la pantalla actual).
Un conjunto de tabs, que vinculan con otras
pantallas (dependiendo del tipo de navegacin).
Un conjunto de eventos (en forma de botones).
35
Pantallas
Tipos de navegacin:
Definido por la subclase (CI)
$this->set_pantalla('id_pantalla');
Tab horizontal
Tab vertical
Wizzard
36
Eventos
En un ambiente web, la comunicacin entre
cliente y servidor no es continua, sino
desconectada.
El usuario trabaja en su browser modificando
la informacin que se visualiza en la pgina
actual, y cuando decide ir al servidor (ej.
Guardar) todos los componentes de esa
pantalla notifican los distintos sucesos que
acontecieron durante su estada en el cliente.
Ing. Fernando Martnez - SIU
37
Eventos
Un evento representa la interaccin del usuario
(El usuario presiona Guardar) a travs de un
componente de interfaz (botn).
Sirve como medio de comunicacin del cliente
con el servidor, llevando los parmetros
particulares del suceso.
38
Eventos
Un evento debe escucharse y atenderse en el
servidor.
El Controlador de Interfaz (CI) est preparado
para escuchar eventos (propios o de
componentes contenidos) y configurarlos,
definiendo as el comportamiento de las
operaciones.
39
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.
function evt__guardar() { }
40
Cuadro
Un ei_cuadro es un elemento de interfaz, que
consiste en una grilla de registros pensados
para visualizacin de informacin.
Es comn que cada uno de estos registros
tenga identidad propia, por lo que el cuadro
permite seleccionarlos individualmente a
travs de eventos a nivel fila.
41
}
Ing. Fernando Martnez - SIU
42
Formulario
Un ei_formulario es un elemento de interfaz
que presenta una grilla de campos editables.
A estos campos se los denominan Elementos
de Formulario (efs).
43
ef_popup
44
ef_multi_seleccion_check
45
El usuario edita
ef_editable
ef_editable_numero
ef_editable_fecha
ef_editable_textarea
ef_cuit
Otras acciones
ef_upload
ef_fijo
46
Formulario
Durante la configuracin se lo carga con un
conjunto de datos.
Cuando vuelve al servidor informa a travs de
sus eventos el nuevo conjunto de datos editado
por el usuario.
47
Persistencia
Los cambios efectuados durante una operacin
se deben transaccionar con una fuente de
datos.
Existen dos formas principales en que puede
transaccionar 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.
Ing. Fernando Martnez - SIU
48
Transaccin inmediata
Es la forma ms fcil y
directa de programar una
operacin.
En cada mtodo que
escucha un evento se
ejecuta un comando SQL
function evt__form__modificacion($datos)
{
$sql = "INSERT INTO ... ";
toba::db()->ejecutar($sql);
}
Ing. Fernando Martnez - SIU
49
50
51
52
Datos Tabla
1. Carga los datos desde un medio de persistencia.
53
Datos Tabla
2. Una vez que tenemos los datos en memoria, existen
primitivas para trabajar sobre estos.
get_fila($clave)
nueva_fila($registro)
modificar_fila($clave, $registro)
eliminar_fila($clave)
set($datos)
get()
54
Datos Tabla
3. Los datos y sus modificaciones son mantenidos
automticamente en sesin entre los distintos
pedidos de pgina. Las modificaciones se retienen
hasta el final de la transaccin de negocios.
4. Una vez terminada la edicin se efecta la
sincronizacin con la base de datos, a travs del
administrador de persistencia, marcando el final de la
transaccin de negocios.
$this->dep(dt_personas)->sincronizar();
55
Mensajes y notificaciones
1. toba::notificacion()->agregar('Mensaje
de ERROR');
2. toba::notificacion()->agregar('Otra forma
de mostrar un mensaje de ERROR', 'error');
3. toba::notificacion()->agregar('Mensaje de
ADVERTENCIA', 'warning');
4. toba::notificacion()->agregar('Mensaje de
INFORMACIN', 'info');
56
Extensin JavaScript
Todos los elementos de interfaz tienen
asociado un objeto en JavaScript, encargado
del comportamiento del componente en el
cliente.
La responsabilidad de estos objetos es manejar
todo aspecto de la pantalla que no puede ser
determinado estticamente.
57
Extensin JavaScript
Cundo realizar extensin JS?
Validaciones en el lado cliente.
Comportamiento dinmico de EFs. Por ejemplo si un
combo necesita deshabilitarse en base al tilde de un
checkbox. Es un comportamiento dinmico de
pantalla en el cliente, ya que el servidor no puede
introducir lgica de este tipo.
58
Extensin JavaScript
Todo cdigo JavaScript necesita ser parte de la
salida PHP.
Este concepto puede traer a confusin, ya que
el cdigo JavaScript necesita ser definido en
PHP pero lo mismo sucede con la salida
HTML!!!
Para esto, primero se necesita tener una
subclase en PHP del componente; all se
encuentra una ventana de extensin JavaScript:
el mtodo extender_objeto_js
Ing. Fernando Martnez - SIU
59
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?\");
}
;
}
}
60
61
62
63
Desventajas:
Esta flexibilidad se consigue a expensas de una
mayor burocracia y complejidad en el manejo de
datos.
Ing. Fernando Martnez - SIU
64
Datos Relacin
mdp_personas
persona
apellido
nombres
mdp_personas_allegados
dato_allegado
persona
tipo_allegado
Un datos_relacion
mantiene un conjunto
relacionado de
datos_tabla.
Brinda servicios para
cargar y sincronizar este
modelo de relacin con
algn medio de
persistencia.
65
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));
66
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:
$relacion->tabla('id_tabla')->
67
Datos Relacin
Sincronizacin
La sincronizacin con el medio de persistencia:
$relacion->sincronizar();
68
Formulario Multilnea
Un ei_formulario_ml presenta una grilla
de campos repetidos una cantidad dada
de filas.
69
Formulario Multilnea
Permiten recrear la carga de distintos registros
con la misma estructura.
La definicin y uso de la grilla de campos es
similar al formulario simple, con el agregado
de lgica para manejar un nmero arbitrario
de filas.
Se pueden agregar nuevas filas, y eliminar o
modificar las existentes.
Ing. Fernando Martnez - SIU
70
Formulario Multilnea
Brinda un servicio que permite analizar lo
acontecido 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
71
Construccin de un reporte
72
Filtro
Un ei_filtro es un componente de interfaz que
presenta una grilla donde es posible
seleccionar criterios de bsqueda para las
distintas 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 usando
un elemento de formulario (ef).
Ing. Fernando Martnez - SIU
73
Filtro
Combinando:
la condicin seleccionada
el valor ingresado por el usuario
una expresin SQL para el campo definida con el
editor
74
Propiedades en sesin
A veces es necesario que el CI pueda recordar
la informacin que va recolectando entre
pedidos de pgina.
Esto se logra gracias a las llamadas variables
de sesin.
La forma de indicar al framework que una
propiedad sea mantenida en sesin es
prefijando su nombre con s__
protected $s__seleccion;
Ing. Fernando Martnez - SIU
75
Metadatos
Cuando utilizamos el editor web de Toba,
estamos definiendo un proyecto en base a
metadatos, almacenados en una base de
datos definida durante la instalacin.
Mientras estos metadatos no sean exportados
al sistema de archivos, no podrn ser
compartidos con un grupo de desarrollo, ni el
proyecto podr ser pasado a produccin.
Esta necesidad de importar - exportar
metadatos se cubre usando comandos de
consola.
Ing. Fernando Martnez - SIU
76
Metadatos
toba proyecto exportar
Vuelca los metadatos del proyecto al sistema de
archivos, y por seguridad exporta tambin
informacin 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 la
instancia (BD) los metadatos existentes en el
sistema de archivos.
Regenera nicamente los metadatos del proyecto,
dejando intacta el resto de la instancia.
Ing. Fernando Martnez - SIU
77
Metadatos
78
79