Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Hatschi am 10.02.10 - 13:57:34

Titel: Reihenfolge der Dokumente in db.unprocessedDocuments
Beitrag von: Hatschi am 10.02.10 - 13:57:34
Hallo,

ist meine Vermutung richtig, dass die Reihenfolge der Dokumente von db.unprocessedDocuments nicht vorhersehbar ist?

Ich hätte mir jetzt gewünscht (träum...) das man die einzelnen Dokumente genau in der gleichen Reihenfolge iterieren kann wie sie in der Ansicht erscheinen.
Das ist für mich deshalb wichtig, weil sich im ersten Dokument  Daten befinden, die in die folgenden markierten Dokumente übertragen werden sollen. Wenn jetzt aber als erstes Dokument ein beliebiges Dokument aus der gesamten collection geliefert wird, dann funktioniert das nicht.
Gibt es es vielleicht eine Möglichkeit eine Brücke zur viewentrycollection zu schlagen? Da soll ja die Reihenfolge einbehalten werden. Das sehe ich zur Zeit aber nur durch ein Ablatschen der Collection. Bei mehreren zehntausend bis einige hunderttausend Dokumente scheint mir das keine gute Lösung zu sein.

Danke schön für Hinweise die meine eingehende Frage beantworten, oder Tipps wie ich an das erste Dokument von unprocessedDocuments komme.

Bernd
Titel: Re: Reihenfolge der Dokumente in db.unprocessedDocuments
Beitrag von: Glombi am 10.02.10 - 14:12:08
siehe
http://www-01.ibm.com/support/docview.wss?rs=0&uid=swg21095476
Titel: Re: Reihenfolge der Dokumente in db.unprocessedDocuments
Beitrag von: Hatschi am 10.02.10 - 14:29:51
Hallo Andreas,

danke für den Link. Der Hinweis mit dem Datum erklärt nun auch, warum es mit meinen Testdaten funktioniert hat!

Um jetzt wirklich an den ersten Eintrag zu kommen, sehe ich nur folgende Möglichkeit:
NotesViewentryCollection ablatschen, und für jeden Eintrag prüfen ob die UNID sich auch in meiner Collection befindet. Falls ja, wäre das erste Dokument gefunden. Aber das halte ich nicht für praktikabel. Bei z.B. 500 markierten Dokumenten in einer Ansicht mit 35.000 Dokumenten wäre das bestimmt nicht der Renner.

Dann muß ich mir einen anderen Lösungsansatz suchen.

Bernd
Titel: Re: Reihenfolge der Dokumente in db.unprocessedDocuments
Beitrag von: Glombi am 10.02.10 - 14:38:53
Du kannst mit
Set checkdoc = notesDocumentCollection.GetDocument( doc )
prüfen, ob das Dokument in der Collection ist. Falls nicht, ist checkdoc = Nothing.

Das ist performant und Du brauchst nicht durch die Collection nudeln.
Titel: Re: Reihenfolge der Dokumente in db.unprocessedDocuments
Beitrag von: Hatschi am 10.02.10 - 15:01:54
Ahhhh Super! Das ist eine Idee.

coll = Sammlung zu bearbeitender Dokumente
Schleife über die NotesviewEntryCollection

  wenn coll.getdocument(Notesviewentry.document) gefunden --> erstes Dokument und abbrechen

sonst nächsten Eintrag der ViewentryCollection

Vielen Dank,

Bernd
Titel: Re: Reihenfolge der Dokumente in db.unprocessedDocuments
Beitrag von: Hatschi am 10.02.10 - 15:52:13
Nachtrag zur Performance:
Tests auf dem Server mit 900 Dokumenten.
Markiere ich eines der letzten Dokumente, werden zwischen 4 und 5 Sekunden dafür benötigt.
Die Schleife die das prüft schafft demnach ungefähr 200 Dokumente in der Sekunde. Da es erst einmal ein  Administrationsagent sein soll, kann ich noch damit leben.


Print "Ich suche den ersten markierten Eintrag"
Set view=ws.CurrentView.View
Set ViewEntryCollection=view.AllEntries
Set entry=ViewEntryCollection.GetFirstEntry
Do While Not entry Is Nothing
   Set doc=coll.GetDocument(entry.Document)
   If Not doc Is Nothing Then
      'Der Eintrag wurde gefunden, also raus aus der Schleife
      Exit Do
   End If
   Set entry=ViewEntryCollection.GetNextEntry(entry)
Loop

Die Last auf dem Server ist aber bestimmt auch nicht ohne.

Bernd
Titel: Re: Reihenfolge der Dokumente in db.unprocessedDocuments
Beitrag von: koehlerbv am 10.02.10 - 16:07:32
Sortiere Dir doch die Collection nach den gleichen Kriterien wie in der Ansicht um. Dann wird die benötigte Zeit eher gegen nicht messbar sein.

Bernhard
Titel: Re: Reihenfolge der Dokumente in db.unprocessedDocuments
Beitrag von: Hatschi am 10.02.10 - 16:31:55
Hallo Bernhard,

das verstehe ich jetzt nicht. Welche Collection sortieren? Die ViewEntryCollection oder die unprocessedDocuments? Die ViewEntryCollection ist doch schon sortiert wie in der Ansicht. Also meinst du wahrscheinlich die unprocessedDocuments.
Wie kann ich die denn sortieren? Umkopieren in eine neue leere Collection?
Ich weiß aber noch nicht so ganz wo dann der zeitliche Gewinn herkommen soll? Meinst du das der coll.getDocument() so viel Zeit verbrät?

Hmm, das waren jetzt aber viele neue Fragen. Kannst du mir auf die Sprünge helfen.

Bernd
Titel: Re: Reihenfolge der Dokumente in db.unprocessedDocuments
Beitrag von: koehlerbv am 10.02.10 - 16:35:40
Ich meine die Collection der Unprocessed documents. Und die Zeit verbrätst Du ja mit dem Durchlaufen und Abprüfen der gesamten ViewEntryCollection, wei Du selbst schon ausgemessen hast.

HTH,
Bernhard
Titel: Re: Reihenfolge der Dokumente in db.unprocessedDocuments
Beitrag von: diam am 11.02.10 - 15:28:00
Hallo!

Kannst Du nicht alle markierte Dokumente in einen leeren und gleichsortieren Ordner verschieben. Dann ist das erste ausgewählte Dokument, das erste Dokument der NotesViewEntryCollection.

Das könnte sogar alles per Script gehen, wenn viele Voraussetzungen erfüllt sind.

Dirk
Titel: Re: Reihenfolge der Dokumente in db.unprocessedDocuments
Beitrag von: Axel am 11.02.10 - 17:07:58
Hallo!

Kannst Du nicht alle markierte Dokumente in einen leeren und gleichsortieren Ordner verschieben. Dann ist das erste ausgewählte Dokument, das erste Dokument der NotesViewEntryCollection.

Das könnte sogar alles per Script gehen, wenn viele Voraussetzungen erfüllt sind.

Dirk

Da gibt's aber eine ganze Reihe an Fallstricken zu beachten.

Die Ordner müssen private Ordner sein, damit sich die User nicht ins Gehege kommen. Die lassen sich aber nicht so einfach per Script anlegen. Wenn du eine andere Sortierung brauchst lassen sich diese Ordner nur sehr schwer bis gar nicht anpassen.

Diese Lösung muss m.E. gut überlegt sein. Ich gebe zu, dass ich so ein Konstrukt in grauer Vorzeit auch mal eingesetzt habe und es eigentlich bis heute auch ohne größere Probleme funktioniert. Allerdings waren an der Stelle bisher keinerlei Anpassungen notwendig.

Axel


Titel: Re: Reihenfolge der Dokumente in db.unprocessedDocuments
Beitrag von: pram am 11.02.10 - 17:21:35
So wie ich dich verstehe, willst du das erste Dokument "gesondert" behandeln?

Kannst du den "Adminstrator" der das Tool einsetzt, soweit erziehen (ich weiß, ist schwierig), dass er das Caret auf das erste Dokument setzt.

Gruß
Roland
Titel: Re: Reihenfolge der Dokumente in db.unprocessedDocuments
Beitrag von: Thomas Schulte am 11.02.10 - 17:47:48
Sortierung von DC's .... http://www.notes411.com/dominosource/faq.nsf/0/6AA9F702B045D61D80256D6E007AC1D4!OpenDocument
Titel: Re: Reihenfolge der Dokumente in db.unprocessedDocuments
Beitrag von: Hatschi am 12.02.10 - 09:08:24
Guten Morgen zusammen!

Da sind ja noch eine Menge Anregungen gekommen. Aber weil der Agent aus mehreren Ansichten heraus gestartet werden soll, wäre eine Anpassung der Sortierungen für über 10 verschiedene Ansichten mit entsprechend viel Aufwand verbunden. Der Link von Thomas vervollständigt Bernhards Idee die Positionierung zu beschleunigen.

Rolands Hinweis den Admin zu erziehen würde ich ja vielleicht noch hinbekommen. Dann habe ich mich aber gefragt, wie ich denn an das ausgewählte Dokument komme und noch einmal die Klassen geprüft. In der NotesUIView bin ich dann fündig geworden. Mit notesUIView.CaretNoteID könnte ich das Dokument holen, auf dem der Cursor steht. Dieses Dokument dient dann zur Vorgabe für die anderen markierten zu ändernde Dokumente.
Am einfachsten wäre dann die Auswahl der zu ändernden Dokumente von unten nach oben. Dann bleibt das Caret automatisch auf dem richtigen Dokument stehen.

Es hat mal wieder Spaß gemacht mit euch zu diskutieren! Vielen Dank dafür.

Bernd