tema del mes 201  
febrero 2010    
 
Portada
IBM i: Mejores interfaces para sus aplicaciones web

IBM i: Mejores interfaces para sus aplicaciones web 

La mayoría de artículos que he escrito sobre aplicaciones web se basaban en la idea de que mis lectores no utilizaban navegadores web HTML como interfaz de usuario. Sin embargo, este muro está siendo derribado ya que cada vez más departamentos informáticos están migrando a una interfaz de usuario basada en navegador y los que no lo han hecho todavía, les gustaría hacerlo. Lo que pretendo, para los que ya han pasado a interfaces basadas en navegador, es indicarles algunos servicios que pueden integrar o emular en sus propias aplicaciones. Empecemos.

Google Suggest
Cuando un usuario escribe datos en un campo de entrada del navegador, Google Suggest supone lo que va a escribir, en tiempo real, letra a letra. Por ejemplo, si escribe "Teoria de", verá una ventana que contiene:

• teoria de la relatividad
• teoria de la evolucion
• teoria del big bang
• teoria del caos
• teoria de darwin
• teoria de ...
• etc.

Naturalmente, esta característica está integrada en muchos navegadores, pero la función Google Suggest proporciona un nivel de independencia de la plataforma extraordinario: funciona en cualquier PC que utilice, en lugar de "recordar" lo que ha escrito en su propio PC. He ayudado a distintas empresas a usar una interfaz del estilo de Google Suggest en aplicaciones basadas en IBM i diseñadas para hospitales, departamentos de contabilidad, el sector del automóvil e incluso para casinos. Es una función genial que gusta a todos los usuarios.

¿Cómo se implementa algo así con RPG IV como lenguaje CGI preferido? Hay dos formas de hacerlo y ambas utilizan Ajax. Si no ha leído artículos sobre Ajax, ahora es un buen momento para hacerlo.

Utilizando Ajax, conforme el usuario va escribiendo caracteres en un campo de la aplicación basada en navegador, se recuperan los datos o "valores" del campo de entrada mediante JavaScript y un suceso onkeyup(); a continuación, se le pasa el valor de todo el campo a un programa CGI escrito en RPG, que busca los términos relacionados. Para ello, basta con recuperar el valor enviado por la petición de Ajax utilizando QtmhGetEnv o, tal vez, QzhbCgiParse y usar este valor para ejecutar una operación SETLL y READ en el archivo en cuestión. Después se compara el valor que se ha leído con el que se ha escrito utilizando algo parecido a esto:

      searchData = %TrimR(cgiGetVar(‘ITEMDESC’));  // Obtener valor de cgiparse
      setll (searchData) partsFile;
      if %EOF();
        suggestions += ‘<count>0</count>’;
      else;

read partsFile; dow (NOT %EOF()) and %subst( itemdesc : 1 : %len(searchData)) =searchData; suggestions += ‘<item>’ + %trimR(itemdesc) + ‘<item>’; count += 1; read partsFile; enddo; endif

Obviamente, para recuperar los datos de la petición de Ajax de la página web, tendrá que llamar a QzhbCgiParse o utilizar una de las bibliotecas de CGI de terceros, como RPG xTools o eRPG SDK. El siguiente paso consiste en ejecutar una operación SETLL en el archivo para situarlo en la descripción del elemento que coincide con lo que se ha escrito. Por supuesto, tendrá que crear un archivo lógico a partir de la descripción del elemento o utilizar SQL incrustado. Además, debe utilizar ALTSEQ(QSYSTRNTBL) en el archivo lógico o si no los campos de clave distinguirán entre mayúsculas y minúsculas.

Esta sencilla rutina cuenta el número de coincidencias y le devuelve al navegador web ese valor junto con las coincidencias en forma de nodos de XML. Pero recuerde que la "A" de Ajax significa Asíncrono, lo que significa que el usuario final no se queda a la espera mientras el programa escrito en RPG IV se está ejecutando... de modo que lo mejor será devolver la información lo antes posible o sus esfuerzos habrán sido en vano. Hay quien prefiere devolver el código JavaScript con los valores devueltos y dejar que éste lo convierta dinámicamente y lo ejecute en el navegador. A esta técnica se la conoce como JSON y hay quien piensa que se ejecuta algo más deprisa que analizar XML con JavaScript, pero yo no veo ninguna diferencia.

API Chart de Google
Muchos desarrolladores de RPG IV necesitan generar diagramas y gráficos para sus usuarios finales. Crear una interfaz basada en navegador sencilla sería estupendo, pero para ello suele hacer falta tener conocimientos de Java. Así que casi todo el mundo suele generar archivos de Excel y dejan que los usuarios finales generen sus propios gráficos. Pues yo digo: "¡Nunca más!"

Hoy en día es realmente fácil generar un diagrama o un gráfico directamente en el navegador web usando una interesante herramienta de Google. La API Chart de Google es una API en línea que puede incrustarse directamente en cualquier documento HTML. Por ejemplo, si quisiera incluir una comparación de las ventas de mi libro "The Modern RPG IV Language" con las de los demás libros sobre RPG que existen, generaría el siguiente URL:


http://chart.apis.google.com/chart?chtt=Ventas+de+libros+de+RPG+(todos+los+autores)
&chts=000000,18&chs=440x180&chf=bg,s,f0f0f0
&cht=p3&chd=t:75.00,6.25,18.75
&chl=Modern+RPG+IV|RPG+TnT|Los+otros&chco=0011ff,dddd00,cc33ff

Para que el gráfico aparezca como una imagen en su página web, basta con incluir el URL en un código IMG (imagen) de HTML, de esta forma:

<img src="aquí va el url chart.apis.google.com">

Esto hace que los resultados devueltos desde los servidores de Google se incrusten correctamente como una imagen. La siguiente Figura ilustra el resultado de este ejemplo.

Interesante, ¿verdad? Aquí encontrará más información de la API Chart de Google. La herramienta es capaz de mostrar cualquier tipo de gráfico que se le ocurra, pudiendo incluso hacer una representación gráfica por estados (útil si tiene negocios en los Estados Unidos). Se trata de una característica muy interesante que utilizaremos en la nueva página de registro de nuestra web.

Bob Cozzi es conocido en el circuito de conferencias y es autor de "RPG TnT: 101 Dynamic Tips ‘n Techniques with RPG IV". Además, es el autor de RPG World Live, un videopodcast en directo de dos horas de duración dirigido a desarrolladores y responsables de equipos System i, que se emite en directo los viernes a partir de las cuatro de la tarde (hora peninsular) en ustream.tv y en RPGWorld.com.


Total Lecturas: 1427  |  Recomendar su lectura:  


   
   

© Publicaciones HELP400, S.L. (Todos los derechos reservados)