ANWENDUNGSGESTALTUNG
Sicherheit
Das Sicherheitsmodell ist bei Notes und Webbenutzern unterschiedlich. Manager- und Entwicklerzugriff auf Datenbanken steht Webbenutzern nicht zur Verfügung, wie dies bei Benutzern von Notes-Clients der Fall ist. Sie sollten daher bei Webanwendungen keine LotusScript Aktionen oder Agenten verwenden, die für das Ausführen einer Aufgabe Manager- oder Entwicklerzugriff erfordern.
Die Authentifizierung von Benutzern erfordert zusätzliche Planung für Anwendungen, die über Web-Browser verfügbar sind. Die meisten Webanwendungen bieten für anonyme Benutzer ein gewisses Maß an Zugriffsrechten. Für höhere Zugriffsebenen müssen Sie die Namen der Webbenutzer mit den Namen im Domino-Verzeichnis abgleichen. Da Webbenutzer sich normalerweise bei einer Anwendung mit einem Kurznamen anmelden, sollten Sie den Befehl @UserName verwenden, um ihren vollständigen Notes-Namen für eine ordnungsgemäße Authentifizierung zurückzugeben.
Masken
In vielen Fällen funktioniert dieselbe Maske sowohl im Notes-Client als auch in der Webanwendung. Sie können minimale Unterschiede in der Funktionalität kompensieren, wenn Sie Verbergen-wenn-Formeln für Gestaltungselemente in einer Maske verwenden. Es kann vorkommen, dass Sie eine Teilmaske für einen Notes-Client und eine andere für einen Web-Browser anzeigen möchten. Im folgenden Beispiel ruft die Formel eine von zwei berechneten Teilmasken namens NS und IE auf, die Browser-spezifischen Code enthalten, indem sie die CGI-Variable für den Browser-Typ in @BrowserInfo verwendet:
@If(@BrowserInfo("BrowserType")="Netscape";"NS";"IE")
Jede Teilmaske hat ihren eigenen JavaScript(TM)-Header, sodass Sie sowohl JavaScript(TM) als auch andere Datentypen in Ihre Maske aufnehmen können, indem Sie berechnete Teilmasken verwenden.
Alle Teilmasken werden gleichzeitig mit der Hauptmaske geöffnet. Sie können eine berechnete Teilmaske nicht auf Basis von Berechnungen anzeigen, nachdem die Seite geöffnet wurde.
Masken sind in einer gemischten Client-Umgebung sehr flexibel. Wenn Sie eine mehrere Clients unterstützende Programmierung verwenden, können Sie ein Maskenereignis programmieren, das bestimmte Befehle ausführt, wenn ein Notes-Client darauf zugreift, und andere Befehle ausführt, wenn ein Web-Client darauf zugreift. In einigen Fällen ist es einfacher, zwei separate Masken zu entwickeln - eine für einen Notes-Client und eine andere für einen Web-Client. In diesem Fall weisen Sie den beiden Masken denselben Alias zu und verbergen einen vor dem Notes-Client und den anderen vor dem Web Client, sodass die richtige Maske im richtigen Kontext angezeigt wird.
Felder
Berücksichtigen Sie, dass nicht alle Feldtypen, die in einer Notes-Anwendung unterstützt werden, auch in einer Webanwendung unterstützt werden. Beispielsweise unterstützt das Web keine Mehrwert-Schlüsselfelder, die ermöglichen, dass Benutzer einen Wert eingeben, der nicht in der Liste enthalten ist. Sie können dies umgehen, indem Sie in einer Webanwendung zwei Felder verwenden, ein Feld für das Akzeptieren einer neuen Auswahl für die Liste und das andere Feld, um die Liste aufzubauen und anzuzeigen. Wenn Benutzer vom Notes-Client und dem Web auf die Anwendung zugreifen können, müssen Sie die Feldwerte synchronisieren, sodass alle Benutzer dieselben Werte sehen.
Wenn Sie ein Problem mit zwei Versionen einer Feldformel beheben können (eine für Notes und die andere für das Web), dann nehmen Sie beide in die Maske auf und verwenden Sie die Option "Verbergen vor Notes/Verbergen vor Web-Browsern" in der InfoBox "Eigenschaften: Feld", um die eine oder die andere Formel anzuzeigen.
Wenn Sie für Notes-Clients und Browser dieselbe Maske verwenden, kann das Attribut "Verbergen vor Notes/Verbergen vor Web-Browsern" in den Eigenschaften eines Gestaltungselements sehr hilfreich sein. Beachten Sie jedoch, dass "Verborgen" für jeden Client eine andere Bedeutung hat. In Notes sind verborgene Felder im Dokument noch vorhanden und können in Script-Berechnungen verwendet werden. In Web-Browsern verborgene Felder werden von IBM® Lotus® Domino(TM) aus dem Dokument entfernt, bevor die Seite an den Browser weitergeleitet wird. Der Feldinhalt steht für JavaScript(TM) nicht zur Verfügung.
Tipp: Wenn Sie Felder in einem Browser verbergen, aber den Inhalt für JavaScript(TM) verfügbar halten möchten, verwenden Sie die Option "Verbergen vor Notes/Verbergen vor Web-Browsern" nicht und fügen Sie "type=hidden" nicht in die HTML-Body-Attribute der Felder ein. Stellen Sie sicher, dass:
<input type="hidden" name="feldname" value="feldinhalt">
Beachten Sie, dass auf diese Weise verwendete Namen und Werte nicht sicher sind. Sie sind für jeden Benutzer sichtbar, der die Seitenquelltext-Funktion des Browsers aufruft.
Denken Sie außerdem daran, dass auf diese Weise nicht alle Felder an einen Browser übergeben werden können - z. B. das Kennwortfeld, "$Updatedby", "$HtmlHead" und alle Objekte, die keine Zeichen enthalten (wozu auch öffentliche Benutzerschlüssel gehören), da NULL in HTML nicht dargestellt werden kann.
Aktionen
Aktionen spielen in Webanwendungen eine wichtigere Rolle, da Benutzer von Web-Browsern nicht auf die Notes-Menübefehle zugreifen können. Für Aufgaben wie das Erstellen von Dokumenten, Wechseln in den Bearbeitungsmodus, Wechseln von Ansichten oder das Weiterleiten von Dokumenten müssen Sie eine Aktion zur Verfügung stellen. Daher müssen Sie in vielen Fällen speziell für eine Webanwendung eine Aktionsleiste erstellen, die Sie vor Notes-Client-Benutzern verbergen müssen.
Tipp Um Schaltflächen in einer Datenbank Web-fähig zu machen, wählen Sie in der InfoBox "Eigenschaften: Anwendung" die Option "Web: JavaScript(TM) beim Erstellen von Seiten verwenden". Wenn diese Eigenschaft nicht eingestellt ist, erkennt Domino nur die erste Schaltfläche in einem Dokument und behandelt sie standardmäßig als Schaltfläche "Einreichen", die das Dokument schließt und speichert.
Ansichten
Das Anzeigen von Notes-Ansichten in einer Webanwendung hat zur Folge, dass einige der Anzeigeattribute verlorengehen, es sei denn, Sie betten die Ansicht zuerst in eine Seite ein. Um ein Layout anspruchsvoll zu gestalten, können Sie mehrere Ansichten in eine Seite einbetten. Außerdem können Sie eine Anzeigeschablone angeben, mit der in Webanwendungen einheitliche Stileigenschaften auf eingebettete Ansichten angewendet werden können.
Weitere Informationen finden Sie unter "Ansichten in Webanwendungen anzeigen".
Navigation
Das Verwenden einer Gliederung für die Navigation stellt Benutzern von Notes-Clients und Web-Browsern eine einheitliche Struktur zur Verfügung. Mithilfe einer Gliederung können Benutzer Ansichten, Seiten oder URLs öffnen. Betten Sie die Gliederung in eine Seite ein, um alle Anzeigeeigenschaften für Benutzer von Web-Browsern beizubehalten.
Sie können auch eine Imagemap als Navigationswerkzeug verwenden.
Weitere Informationen finden Sie unter "Gliederungen, Navigatoren und Imagemaps".
Agenten
Das Programmieren mit Agenten stellt einer Anwendung die gesamte Verarbeitungskapazität zur Verfügung. Beim Verwenden von Agenten werden Sie die wichtigsten Unterschiede bei der Entwicklung von Anwendungen für Notes-Clients und Web-Browser feststellen. Obwohl Sie einen Großteil des Codes gemeinsam nutzen können, kann es vorkommen, dass Sie bestimmte Agenten für das Web und bestimmte Agenten für den Notes-Client erstellen müssen. Die wichtigsten programmierbaren Serverereignisse für Webanwendungen sind "WebQueryOpen" und "WebQuerySave". Um Performance-Probleme zu vermeiden, verwenden Sie diese Ereignisse für wichtige Aufgaben und Hintergrundagenten für komplexe Verarbeitungsaufgaben. Agenten können mithilfe der Formeln @Command ([ToolsRunMacro]) oder @URLOpen vom Web aus ausgeführt werden.
Webagenten werden standardmäßig unter der Identität des Agentenautors (der Person, die den Agenten gespeichert hat) ausgeführt. Um Agenten unter der Identität des Webbenutzers auszuführen, öffnen Sie die InfoBox "Eigenschaften: Agent", klicken Sie auf das Register "Gestaltung" und wählen Sie die Option "Als Webbenutzer ausführen" im Abschnitt "Für Webzugriff". Diese Option bietet mehr Sicherheit, da Domino einen Webbenutzer, der versucht, einen Agenten mit dieser Einstellung auszuführen, zur Eingabe eines Namens und Kennworts auffordert. Anschließend werden diese anhand der Rechte des Aufrufenden in der Datenbank-ACL überprüft.
Im Notes-Client können viele Masken-, Feld- und Schaltflächenereignisse entweder in JavaScript(TM) oder in LotusScript erstellt werden (oder, um sicherzugehen, können Sie auch @Formeln verwenden). Abhängig davon, wie Ihre Anwendung in Scripten erstellte Ereignisse verwendet, kann dies bedeuten, dass Sie Ihre Agenten in JavaScript(TM) erstellen und dieselbe Maske für Notes und Web-Clients verwenden. Es gibt in der Funktionalität jedoch Unterschiede. JavaScript(TM) im Notes-Client hat nur Zugriff auf die Daten in der aktuell geöffneten Maske und kann auf die Domino Front- und Backend-Objekte von LotusScript nicht zugreifen. Ihre Anwendung funktioniert am besten, wenn Sie sie für die Ausführung im Notes-Client in LotusScript und für Browser in JavaScript(TM) erstellen und außerdem "Verbergen-wenn" oder separate Masken verwenden, um die Ausführung auseinanderzuhalten.
Denken Sie daran, dass viele @Funktionen und @Befehle in einem Browser nicht funktionieren. Diese nicht verwendbaren @Funktionen können in drei Hauptkategorien eingeordnet werden:
Weitere Informationen und die vollständige Liste finden Sie unter "Domino @Funktionen, die im Web nicht unterstützt werden".
Dialogfelder für Webanwendungen ersetzen
Sie sollten Masken für Ihre Anwendung entwickeln, um Fehlernachrichten und Hilfedialogfelder zu ersetzen, die im Web fehlen. Besonders, wenn Sie Benutzer auffordern, sich für die Nutzung der Anwendung zu authentifizieren, sollten Sie eine $$ReturnAuthenticationFailure-Maske erstellen, um Benutzer darüber zu informieren, dass die Authentifizierung fehlgeschlagen ist, und Ihnen Links zur Verfügung zu stellen, mit denen sie in der Anwendung zurück navigieren können.
Erstellen Sie die Maske und speichern Sie sie unter dem Namen "$$ReturnAuthenticationFailure". Um diese Maske öffentlich zur Verfügung zu stellen, müssen Sie zwei Schritte ausführen. Zunächst müssen Sie in der Zugriffskontrollliste für "Default" das Lesen öffentlicher Dokumente festlegen.
Anschließend stellen Sie die Sicherheitseigenschaften der Maske für öffentliche Benutzer zur Verfügung, indem Sie "Verfügbar für Benutzer mit öffentlichem Zugriff" im Register "Sicherheit" der InfoBox "Eigenschaften: Maske" wählen.
Sie können vier reservierte Maskennamen verwenden, um benutzerdefinierte Fehlernachrichten für Browser-Benutzer zu erstellen: $$ReturnAuthenticationFailure, $$ReturnAuthorizationFailure, $$ReturnDocumentDeleted und $$ReturnGeneralError.
Weitere Informationen über diese Felder und deren Verwendung finden Sie unter "Benutzerdefinierte Fehlernachrichten anzeigen".
Programmierung für mehrere Plattformen
In Designer können Sie jetzt dasselbe Ereignis für den Notes-Client und den Web-Browser programmieren. Sie können den Code in einem Ereignis für die Plattform optimieren, auf der es ausgeführt wird, z. B. das Ereignis "Klicken" einer Schaltfläche. Der Code, den Sie für die Client-Plattform hinzufügen, wird ausgeführt, wenn ein Benutzer die Anwendung im Notes-Client ausführt. Der Code, den Sie für die Web-Plattform hinzufügen, wird ausgeführt, wenn ein Benutzer die Anwendung in einem Browser ausführt. Diese beiden Plattformereignisse sind für ausgewählte Ereignisse in Masken, Seiten, Teilmasken, Feldern, Schaltflächen, Aktionen und Hotspots verfügbar.
Browser-Unterschiede berücksichtigen
Wenn Ihre Benutzer auf die Webanwendungen mit unterschiedlichen Browsern oder unterschiedlichen Versionen von Browsern zugreifen, müssen Sie Ihre Anwendung entsprechend testen und an die Browser-Unterschiede anpassen. In den Fällen, in denen Sie die Unterschiede zwischen Browsern mittels eines Codes beheben müssen, können Sie @BrowserInfo verwenden, um zu ermitteln, welchen Browser oder welche Version der Benutzer ausführt.
Weitere Informationen über @BrowserInfo finden Sie unter "@BrowserInfo".
Siehe auch