06 enero 2016

Creación dinámica de formularios Web

Éste artículo es una traducción del proporcionado por Kris Geerts (desarrollador Omnis www.it8-projects.com) de los Países Bajos, la librería ejemplo mencionada (LOGIN.zip), puede ser descargada desde Aula Omnis.

Como ya sabemos el formulario web JavaScript que genera automáticamente Omnis para llamar a nuestros “remote form”, pueden integrarse fácilmente en cualquier sitio web ya existente. Pero me parecen  interesantes los apuntes que hace Kris en su artículo sobre la integración de Omnis Web con un sitio Web ya construido, por esa razón me he permitido la licencia de tomar sus notas y publicar éste artículo.

Lo que Kris propone, es un modelo para la integración en un sitio web ya existente, con nuestros “remote forms” jsClient de forma dinámica. El escenario propuesto también podría resultar útil cuando se desea tener diferentes librerías (diferentes versiones) que a su vez conectan con diferentes bases de datos atendidas desde un solo proceso Omnis/MySQL (escenario habitual para los desarrollos en la “nube”). Como resultado de esto, podríamos llegar a tener librerías casi idénticas, con incluso nombres iguales para sus “remote forms”, bajo tales circunstancias podría resultar muy difícil su mantenimiento. De hay la propuesta de creación dinámica de “remote forms”, aunque seguramente podrían encontrarse otras razones para justificar el enfoque propuesto por Kris.

En primer lugar deberemos asegurarnos de que nuestra solución Web funcione correctamente. Podemos realizar pruebas con la página HTML que Omnis genera automáticamente desde nuestro “remote form”, con la versión Omnis de desarrollo (127.0.0.1/jshtml/≤nombredelremoteform≥.htm). Sin embargo, cuando tengamos que portar la solución a un servidor web real, deberemos asegurarnos de contar con todos los archivos necesarios, páginas HTML en el directorio correcto y de que todo este funcionando correctamente. Para IIS (Windows), deberemos disponer de los siguientes directorios y archivos:

Inetpub (normalmente en c:\inetpub) 
  Cgi-bin
    omnisapi.dll
    nph-omniscgi.exe
    …… 
  Scripts
    nph-omniscgi.exe
    nph-owscgi.exe
  wwwroot 
    scripts
      omjqclnt.js
      pie.htc
      …
  Css
    Omn_menu.css
    …
    Smoothness
      Jquery -ui-…
    Images

Header-columns-bg.gif


Para portar la solución al servidor Web, tendremos que copiar el contenido de la carpeta de “HTML” desde el directorio raíz de instalación de la versión Omnis para desarrollo, al raíz del servidor web. También debemos comprobar que estemos utilizando las últimas versiones del omnisapi.dll (o nphomniscgi.exe) y de los scripts. Una vez que el servidor esté funcionando correctamente, estaremos dispuestos para el paso siguiente.

Ahora vamos a realizar pruebas con la librería de demostración (LOGIN.lbs) que seguramente ya ha descargado desde Aula Omnis, ábrala con el Omnis Runtime Server. Pegue la siguiente URL en un navegador, sustituyendo los valores indicados entre ≤≥ por la dirección IP y número de puerto correctos:

http://≤IPServidorWeb≥/cgi-bin/omnisapi.dll?OmnisClass=rtDir&OmnisLibrary=LOGIN&OmnisServer=≤IPServidorOmnis≥:≤PuertoOmnis≥&param1=CompanyName

Nota: En la demo proporcionada por Kris, se hace uso de un solo parámetro, pero, por supuesto, nada impide añadir otros parámetros (param2 = loquequiera, etc.). El modelo generado automáticamente puede hacer uso de hasta cuatro parámetros, pero pueden añadires más. Si se desea utilizar un formulario HTML aún más simple para acceder a la pantalla de inicio de sesión, consulte la entrada “statical-Submitexample” que encontrará en la “Remote Task” de nombre “rtDir” de la librería. Esto proporciona un inicio de sesión más cómodo para el usuario.

Cuando introduzca la URL anterior, la clase “Remote Task” “rtDir” generará automáticamente una página HTML con el Omnis JavaScript (observe el método “$CreateDynam” de la “Remote Task” “rtDir”). De éste modo tendremos la ventaja de poder abrir otra librería, incluso estando ubicada en otro servidor, o cualquier otro formulario Web donde incluir lo que necesitamos para que funcione. La librería demo proporcionada se llama de nuevo a la misma librería mediante el formulario “rlogin”, por lo que (si queremos hacer un uso práctico de la solución propuesta) tendríamos que cambiar éste comportamiento.

Como podrá observar en la librería ejemplo, se han codificado las rutas hacia las carpetas css y otros directorios, la ruta hacia la página HTML generada por la “Remote Task” es relativa al directorio “cgi-bin” y no al “wwwroot”. Esto significa que en lugar de “http://servidor/≤fichero≥.htm” la ruta URL siguiente será: “http://servidor/cgi-bin/≤fichero≥.htm”

Tenga en cuenta que se usan rutas pre-codificadas para las carpetas css y otras, usadas en la creación de la página HTML dinámica, con sus propios parámetros ya rellenados, listo para que el usuario haga simplemente clic en “login'”.

No hay comentarios: