Das Notes Forum
Domino 9 und frühere Versionen => ND6: Administration & Userprobleme => Thema gestartet von: Pascal am 13.04.05 - 14:43:53
-
Hi all
meine neuste Herausforderung besteht darin, private Ansichten in einer DB auf dem Server zu löschen. Wie gehe ich da vor, kennt jemand ein Tool oder Agenten mit dem ich dies tun kann?
Sonst muss ich bei jedem User die ID holen und mit seiner ID in die DB und die Ansichten löschen
vielen Dank
-
Du könntest eine Schleife über alle Ansichten machen und das Flag IsPrivate abfragen.Ein NotesView.Remove löscht dann die Ansicht.
-
hmm, kann dann nicht nur der User diesen Agenten ausführen, oder sieht der Server private Ansichten?
-
die Aktion sollte schon unter der User-ID laufen, denn je nach Einstellung werden die privaten Ansichten in der Desktop gespeichert und an die kommst Du vom Server aus nicht ran.
-
die Ansichten sind alle auf dem Server gespeichert
-
Der Server sieht diese Ansichten. Allerdings muss man per Reader-feld feststellen, wer Zugriff auf dei Ansichten hat. Sollen denn alle privaten Ansichten entfernt werden oder geht es darum, User, die es nicht mehr gibt, rauszulöschen? Für letzteres kann man den AdminP verwenden (ich weiss allerdings auch nicht auswendig, wie man den anstossen muss)
-
Felder in Ansichten ?? verstehe ich nicht
-
Warum verschickst du nicht einfach eine Mail rum.
Die hat einen Button.
Und über das Klicken dieses Buttons löscht dann jeder User seine private Ansicht selber.
Ich glaub das ist der klassische Weg.
-
wie soll das gehen? es handelt sich um ca 150 DBs, und nicht alle User benutzen die gleichen, so einfach wird das nicht sein, bin aber mit der Entwicklung in " Verhandlung" , dass die privaten Ansichten in einer DB gelöscht werden wenn die DB geschlossen wird
-
Na ja, das Design-Dokument, das die Ansicht definiert, hat Reader-Felder, und damit wird gesteuert, wer diese Ansichten zu sehen bekommt. Ich habe da allerdings den Eindruck, dass Du Dich für die Lösung dieser Aufgabe unbedingt schlauer machen solltest, sonst wird das problematisch
-
wie soll das gehen? es handelt sich um ca 150 DBs, und nicht alle User benutzen die gleichen, so einfach wird das nicht sein, bin aber mit der Entwicklung in " Verhandlung" , dass die privaten Ansichten in einer DB gelöscht werden wenn die DB geschlossen wird
Ich find das hört sich vernünftig an.
So geht das natürlich auch.
Die Leute wissen vermutlich, wie sie das machen und Pascal ist aus der Verantwortung raus. So machen die das mit mir seit Jahren. :-[
Gibt es eigentlich keine Möglichkeiten - vielleicht mit der C - API - auf alle privaten Ansichten auf dem Server zuzugreifen und zwar mit Server oder Admin-ID?
Geheimnissvolle hacks mit feststehenden DocIDs?
Ich meine - ich weiss dass persönliche Ansicht heisst, dass es eben nur für den User ist - egal ob auf desktop oder server gespeichert. Aber einen Hack sollte es meiner Meinung nach schon geben, weil diese persönlichen Ansichten sind wirklich nicht gerade update-freundlich.
Axel
-
In der KB gibt es Beispiele, wie man auf private Ansichten zugreifen kann.
-
Frage an die Profiprogrammierer: ist es nicht so das man versuchen sollte wenn irgendwie möglich die privaten Ansichten zu vermeiden?
Ich bin ja absoluter Programmierlaie und habe das einmal eingesetz (2002 unter R5) und hatte damals das Problem das sich der Ansichtsindex dort nicht immer korrekt aktualisiert hat....
-
Dieses Problem mit dem Aktualisieren taucht gerne bei lokal gespeicherten Ansichten auf. Grundsätzlich spricht nichts gegen private Ansichten, ausser dass es in gewissen Versionen Bugs mit SPOFUs gab, die man allerdings umgehen kann. Etwas komplex ist es, wenn Aenderungen an solchen Ansichten gemacht werden sollen (programmatisch meine ich). Und problematisch ist es natürlich, wenn solche Ansichten dann - vor allem auf dem Server - als Datenschrott einfach liegen bleiben. Aber wie schon erwähnt gibt es dafür ein AdminP Verfahren.
-
Vielen Dank für die Infos, Jens...
-
Gerne
-
In meiner derzeitigen Projekt sind private Ansichten von meinem Kollegen Bernd v.e.r.b.o.t.e.n.. Ich hätte das an 2 Stellen eingesetzt, aber er ist länger in dem Projekt. Er begründet das mit dem Problemen von deployen von Designupgrades. Die alten privaten Ansichten müssen erst gelöscht werden, bis sich die neue Gestaltung durchsetzt. Da er bis jetzt ansonsten sehr angenehm in der Zusammenarbeit ist, hab ich da nicht weiter rumgenöhlt.
Früher hab ich das oft eingesetzt und es hat nie Beschwerden mit Indexen gegeben.
Sobald man in Ansichten User-spezifische Informationen anzeigen will, ist es ein sinnvolles Feature, da Usernamen in serverseitigen Ansichtsformeln nicht funktionieren.
Workarounds über Ordner, Leserfelder, kategorisierte Ansichten und ähnliches sind manchmal ein bischen umständlich oder nicht anwendbar, find ich.
Über das Thema, dass Usernamen in Ansichtsformeln nicht funktionieren, hatte ich mal eine schwachsinnige Diskussion bei meiner alten Firma mit einer Kollegin. Diese Diskussion dauerte 2 Wochen und war ein erster wichtiger Einblick in die Irrationalität dieser Branche.
-
Eine Möglichkeit das programatisch zu lösen, wäre in das PostOpen der DB ein Skript einzufügen.
Dieses muss prüfen, ob private Ansichten von diesem User vorhanden sind und wenn ja, muss das Erstelldatum dieser privaten Ansicht, mit dem Änderungsdatum der Vorlageansicht verglichen werden.
Ist die Vorlage neuer, dann private Ansicht löschen, Meldung an User ausgeben und DB schliessen.
Danach wird beim nächsten Öffnen der DB die entsprechende private Ansicht anhand der Vorlage neu erstellt.
-
In meiner derzeitigen Projekt sind private Ansichten von meinem Kollegen Bernd v.e.r.b.o.t.e.n.. I
Sobald man in Ansichten User-spezifische Informationen anzeigen will, ist es ein sinnvolles Feature, da Usernamen in serverseitigen Ansichtsformeln nicht funktionieren.
für R5 war das mal richtig für R6 gilt man nehme @setviewinfo.
-
oh. Das kannte ich nicht. Das ist wirklich gut. Die meisten in der Umgebung haben aber noch R5.
-
@setviewinfo hat aber einige Nachteile, genauso wie eingebettete Ansichten.
z.B. Schnellsuche, Volltextsuche nur so als Beispiel