Domino 9 und frühere Versionen > Entwicklung
Benutzerstatistik in Ansicht darstellen
g202e:
Hallo,
eine Frage für Freaks: Ich habe eine Datenbank in Pflege bekommen in der eine Lesestatistik implementiert wurde. Ohne jetzt zu sehr ins Detail zu gehen, funktioniert das ungefähr folgendermaßen: Wenn ein Benutzer ein Dokument öffnet so wird in einem Profildokument dieses Benutzers die Dok-ID und der Zeitstempel für jedes gelesene Dokument festgehalten. Jede Nacht läuft dann ein Agent, welcher aus den vielen im Laufe des Tages angefallenen Profildokumenten der Benutzer die entsprechenden Werte ausliest und nun jeweils ein Statistik- Dokument pro "normalem" Datenbankdokument erzeugt, in dem alle Lese-Zeitpunkte für das betreffende Dok abgelegt werden. Der gleiche Agent bearbeitet dann noch ein Statistikdokument pro Benutzer, in dem das Datum verewigt wird. So hat man dann je "normalem" Dokument ein Statistikdokument in dem alle Lesevorgänge für dieses Dokument registriert sind und man hat je Benutzer ein Dokument in dem alle Daten erfaßt sind an denen der entsprechende Benutzer in der Datenbank aktiv war(jeweils als Datum/Zeit-Liste gespeichert). Nun möchten die Chefs gern, daß ich eine Ansicht erzeuge, die eine Art "Hitparade" der Dokumente darstellt; klingt erstmal nicht so schlimm(einfach die Anzahl der Zeiteinträge pro Dok aufsummieren), aber die möchten nun auch noch eine "Hitparade" nach Monaten haben. Also welches Dokument wurde in welchem Monat am meisten gelesen. Da ich aber pro Dokument nur ein Statistikdokument habe, weiß ich jetzt nicht, wie ich das basteln soll: Ich habe also z. B. eine Liste für Dok A wo drin steht, daß dieses Dok am 23.09.02 8:00; 24.09.02 9:15; 01.10.02 16:25 gelesen wurde. Wie kriege ich es jetzt so gebacken, daß in der Ansicht zu sehen ist, daß Dok A im September 2mal und im Oktober 1 mal gelesen wurde ?
??? ??? ???
Rob Green:
ich habe mal etwas ähnliches machen müssen, eigentlich fast das Gleiche, wenn ich es mir so recht überlege.
Dazu bin ich folgendermaßen vorgegangen:
- im ersten Schritt pro "Hit" auf ein Document ein separates Zählerdoc erstellt
- am nächsten Tag die Hitdocs des Vortages eingesammelt per Agent (am nächsten Tag deswegen, da es ja immer sein kann, daß User auch um 23:00 noch tätig sind und der Agent bei einem 19:00 Uhr Lauf einige Hits "vergessen" würde dadurch...und Agent auf 23:30 zu stellen wollten wir nicht, da zu knapp an Tagesgrenze), den einzelnen Dokumenten als Report zugeordnet und die Hitdocs nach Zählung jeweils gelöscht.
(Man muß sich das wie eine Arbeitszeit DB vorstellen = jeder User ist einmal registriert, er kann an einem Tag mehrere Meldungen erfassen, die am Ende des Monats die Zeitabrechnung ergeben, wobei die Einzelmeldungen gelöscht werden können)
- dann wurden die Report Docs erstellt:
2 Report Doc Typen für 1 Dokument
- 1 Report Typ = "Monatsreport" => Hits pro Tag in einem Monat
- 1 Report Typ = "Quartalsreport" => Hits pro Monat in 1 Quartal
somit hat man am Ende des Jahres
1 Dokument
12 Monatsreportdoc
1 Jahresreportdoc
wobei die Monatsreports bei uns nach Ablauf des Quartals gelöscht wurden
Das Monatsreportdoc besteht aus
- der Zuordnung zum eigentlich Doc
- 31 Tagesfeldern (numerisch)
- Monat
- Jahr
Das Quartals/Jahresdoc besteht aus
- der Zuordnung zum eigentlich Doc
- 12 Monatsfeldern (numerisch)
- 4 Quartalsfeldern (numerisch)
- Jahr
das Script dazu findest Du im Dateianhang, damit Du mal einen Einblick bekommst.
Das Script selbst ist sehr linear aufgebaut udn hat an sich nur einen kleinen Trick: damit ich nicht einzeln die anzusprechenden Tagesfelder in den Code reinhacken mußte, habe ich das zu befüllende Feld schlicht dynamisch fokussiert:
--- Code: ---stelle das upzudatende Tagesfeld ein
Dim feldname As String
feldname = "tag" & Cstr(tag)
'belege das gueltige Tagesfeld mit dem Wert 1, da es der erste Hit ist
Dim item As NotesItem
Set item = newdoc.ReplaceItemValue( feldname, 1 )
--- Ende Code ---
das Attachment:
g202e:
Danke Rob,
das ist für mich ein sehr guter Einstieg. Habe wohl auch soweit alles verstanden. Die entstehenden Dokumente(Reports) sind dann aber nicht zum Anschauen gedacht, oder? Denn man hat ja dann z. B in einem Monatsreport lauter kryptische Feldnamen tag1 .... tag31, die dann vielleicht auch noch alle irgendwelche Werte haben. Aber jetzt wirds für mich eigentlich interessant: wie stelle ich denn nun meine Statistiken in den Ansichten dar, vor allem, wie komme ich zu einer Systematik? Noch anders ausgedrückt: wie spreche ich die einzelnen in meinen Reports gespeicherten Werte an? Ich kann ja schlecht iegendwie in der Ansicht eine Abfrage formulieren wie: Zeige mir in Spalte1 das "jahr", in Spalte2 den Monat, zeige mir in Spalte3 "tag1" an und lasse dabei das "tag" weg und zeige mir in Spalte4 den Wert von "tag1" an. Denn ich weiß ja zum Zeitpunkt der Ansichts-Erstellung nicht, welche "tag.."-Felder denn überhaupt Werte enthalten ? (Ich hoffe, du verstehst, was ich meine!)
Rob Green:
das ist richtig, daß man nicht die einzelnen Tage in den Ansichten unbedingt zeigen sollte, es sei denn, es ist von höchstem Interesse (btw, wie die Feldnamen nun geschrieben werden, ist so ziemlich egal, oder welche Rolle spielt das bei Deinen Überlegungen, da Du darauf hingewiesen hast?).
Dennoch, wir hatte sehr wohl die Reportdocs zur Ansicht freigegeben. Und das auf zweierlei Weise:
- einmal aus dem Userdoc selbst ein Link auf die dazugehörigen Detail-Statistiken ...dabei wurden die Reports dynamisch in einen personal folder "geschoben" und man konnte dort die einzelnen Monats- und Quartals/Jahresdocs einsehen
- für den schnellen Überblick diente uns eine Monatsreport Ansicht aller Docs..dort wurden die am meisten gelesenen Docs des Monats sortiert angezeigt..über die Reports
- das gleiche Spielchen hatten wir für die einzelnen Quartale des Jahres, wo die kumulierten Hits bezogen aufs Quartal die Hottest Docs angezeigt wurden
Insofern ergab es sich aus den Anforderungen, daß eine tagesbezogene Hitansicht unnötig war, denn der Sinn dieses Moduls war es zu zeigen, welche Docs=User&Skills am meisten "nachgefragt" sind. Und da sind nun einmal tagesbezogene Auswertungen blanker Unsinn.
Insofern auch an Dich die Frage:
a.) was ist der Hintergund dafür, daß man unbedingt eine tagesbezogene Hit-View benötigt
b.) und wenn es in der Tat unumgänglich ist, nach welcher Art sollen die Docs sortiert angezeigt werden..sprich: was ist der Inhalt der in den Docs hinterlegten Informationen (Arbeitsanweisungen, News, Stats i.e.S., Beschlüsse, QM Docs, ...)? Je nach Typus ergeben sich mögl. Alternativen zur sinnvollsten Anzeige
g202e:
Danke, für die schnelle Antwort.
Du hast natürlich recht, daß eine Aufschlüsselung auf die einzelnen Benutzer pro Tag wenig Sinn macht; ist so wohl auch nicht gemeint. Ich habe im Moment wohl auch deshalb Verständnisprobleme, weil ich deinen Scriptcode erstmal auf meine vorhandenen Benutzerdoks angepaßt habe(läuft übrigens prima). Aber auch wenn ich für die Hit-Ansichten (bei den Dokumentenstatistiken) nachher die mittels des Script-Agenten erstellten Reports nutze, fehlt mir im Moment das Verständnis, wie ich aus einem "tag13" im Oktober-Report für Dok A mit dem Wert 25 und einem "tag14" mit dem Wert 3 in einer Ansicht zwei Zeilen erzeuge aus denen man dann ersieht, daß das Dok A am 13.Oktober 25mal und am 14.Oktober 3mal gelesen wurde. Vielleicht kannst Du mir ja noch ne kleine Anregung geben.?
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln