Documente Academic
Documente Profesional
Documente Cultură
Guía de Tareas
PowerBuilder
Distributed
Developer v10.0
PBDD10
cursos@techeras.com
www.techeras.com
______________________________________________________________________________________________
Lab- 1 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
Guía de Tareas
PowerBuilder Distributed
Developer v10.0
2005 TechEra e-Learning
______________________________________________________________________________________________
Lab- 2 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
______________________________________________________________________________________________
Lab- 3 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
Procesos de Desarrollo
Procedimientos En general, Ud. Sigue estos pasos de alto nivel cuando construye objetos
de negocio para ser almacenados en EAServer.
______________________________________________________________________________________________
Lab- 4 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
Invocación de Métodos
______________________________________________________________________________________________
Lab- 5 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
Iniciando el EAServer
1. Iniciar el servidor EAServer (Start | Programs | Sybase | EAServer
| Jaguar Server).
______________________________________________________________________________________________
Lab- 6 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
______________________________________________________________________________________________
Lab- 7 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
______________________________________________________________________________________________
Lab- 8 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
______________________________________________________________________________________________
Lab- 9 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
______________________________________________________________________________________________
Lab- 10 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
Ud. puede también hacer uso del archivo PowerBuilder resource (PBR) para
incluir recursos necesarios como bitmaps, read-only text o archivos INI, y
objetos DataWindows en el PBD.
______________________________________________________________________________________________
Lab- 11 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
Conectándose al EAServer
Procedimientos 1. Iniciar el servidor EAServer sino se encuentra iniciado.
2. Definir un nuevo objeto connection usando el Connection Object wizard en
el tab PB Object. El wizard lo dirige a través de estas ventanas de diálogo:
a. Specify Destination Library – Identifica la librería donde van a ser
creado los nuevos objetos
b. Specify Connectivity (SQL database o EAServer) Ud. necesitará
especificar la conexión al EAServer.
c. Specify Server Information
d. Specify Package Name – Identifica el package para ser usado por defecto
<package>/<component>.
3. Crear el objeto connection como cualquier otro objeto. Ud. necesita declarar
una variable para el objeto connection con el alcance apropiado.
n_jaguar_connect gn_connect
gn_connect = CREATE n_jaguar_connect
______________________________________________________________________________________________
Lab- 12 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
______________________________________________________________________________________________
Lab- 13 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
Generando un Proxy
1. Iniciar el EAServer si no está iniciado.
Procedimientos 2. Si un objeto project para generar un proxy para un componente
EAServer no existe, entonces crear un proxy project. Use el
EAServer Proxy Wizard en el tab Project para definir un project
que puede crear un proxy. El wizard lo dirige a través de estas
ventanas de diálogo:
a. Specify Destination Library
b. Specify Project
c. Select Server Profile
d. Select Components
e. Specify New Proxy Library Name
f. Specify Build Options
g. Ready to Create EAServer Proxy
<PACKAGE>_<COMPONENT>
Ud. puede usar este nombre cuando declara cualquier variable para su
clase proxy. La llamada a la función CreateInstance( ) no cambiará.
______________________________________________________________________________________________
Lab- 14 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
______________________________________________________________________________________________
Lab- 15 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
Inicializando un Proxy
Procedimiento 1. Declare una variable de referencia para su objeto proxy. Use el tab
Proxy del browser para identificar el nombre exacto de la clase
proxy. Ud. puede también ver la información en el System Tree.
// Asuma que ha creado un proxy n_loan para el
// componente remoto n_loan
// Si Ud. tiene antepuesto el nombre del package, este
// proxy será de la clase finance_n_loan
// Declare una variable de referencia para el proxy
n_loan in_loan
Declarando una El nombre de la clase de su referencia del proxy debe coincidir con el
variable de nombre de la clase proxy.
referencia al proxy
Para los ejemplos que siguen, asuma que el nombre del objeto
PowerBuilder es n_loan y esto pertenece al package finance. También
asuma que Ud. quiere declarar un variable de referencia llamada in_loan
para el proxy. Como debe ser declarado la variable?
______________________________________________________________________________________________
Lab- 16 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
object.method( )
______________________________________________________________________________________________
Lab- 17 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
______________________________________________________________________________________________
Lab- 18 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
______________________________________________________________________________________________
Lab- 19 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
Database DLL
Client Library 11.x Libjct.dll
ODBC Odbc32.dll
JDBC 1.1 The Java class name for the driver
OCI 6.x Ociw32.dll
OCI 8.x Oci.dll
OCI 9.x Oci.dll
______________________________________________________________________________________________
Lab- 20 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
Si Ud. no está usando el cache name cuando se conecta, Ud. debe especificar las
propiedades de conexión. Aquí esta un ejemplo:
// Profile EAS Demo DB
itr_trans.DBMS = "ODBC"
______________________________________________________________________________________________
Lab- 21 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
itr_trans.DBParm =
"ConnectString='DSN=EAS Demo DB;” &
“UID=dba;PWD=sql',UseContextObject='Yes'"
/* nota: Ud. usa una caracter de continuación (&) */
Ud. debe limitar la cantidad de tiempo que el componente tiene una conexión
para tenerlo disponible para otro requerimiento.
Ud. puede conectarse y descontarse con cada método que requiere acceso a la
base de datos.
______________________________________________________________________________________________
Lab- 22 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
Procedimiento Asuma que Ud.desea mostrar datos en un DataWindow nombrado dw_1 que ds
recuperado de un componente remoto.
______________________________________________________________________________________________
Lab- 23 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
______________________________________________________________________________________________
Lab- 24 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
Procedimiento Asuma que Ud. Desea recuperar los clientes desde un componente, modificar los
datos en el cliente, y entonces actualizar lo datos desde un componente. Asuma
que el método es llamado save( ).
1. Declare una variable local blob para almacenar los cambios de usuario.
2. Llamar a la función AcceptText del DataWindow para validar el contenido
del control editado.
3. Empaquetar los cambios de usuario en el blob con GetChanges( ).
4. Llamar al método save( ) del componente, pasando el blob cambiado.
5. Si la actualización es satisfactorio, llamar a la función ResetUpdate( ) para
reestablecer los flags actualizados. Si la actualización falla, procesar el error
y no llamar al ResetUpdate( ).
______________________________________________________________________________________________
Lab- 25 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
______________________________________________________________________________________________
Lab- 26 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
______________________________________________________________________________________________
Lab- 27 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
______________________________________________________________________________________________
Lab- 29 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
Procedimiento Para usar la funcionalidad del EAServer en un componente, Ud. Puede declarar
varias variables de instancias. Lo más comúnmente usado es el manejo de
Transacciones, error logging, y la conexión. Definir una variable de instancia
protected para cada uno de estos objetos. He aquí un ejemplo:
Protected:
TransactionServer its_jag
ErrorLogging iel_jag
Transaction itr_trans
Activate El evento Activate es llamado cada vez que una instancia de un componente es
ligado al cliente. Este evento es usado para inicializar variables y obtener los
recursos necesarios. Aquí esta algunos ejemplos de código en el evento Activate:
// Crear un objeto ErrorLogging
this.GetContextService ( "ErrorLogging", iel_jag )
// Identificar que este evento dispara el log
iel_jag.log ( "ACTIVATE de " + this.classname() )
// Obtener un TransactionServer para manejar transacciones
IF this.GetContextService ( "TransactionServer", &
its_jag ) <> 1 THEN
// error de log
return -1
END IF
// Obtener una conexión desde un connection cache
IF NOT IsValid ( itr_trans ) THEN
itr_trans = CREATE transaction
END IF
itr_trans.dbms = "ODBC"
itr_trans.DBParm = &
"UseContextObject='Yes',CacheName='<<cachename>>'"
CONNECT USING itr_trans;
IF itr_trans.sqlcode <> 0 THEN
// error de log
return -1
END IF
El evento CanBePooled es llamado justo antes del evento Deactivate cuando una
CanBePooled
instancia es desligada del cliente. CanBePooled es llamado solo cuando la opción
Pooling es desactivada. Si el evento retorna un 1, entonces la instancia es
reusada.
// Identificar que este evento dispara en el log
iel_jag.log ( "CANBEPOOLED de "+ this.classname() )
______________________________________________________________________________________________
Lab- 30 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
Deactivate El evento Deactivate es llamado cada vez que una instancia es desligada de un
cliente. Este evento es bueno para liberar cualquier recurso usado por la
instancia, como un connection cache.
// Identificar que este evento dispara el log
iel_jag.log ( "DEACTIVATE de " + this.classname() )
// Liberar la conexión
DISCONNECT USING itr_trans;
Para cada componente, Ud. Necesita adicionar los eventos Activate, Deactivate,
y CanBePooled para tomar completa ventaja de la funcionalidad de EAServer.:
Manualmente adicionar cada uno para cada custom class user object
(CCUO). Seleccionar la opción Insert | Event en el painter del User
Object.
Si el CCUOs tiene un ancestro común, Ud. puede manualmente insertar
los eventos listados en la tabla anterior al ancestro. Los eventos son
entonces disponibles para los descendientes.
Si el CCUOs no tiene un ancestro común, o si Ud. desea adicionar una
nueva capa específicamente al código relacionado al EAServer, Ud.
puede crear el componente ancestro usando el wizard EAServer
Component. Ud. puede entonces hacer este componente ancestro para un
CCUO existente.
Procedimiento
______________________________________________________________________________________________
Lab- 31 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
Para realizar la migración se tiene que seguir los siguientes pasos para
lograr una migración adecuada, ejemplos como el de cambiar Commits y
Rollbacks por funciones SetComplete( ) y SetAbort( ).
______________________________________________________________________________________________
Lab- 32 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
Procedimiento Asuma que Ud. tiene los siguientes componentes definidos en un package
llamado orderentry:
Componente Método
n_cart PlaceOrder( )
n_order Add( int ai_cust )
En algún punto en la lógica del método PlaceOrder( ) de n_cart, Ud. llamará al
método Add( ) de n_order.
1. Cree un objeto TransactionServer usando el método GetContextService( ).
Típicamente el evento Activate es un buen lugar para hacer esto. Use una
variable de instancia para que Ud. Lo pueda usar en cualquier evento.
TransactionServer its_jag
IF this.GetContextService ( "TransactionServer", &
its_jag ) <> 1 THEN
// proceso de error
END IF
2. Declare una variable de referencia para la clase que Ud. Desea crear.
n_order ln_order
3. Obtener una referencia para otro componente usando el método
CreateInstance( ) del objeto TransactionServer. El primer parámetro debe ser
una variable de referencia de la clase que Ud. desea crear. El segundo
parámetro debe ser una cadena con este formato:
<PACKAGE>/<COMPONENT>
IF its_jag.CreateInstance ( ln_order, &
"orderentry/n_order" ) <> 0 THEN
// proceso de error
END IF
4. Invocar el método usando la notación estándar object.method.
ln_order.Add (li_cust_id)
______________________________________________________________________________________________
Lab- 34 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
______________________________________________________________________________________________
Lab- 35 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
o
Poner el tipo de transaction en el EAServer Manager. Ir a la hoja de
propiedades para el componente. Click al tab Transaction.
Use uno de los cuatro State primitives para votar por satisfactorio o falla de la
transacción. también, use un State primitive para indicar si el componente debe
ser desactivado o no. Use la tabla de abajo para seleccionar los State primitive
apropiados.
Desactiva No Desactiva
Vote for success SetComplete( ) EnableCommit( )
Vote for failure SetAbort( ) DisableCommit( )
Votando para Estos métodos pertenecen al objeto TransactionServer. Para crear un objeto
satisfactorio o TransactionServer:
falla
1.Declare una variable de tipo TransactionServer:
TransactionServer its_jag
its_jag)
Definiendo un Componente Service
Procedimiento Asuma que Ud. necesita un método llamado Stock que captura los precios de
stock y lo hace disponible para una variedad de aplicaciones cliente. Los precios
de stock son recuperados cada 10 minutos desde un servicio externo.
Ud. desea crear un componente service que llamará a un método que obtendrá los
stock cada 10 minutos y luego ir a esperar.
Ud. puede usar una variable boolean para controlar el loop. Inicializar la
variable en TRUE. Aquí está un ejemplo:
boolean ib_continue = TRUE
service/ServiceProduct
______________________________________________________________________________________________
Lab- 38 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
Procedimiento Notas: el evento Error del objeto connection es disparado siempre que hay un
error de comunicación, el servidor EAServer envia un exception, o un
componente del servidor envia un exception. Procese el error en este evento y
proceselo apropiadamente.
// evento Error del objeto connection
int li_choice
______________________________________________________________________________________________
Lab- 39 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
______________________________________________________________________________________________
Lab- 40 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
______________________________________________________________________________________________
Lab- 41 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines
PowerBuilder Distributed Developer v10.0
______________________________________________________________________________________________
Lab- 42 PowerBuilder Distributed Developer v10.0 2005 TechEra e-Learning
Este producto solo puede ser usado para uso personal y no para otros fines