Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: iukhdh am 19.11.12 - 15:12:36
-
Hallo Forum,
kann mir hier vielleicht jemand kurz mal erklären, wie so ein Ordner technisch funktioniert?
Bei einer Ansichtsauswahl kann ich ja sagen, nimm diese oder jene Dokumente mit irgendeinem Wert. Aber wie geht das bei Ordnern? Wir da im Dokument ein Feld angelegt und da was eingetragen wenn ich das Dokument dort hineinschiebe, oder wird im Ordner hinterlegt welche Dokumente ich da hineinschiebe?
Gibt's da vielleicht was zum nachlesen was ich nicht kenne?
Wäre über eine kurze Info dankbar.
Thomas
-
m.E. nach wird im Ordner in dem Feld $Collection notiert, welche Dokumente in dem ordner angezeigt werden.
-
Hallo,
@dNotes
m.E. nach wird im Ordner in dem Feld $Collection notiert, welche Dokumente in dem ordner angezeigt werden.
Kann ich so nicht bestaetigen.
Die Mails die bei mir in den Ordner liegen, besitzen dieses Feld est gar nicht.
Bitte nicht festnageln darauf, aber soweit ich mich noch erinnere werden diese Informationen in internen Tabellen vorgehalten.
Bei aktivierter FolderReference der Datenbank, kann man diese Informationen auch noch ueber versteckte Ansichten '($FolderRef...)
abgreifen.
Andreas
-
dnotes meint m.E. die $Collation-Items (!) der Folder-Design-Dokumente.
Allerdings beschreiben die $Collation-Items wie in Views die Sortierung der Spalten.
Bernhard
-
auch nicht ganz richtig. Dnotes meinte das Feld $Collection; nicht Collation. ;-)
-
Mein Fehler - sorry. Aber auch $Collection ist weder ein Feld noch hat es was mit den Dokumenten in Folders zu tun (da spricht Andreas wahr). Würden die IDs der Dokumengte der Folders in Items gespeichert, wären Folders ja auch arg aufnahmebeschränkt ;)
Bernhard
-
Zum besseren Verständnis:
Wenn Du Dir die Mühe machst einen Ordner zu erstellen und diesen in Notes benutzt dann hat das Folder - Designelement das Feld $Collection. Definitiv.
Und von einem Feld, dessen Existenz Dir offenbar nicht bewußt ist, zu sagen, es hätte nichts mit den Dokumenten in Foldern zu tun, finde ich eine mutige Ansage.
-
@dnotes
Dann hat das Dokument/Designelement dieses Feld.
Aber das aendert nichts an der Tatsache, dass in diesem Feld keinerlei Informationen enthalten sind, welches Dokument sich in dem besagten Ordner befindet. Damit hat Bernhard wieder recht.
Felder in Bezug auf die Ordner, welches Dokument befindet sich in welchem Ordner, sind nur dann in den Dokumenten selber vorhanden, wenn die FolderReference innerhalb der Datenbank aktiviert ist.
Ansonsten werden die Informationen nur in internen Tabellen vorgehalten.
Andreas
-
Vielleicht klärt dieser link die Sache etwas auf:
http://www-12.lotus.com/ldd/doc/tools/c/6.0.2/api60ug.nsf/85255d56004d2bfd85255b1800631684/00dd00f9007500b085255e0f00729848?OpenDocument
-
Ich moechte ja nicht unhoeflich erscheinen, aber dieser Lonk erklaert eigentlich nur das, was Bernhard bereits geschrieben hat.
Itemname: $Collation und nicht wie immer weiter von Dir geschrieben $Collection
Und dieses Item wird nur fuer das Sorting innerhlab der View/des Ordners verwendet. Keine Rede davon, dass hier Informationen gespeichert werden,
welches Dokument in welchem Ordner (welches Dokument in dem betreffenden Ordner) enthalten ist.
Bitte nicht boese sein, aber etwas genauer lesen.
Andreas
-
Intern speichert Notes irgendwo verklausuliert, in welchen Ordnern Dokumente liegt.
Damit man aber programmtechnisch drauf zugreifen kann, hat sich IBM folgendes ausgedacht:
notesDocument.FolderReferences
mit folgendem wichtigen Hinweis:
The database must have the $FolderInfo and $FolderRefInfo hidden views to support folder references. These views can be copied from the mail template. This property does not return view references.
Folder references must be enabled for the database. See the FolderReferencesEnabled property of NotesDatabase.
In Formelsprache gibts ab 8.5.1 die Funktion @WhichFolders
@WhichFolders is intended for use only as a column formula in the mail template.
This function is effective only when the view is open in the UI and the outline pane on the left is visible.
Andreas
-
@Andreas (ascabg): Schau mal nach ganz unten in dem Link
A folder note also contains an item, $Collection, that contains the list of documents and folders contained in the folder.
Unabhängig davon, ob nun die Dokumente in diesem Feld oder einer internen Tabelle gehalten werden, Kernaussage ist doch, dass sich die Information, welche Dokumente sich in einem Ordner befinden (das war ja die eigentliche Frage des Fragenstellers), im Ordner(-Umfeld) und nicht in den Dokumenten befindet. Habe erfolglos versucht, mittels Script das Item zu manipulieren. Löschen ging nicht, irgendeinen Müll reinschreiben erzeugte ein zweites Item. Eine Auswirkung auf die angezeigten Dokumente hatte es aber nicht. Vielleicht kommt man mittels API an weitergehende Informationen, oder das Item verweist nur auf die interne Tabelle, in der die Dokumente aufgelistet sind.
Und um Dokumente in Ordner zu verschieben oder wieder daraus zu entfernen, gibt es die entsprechenden Befehle in Script (PutInFolder, RemoveFromFolder oder so ähnlich). Damit muss man arbeiten, anstelle von Selektionsformeln.
-
Das hätte der Fragesteller nun allerdings nicht erwartet. Ich war mir fast sicher dass der Name des Folders irgendwo im Dokument hinterlegt wird und eine vorprogrammierte Abfrage auf dieses Feld die Auswahl erledigt. Gerade die von Bernhard erwähnte Aufnahmebeschränkung schwirrte mir auch im Kopf herum.
-
Dagegen spricht, dass jedes Schieben in oder aus einem Ordner dann ein Ändern des Dokuments zur Folge hätte. Diese Änderung müsste auch mit Leserechten möglich sein, dürfte sich nicht auf die Ungelesen-Markierung auswirken und nicht zu Replizierkonflikten führen. Wohl Gründe genug, es so gelöst zu haben, wie es ist.
EDIT: Sorry, dass ich Dich Fragensteller genannt habe, nächstes Mal scrolle ich in der Zusammenfassung zum Anfang zurück, so viel Zeit muss sein...
-
;)
-
Der Name des Folders wird definitiv im Dokument hinterlegt, wenn man Folder References aktiviert. Und das schon seit Version 5. irgendwas.
-
Interessant, was hier so an Mythen umgeht ;) In welchem Item wird denn das abgelegt, Thomas?
By the way: $Collection im Folder-Design-Element ist auch falsch (das geht in Richtung view selection und ist deswegen eh in Folders nur selten zu finden - hängt von der Vererbung ab) und auch in der Doku falsch oder missverständlich.
Bernhard
-
Das war schon mal gar nicht so schlecht, Bernhard. Das geht in Richtung View selection.
In meinen Augen ist ein Folder auch eine View; mit dem Unterschied, daß er keine Selektionsformel hat.
Was also läge näher als einen Folder vom internen design her genau so zu gestalten mit den ähnlichen Mechanismen wie eine View??
Bei einem Test ist mir aufgefallen, daß beide - views und Folder - erst das Feld $Collection erzeugen, wenn sie in Notes geöffnet werden.
Daraus folgere ich mal, so lange das Element nur im designer schlummert wird dieses Feld nicht benötigt. Erst beim erstmaligen Gebrauch in Notes muss entschieden werden welche Dokumente angezeigt werden sollen. Und da wir ja alle wissen sollten, wofür das Feld in einer view benutzt wird, stelle ich mir die Frage, warum man diese Funktionsweise einem Ordner von vornherein aberkennt???
@Thomas: Folderreferenz ist dann der umgekehrte Fall. Damit wird im Dokument festgehalten in welchem Ordner es sich befindet; nicht umgekehrt.
-
Ein Folder ist technisch gesehen eine View. Nachzulesen in Inside Notes auf S. 49 und 51ff
Inside Notes - Die Architektur von Lotus Notes und Domino (http://www.lotus.com/ldd/doc/uafiles.nsf/docs/inside-notes/$File/insidenotes.pdf)
Es ist zwar schon sehr angestaubt und noch gelb, aber das Grundprinzip gilt immer noch.
Andreas
-
Interessant, was hier so an Mythen umgeht ;) In welchem Item wird denn das abgelegt, Thomas?
Such im Dokument nach $FolderRef, $FolderRefFlags und $FolderRefID. Und ich glaube ich hab mich missverständlich ausgedrückt, das sind die Items in denen das Dokument das im Folder abgelegt wurde die Folderzuordnung enthält.
Was den Teil des Folder Dokumentes angeht, in dem die Information über die im Folder enthaltenen Dokumente steckt.
Ja das ist tatsächlich ein Bestandteil des Folder Dokumentes und ja, es steckt im Item $Collection mit drin.
dieses Item enthält nämlich keine Liste von Werten, sondern ein View Object. Damit hat sich dann auch die Frage nach den Limits erübrigt.
Wer das aus einem anderen Anlass aufgedröselt hat ist Robert Ibsen Voith (http://www.proudprogrammer.no/ppblog.nsf/d6plinks/RIVH-8MGM9B). Ich hab das vor ca 2 Jahren mal ganz intensiv studieren dürfen und bin dabei in den Untiefen der Dokumentation von IBM auch mal auf ein Dokument gestoßen, das die Technischen Hintergründe dahinter erklärt hat. Finde das aber aktuell nicht mehr.