Autosave in Notes 7 für Entwickler

15.07.2006 von Elmar Fuchs
Notes Domino 7 bietet über die Funktion Autosave die Möglichkeit, vom Benutzer nicht gespeicherte Dokumente im Falle eines Clientabsturzes beim nächsten Start wiederherzustellen. Soll die Funktion genutzt werden, muss dies bei der Entwicklung von Datenbanken beachtet werden, andernfalls können im Wiederherstellungsfall Probleme auftreten.

Befinden sich Dokumente im Bearbeitungsmodus und der Benutzer hat eine Zwischenspeicherung unterlassen, waren die am Dokument vorgenommen Änderungen in früheren Versionen von Lotus Notes im Falle eines Absturzes des Clients verloren. Ab der Version 7 ermöglicht die Funktion Autosave eine Wiederherstellung dieser Dokumente. Die von Lotus gewählte Realisierungsform bietet eine Reihe von Vorteilen:

Die Art und Weise der Realisierung erfordert jedoch auch, einige Dinge bei der Entwicklung von Masken, welche die Basis für wieder herstellbare Dokumente bilden sollen, zu beachten. Wird dies unterlassen, kann es im Extremfall dazu führen, das sich wiederherzustellende Dokumente nicht mehr öffnen lassen. Dazu später mehr.

Die Nutzung der Funktion schließt die Aktivierung auf dem Notes-Client, die Einrichtung der Masken sowie die Wiederherstellung der Dokumente ein.

Autosave aktivieren

Nach der Installation und der Erstkonfiguration des Notes-Clients ist die Funktion Autosave nicht aktiv. Sie richten die Funktion in den Benutzervorgaben ein. Im Bereich Startoptionen des Registers Allgemein befindet sich das Feld Autom. speichern alle N Minuten (Bild 1). Aktivieren Sie das Kontrollfeld und legen Sie ein Zeitintervall für die automatische Speicherung fest. Als Zeitintervall sind Angaben zwischen 1 und 999 Minuten möglich. Die Veränderungen werden erst mit einem Neustart des Clients wirksam.

Bild 1: Die Einstellungen zur Autosave-Option bei den Benutzervorgaben.

Die Autosave-Einstellungen in den Benutzervorgaben entsprechen den Werten von zwei NOTES. INIVariablen. Auto_Save_Enable besitzt bei aktiviertem Autosave den Wert 1. Das definierte Zeitintervall wird in der Variablen Auto_Save_ Interval gespeichert.

Bild 2: Die Einstellungen zur Autosave-Funktion bei den Desktop-Richtlinien.

Soll Autosave für alle oder eine Vielzahl von Benutzern zentral gesteuert werden, kann dies über eine Richtlinie unter Verwendung eines Desktop-Einstellungsdokuments geschehen. Auf dem Register Vorgaben, Unterregister Allgemein, finden Sie im Bereich Allgemeine Vorgaben die Einstellungen Automatisches Speichern aktivieren und Alle N Minuten automatisch speichern (Bild 2).

Nutzung von Autosave

Als zweite Voraussetzung für die Nutzung von Autosave müssen die Dokumente mit einer Maske erstellt werden, in der die Eigenschaft Automatisches Speichern zulassen aktiviert ist.Das zugehörige Kontrollfeld befindet sich im Eigenschaftsfenster der Maske auf dem Register Maske Info im Bereich Optionen. In den mit Notes Domino 7 ausgelieferten Schablonen ist lediglich für die Maske Memo in der Maildatenbank diese Eigenschaft aktiviert.

Ist die Funktion Autosave korrekt eingerichtet, wird sie beim nächsten Bearbeiten eines Dokuments aktiv. In dem Moment, in dem ein Dokument erstellt oder in den Bearbeitungsmodus versetzt wird, startet ein Timer. Nach Ablauf der in den Vorgaben eingestellten Zeitspanne wird das Dokument in der Datenbank Autosave automatisch gespeichert. Alternativ kann der Benutzer die Zwischenspeicherung über den Menüpunkt Datei/Automatisches Speichern/Jetzt automatisch speichern selbst veranlassen. Die erfolgreiche Zwischenspeicherung wird in einer Meldung in der Statuszeile bestätigt. Damit steht das Dokument im Falle eines Clientabsturzes zur Wiederherstellung bereit. Um zu verhindern, dass die Datenbank Autosave zu groß wird, wird mit dem Schließen, Senden oder Verwerfen eines Dokuments seine Sicherungskopie aus der Datenbank entfernt.

Die Datenbank Autosave

Die zur Sicherung gespeicherten Dokumente werden in einer lokalen Datenbank abgelegt. Ist diese Datenbank nicht vorhanden, wird sie bei der Aktivierung der Funktion automatisch unter Verwendung der Schablone AUTOSAVE.NTF im Verzeichnis ..\notes\data mit dem Datenbanktitel Autosave erstellt. Der Dateiname der Datenbank lautet

as_<AnfangsbuchstabeVorname>
<Nachname>(<Nummer>).nsf

Wird der Notes-Client von mehreren Benutzern mit dem gleichen Datenverzeichnis verwendet, kann es zu Namenskonflikten kommen. Um eindeutige Dateinamen zu gewährleisten, wird optional am Ende des Dateinamens eine fortlaufende Nummer angehängt. Tritt die gleiche Namenskombination zum zweiten Mal (zum Beispiel nach Ernst Meier nun Emil Meier) auf, wird eine 1 an den Dateinamen gehängt, beim zweiten Mal eine 2 usw.

Die Zuordnung der Datenbank zu einem Benutzer erfolgt über die Variable Auto_Save_User der Datei NOTES.INI in der Form

Auto_Save_User,<AbbreviatedUserName>=<DatabaseName>

zum Beispiel

Auto_Save_User,Ernst Meier/it/efuchs=as_emeier.nsf

Über diese Variable ist es auch möglich, andere Einstellungen für die Standardangaben für Dateinamen und Speicherort vorzugeben.

Um die Sicherheit der zwischengespeicherten Dokumente zu gewährleisten, ist die Datenbank per Standardeinstellung mit dem mittleren Verschlüsselungsgrad für den ihr zugeordneten Benutzer verschlüsselt.

Autosave aus Entwicklersicht

Interessant ist nun die Frage, welche Besonderheiten Entwickler bezüglich der Funktion Autosave beachten müssen.

Um die Dokumente in der Autosave-Datenbank abzulegen, werden alle Dokumentereignisse unterdrückt. Beispielsweise wird ein im Ereignis PostSave vorhandener LotusScript-Programmcode zum Verschicken einer Nachricht nicht ausgeführt.

Würden die Ereignisse ausgewertet, könnte das Autospeichern eines Dokuments gegebenenfalls dazu führen, dass der Benutzer des Dokuments plötzlich mit Abfragen und Fehlermeldungen konfrontiert wird, die mit seiner momentanen Arbeit scheinbar nichts zu tun haben. Damit würde die Funktion nicht mehr im Hintergrund agieren und ihr Sinn wäre in Frage gestellt.

Folge der Vorgehensweise ist jedoch, dass korrupte Dokumente entstehen können, welche bei einer versuchten Wiederherstellung Probleme bereiten bzw. sich unter Umständen nicht öffnen lassen. Um dies zu vermeiden, muss der Domino- Entwickler entsprechende Routinen in den Ereignissen beim Öffnen eines Dokuments erstellen. Dabei können Sie eine Reihe interner Felder nutzen. $AutoSaveRecovered ist in allen wiederherzustellenden Dokumenten bis zum Ereignis PostOpen vorhanden. Über das Feld $DontAutosave kann das Ausführen der Funktion Autosave verhindert werden. Damit können Sie einzelne Dokumente, welche mit einer Maske erstellt werden, die generell für Autosave aktiviert ist, von der Funktion ausschließen. Weitere Felder finden Sie in Tabelle 1.

Tabelle 1: Die für die Programmierung der Autosave-Funktionalität relevanten Felder

Feld

Bedeutung

$AutoSaveDatabase

Der Wert speichert die Datenbank, in
die das Dokument gehört.

$AutoSaveDocTitle

In diesem Wert wird der Titel des Dokuments
gespeichert.

$AutoSaveNoteID

Die Notes-ID des Dokuments ist in dem
Wert $AutoSaveNoteID enthalten.

$AutoSaveOrDocRL

Über den im Wert gespeicherten Link
wird das Dokument geöffnet.

$AutoSaveServer

Der Wert speichert den Namen des
Servers, auf dem sich die das Dokument
enthaltende Datenbank befindet.

$AutoSaveTime

In dem Wert wird der letzte Bearbeitungszeitpunkt
des Dokuments gespeichert.

Zum Testen, ob die Funktion Autosave auf das Dokument angewendet werden kann, leistet der manuelle Aufruf zum Zwischenspeichern über das Menü gute Dienste.

Dokumente wiederherstellen

Nach der Einrichtung der Funktion Autosave wird bei jedem Start des Clients geprüft, ob sich in der Datenbank Autosave Dokumente befinden, die wiederhergestellt werden können. Ist dies der Fall, wird nach der Authentifizierung eine entsprechende Meldung ausgegeben (Bild 3). Entscheidet der Benutzer, dass der Wiederherstellungsprozess gestartet werden soll, werden ihm im Dialogfenster Nicht gespeicherte Dokumente wiederherstellen alle zur Wiederherstellung bereitstehenden Dokumente angeboten (Bild 4). Es können ein oder mehrere Dokumente wiederhergestellt oder gelöscht werden. Über die Schaltfläche Schließen wird der Prozess beendet. Verbleiben Dokumente in der Wiederherstellungsliste, besteht die Möglichkeit, über den Menüpunkt Datei/Automatisches Speichern/Automatisch gespeicherte Dokumente wiederherstellen den Wiederherstellungsprozess erneut aufzurufen. Dabei ist jedoch zu beachten, dass das Deaktivieren der Funktion Autosave in den Benutzereinstellungen das Wiederherstellen von bereits in der Datenbank Autosave gespeicherten Dokumenten verhindert.

Bild 3: Die Meldung zur Wiederherstellung von Dokumenten.
Bild 4: Das Dialogfeld, über das nicht gespeicherte Dokumente wiederhergestellt werden können.

Werden Dokumente einer serverbasierten Datenbank von verschiedenen Benutzern bearbeitet, kann es durch die Funktion Autosave zu Konfliktsituationen kommen. Ein Beispiel: Der Benutzer Ernst Meier verändert ein Dokument. Bevor er es speichern kann, stürzt jedoch sein Client ab. Da Ernst Meier die Funktion Autosave aktiviert hat und die Zeitspanne zur Speicherung seit dem Beginn der Bearbeitung des Dokuments bereits verstrichen ist, ist das Dokument in der Datenbank Autosave automatisch gespeichert worden. Bevor Ernst Meier seinen Client wieder startet, öffnet Paul Müller dasselbe Dokument in der Datenbank auf dem Server. Er bearbeitet und speichert es. Kurz danach startet Ernst Meier seinen Notes-Client. Er wird gefragt, ob er das Dokument wiederherstellen möchte. Beantwortet er diese Frage mit ja, wird ihm ein Meldungsfenster mit dem Hinweis angezeigt, dass das Originaldokument in der Zwischenzeit verändert wurde (Bild 5). Entscheidet er sich nun für die Wiederherstellung des Dokuments und speichert es anschließend, gehen die Änderungen von Paul Müller verloren.

Bild 5: Die Meldung zur Wiederherstellung von Dokumenten.

Zusammenfassung

Mit der Funktion Autosave stellt Lotus Notes Domino 7 eine elegante und leistungsfähige Funktion zur Vermeidung von Dokumentverlusten bei Rechnerabstürzen zur Verfügung. Für einen effektiven Einsatz der Funktion ist es jedoch notwendig, diese bereits bei der Entwicklung von Datenbanken zu berücksichtigen. Des Weiteren empfiehlt sich eine kurze Benutzereinweisung, um vor allem auf die mögliche Konfliktsituation hinzuweisen.