title image


Smiley Oh Mann, zu diesem Problem kann man Bücher schreiben. Es gibt ...
verschiedene Strategien wie man das Problem lindern kann, lösen kann man es nicht und das liegt in der Struktur von Notes begründet.



Grundlagen und ein paar Definitionen:



Gegeben sei dein Hauptdokument (DH), deine Antwortdokumente (DAn) und verschiedene Statii der Dokumente geöffnet zum lesen (o), geöffnet zum editieren(e), neu abgespeichert (s).

Geschlossen als Status habe ich weggelassen, genauso wie ein paar Kobinationen, da sie nichts zur Problembeschreibung beitragen.



es gilt -> notwendige Aktion

1. DH = o & DA1 = o -> keine Aktion notwendig

2. DH = o & DA1 = e -> keine Aktion notwendig

3. DH = o & DA1 = s -> neuen Wert aus DA1 in DH speichern

4. DH = e & DA1 = o -> keine Aktion notwendig

5. DH = s & DA1 = o -> keine Aktion notwendig

6. DH = s & DA1 = e -> keine Aktion notwendig

7. DH = s & DA1 = s -> neuen Wert aus DA1 in DH speichern



Geschlossen als Status habe ich weg gelassen, genauso wie ein paar Kobinationen, da sie nichts zur Problembeschreibung beitragen.



Nur die Aktionen 1, 2, 4, 5 und 6 sind auf den ersten Blick problemfrei, da hier zunächst einmal nichts passiert (auch wenn man ein Dokument editiert heist das ja noch lange nicht das man es auch ändert und die Änderungen anschließend speichert).

Die Kostellationen 3 und 7 sind es die Probleme verursachen.



Und hier greifen die Struktur und die Fähigkeiten von Notes leider zu Ungunsten des Benutzers (Programmierers) ein.



Ein Dokument hat in einer Notes Datenbank programmtechnisch gesehen immer zwei mögliche Inkarnationen. Einmal als Backend Objekt, so wie es in den Tiefen der Datenbank gespeichert ist und zum anderen als Frontend Objekt, das der Benutzer aktuell sieht und verändern kann.



Dadurch das Domino in der Lage ist selbständig mit mehreren Frontend Instanzen des Backend Objektes gleichzeitig zu arbeiten (mehrere Benutzer greifen auf das selbe Dokument zu, online oder offline), muss es auch in der Lage sein zu erkennen ob das Objekt seit dem öffnen von anderen Benutzern verändert worden ist. Dieses Verhalten ist nicht abstellbar, man kann aber verhindern das ein objekt überhaupt gespeichert wird in dem man das Feld SaveOptions entsprechend setzt (was dann andere probleme zur Folge hat).



Verschiedene Inkarnationen bedeutet in diesem Umfeld auch, das jede Inkarnation ein in sich geschlossenes Objekt ist. Antwortdokumente sind ebenfalls Inkarnationen eines Backend Objektes und sie unterliegen den gleichen Regeln wie das oben genannte Hauptdokument.



Daraus folgt, das von einem Frontend Hauptdokument aus geöffnete Frontend Antwort Dokumente ab dem Moment ihres Entstehens keine aktuelle Beziehung zu ihrem Vater mehr haben (jedes einzelne Dokument steht und ausschließlich für sich). Da jedes dieser Dokumente beliebig selbständig weiter bearbeitet werden kann, können sich die Dokumente auseinander entwickeln. Beide Dokument gleichzeitig zu bearbeiten und dann einen Wert aus dem Antwortdokument in das Hauptdokument zurück schreiben zu wollen ist also nicht machbar.



Wege zur Problemlösung:

Grundlegend gibt es zwei Möglichkeiten diese Dilemma zu lösen:

1. man schließt beim öffnen des Antwortdokumentes das Hauptdokument. Damit wird die Frontend Instanz aus dem Focus genommen und man kann in das Backend Dokument beliebig Daten einfügen.

Vorteil: keine Speicherkonflikte mehr möglich

Nachteil: Die Navigation zwischen Haupt und Antwortdokumenten muss dediziert gesteuert werden sonst funktioniert dieser Ablauf nicht.



2. man fügt die Daten nicht direkt sondern indirekt z.B. über ein berechnetes Feld in das Hauptdokument ein.

Vorteil: die Daten sind immer aktuell und es sind keine weiteren Eingriffe notwendig. Speicherkonflikte sind nicht warscheinlich.

Nachteil, Änderungen an den Antwortdokumenten sind erst dann im Hauptdokument sichtbar, wenn dieses zumindest einmal über F9 oder eine verwandte Aktion aktualisiert worden ist.



3. man fügt überhaupt nichts in das Hauptdokument ein sondern baut die Daten in die eingebettete Ansicht mit ein. Damit vermeidet man beide Nachteile von Punkt 1 und 2. Es soll aber nicht verschwiegen werden, das man sich damit, wenn die Daten aus den Anwortdokumenten unmittelbar bei der Verarbeitung des Hauptdokumentes benötigt werden , ein neues Problem ergibt. Die Übernahme der Daten muss dann unabhängig durch einen Agent erfolgen.



Wenn du bis hierhin gelesen hast hast du hoffentlich einen vernünftigen Einblick und einen Ansatz für die Lösung deines Problem gefunden. Wenn nicht kann man ja noch weiter diskutieren.



Thomas


Notes und Exchange, das ist wie Ferrari und Lada. Dreimal darfst du raten was der Ferrari ist.

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: