Guía de Implantación de la Interfaz FoxWeb |
Instalación de FoxWeb para Windows NT
Configuración de FoxWeb para Windows NT
La documentación que se presenta en este capítulo es una guía didáctica acerca de FoxWeb versión 1.2, y se ha desarrollado con el propósito de indicarle a usuarios del mismo, los detalles que debe tener en cuenta una vez que haya decidido utilizarlo.
En el desarrollo de este trabajo se ha hecho uso de recursos específicos de software y hardware, bajo los cuales se ha obtenido un correcto funcionamiento de FoxWeb. Estos elementos serán detallados en el siguiente apartado, pero un punto importante que se debe tomar en cuenta es que se debe lograr una correcta instalación y configuración de los mismos.
Para la práctica desarrollada con FoxWeb se ha utilizado una PC con procesador Intel-586 Mhz, con 16 MB en memoria RAM, corriendo bajo la plataforma Windows NT 4.00, haciendo uso del servidor Web Microsoft Internet Information Server versión 2.0 (IIS 2.0), y utilizando también el browser Microsoft Internet Explorer versión 2.0.
Una vez que ha obtenido del sitio Web de FoxWeb, el archivo correspondiente para la instalación del mismo, debe realizar la ejecución del programa de instalación (Setup.exe) siguiendo los pasos que se listan a continuación:
Para iniciar el servidor FoxWeb, se debe utilizar uno de los siguientes métodos:
De una manera muy similar se ejecutará uno de los siguientes métodos para detener el servidor FoxWeb:
Para configurar FoxWeb debe correr directamente el archivo Fwconfig.exe o hacer doble clic sobre el icono del 'FoxWeb Control Center'. Cuando este proceso sea cargado aparecerán cuatro subpantallas en las cuales se deben especificar los siguientes datos:
1. Pantalla "Licence"
Aquí aparecerá la fecha en que expira el permiso de uso de FoxWeb (30 días desde la fecha de instalación). Si usted aún no ha comprado el paquete de FoxWeb, no debe indicar ningún dato en el campo 'Software Key', porque todavía no es un miembro registrado de dicho paquete.
2. Pantalla "Error Log"
En ésta se encontrarán todos los datos de los errores ocurridos en la ejecución de programas de usuario, logrando así obtener más detalles para solucionar los mismos.
3. Pantalla "Channel Control"
Se puede utilizar como alternativa para iniciar el proceso del servidor foxweb (FWSTART.EXE), haciendo clic sobre el botón 'Start FoxWeb', así como también detener dicho proceso presionando de igual manera, dentro de esta pantalla, el botón 'Stop FoxWeb'.
Así mismo, permite acceder al archivo FWSTART.LOG el cual reporta los errores y/o datos de las acciones realizadas con FoxWeb.
4. Pantalla "Configuration"
En ésta debe indicar los datos especiales de configuración que se adecuen a su instalación, los cuales son:
El programa servidor residente de FoxWeb, FWSERVER.EXE, fue originalmente compilado como un ejecutable de Visual FoxPro y puede correrse usando directamente dicho paquete o a través de las bibliotecas run-time del mismo. La opción de usar dichas bibliotecas debe especificarse en la pantalla de configuración del Centro de Control FoxWeb.
Los programas de usuario de FoxWeb pueden crearse a través de cualquier editor de texto y deben compilarse manualmente bajo Visual FoxPro, pero el servidor Web no necesita tener instalado este paquete en la misma computadora. Para ello pueden usarse únicamente las bibliotecas run-time de Visual FoxPro, las cuales se obtienen a través de dos formas:
Las bibliotecas tienen que ser acordes a la versión de Visual FoxPro bajo la cual se compilan los programas de usuario. Así:
Nota:
Para compilar manualmente los programas de usuario, se debe mantener abierto el archivo .prg en Visual FoxPro, y luego ir a Program/Compile, con lo cual se logra compilar el programa que se ha indicado. En la parte inferior de la pantalla, aparecerá la cantidad de errores de compilación, y lo ideal es obtener 0 errores.
Una vez instalado el FoxWeb debe procederse a iniciar y probar el servidor foxweb, que se realiza siguiendo los pasos que se indican a continuación:
http://Servidor/cgi-bin/foxweb.exe/Programa,
En donde:
Servidor es el nombre del servidor Web o la dirección IP del mismo.
cgi-bin es el nombre del directorio dentro del cual se colocan los escritos CGI.
foxweb.exe es el escrito CGI de FoxWeb.
Programa es el llamado al programa de usuario que se ejecutará.
El llamado al programa de usuario a ejecutarse se hace a través de una cadena especial, así: procedimiento@c:/dir_foxweb/programa?, en donde:
c:/dir_foxweb, indica la ruta completa en donde se encuentra el programa .prg que se ejecuta
programa?, indica el nombre del programa .prg que se ejecuta.
Así por ejemplo, el URL para ejecutar el programa "customer" que se incluye como ejemplo en los archivos de instalación de FoxWeb, es el siguiente:
http://Servidor/cgi-hl/foxweb.exe/cust_list@ c:/dir_foxweb/customer?
En donde el 'cust_list' es el procedimiento que despliega una lista de todos los clientes que se encuentran registrados dentro de la base de datos. Después del caracter '@' se indica la ruta completa donde se localiza el programa customer.prg.
El programa "customer.prg" realiza el llamado de instrucciones Visual FoxPro mediante procedimientos especialmente creados para llamar a funciones de FoxWeb, de FoxPro o de Visual FoxPro, y así conectarse a la base de datos, de tal manera que ésta reciba nuevos datos o que los que ya contenga puedan ser consultados, modificados o borrados.
Creación de tablas .dbf
El programa de usuario con extensión .prg es básicamente el que realiza la conexión con las bases de datos o tablas FoxPro/Visual FoxPro mediante el uso del lenguaje de programación propio para acceder así a los datos dentro de bases de datos de este tipo. La extensión .dbf es la propia de las bases de datos creadas mediante los lenguajes antes mencionados.
Para realizar dicha conexión, dentro del programa de usuario se verifica de manera opcional, a través de sentencias FoxPro, la existencia de las tablas .dbf a las cuales se desea acceder, y en caso de que éstas no existan, pueden enviarse también las sentencias que ordenen la creación de tablas que alojarán los datos.
Este código de FoxPro puede verse incrustado en los programas .prg, así:
CREATE TABLE Tabla FREE;
(Campo1 C(#caracteres), Campo2 N(#ent, #dec), Campo3 M)
ENDIF
Funciones de FoxWeb invocadas desde programas .prg
Todos los datos de entrada, los resultados y las funciones de FoxWeb pueden ser invocados desde los programas de usuario .prg, los cuales son creados dentro de cualquier editor y compilados bajo el ambiente de programación Visual FoxPro.
Antes de poder utilizar un programa de usuario, debe compilarse y como resultado de ello se esperará obtener 0 errores. Esta compilación se puede dar de dos formas:
Los programas .prg aceptan la mezcla del lenguaje propio de Visual FoxPro que se utiliza para colocar o extraer datos de las tablas, así como también el de FoxWeb, el cual como se explicó anteriormente, posibilita la interfaz necesaria de bases de datos FoxPro y Visual FoxPro con el Web.
Una mezcla de código FoxPro y FoxWeb se muestra en el ejemplo siguiente:
PRIVATE nombre, e_mail, error, Arreglo
error = ''
M.nombre = FormField('nombre')
M.e_mail = FormField('e_mail')
* Validación de datos
IF EMPTY(M.nombre)
* Selecciona los valores del Campo3 que cumplan con la condición Campo1=Variable
Variable = 'Ocho'
SELECT Campo3 FROM Tabla WHERE Campo1 LIKE 'Ocho'
INTO ARRAY Arreglo
* Despliegue de resultados en el browser Web con formato HTML
html_out = MergeTxt(M.Arreglo)
* Final del programa
RETURN
Procedimientos dentro de programas .prg
Los programas de usuario son creados con el propósito de cumplir o desarrollar una o varias acciones sobre los datos contenidos en tablas de FoxPro. Por ello cada programa se constituirá de varios procedimientos, uno para cada acción a realizar.
Como ya se ha mencionado, dentro de un procedimiento se utiliza, como en todo el código del programa de usuario .prg, una mezcla de sentencias de los lenguajes de programación FoxPro/Visual FoxPro, y de datos/funciones de FoxWeb.
Así por ejemplo, el código de un procedimiento puede ser:
* Este procedimiento realiza una búsqueda y luego crea una lista de todos los alumnos de una clase. Pertenece al programa ProgAlumnos.prg
PRIVATE Lista, Texto
* Crea la tabla Alumnos.dbf para alojar datos de alumnos, si ésta no existe
DO crea_tabla
SELECT num_alumno, nombre, clase ;
FROM Alumnos.dbf;
ORDER BY nombre;
* Realiza una búsqueda dentro de la tabla Alumnos.dbf, verificando si ya existen datos dentro de ella
IF RECCOUNT() > 0
M.Lista = '<SELECT NAME="Alumnos.dbf" SIZE="10"><OPTION SELECTED VALUE="'+num_alumno+'">'+TRIM(nombre)
SKIP
SCAN REST
M.Lista = M.Lista+'<OPTION VALUE="'+num_alumno+'">'+TRIM(nombre)
ENDSCAN
M.Lista = M.Lista+'</SELECT>'
* Busca el código html de la lista de alumnos dentro de la tabla HTML.dbf
SELECT Campo_texto FROM HTML WHERE identificador LIKE 'lista_alumnos' INTO ARRAY Texto
* Si no existen datos dentro de la tabla Alumnos.dbf
ELSE
* Busca el código html correspondiente a que no existen alumnos dentro de la tabla
* HTML.dbf
SELECT Campo_texto FROM HTML WHERE identificador LIKE 'no_alumnos' INTO
ARRAY Texto
ENDIF
* Asigna el contenido de la variable 'Texto' a html_out, para desplegarlo
html_out = MergeTxt(M.Texto)
* Finaliza procedimiento
RETURN
Funciones de FoxWeb invocadas desde código HTML
Así como los programas .prg aceptan la mezcla del lenguaje de FoxPro y FoxWeb, el código HTML acepta la mezcla con el código de FoxWeb, posibilitando un despliegue adecuado de los resultados en el browser (browser) Web.
Desde las páginas HTML también pueden invocarse los datos de entrada, los resultados y las funciones de FoxWeb, simplemente con hacer referencia a los nombres de las mismas. Pero, al combinar sentencias HTML, con los datos y funciones de FoxWeb, este código es llamado Código Merge.
Código Merge en archivos .htm o en tablas .dbf
Las páginas Web pueden ser creadas como archivos .htm independientes o pueden ser alojadas dentro campos Memo en tablas .dbf. Esto último se realiza con el propósito de tener un acceso más ordenado a las páginas Web al portarlas dentro de un mismo archivo y así poder localizarlas a través del nombre de campo en que estén localizadas y de un identificador.
Se puede colocar código merge en un archivo .htm y evaluarlo con la variable html_out, o asignar directamente las cadenas de código a dicha variable para desplegarlo. Así cuando se utiliza la evaluación de archivos .htm, se puede hacer de la siguiente manera:
O cuando se asigna directamente el código merge a la variable html_out para ser desplegado:
+'<HTML><HEAD><TITLE>Ejemplo1</TITLE></HEAD>'+chr(10);
+'<BODY><H1>Resultados de Ejemplo1</H1>'+chr(10);
+'<HREF="<<STRTRAN(CGI.ExecutablePath+'/'+CGI.ProgramPath+'ProgramaX?',' ','%20')>>">[ Ejecutar ProgramaX ]'+chr(10);
+'<HR>'+chr(10);
+'<ADDRESS>'CGI.ServerAdmin'</ADDRESS>'+chr(10);
+'</BODY></HTML>'
También se puede colocar código merge en campos memo de tablas .dbf, así un registro dentro de un campo puede contener:
<HEAD>
<TITLE>Ejemplo2</TITLE>
</HEAD>
<BODY><H1>Resultados de Ejemplo2</H1>
<PRE>
Nombre : <B>M.nombre</B>
País : <B>M.pais</B>
</PRE>
<HREF=<<STRTRAN(CGI.ExecutablePath+'/Procedimiento@'+CGI.ProgramPath+'ProgramaY?', ' ', '%20')>>">[ Ejecutar ProgramaY ]
<HR>
<ADDRESS>'CGI.ServerAdmin'</ADDRESS>
</BODY></HTML>'
Este código merge es en definitiva el que coloca todas las etiquetas HTML a el texto resultante de la conexión con las bases de datos.
Como ejemplo del código merge correspondiente al código del procedimiento presentado en un apartado anterior, para realizar la acción de desplegar una lista de alumnos en el browser Web, se tiene lo siguiente:
* Crea la lista de alumnos de una institución.
Content-type: text/html
<HTML>
<HEAD><TITLE>Ejemplo de FoxWeb: Lista de Alumnos</TITLE></HEAD>
<BODY>
<H1>Lista de Alumnos</H1>
<FORM ACTION="<<UrlEncode(CGI.ExecutablePath+'/consulta_datos_un_alumnos@'+
CGI.ProgramPath+'ProgAlumnos?')>>" METHOD="POST">
<<M.Lista>>
<P><INPUT TYPE="SUBMIT" VALUE="Seleccionar"></P>
</FORM>
<A HREF="<<UrlEncode(CGI.ExecutablePath+'/menu_principal@'+
CGI.ProgramPath+'ProgAlumnos?')>>">[Menú Principal]</A></B></P>
</BODY>
</HTML>
* Código merge del campo con identificador 'no_alumnos'
* Despliega un mensaje de la no existencia de alumnos dentro de la lista.
Content-type: text/html
<HTML>
<HEAD><TITLE>Ejemplo de FoxWeb: Aún no ha sido registrado ningún Alumno</TITLE></HEAD>
<BODY>
<H1>Aún no ha sido registrado ningún Alumno</H1>
<P><B><AHREF="<<UrlEncode(CGI.ExecutablePath +/menu_principal@'+
CGI.ProgramPath+'ProgAlumnos?')>>">[Menú Principal]</A></B></P>
</BODY>
</HTML>