Professional Documents
Culture Documents
PowerBuilder .NET
ndice de contenidos
1. Introduccin
2. Entorno
3. Creando el proyecto
4. Creando la librera con el cliente
5. Dando forma a la ventana
6. Ejecutando la aplicacin
7. Conclusiones
8. Referencias
1. Introduccin
Qu es PowerBuilder?
Creado inicialmente por Sybase, y ahora producto de SAP, PowerBuilder es una herramienta
para el desarrollo de aplicaciones de alto rendimiento y basadas en modelos de datos, para
escritorio o la web. Puede parecer algo anticuado, sabiendo que disponemos de herramientas
basadas en soluciones Windows de Microsoft ms potentes, y que tambin puede quedar un
poco corta en cuanto al estilo de las interfaces de usuario, pero no deja de ser una herramienta
muy potente en cuanto a la optimizacin de recursos, facilidad y rapidez de desarrollo, e
interfaces de usuario sencillas e intuitivas. A ttulo personal, uno de los mayores logros de
cualquier herramienta de desarrollo, es hacerle la vida ms fcil al desarrollador. Y
PowerBuilder lo consigue, ofrecindote componentes visuales que hacen que ahorres tiempo
en disear tu aplicacin, te ofrece componentes integrados de .NET, libreras precompiladas,
etc.
Una de las suites que ofrece PowerBuilder es PowerBuilder .NET, que tiene un triple objetivo:
Powerscript
La base del xito de PowerBuilder es su lenguaje nativo orientado a objetos: Powerscript. Dicho
lenguaje (cuya documentacin tcnica tenis aqu) est optimizado (mediante su elemento
estrella: DataWindow) para poder realizar operaciones de conexin a base de datos, consultar
y recorrer dataSets de forma eficiente, etc. Permite tambin acceder a todas las libreras .NET,
por lo que puedes obtener todas las ventajas que ofrecen las mismas, haciendo casi lo mismo
que podras hacer con otro lenguaje, como C# o VB.NET. Con Powerscript tambin puedes
cargar cualquier librera DLL.
Por ejemplo, tenemos el siguiente cdigo en C#, que realiza un postprocesamiento de pintado
de filas de un grid de forma manual:
view plainprint?
1.
2.
3.
if (e.RowIndex == 2)
4.
5.
6.
myGrid.RowHeadersWidth : 0;
7.
8.
myGrid.RowHeadersWidth,
9.
e.RowBounds.Top,
10.
myGrid.Columns.GetColumnsWidth(DataGridViewElementSt
ates.Visible) - myGrid.HorizontalScrollingOffset + 1,
11.
e.RowBounds.Height);
12.
ControlPaint.DrawBorder(e.Graphics, rowBounds,
13.
Color.Red, ButtonBorderStyle.Solid);
14.
myGrid.Rows[e.RowIndex].DefaultCellStyle.BackColor =
15.
Color.BlanchedAlmond;
16.
17. }
En Powerscript:
view plainprint?
1.
This.SelectRow(row, true)
PowerBuilder trabaja con dos tipos de libreras: Libreras PBL (pseudocdigo) y libreras DLL
(cdigo mquina), lo que permite la creacin de aplicaciones modulares con la flexibilidad del
lenguaje descrito arriba. Es importante hacer notar que no son compatibles entre s, es decir,
que a la hora de generar un ejecutable, tendremos que dar a elegir a PowerBuilder si generar
las libreras en formato PBL o DLL.
2. Entorno
Para la realizacin de este tutorial, se ha usado el siguiente entorno:
SO: Mavericks
PowerBuilder 12.5.2
3. Creando el proyecto
No es objeto de este tutorial explicar todos los conceptos bsicos de PowerBuilder: Solution,
project, target, library, application, Window, DataWindow, etc. Si desconoces estos elementos,
te recomiendo que comiences por aqu antes de seguir con el tutorial.
Crearemos un elemento Window, que ser la ventana inicial que se abrir con la ejecucin de
nuestra aplicacin (la notacin w_* es para 'window'):
Establecemos el layout 'Grid' por defecto, el nombre del proyecto p_wpf_tuto_rest, y el nombre
del producto (que coincide con el nombre del ejecutable) wpf_tuto_rest, con la versin 0.0.1.0
del producto:
Como vemos, en este momento tenemos creado el target, la aplicacin y la ventana, que por
ahora no tiene ningn elemento.
De momento vamos a modularizar nuestra aplicacin generando el cliente REST en una librera
PBL aparte, que la crearemos seleccionando nuestro target, haciendo clic con el botn derecho
sobre l, y seleccionando 'New...' -> 'PB Library'. Le asignaremos el nombre 'l_rest_client':
A continuacin, vamos a crear nuestro cliente REST, haciendo clic con el botn derecho al
target, 'New...' -> 'Rest Client Proxy'. Esto abrir el wizard de creacin del cliente REST:
A continuacin, nos pedir la URL del mtodo del servicio. En nuestro caso haremos uso del
servicio web de direcciones de Google para obtener las direcciones a seguir para ir de Madrid a
Barcelona:
http://maps.googleapis.com/maps/api/directions/json?origin=Madrid,
%20ES&destination=Barcelona,%20ES&sensor=false
Obviamente, la funcionalidad de nuestra aplicacin va a ser bastante limitada, ya que har
siempre la misma consulta. Una mejora (que podrais aplicar como ejercicio) podra ser meter
argumentos variables a la llamada (que se representan con {}), por ejemplo:
http://maps.googleapis.com/maps/api/directions/json?origin={origen},
%20ES&destination={destino},%20ES&sensor=false
Las variables origen y destino se mapearn como argumentos al mtodo GetMessage(...) en la
generacin de nuestro proxy (tened esto en cuenta ahora aunque no lo entendis. Ms
adelante explicaremos el objeto proxy).
Lo siguiente que nos pedir ser el esquema de respuesta, para que PowerBuilder pueda
generar y mapear los elementos del JSON en objetos. En nuestro caso le indicaremos un
esquema por defecto que ser la respuesta de la consulta anterior:
Una vez que tengamos generado el cliente, necesitaremos generar el proxy. Para ello, haremos
clic sobre el target en el rbol de proyecto, y haremos clic sobre el icono de generar proxy:
Esto generar el objeto proxy en la librera destino:
Para poder ejecutar el proyecto, tendremos que modificar el evento open(string commandline)
de la aplicain. Para ello, haremos doble clic sobre la aplicacin wpf_tuto_rest. Se nos abrir
por defecto el evento open(string commandline) asociado a la aplicacin. Si aun as no
aparece, lo seleccionaremos de la lista de eventos. Escribiremos lo siguiente en la ventana de
script:
1.
//Variables locales
2.
google_rest_client_directions.root l_root
3.
google_rest_client_directions.rootItemItem legs[ ]
4.
google_rest_client_directions.rootItemItemItem steps[ ]
5.
integer i
6.
string rutas
7.
8.
DirectionsTutoService.DirectionsTutoProxy l_proxy
9.
10.
11. try
12.
l_root = l_proxy.GetMessage( )
13.
14.
legs = l_root.routes[1].legs
15.
steps = legs[1].steps
16.
17.
18.
19.
20.
21.
22.
for i = 1 to steps.Length
23.
24.
25.
26.
27.
28.
29.
else
rutas = "No se ha obtenido ninguna ruta"
end if
30.
31.
mle_rutas.Text = rutas
32.
33. catch (System.Exception e)
34.
6. Ejecutando la aplicacin
Es hora de ejecutar nuestra aplicacin y ver si los resultados son los correctos. Para ello
hacemos clic en 'Debug' -> 'Run wpf_tuto_rest'.
Obtenemos el siguiente resultado en la consulta REST:
Aplicar la regin al servicio, ya que ahora est mostrndolo en el idioma por defecto
(ingls)
Eliminar los tags HTML, ya que Google representa as sus rutas (entiendo que es para
mostrarlo adecuadamente en la web de Google Maps)
7. Conclusiones
PowerBuilder, aunque en principio nos puede dar la impresin de ser una herramienta
"antigua", no se ha quedado ni mucho menos atrs, ya que nos ofrece muchas
posibilidades a la hora de desarrollar aplicaciones propias o basadas en .NET, con
soluciones optimizadas de conseguir la conectividad, mapeo y representacin de datos
a partir de bases de datos. Ofrece tambin bastantes soluciones de mercado (como por
ejemplo la creacin de servicios REST, pero tambin cualquier solucin WCF o nativa),
y proporciona una herramienta basada en Visual Studio muy intuitiva para el
desarrollador, lo cual se agradece.
Adems, PowerBuilder posee interfaces para la mayora de bases de datos, adems
de soporte ODBC y OLE-DB. Tiene tambin bastantes herramientas, como Appeon
Mobile, que corre aplicaciones PowerBuilder en iOS y Android. En resumen, una buena
alternativa para el desarrollo de aplicaciones de negocio.
8. Referencias
o
WPF: http://msdn.microsoft.com/en-us/library/ms754130(v=vs.110).aspx
WCF: http://msdn.microsoft.com/en-us/library/ms731082(v=vs.110).aspx
Directions API
Google: https://developers.google.com/maps/documentation/directions/