DISEÑO DE APLICACIONES
Seguridad
El modelo de seguridad es diferente para los usuarios de Notes y de Web. El acceso de gerente y de diseñador a las bases de datos no está disponible para usuarios de Web, mientras que sí lo está para usuarios del cliente Notes. Por consiguiente, no incluya agentes o acciones de LotusScript que requieran un acceso de gerente o de diseñador para completar una tarea.
La autentificación de usuarios requiere una planificación adicional para las aplicaciones que estén disponibles a través de navegadores de Web. La mayoría de aplicaciones para Web proporcionan cierto nivel de acceso a los usuarios anónimos. Para obtener niveles de acceso mayores, deberá hacer coincidir a los usuarios de Web con los nombres del Directorio de Domino. Dado que los usuarios de Web suelen iniciar la sesión en una aplicación usando un nombre abreviado, considere la posibilidad de usar el comando @UserName; este comando dará como resultado el nombre jerárquico completo de Notes, con lo que se podrá llevar a cabo una autentificación adecuada.
Formularios
En muchas ocasiones, el mismo formulario funcionará tanto en una aplicación del cliente Notes como en una aplicación de Web. Las diferencias de funcionalidad de escasa importancia se pueden compensar usando fórmulas de ocultación para los elementos de diseño de un formulario. En ocasiones puede ser interesante mostrar un subformulario en un cliente Notes y otro en un navegador de Web. En este ejemplo, la fórmula invoca a uno de los dos subformularios calculados denominados NS e IE e incluye código específico de navegador usando la variable CGI para el tipo de navegador en @BrowserInfo:
@If(@BrowserInfo("BrowserType")="Netscape";"NS";"IE")
Cada subformulario tiene su propio encabezado de JavaScript(TM), de modo que se puede incluir de manera selectiva JavaScript(TM) así como otros tipos de datos en los formularios usando subformularios calculados.
Todos los subformularios se abren simultáneamente con el formulario principal. No es posible mostrar un subformulario calculado después de que se abra la página.
Los formularios son bastante flexibles en un entorno de clientes mixto. Mediante una programación diseñada para permitir el uso de varios clientes, es posible programar un evento de formulario para que ejecute un grupo de comandos cuando accede a él un cliente Notes y otro grupo de comandos cuando es el cliente Web quien accede al formulario. En algunos casos, es más fácil diseñar dos formularios completamente independientes, uno para un cliente Notes y otro para un cliente Web. En este caso, se asignará el mismo alias a ambos formularios, se ocultará uno de ellos al cliente Notes y el otro al cliente Web, de modo que el formulario apropiado aparezca en su contexto correspondiente.
Campos
Tenga en cuenta que no todos los tipos de campos que pueden usarse en una aplicación de Notes son compatibles con una aplicación de Web. Por ejemplo, en Internet no pueden usarse campos de palabras clave con valores múltiples que permiten a los usuarios introducir opciones que no aparecen en una lista. La solución alternativa sería usar dos campos en una aplicación de Web, un campo para aceptar nuevas opciones en la lista y otro campo para construir y visualizar la lista. Si los usuarios pueden acceder a la aplicación desde el cliente Notes y desde Internet, deberá sincronizar los valores del campo para que todos los usuarios vean los mismos valores.
Si puede resolver un problema con dos versiones de una fórmula de campo, una que funcione en Notes y otra que funcione en Internet, incluya ambas en el formulario y en la ficha Ocultar el párrafo, seleccione Ocultar el párrafo desde Notes V4.6 o posterior u Ocultar el párrafo desde navegadores de Web en el cuadro de propiedades del campo para mostrar una u otra.
Si está usando el mismo formulario tanto para clientes Notes como para navegadores, el atributo Ocultar el párrafo desde Notes V4.6 o posterior u Ocultar el párrafo desde navegadores de Web de las propiedades del elemento de diseño puede ser muy útil. No obstante, tenga en cuenta que "oculto" tiene un significado diferente para cada cliente. En Notes, los campos ocultos todavía están presentes en el documento y pueden usarse en cálculos con scripts. Por el contrario, los campos ocultos para los navegadores de Web son excluidos del documento por IBM® Lotus® Domino(TM) antes de que la página sea servida al navegador. JavaScript(TM) no podrá usar el contenido de los campos.
Consejo: Si desea que los campos no se vean en el navegador, pero desea mantener su contenido disponible para JavaScript(TM), no use la opción Ocultar el párrafo desde Notes V4.6 o posterior u Ocultar el párrafo desde navegadores de Web ni especifique "type=hidden" en los objetos de atributos del texto HTML de los campos. Asegúrese de que:
<input type="hidden" name="nombrecampo" value="contenidocampo">
Tenga en cuenta que los nombres y valores tratados de esta manera no son seguros. Cualquier usuario podría aún verlos utilizando la función Ver > Código fuente del navegador.
Recuerde también que no todos los campos pueden pasarse a un navegador de esta manera: el campo de contraseña, por ejemplo, "$Updatedby", "$HtmlHead" y cualquier objeto que contenga caracteres nulos (incluidas las claves públicas de usuarios), no pueden pasarse, puesto que los valores nulos no se pueden expresar en HTML.
Acciones
Las acciones desempeñan una función muy significativa en las aplicaciones para Web puesto que los usuarios de navegadores de Web no tienen acceso a los comandos de los menús de Notes. Es necesario, por tanto, proporcionar acciones para tareas tales como la de crear un documento, cambiar al modo de edición, cambiar vistas o remitir documentos. Por ello, en muchos casos es preciso diseñar una barra de acciones específica para una aplicación de Web que esté oculta para los usuarios del cliente Notes.
Consejo Para activar en Internet los botones de una base de datos, seleccione Acceso Web: Usar JavaScript al generar páginas en el cuadro de propiedades de la base de datos. Si no se selecciona esta propiedad, Domino reconocerá solamente el primer botón de un documento y lo tratará, de forma predeterminada, como un botón Presentar que cierra y guarda el documento.
Vistas
La presentación de vistas de Notes en una aplicación de Web conllevará una pérdida de atributos de visualización a menos que primero incruste la vista en una página. Es posible incrustar varias vistas en una página para conseguir un formato sofisticado. También se puede especificar una plantilla de vista que aplicará propiedades de estilo uniformes para incrustar vistas con objeto de usarlas en aplicaciones de Web.
Si desea más información, consulte Visualización de vistas en aplicaciones de Web.
Navegación
El uso de un esquema de navegación puede proporcionar a los usuarios del cliente Notes y de navegadores de Web una estructura uniforme. Un esquema permite a los usuarios abrir vistas, páginas o direcciones URL. Incruste el esquema en una página con objeto de conservar todas las propiedades de visualización para los usuarios del navegador de Web.
También puede considerar la posibilidad de emplear un mapa de imágenes como herramienta de navegación.
Si desea más información, consulte Esquemas, guías y mapas de imágenes.
Agentes
La programación con agentes proporciona la máxima potencia de procesamiento para una aplicación. En el uso de agentes es donde encontrará las diferencias más significativas al desarrollar aplicaciones para clientes Notes y navegadores de Web. Aunque debería poder compartir gran parte del código, en algunas ocasiones necesitará escribir determinados agentes para Internet y determinados agentes para el cliente Notes. Los eventos de servidor programables clave en las aplicaciones de Web son WebQueryOpen y WebQuerySave. Para evitar problemas de ejecución, use estos eventos para realizar tareas clave y use agentes en segundo plano para realizar procesamientos más complejos. Los agentes pueden ejecutarse desde Internet usando el comando de @Command([ToolsRunMacro]) o fórmulas @URLOpen.
De forma predeterminada, los agentes de Web funcionan bajo la identidad del autor del agente (la persona que ha guardado el agente). Para ejecutar agentes bajo la identidad del usuario de Web, abra el cuadro de propiedades del agente, haga clic en la ficha Seguridad y seleccione Ejecutar como usuario de Web. Esta opción puede ofrecer mayor seguridad porque cuando un usuario de Web trata de ejecutar un agente con este parámetro, Domino le pide un nombre y una contraseña y los compara con los derechos de acceso del usuario que solicita la ejecución en la LCA de la base de datos.
En el cliente Notes, se pueden crear scripts para una gran cantidad de eventos de formulario, de campo y de botón utilizando código JavaScript(TM) o LotusScript (o, por supuesto, fórmulas con funciones @). Dependiendo de cómo utilice los eventos con scripts su aplicación, esto podría inducirle a escribir sus agentes usando JavaScript(TM) y a usar el mismo formulario para los clientes Notes y para los clientes Web. Sin embargo, existen diferencias en cuanto a capacidades. JavaScript(TM) en el cliente Notes tiene acceso únicamente a los datos del formulario abierto en ese momento (carece de acceso a los objetos de Domino de LotusScript que se ejecutan en el cliente o en el servidor). Su aplicación funcionará mejor si usa LotusScript para la ejecución en el cliente Notes y JavaScript(TM) para los navegadores, y usa opciones de ocultación o formularios independientes con objeto de que la ejecución funcione correctamente.
Tenga en cuenta que muchas funciones @ y comandos de @Command no funcionan en un navegador. Las funciones @ que no funcionan se incluyen en tres categorías principales:
Si desea ver la lista completa, consulte Funciones @ de Domino que no pueden usarse en Internet
Sustitución de cuadros de diálogo en aplicaciones de Web
Debería considerar la posibilidad de diseñar formularios en su aplicación para sustituir los cuadros de diálogo de ayuda y de mensajes de error que faltan en Internet. En particular, si los usuarios deben autentificarse para usar la aplicación, debería crear un formulario $$ReturnAuthenticationFailure para informar a los usuarios de que la autentificación ha fallado y proporcionarles vínculos que pueden usar para regresar hacia territorio familiar de la aplicación.
Cree su formulario y guárdelo con el nombre $$ReturnAuthenticationFailure. Para que este formulario esté accesible al público, deberá efectuar dos pasos. En primer lugar, deberá conceder al usuario -Default- acceso para leer documentos públicos.
En segundo lugar, defina las propiedades de seguridad del formulario para permitir el acceso a usuarios públicos; para ello, seleccione Disponible para usuarios con acceso público en la ficha Seguridad del cuadro de propiedades del formulario.
Existen cuatro nombres de formulario reservados que puede utilizar para crear mensajes de error personalizados para usuarios del navegador: $$ReturnAuthenticationFailure, $$ReturnAuthorizationFailure, $$ReturnDocumentDeleted y $$ReturnGeneralError.
Si desea más información sobre estos campos y sobre cómo usarlos, consulte Visualización de mensajes de error personalizados en Internet.
Programación de plataformas múltiples
Se puede programar el mismo evento en Designer para el cliente Notes y para el navegador de Web. El código en un evento (por ejemplo, el evento Click de un botón) se puede optimizar para la plataforma en la que se ejecutará. El código proporcionado para la plataforma del cliente se ejecuta cuando un usuario inicia la aplicación en el cliente Notes. El código proporcionado para la plataforma de Web se ejecuta cuando un usuario inicia la aplicación en un navegador. Estos eventos de plataforma doble están disponibles en eventos seleccionados de formularios, páginas, subformularios, botones, acciones y zonas activas.
Planificación de las diferencias entre navegadores
Si los usuarios acceden a aplicaciones de Web usando diferentes navegadores o diferentes versiones de navegador, debe comprobar su aplicación consecuentemente y adaptarla a las diferencias que existen entre navegadores. Cuando sea necesario escribir un código diferente para los distintos navegadores, puede usar @BrowserInfo para determinar qué navegador o qué versión está ejecutando el usuario.
Si desea más información sobre @BrowserInfo, consulte @BrowserInfo.
Véase también