Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Autor:
Ing. Camilo Ernesto Suárez Rebaza
Docente UNS
Dpto. Acad. Ing. Civil y Sistemas
Universidad Nacional del Santa Desarrollo de Aplicaciones Distribuidas
Departamento Académico de Civil y Sistemas con PowerBuilder 12.5 y EAServer 6.0.2
Contenido
I. Creación y Programación de Base de Datos ............................................................. 3
1.1. Descripción del Caso de Estudio ....................................................................... 3
1.2. Creación de la Base de Datos ............................................................................ 4
1.3. Creación del Servicio ....................................................................................... 14
1.4. Creación de Tablas, Relaciones e índices. ....................................................... 19
1.5. Creación de Funciones y Procedimientos Almacenados. ................................ 31
1.6. Creación de Triggers. ....................................................................................... 37
II. Framework GUI - Cliente .................................................................................... 45
2.1. Creación del Workspace .................................................................................. 45
2.2. Fuentes de datos y DataWindow para ingreso de datos. .................................. 49
2.3. Mantenimiento con Procedimientos Almacenados .......................................... 57
2.4. Ventanas para Ingreso de Datos. ...................................................................... 59
2.5. Ventana MDI y Menú principal. ...................................................................... 62
2.6. Gestión de Reportes. ........................................................................................ 63
III. Arquitectura Distribuida y EAServer .................................................................. 64
3.1. Desarrollo de Aplicaciones n-Tier con PowerBuilder ..................................... 64
3.2. Creación de Servidores EAServer ................................................................... 64
3.3. Creación de Packages ...................................................................................... 75
3.4. Creación de Caché de Conexiones................................................................... 79
3.5. Perfiles de conexión a EAServer en PowerBuilder IDE .................................. 85
3.6. Definir Componente ........................................................................................ 88
IV. Ciclo de vida y Creación de Componentes ........................................................ 101
4.1. Modelo del Ciclo de Vida de los Componentes EAServer. ........................... 101
4.2. Creación de los Objetos No Visuales de la Aplicación. ................................ 102
4.3. Configuración de Componentes EAServer. ................................................... 108
4.4. Creación de Objetos Proxy. ........................................................................... 110
4.5. FrameWork GUI con Componentes ............................................................. 117
Cotizar Productos
Registrar Compra
Almacenero
Registrar Proveedor
Pedir Productos
Registrar Transportista
Antes de crear las tablas y demás objetos, debemos crear la Base de Datos, esta
tarea la realizamos con Sybase Central (consola de administración):
Clic en <siguiente>:
Clic en <Siguiente>:
Clic en siguiente:
Clic en <siguiente>:
Clic en <siguiente>:
Clic en siguiente:
Clic en siguiente:
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Siguiente>:
Luego como vamos a conectarnos a una base de datos que está siendo
administrada por el servidor de datos en red (que está corriendo como un
servicio), debemos especificar los parámetros siguientes:
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Siguiente>:
Lo mismo hacemos lo mismo para cada una de las demás tablas del modelo, por
ejemplo para la tabla “Producto”:
Cabe destacar que no creamos los campos <fk>, éstos se añaden a la tabla cuando
se crean las relaciones de clave foránea con otras tablas de acuerdo a nuestro
modelo entidad-relación. Cabe destacar que la base de datos puede ser generada
automáticamente usando una herramienta CASE, sin embargo y con fines
didácticos seguiremos la forma manual.
Para relacionar esta tabla con la tabla “Categoria”, hacemos clic en la pestaña
“Constraints”, luego hacemos <clic derecho> y aparece el siguiente menú:
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Siguiente>:
Para nuestro caso de estudio vamos a agregar 3 trigger a la tabla “Compras” cuya
finalidad es mantener actualizado el precio de venta actual y el stock de los
productos.
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Finish>:
Clic en <OK>:
wf_recuperar ()
// Nota: este código debe ser modificado al pasar a 3 capas
dw_Ingreso.Retrieve()
wf_Modo_Edicion(False)
long wf_nuevo ()
Long Pos
Pos = dw_Ingreso.InsertRow(0)
IF Pos > 0 THEN dw_Ingreso.ScrollToRow(Pos)
wf_Modo_Edicion(True)
Return Pos
wf_editar ()
wf_Modo_Edicion(True)
wf_eliminar ()
Long Pos
Pos = dw_Ingreso.GetRow()
IF Pos > 0 THEN dw_Ingreso.DeleteRow(Pos)
wf_guardar ()
//por modificar en 3 capas
dw_Ingreso.AcceptText()
IF dw_Ingreso.Update() > 0 THEN
commit;
ELSE
MessageBox("Error: ", "No se Pudo actualizar" + Sqlca.SqlErrText )
rollback;
END IF
wf_Modo_Edicion(False)
wf_anterior ()
dw_Ingreso.ScrollPriorRow( )
wf_primero ()
IF dw_Ingreso.RowCount()>=1 THEN dw_Ingreso.ScrollToRow(1)
wf_siguiente ()
dw_Ingreso.ScrollNextRow()
wf_ultimo ()
IF dw_Ingreso.RowCount()>=1 THEN
dw_Ingreso.ScrollToRow(dw_Ingreso.RowCount())
Luego de “w_class_registrador” heredamos a: w_categoria, w_cliente,
w_compra, w_producto, w_proveedor, w_transportista y w_vendedor
Tareas en
EAServer
Tareas en
Target Servidor
4. Definir Componente.
5. Especificar DB (Opcional).
6. Implementar métodos.
7. Desplegar Componente.
Tareas en
Target Cliente
7. Conectar a EAServer.
8. Generar Proxy de Componentes.
9. Instanciar el Proxy
10. Enviar Mensajes.
Ahora debemos acceder al servidor, para lo cual en una ventana del explorador
digitaremos esta dirección: “http://WINCAMILO:8000”, mostrándonos la
siguiente pantalla, que indica que el servidor está operacional:
Clic en siguiente donde debemos escoger el puerto por el cual atenderá el servidor
de aplicaciones de ejemplo, cada servidor de aplicaciones debe atender por un
puerto diferente:
Clic en <Siguiente>:
Nos muestra los módulos EAServer activos por defecto, Clic en <Siguiente>:
Al darle doble clic inicia el servidor y atiende por los puertos configurados:
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Finalizar>:
En caso de que el servidor no esté iniciado tendremos que iniciarlo con el acceso
directo que se encuentra en el menú inicio:
Clic en <Agregar…>:
Clic en <OK>:
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Siguiente>:
Instanciación
En Espera
Activación Reciclamiento
Enlazado a
Cliente
Ejecución de
Método
(Permanece) SI
Desactivación Destrucción
Desactivación Soporta
Automática SI Pool de Inst. NO
NO
Destruido
NO Desactivación
Desactivación
por Primitiva SI
Variables de instancia:
of_guardar()
Clic en <New…>
Clic en <Guardar>
Clic en <OK>
Clic en <OK>:
Clic en <Siguiente>:
Clic en <OK>:
Clic en <Siguiente>:
Clic en <Siguiente>:
Clic en <Siguiente>: