You are on page 1of 124

UNIVERSIDAD NACIONAL DE TRUJILLO

Facultad de Ingeniera
EP Ingeniera de Sistemas

Aplicaciones Distribuidas CORBA: con


PowerBuilder y EAServer

Autor:
Ing. Camilo Ernesto Surez Rebaza
Docente UNT
Dpto. Acadmico Ingeniera de Sistemas
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Contenido
I. Creacin y Programacin de Base de Datos ............................................................. 3
1.1. Descripcin del Caso de Estudio ....................................................................... 3
1.2. Creacin de la Base de Datos ............................................................................ 4
1.3. Creacin del Servicio ....................................................................................... 14
1.4. Creacin de Tablas, Relaciones e ndices. ....................................................... 19
1.5. Creacin de Funciones y Procedimientos Almacenados. ................................ 31
1.6. Creacin de Triggers. ....................................................................................... 37
II. Framework GUI - Cliente .................................................................................... 45
2.1. Creacin 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. Gestin de Reportes. ........................................................................................ 63
III. Arquitectura Distribuida y EAServer .................................................................. 64
3.1. Desarrollo de Aplicaciones n-Tier con PowerBuilder ..................................... 64
3.2. Creacin de Servidores EAServer ................................................................... 64
3.3. Creacin de Packages ...................................................................................... 75
3.4. Creacin de Cach de Conexiones................................................................... 79
3.5. Perfiles de conexin a EAServer en PowerBuilder IDE .................................. 85
3.6. Definir Componente ........................................................................................ 88
IV. Ciclo de vida y Creacin de Componentes ........................................................ 101
4.1. Modelo del Ciclo de Vida de los Componentes EAServer. ........................... 101
4.2. Creacin de los Objetos No Visuales de la Aplicacin. ................................ 102
4.3. Configuracin de Componentes EAServer. ................................................... 108
4.4. Creacin de Objetos Proxy. ........................................................................... 110
4.5. FrameWork GUI con Componentes ............................................................. 117

Ms. Ing. Camilo E. Surez Rebaza 2


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

I. Creacin y Programacin de Base de Datos

1.1. Descripcin del Caso de Estudio


El caso de estudio del presente curso trata de una Empresa dedicada a la
comercializacin de computadoras compatibles y sus repuestos.

Cotizar Productos

Confirmar Cotizacin Emitir Guia de Remisin

Vendedor Reportar Pendientes

Registrar Compra
Almacenero

Registrar Proveedor

Registrar Producto Emitir Comprobante

Pedir Productos

Reportar Ingresos Cajero


Administrador Registrar Vendedores

Registrar Transportista

El Caso de Estudio tiene las siguientes restricciones:


Slo se venden cajas blancas, es decir no se vender computadoras de marca.
Los Servicios de Mantenimiento y reparaciones no estn contemplados.
La gestin de personal (capacitaciones y planilla) escapa al modelo
Los pagos son al contado.
La aplicacin slo emitir Boletas o facturas como comprobantes de pago.

Ms. Ing. Camilo E. Surez Rebaza 3


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

1.2. Creacin de la Base de Datos


Como Motor de Base de Datos utilizaremos SQL Anywhere Studio 9.0 Developer
Edition.
EL modelo Entidad Relacin es el siguiente:
Transportista
ID_Transportista smallint <pk>
Vendedor RUC varchar(12)
Razon varchar(80)
ID_Vendedor smallint <pk> Telefono varchar(15)
Apellidos varchar(40)
Nombres varchar(50) Cotizacion
Direccion varchar(100) ID_Cotizacion bigint <pk> Cliente
F_Ingreso date ID_Cliente bigint <fk1> GuiaSalida
ID_Cliente bigint <pk>
Estado smallint ID_Vendedor smallint <fk2>
Apellidos varchar(40) ID_GuiaSalida bigint <pk>
Fecha date
Nombres varchar(50) ID_Transportista smallint <fk1>
F_Vencimiento date
Direccion varchar(100) ID_Boleta bigint <fk2>
Proveedor
e_mail varchar(30) ID_Factura bigint <fk3>
RUC char(12) <pk> telefono varchar(15)
Razon varchar(100)
Direccion varchar(100)
Telefono varchar(15)
Cotizacion_Detalle
ID_Cotizacion bigint <pk,fk1> Boleta
ID_Producto bigint <pk,fk2> ID_Boleta bigint <pk>
Cantidad smallint Factura
ID_Cliente bigint <fk>
Compras
Precio money Fecha date ID_Factura bigint <pk>
ID_Compra bigint <pk> Total money ID_Cliente bigint <fk>
ID_Producto bigint <fk2> Estado smallint Fecha date
RUC char(12) <fk1> Total money
NroGuia varchar(20) Estado smallint
Cantidad smallint
PrecioUnit money
Boleta_Detalle
Producto ID_Boleta bigint <pk,fk1>
ID_Producto bigint <pk> ID_Producto bigint <pk,fk2>
Cantidad smallint Factura_Detalle
Categoria ID_Categoria smallint <fk>
Descripcion varchar(100) Precio money ID_Factura bigint <pk,fk1>
ID_Categoria smallint <pk> SubTotal money
StockActual integer ID_Producto bigint <pk,fk2>
Descripcion varchar(100)
StockMinimo integer Cantidad smallint
PrecioActual money Precio money
Comentarios varchar(500) SubTotal money

Antes de crear las tablas y dems objetos, debemos crear la Base de Datos, esta
tarea la realizamos con Sybase Central (consola de administracin):

Ms. Ing. Camilo E. Surez Rebaza 4


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

En la interface de Sybase Central hacemos <Doble Clic> sobre

Ms. Ing. Camilo E. Surez Rebaza 5


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

En el men <Tools> seleccionamos <Create Database>:

Ejecutamos dicha herramienta y obtenemos:

Ms. Ing. Camilo E. Surez Rebaza 6


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <siguiente>:

Clic en <siguiente> y escribimos la localizacin de la Base de Datos:

Ms. Ing. Camilo E. Surez Rebaza 7


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Clic en siguiente:

Ms. Ing. Camilo E. Surez Rebaza 8


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <siguiente>:

Clic en <siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 9


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en siguiente:

Clic en siguiente:

Ms. Ing. Camilo E. Surez Rebaza 10


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Escogemos UTF8 y clic en <siguiente>:

Escogemos UTF8 para datos tipo NChar y clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 11


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Establecemos que se ignoren los espacios en blanco en las comparaciones:

Establecemos la clave para el usuario DBA a SQL y clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 12


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Desmarcamos que se conecte a la base de datos y clic en <Siguiente>

Clic en <Finalizar> y Listo:

Ms. Ing. Camilo E. Surez Rebaza 13


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

1.3. Creacin del Servicio


Luego que hemos creado la Base de datos debemos levantarla como servicio para
que sta se encuentre disponible en cualquier momento con solo iniciar la
computadora o mquina virtual que funcione como servidor de datos.

Para crear el servicio iniciamos la Herramienta Sybase Central y seleccionamos


la ficha <Services>, hacemos clic con el botn secundario y nos aparecer un
men emergente tal como se muestra a continuacin:

Dar clic en <Service> y escribimos ServerData para el nombre del servicio:

Ms. Ing. Camilo E. Surez Rebaza 14


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Se escoge el Motor de base de datos en Red y clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 15


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Se especifica el ejecutable para Red y clic en <Siguiente>:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 16


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 17


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Clic en <Finalizar> finalmente iniciamos el servicio <botn derecho>:

Ms. Ing. Camilo E. Surez Rebaza 18


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

1.4. Creacin de Tablas, Relaciones e ndices.


Para crear las tablas primero debemos conectar a la Base de datos desde Sybase
Central, haciendo <clic derecho> en la opcin SQL Anywhere 12 que se
encuentra en el rbol derecho:

Clic en <Connect> y digitamos dba y Sql:

Ms. Ing. Camilo E. Surez Rebaza 19


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

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 parmetros siguientes:

Parmetro Valor Explicacin

Action Connect to a running Conectar a una base de datos cuyo


database on this servidor est en esta computadora
computer
Server ServerData Es el nombre del servidor de datos al
Name cual conectarse, que es especificado
por el parmetro n a la hora de
configurar su inicio, en este caso
cuando se configuro el servicio.
Database VentaPC Como un servidor de datos puede
Name administrar varias base de datos, aqu
especificamos a cul de ellas nos
vamos a conectar

Ms. Ing. Camilo E. Surez Rebaza 20


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Conectar> y obtenemos lo siguiente:

Clic en el flder Tables y luego <clic derecho> y aparece el siguiente men:

Ms. Ing. Camilo E. Surez Rebaza 21


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Table> y damos el nombre de la tabla Categoria:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 22


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 23


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Clic en <Finalizar>, presentndonos la interface para el ingreso de los campos.


Ingresamos el campo ID_Categoria y seleccionamos su tipo de datos, valor por
defecto, si es clave primaria o no, etc:

Ms. Ing. Camilo E. Surez Rebaza 24


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Luego agregamos el campo <Descripcin> y guardamos la tabla :

Lo mismo hacemos lo mismo para cada una de las dems tablas del modelo, por
ejemplo para la tabla Producto:

Cabe destacar que no creamos los campos <fk>, stos se aaden a la tabla cuando
se crean las relaciones de clave fornea con otras tablas de acuerdo a nuestro
modelo entidad-relacin. Cabe destacar que la base de datos puede ser generada
automticamente usando una herramienta CASE, sin embargo y con fines
didcticos seguiremos la forma manual.
Para relacionar esta tabla con la tabla Categoria, hacemos clic en la pestaa
Constraints, luego hacemos <clic derecho> y aparece el siguiente men:

Ms. Ing. Camilo E. Surez Rebaza 25


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Foreign Key>, Seleccionamos la tabla padre, y para el caso de esta


relacin seleccionamos la tabla Categora, obteniendo:

Ms. Ing. Camilo E. Surez Rebaza 26


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Especificamos el nombre Categoria_Producto_FK, luego clic en <Siguiente>:

Aqu nos indica que se va crear la columna ID_Categoria, Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 27


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Seleccionamos Cascade values y Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 28


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 29


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Nos presenta el siguiente resumen:

Clic en <Finalizar> y listo, el resultado final es el siguiente:

Lo mismo hacemos para todas las dems relaciones de la Base de Datos.

Ms. Ing. Camilo E. Surez Rebaza 30


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

1.5. Creacin de Funciones y Procedimientos Almacenados.


La idea es crear procedimientos almacenados para el ingreso de datos (nuevos
registros) y tambin para reportes complejos que demandan el procesamiento de
muchas tablas o tablas que contienen gran cantidad de registros.

Empezaremos creando procedimientos almacenados para el ingreso de nuevos


registros, tomando como ejemplo la creacin del procedimiento almacenado que
nos permitir agregar un nuevo registro en la tabla Categoria devolviendo la
Clave Primaria generada. Nos vamos a la carpeta Procedures & Functions y
<clic derecho>:

Clic en <Procedure> y escribimos el nombre sp_Categoria_Agregar:

Ms. Ing. Camilo E. Surez Rebaza 31


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 32


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Clic en <Finalizar> y escribimos el cdigo respectivo:

Guardamos y Listo. Los dems procedimientos almacenados se crean de


manera anloga, y el cdigo para cada uno de ellos es el siguiente:

Ms. Ing. Camilo E. Surez Rebaza 33


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Para agregar Boleta:

Para agregar Cliente:

Para agregar Cotizacin:

Ms. Ing. Camilo E. Surez Rebaza 34


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Para agregar Factura:

Para agregar Producto:

Para agregar Proveedor:

Ms. Ing. Camilo E. Surez Rebaza 35


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Para agregar Transportista:

Para agregar Vendedor:

Ms. Ing. Camilo E. Surez Rebaza 36


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

1.6. Creacin de Triggers.


Los triggers son lgica de negocio asociada a eventos especficos de una tabla en
la Base de Datos. Existen 3 tipos de Eventos que ocurren sobre una tabla, que en
Terminos Orientados a Objetos se les conoce como primitivas de las clase tipo
entidad, y son de: Insercin, Actualizacin (General y Especfica de algunos
campos) y Eliminacin; los mismos que se disparan al insertar, actualizar o
eliminar cualquier fila en una tabla.

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.

Seleccionamos la tabla Compras en el rbol de objetos y en el panel derecho


seleccionamos Pestaa Trigger, luego hacemos clic derecho y obtenemos:

Hacemos clic en <Trigger> y escribimos tI_Compras_ActualizarProducto:

Ms. Ing. Camilo E. Surez Rebaza 37


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente> y marcamos <Insert>:

Clic en <Siguiente>:

Clic en <Siguiente> y marcamos <After Event>

Ms. Ing. Camilo E. Surez Rebaza 38


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Clic en <Finalizar> y escribimos el siguiente cdigo:

Luego guardamos y listo, el Trigger ha sido creado, ahora aadiremos otro:

Ms. Ing. Camilo E. Surez Rebaza 39


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Hacemos clic en <Nuevo> y escribimos tU_Compras_ActualizarProducto:

Clic en <Siguiente> y marcamos <Actualizacin de columnas> (precio y


cantidad):

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 40


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente> y marcamos <despus del evento>:

Clic en <Siguiente>:

Clic en <Finalizar> y escribimos el siguiente cdigo:

Ms. Ing. Camilo E. Surez Rebaza 41


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Guardamos y el Trigger es creado, ahora aadiremos uno para la eliminacin:

Clic en <Trigger> y escribimos tD_Compras_ActualizarProducto:

Clic en <Siguiente> y marcamos <Eliminar>:

Ms. Ing. Camilo E. Surez Rebaza 42


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Clic en <Siguiente> y marcamos Despus del Evento:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 43


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Finalizar>, escribimos el Siguiente cdigo y por ltimo guardamos:

Ms. Ing. Camilo E. Surez Rebaza 44


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

II. Framework GUI - Cliente

2.1. Creacin del Workspace


Para crear el workspace de trabajo hacemos clic en Archivo del men principal
y seleccionamos New:

Ms. Ing. Camilo E. Surez Rebaza 45


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <OK>, seleccionamos una ruta y ponemos el nombre VentaPC:

Luego procedemos a agregar un target de aplicacin:

Ms. Ing. Camilo E. Surez Rebaza 46


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <OK> y ponemos app_venta_gui, previamente creamos una carpeta


GUI y dentro de ella guardamos la aplicacin:

Ms. Ing. Camilo E. Surez Rebaza 47


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Agregamos un archivo de librera, para almacenar los datawindows:

Clic en <OK> y le ponemos app_venta_dwingreso:

Ms. Ing. Camilo E. Surez Rebaza 48


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Finish>:

2.2. Fuentes de datos y DataWindow para ingreso de datos.


Para crear un objeto DataWindow primero debemos crear una fuente de datos
(DSN) y luego un perfil de conexin para esa fuente de datos.
Entonces abrimos el administrador de Fuentes de Datos (Administrador ODBC)

Ms. Ing. Camilo E. Surez Rebaza 49


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Luego seleccionamos la pestaa DSN de Sistema y obtenemos:

Hacemos clic en agregar, y seleccionamos SQL Anywhere 12:

Clic en <Finalizar> y completamos tal como sigue:

Ms. Ing. Camilo E. Surez Rebaza 50


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Ms. Ing. Camilo E. Surez Rebaza 51


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Hacer clic en <Aceptar> para terminar de crear el DSN.

Ahora en el Entorno PowerBuilder vamos a crear un perfil da datos que conecte


con la fuente de datos VentaPC. Abrimos los Perfiles de Base de Datos:

Hacer clic en <New>, establecemos el nombre del perfil =VentaPC, Data


Source = VentaPC, el usuario = dba y la Clave = sql, y obtenemos:

Ms. Ing. Camilo E. Surez Rebaza 52


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Hacemos clic en OK y finalmente, conectamos con la base de Datos.


Ahora procedemos a crear los DataWindows para el ingreso de datos:

Ms. Ing. Camilo E. Surez Rebaza 53


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <OK>:

Luego seleccionamos la tabla Cliente

Clic en <Abrir> y configuramos la consulta de la siguiente manera:

Ms. Ing. Camilo E. Surez Rebaza 54


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Luego configuramos la presentacin del Datawindow:

Y guardamos con el nombre d_cliente.

Ms. Ing. Camilo E. Surez Rebaza 55


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

En el men <Rows / Update Properties> configuramos de esta manera:

Ms. Ing. Camilo E. Surez Rebaza 56


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

2.3. Mantenimiento con Procedimientos Almacenados


El objetivo es enlazar los procedimientos almacenados ya creados con los
datawindows, para que cuando se inserte un nuevo registro en lugar de generarse
una consulta SQL de insercin se utilice el procedimiento almacenado creado para
tal fin.

Hacemos clic en el men <Rows / Stored Procedure Update> y tenemos:

Clic en <Procedure>, seleccionamos sp_Cliente_Insertar

Ms. Ing. Camilo E. Surez Rebaza 57


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Hacemos clic en <OK>:

Ahora a cada argumento del procedimiento almacenado lo relacionamos con un


campo del DataWindow:

Ms. Ing. Camilo E. Surez Rebaza 58


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Finalmente hacemos clic en <OK> y guardamos.


Lo mismo hacemos para las tablas: Categora, Producto, Proveedor, transportista
y vendedor.

2.4. Ventanas para Ingreso de Datos.


Primero creamos una clase w_padre que servir de base para todas las dems
ventanas de la aplicacin:

De w_Padre heredamos w_Class_Registrador: y le agregamos los


siguientes controles:

Ms. Ing. Camilo E. Surez Rebaza 59


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

A esta ventana le agregamos las siguientes funciones:

Y cuyo cdigo se muestra a continuacin:

wf_recuperar ()
// Nota: este cdigo 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

Ms. Ing. Camilo E. Surez Rebaza 60


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

wf_modo_edicion (boolean editar)


IF Editar THEN
dw_Ingreso.Modify("DataWindow.ReadOnly=NO")
ELSE
dw_Ingreso.Modify("DataWindow.ReadOnly=YES")
END IF

cb_Editar.Enabled = Not Editar


cb_Nuevo.Enabled = Not Editar
cb_Eliminar.Enabled = Editar
cb_Guardar.Enabled = Editar

cb_Primero.Enabled = Not Editar


cb_Anterior.Enabled = Not Editar
cb_Siguiente.Enabled = Not Editar
cb_Ultimo.Enabled = Not Editar

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 )

Ms. Ing. Camilo E. Surez Rebaza 61


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

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

2.5. Ventana MDI y Men principal.


El men principal tendr la siguiente estructura (por el momento faltan los
reportes)

El cdigo para el evento clicked de Registrar Vendedor es el siguiente:

Ms. Ing. Camilo E. Surez Rebaza 62


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

El cdigo para el evento clicked de Registrar Proveedor es el siguiente:

El cdigo para el evento clicked de Registrar Transportista es el siguiente:

Y as sucesivamente para cada una de las ventanas de la aplicacin.

2.6. Gestin de Reportes.


(Pendiente)

Ms. Ing. Camilo E. Surez Rebaza 63


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

III. Arquitectura Distribuida y EAServer

3.1. Desarrollo de Aplicaciones n-Tier con PowerBuilder


El proceso de Desarrollar aplicaciones distribuidas con PB y EAServer es el
siguiente:

Tareas en
EAServer

1. Crear Servidor (Opcional)


2. Crear Package
3. Crear Cach de Conexiones

Tareas en
Target Servidor

4. Definir Componente.
5. Especificar DB (Opcional).
6. Implementar mtodos.
7. Desplegar Componente.

Tareas en
Target Cliente

7. Conectar a EAServer.
8. Generar Proxy de Componentes.
9. Instanciar el Proxy
10. Enviar Mensajes.

3.2. Creacin de Servidores EAServer


Para crear un Servidor EAServer Primero debemos conectarnos al Jaguar
mediante la Consola de Administracin de EAServer EAServer Manager:

Ms. Ing. Camilo E. Surez Rebaza 64


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Con lo que se iniciar el servidor EAServer mostrando la siguiente pantalla:

Ms. Ing. Camilo E. Surez Rebaza 65


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Ahora debemos acceder al servidor, para lo cual en una ventana del explorador
digitaremos esta direccin: http://WINCAMILO:8000, mostrndonos la
siguiente pantalla, que indica que el servidor est operacional:

La ventana principal del EAServer nos muestra diferentes opciones como


documentacin local y en lnea, entre otros. Hacemos clic en Web
Administration Console e ingresamos las credenciales de acceso, en username
ponemos admin@system y en password: easerver6

Ms. Ing. Camilo E. Surez Rebaza 66


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Login> y aparecer el siguiente dilogo:

Expandimos la pestaa de Servidores y vemos el servidor por defecto y el


servidor creado al momento de la instalacin:

Ms. Ing. Camilo E. Surez Rebaza 67


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Seleccionamos la carpeta Servers, hacemos <clic derecho> y se muestra:

Con fines didcticos crearemos un nuevo Servidor, clic en <Add>:

Ms. Ing. Camilo E. Surez Rebaza 68


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente> y le damos nombre EAS_VentaPC:

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:

Ms. Ing. Camilo E. Surez Rebaza 69


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Add Listener>, especificamos tipo: http y puerto: 8050.

Clic en <Add Listener>, especificamos tipo: iiop y puerto: 2050

Ms. Ing. Camilo E. Surez Rebaza 70


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente> y dejamos las opciones por defecto:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 71


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Nos muestra los mdulos EAServer activos por defecto, Clic en <Siguiente>:

Indicamos si deseamos excluir algn mdulo, Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 72


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Nos muestra una ventana resumen:

Clic en <Finalizar> y nos muestra el servidor recin creado:

Ms. Ing. Camilo E. Surez Rebaza 73


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Para iniciar el servidor ejemplo, debemos crear un acceso directo en el escritorio


que contenga el siguiente comando:
"C:\Program Files\Sybase\EAServer6\bin\start-server.bat" EAS_VentaPC

Al darle doble clic inicia el servidor y atiende por los puertos configurados:

Ms. Ing. Camilo E. Surez Rebaza 74


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Y tiene su propia consola de administracin:

En lo que resta del curso trabajaremos con el Servidor WINCAMILO.

3.3. Creacin de Packages


Se denomina Package a un grupo de componentes relacionados, es una
coleccin de componentes que trabajan juntos para proveer algn aspecto de la
lgica de negocios de la aplicacin.
Un Package define un lmite de confianza dentro del cual los componentes pueden
comunicarse fcilmente.

Para crear el Package de nuestro caso de estudio seleccionamos el flder


CORBA Packages y hacemos <clic derecho> obteniendo:

Ms. Ing. Camilo E. Surez Rebaza 75


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Ms. Ing. Camilo E. Surez Rebaza 76


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Agregar> y nos aparece el asistente de creacin de Package:

Clic en <Next> y ponemos el nombre VentaPC al nuevo Package:

Ms. Ing. Camilo E. Surez Rebaza 77


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente> y obtenemos:

Clic en <Finalizar> para terminar con el asistente:

Ms. Ing. Camilo E. Surez Rebaza 78


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

3.4. Creacin de Cach de Conexiones


A travs del cach de conexiones los componentes comparten un conjunto de
conexiones preestablecidas a servidores de base de datos remotas.

Preestablecer conexiones y limitar el nmero de veces que una conexin fsica


necesita ser creada y destruida en un entorno impredecible de carga, son
actividades crticas para un desempeo eficiente.

Para crear un cach de conexiones expandimos la carpeta Resources y clic


derecho sobre la carpeta Data Sources:

En el men contextual, seleccionamos la opcin Add, abriendo el asistente para


la creacin de nuevas fuentes de datos:

Ms. Ing. Camilo E. Surez Rebaza 79


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en el botn <Siguiente>, establecemos el nombre de nuestro data source


VentaPC:

Ms. Ing. Camilo E. Surez Rebaza 80


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 81


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente> y establecemos el tamao mnimo y mximo del pool de


conexiones en 5 y 10 respectivamente:

Seleccionamos el servidor(es) donde el Pool de conexiones estar disponible:

Ms. Ing. Camilo E. Surez Rebaza 82


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente> y Muestra un resumen de lo que se har:

Clic en <Finalizar>:

Ms. Ing. Camilo E. Surez Rebaza 83


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Se edita como sigue a continuacin:

Clic en <Aplicar>, hacemos clic derecho sobre lo que hemos creado:

Ms. Ing. Camilo E. Surez Rebaza 84


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en el men Ping y nos devuelve un mensaje de conformidad:

Con lo cual hemos creado un pool de conexiones.

3.5. Perfiles de conexin a EAServer en PowerBuilder IDE


Antes de crear un perfil de conexin debemos verificar que el Servidor EAServer
se encuentre atendiendo; para lo cual verificamos la consola del servidor:

En caso de que el servidor no est iniciado tendremos que iniciarlo con el acceso
directo que se encuentra en el men inicio:

Ms. Ing. Camilo E. Surez Rebaza 85


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Luego de que el servicio est corriendo, en PowerBuilder hacemos clic sobre el

cono de EAServer Profiles y aparecer la siguiente ventana:

Clic en <Agregar>:

Ms. Ing. Camilo E. Surez Rebaza 86


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

y configuramos la conexin como sigue (Password = easerver6):

Clic en <Probar> y luego clic en <OK>:

Clic en <Hecho> y listo!

Ms. Ing. Camilo E. Surez Rebaza 87


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

3.6. Definir Componente


Los componentes de la aplicacin son administrados en un Target creado
especficamente para este propsito, entonces aadiremos a nuestro WorkSpace
un nuevo target llamado app_VentaPC_NVO.

Hacemos clic en <Nuevo> y seleccionamos EAServer Component:

Clic en <OK>:

Ms. Ing. Camilo E. Surez Rebaza 88


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Pregunta si se crea de cero o usando una librera existente, seleccionamos desde


cero y hacemos clic en <Siguiente>:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 89


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>, creamos la carpeta SERVER y dentro de ella creamos el


target y escribimos el nombre de app_ventapc_nvo:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 90


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Clic en <Siguiente> y escribimos n_class_controlador, este objeto no visual


ser el padre de todos los dems objetos no visuales, los que contendrn la lgica
de negocio de nuestra aplicacin:

Ms. Ing. Camilo E. Surez Rebaza 91


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Clic en <Siguiente> y seleccionamos el perfil EAServer anteriormente creado, en


el perfil se estableci el servidor de aplicaciones sobre el cual sern desplegados
nuestros componentes:

Ms. Ing. Camilo E. Surez Rebaza 92


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente> y elegimos el package creado anteriormente, los


componentes se despliegan dentro de packages, lo recomendable es crear un
package por aplicacin, en este caso anteriormente se cre VentaPC:

Clic en <Siguiente> y seleccionamos el tipo de componente a crear:

Ms. Ing. Camilo E. Surez Rebaza 93


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Clic en <Siguiente> y especificamos si el componente soportar Pool de


instancias, que permite que las instancias del componente se mantengan en
memoria y no se destruyan, disminuyendo as el tiempo de instanciacin:

Ms. Ing. Camilo E. Surez Rebaza 94


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente> y aparece el tipo de transacciones que soportar nuestro


componente, seleccionamos Supports Transaccition para que el componente
pueda hacer uso del manejo de transacciones dentro del servidor de aplicaciones,
tal como se muestra:

Clic en <Siguiente> y especificamos que haga una reconstruccin completa, para


que cuando el componente sea desplegado en el servidor vuelva a ser compilado:

Ms. Ing. Camilo E. Surez Rebaza 95


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente> y seleccionamos que el componente pueda ser editado:

Si queremos que nuestro componente funcione como un WEB Service, debemos


configurar la siguiente pantalla; por el momento no es necesario, clic en
<Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 96


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 97


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Finalizar> y nuestro Workspace queda de la siguiente manera:

Luego en el Target app_venta_nvo creamos una librera llamada


app_venta_nvo_dwingreso.pbl. Para esto hacemos <clic derecho> sobre el
Target y seleccionamos propiedades:

Ms. Ing. Camilo E. Surez Rebaza 98


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Nuevo> y escribimos app_venta_nvo_dwingreso:

Esta nueva librera contendr los objetos datawindows que finalmente se


presentarn al usuario, dichos datawindows ya no estarn en la aplicacin cliente,
sino en el servidor de aplicaciones.

Clic en <Guardar> y <OK> con lo que tenemos:

Clic en <Aceptar> y las libreras quedaran como se muestra:

Ms. Ing. Camilo E. Surez Rebaza 99


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Luego movemos los objetos DataWindow de app_venta_dwingreso.pbl a la


librera app_venta_nvo_dwingreso.pbl, y el proyecto quedara como sigue:

Ms. Ing. Camilo E. Surez Rebaza 100


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

IV. Ciclo de vida y Creacin de Componentes

4.1. Modelo del Ciclo de Vida de los Componentes EAServer.


La administracin del ciclo de vida de los componentes determina de que manera
las instancias de los componentes son:
Creadas
Enlazadas a un Cliente
Desligadas de un Cliente
Rehusadas y
Destruidas.
EAServer soporta las siguientes caractersticas en sus componentes:
Pool de Instancias
Soporte para componentes Stateful y Stateless.

El Ciclo de vida de los componentes EAServer es como sigue:

Instanciacin

En Espera
Activacin Reciclamiento

Enlazado a
Cliente

Ejecucin de
Mtodo
(Permanece) SI
Desactivacin Destruccin
Desactivacin Soporta
Automtica SI Pool de Inst. NO
NO
Destruido
NO Desactivacin
Desactivacin
por Primitiva SI

Ms. Ing. Camilo E. Surez Rebaza 101


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

4.2. Creacin de los Objetos No Visuales de la Aplicacin.


Antes de crear los objetos no visuales debemos crear un Perfil de Conexin a BD
especial, que haga referencia al Cach de conexin en el EAServer y no al DSN
de sistema. Abrimos el administrador de perfiles de conexin:

Clic en <Nuevo> y escribimos Venta_PC_EAS como nombre de perfil, luego


Seleccionamos la pestaa EAServer/COM+ y marcamos como sigue:

Ms. Ing. Camilo E. Surez Rebaza 102


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Los objetos no visuales (Los controles de los Diagramas de secuencia UML) se


crearn por herencia de n_class_controlador. A sta clase le aadiremos lo
siguiente:

Variables de instancia:

Ms. Ing. Camilo E. Surez Rebaza 103


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Cdigo a los Eventos Activate y Deactivate:

Tambin agregaremos funciones de propsito general:


of_recuperar()

Ms. Ing. Camilo E. Surez Rebaza 104


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

of_guardar()

Luego creamos n_cliente, mediante herencia de n_class_controlador:

Ms. Ing. Camilo E. Surez Rebaza 105


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Hacemos clic en <OK>

Establecemos la propiedad sDataWindow a d_cliente:

Hacemos clic en <Guardar> y ponemos nombre n_cliente:

Clic en <OK> y listo, se ha creado a n_cliente.


Empleamos el mismo procedimiento para crear los otros objetos: n_categoria,
n_compra, n_producto, n_proveedor, n_transportista, n_vendedor. Y para cada
componente establecemos adecuadamente la propiedad sDataWindow; por
ejemplo: para el componente n_Categoria el valor de sDataWindow ser
d_categoria; para n_Vendedor ser d_vendedor y as sucesivamente.

Ms. Ing. Camilo E. Surez Rebaza 106


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Al final tendremos los componentes creados tal como se muestra a continuacin:

Luego debemos aadir estos componentes al proyecto app_venta_nvo para que


sean desplegados en el EAServer y guardamos:

Ms. Ing. Camilo E. Surez Rebaza 107


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

4.3. Configuracin de Componentes EAServer.


Los componentes se configurar
desde la ficha de propiedades del
proyecto, tal como se muestra en las
figuras que siguen.
Desde Powerbuilder existen 3 tipos
de componentes:
Standard: Son el tipo de
componentes ms usados y soportan
manejo de transacciones, pool de
instancias y otros aspectos del ciclo
de vida de los componentes
Shared: Permiten mantener
informacin de estado. Los
componentes Shared permiten que
mltiples clientes compartan la
misma instancia de componente.
Service: Estos componentes realizan procesamiento de fondo para clientes
EAServer y otros componentes. EAServer carga el servicio a momento de iniciar
el servidor.

Hay dos propiedades ms que debemos


configurar:
Automatic Demarcation / Deactivation
Cuando est marcado el componente
automticamente se desactiva despus de
cada llamada. Si no est marcado el
componente debe ser desactivado
explcitamente.

Ms. Ing. Camilo E. Surez Rebaza 108


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Support Instance Pooling: Marcamos


esta propiedad para especificar que
cada instancia del componente
siempre es reutilizada despus que
cada cliente la utiliza.

Como paso final de la configuracin de los Componentes stos deben ser

desplegados sobre el EAServer para lo cual desplegamos el proyecto . Y como


resultado podemos apreciar lo siguiente en el Administrador EAServer:

Ms. Ing. Camilo E. Surez Rebaza 109


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

4.4. Creacin de Objetos Proxy.


Para que la aplicacin cliente pueda invocar a los componentes que se encuentran
en el EAServer primero tenemos que crear sus objetos Proxy respectivos.
Primero Aadimos la librera app_venta_proxy.pbl al Target app_venta_gui.

Aparece la lista de libreras del target, aqu aadiremos la nueva librera:

Ms. Ing. Camilo E. Surez Rebaza 110


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <New>

Clic en <Guardar>

Clic en <OK>

Ms. Ing. Camilo E. Surez Rebaza 111


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Quitamos la referencia a app_venta_dwingreso.pbl porque los objetos


datawindow estarn almacenados en el target app_venta_nvo:

Clic en <OK> y la estructura del proyecto quedara as:

Luego hacemos clic en nuevo e iniciamos el asistente para creacin de Proxy:

Ms. Ing. Camilo E. Surez Rebaza 112


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <OK>:

Clic en <Siguiente> y escribimos p_venta_proxy:

Ms. Ing. Camilo E. Surez Rebaza 113


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente> y seleccionamos el perfil de conexin EAServer:

Clic en <Siguiente>, desplegamos y marcamos VentaPC:

Ms. Ing. Camilo E. Surez Rebaza 114


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente> y seleccionamos la librera ventapc_proxy.pbl:

Clic en <Siguiente> y marcar como sigue:

Ms. Ing. Camilo E. Surez Rebaza 115


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Clic en <Finalizar>, desplegamos el proyecto y obtenemos:

Ms. Ing. Camilo E. Surez Rebaza 116


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

4.5. FrameWork GUI con Componentes


Debemos modificar el FrameWork GUI para utilizar componentes:
Primero debemos crear nuestro objeto Conexin:

Clic en <OK>:

Ms. Ing. Camilo E. Surez Rebaza 117


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>, y seleccionamos la librera donde se guardar el objeto:

Clic en <Siguiente>, y especificamos que requerir de conexin EAServer:

Ms. Ing. Camilo E. Surez Rebaza 118


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Clic en <Siguiente> y seleccionar el package VentaPC:

Ms. Ing. Camilo E. Surez Rebaza 119


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>, especificamos n_connect como nombre:

Clic en <Siguiente>:

Ms. Ing. Camilo E. Surez Rebaza 120


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Clic en <Siguiente>:

Clic en <Finalizar> y obtenemos un nuevo objeto conexin:

En la Aplicacin creamos una variable global:

Ms. Ing. Camilo E. Surez Rebaza 121


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Modificamos el evento open de la aplicacin:

Tambin modificamos el evento close de la aplicacin

A la clase w_padre le aadiremos dos variables de instancia:

A la clase w_class_registrador le modificamos las funciones wf_recuperar y


wf_guardar, para que trabajen con los objetos proxy provenientes del servidor, las
modificaciones son tal como se muestran a continuacin:

Ms. Ing. Camilo E. Surez Rebaza 122


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Ms. Ing. Camilo E. Surez Rebaza 123


Manual del Estudiante.
Universidad Nacional de Trujillo Desarrollo de Aplicaciones Distribuidas
Depto. Acadmico de Ingeniera de Sistemas con PowerBuilder 12.5 y EAServer 6.0.2

Ms. Ing. Camilo E. Surez Rebaza 124


Manual del Estudiante.