Domino 9 und frühere Versionen > Entwicklung
Dokumente schützen
Painter:
???
Hallo,
ich möchte für eine Datenbank einen Schutzmechanismus implementieren.
Sobald ein Feld innerhalb eines Dokumentes einen bestimmten Status hat soll es nicht mehr änderbar sein.
Ist das ohne Script in Notes 4.57a möglich?
Wenn nein, kann mir einer das entsprechende script zukommen lassen?
Gruss und besten Dank im Voraus
Axel:
Hi,
auf die Schnelle fallen mir da nur Autorenfelder ein.
Beim Speichern des Dokumentes fragst du das Statusfeld ab und bei einem bestimmten Wert machst du das Autorenfeld leer.
Wichtig dabei ist, das die User maximal das Recht Autor haben dürfen.
Mit Script ist das etwas aufwendiger, aber ich glaube wir hatten hier im Forum schon eion paar brauchbare Ansätze. Benutze doch mal die Suche.
Axel
koehlerbv:
--- Zitat von: Painter am 22.07.03 - 18:04:29 ---Ist das ohne Script in Notes 4.57a möglich?
Wenn nein, kann mir einer das entsprechende script zukommen lassen?
--- Ende Zitat ---
Vorab: Ich halte das für ein wirklich grundsätzliches Übel - einen fremden Code zu verwenden, ist - Copyright vorausgesetzt - nicht sträflich. Aber bevor man ihn einbaut, muß man ihn *wirklich* verstanden haben und ohne Probleme auch an die eigenen Bedürfnisse anpassen können. Tips zum Algorithmus erbitten (und ihn dann selber umsetzen) - okay, bei Fehlern im Code um Hilfe bitten - natürlich okay, aber "Ich kann's nicht - macht mir das jemand" ist ein absolutes no-no! Das harmloseste daran ist noch, daß das fast zwangsläufig für den "Autor" der DB, der sich da - bei seinem Kenntnisstand - "irgendwas" einbaut, fast zwangsläufig über kurz oder lang tierisch nach hinten losgeht. Ich gehe dabei sogar soweit zu sagen: Kopiert Euch auch nix aus der DesignerHelp, was Ihr nicht *wirklich* verstanden habt ...
Jetzt aber zur Antwort (zu der, die ich vertreten kann ;-) :
Eine gute Lösung sind in der Tat Autorenfelder, in diesem Fall berechnete.
Beispiel: Vorgabewert ist @UserName (damit wenigstens der Ersteller Zugriff hat;-)
Eingabeumsetzung: Wenn Status = NichtmehränderbarStatus dann nix, sonst Liste der Autoren
Hierfür muß man sich natürlich hinsichtlich der ACL Gedanken machen, damit man was vernünftiges ins Autorenfeld schreiben kann (Gruppen in der Regel).
Und wie Axel schon gesagt hat: Für den Normaluser maximal Autorenrechte in der DB vergeben, sonst funktioniert das nicht.
Mehr als empfehlenswert: In der ACL sollte eingestellt sein, daß der AdminP Leser- und Autorenfelder verändern darf. Falls mal jemand heiratet und rezertifiziert werden muß ...
Eine andere Variante wäre das Verwenden von Hide-When-Formulas - wenn zum Beispiel nur noch bestimmte Felder nicht mehr verändert werden dürfen:
Die Felder müssen dann doppelt vorliegen - einmal bearbeitetbar, einmal nur berechnet zur Anzeige. Die bearbeitbaren werden angezeigt, wenn Status <> NichtmehränderbarStatus, die anderen, wenn der Status = NichtmehränderbarStatus. Ist aber wirklich kein Sicherheitsfeature: Wenn dies in der ACL nicht verboten ist, könnten sich pfiffige User 'nen Agent schreiben und damit Felder belegen.
Gleiches gilt für das Verwenden unterschiedlicher Teilmasken: Eine für das Bearbeiten, eine mit Feldern, die nur angezeigt werden. In Abhängigkeit vom Status blendest Du die passende Teilmaske ein.
Mit Script ginge das natürlich alles noch viel detaillierter und letztendlich sogar leichter, aber wenn Deine Anwendung überschaubar ist in ihren randbedingungen, sollten @functions in Feldern wirklich reichen.
HTH,
Bernhard
Axel:
--- Zitat ---Vorab: Ich halte das für ein wirklich grundsätzliches Übel - einen fremden Code zu verwenden, ist - Copyright vorausgesetzt - nicht sträflich. Aber bevor man ihn einbaut, muß man ihn *wirklich* verstanden haben und ohne Probleme auch an die eigenen Bedürfnisse anpassen können. Tips zum Algorithmus erbitten (und ihn dann selber umsetzen) - okay, bei Fehlern im Code um Hilfe bitten - natürlich okay, aber "Ich kann's nicht - macht mir das jemand" ist ein absolutes no-no! Das harmloseste daran ist noch, daß das fast zwangsläufig für den "Autor" der DB, der sich da - bei seinem Kenntnisstand - "irgendwas" einbaut, fast zwangsläufig über kurz oder lang tierisch nach hinten losgeht. Ich gehe dabei sogar soweit zu sagen: Kopiert Euch auch nix aus der DesignerHelp, was Ihr nicht *wirklich* verstanden habt ...
--- Ende Zitat ---
Hi Bernhard,
oberflächlich betrachtet kann ich dir recht geben. Aber...
Warum das Rad immer wieder neu erfinden ? Sicherlich ist es hilfreich, den Code zu verstehen, den man da verwendet.
Gerade in den modernen Programmiersprachen (ob Notes mit seinem Script zu den modernen Programmiersprachen zu zählen ist, sei mal dahin gestellt) gibt es immer mehr den Trend zur Modularisierung. Die Module sind mit definierten Schnittstellen ausgerüstet. Ich als Programmierer muß eigentlich nur die Schnittstellen kennen und was das Modul oder Objekt tut. Was innerhalb passiert, oder in welcher Sprache das Modul erstellt wurde interessiert mich nicht.
Ich bin mir im klaren, dass dieser Vergleich hinkt. Aber ich habe auch schon Code verwendet, bei dem mit die Funktionsweise nicht 100% klar.
Axel
koehlerbv:
@Axel:
Deinem Ansatz stimme ich voll und ganz zu - man muß das Rad nicht immer wieder neu erfinden. Und ja: Ich verwende auch Routinen, die beispielsweise von meinen Kollegen stammen und die ich als in sich gekapselte Lösungen übernehme (und mich in der Regel auch darauf verlasse, daß das auch ohne meine erneute Kontrolle funktioniert).
Mir ging es aber nicht um solche Lösungen, sondern genau um die Fälle - wie sie manchmal mehrfach am Tag hier im Forum - und woanders auch - vorkommen: Jemand hat ein nicht-triviales Problem in seinem speziellen Kontext. Wenn nun jemand erwartet, daß jemand anderes ihm "seinen" Code schreibt, finde ich das nicht gerade fair, Beispiel: http://www.atnotes.de/index.php?board=7;action=display;threadid=9911
Geht jemand her und baut irgendwelchen Code ein, der er irgendwo gefunden hat - und sei es in der DesignerHelp - sollte er vorher schon prinzipiell verstehen, was da passiert. Er muß den Code ja für seinen speziellen Kontext *anpassen* - und das geht nun mal nicht ohne Verständnis.
Mir ging es also um die nicht-gekapselten Routinen, nicht um eine prinzipielle Weigerung, Code zu veröffentlichen. In Fällen wie diesem oder dem im oben zitierten Thread mit Anfragen a la "Kann mir jemand den Code schreiben" kann ich nur wirtschaftlich denken: Wir können - gegen Bares, uns schreibt nämlich auch niemand den Code für lau.
In allen anderen Fällen: Ich helfe wie alle anderen auch sehr gerne !
Ciao,
Bernhard
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln