AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
05.12.21 - 18:17:37
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino 10
| |-+  ND10: Entwicklung (Moderatoren: eknori, fritandr, koehlerbv, Tode)
| | |-+  View Events vor dem Database Script
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: View Events vor dem Database Script  (Gelesen 1647 mal)
JoeeoJ
Frischling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 29



« am: 23.06.20 - 16:18:16 »

Moin zusammen,

weiss eigentlich jemand, warum beim Öffnen einer Notes Database immer die Databasescript Initialize-Postopen  Events nicht als Erstes ausgeführt werden, sondern die NotesDesign Elements die angezeigt werden sollen z.B.  Views im Framework  etc.  Ist es historisch bedingt - so war's halt damals - oder gibt es tatsächlich einen technischen Grund ?

Der Database Script hat ja eine eigene Session, könnte also aus dieser Sicht, so wie man es intuitiv vermutet, vollständig, das heisst mit
abgeschlossenem Postopen Event gestartet werden, bevor eines der anderen Notes DesignElement (Runables) startet. Wenn es keinen technischen Grund gibt, sollte man HCL vorschlagen das zu ändern, dann könnte man im Database Script Postopen Event einige Sachen generisch vorbereiten, die man dann in den anderen Sessions in dieser DB nicht nochmal wieder machen müsste. Z.B. Db eigene temporäre Directory mal ausmisten, Liste der Gruppen und Rollen des aktuellen Users auf diesem PC ermitteln, ... usw.

Gruss, Joe
« Letzte Änderung: 23.06.20 - 16:31:09 von JoeeoJ » Gespeichert

Gruss, Joe
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1224



« Antworten #1 am: 23.06.20 - 18:16:15 »

View-Open und DB-Open sind unterschiedliche Scriptaufrufe, darüber kann man keine Werte global, innerhalb von LotusScript, bereitstellen.
Und selbst wenn, beim Datenbank öffnen würde man den Code immer ausführen, bei einer Nutzeraktion nur einmal und für periodische Aufgaben gibt es Agenten Wink
« Letzte Änderung: 23.06.20 - 18:22:55 von jBubbleBoy » Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.11
--
Nur ein toter Bug, ist ein guter Bug!
JoeeoJ
Frischling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 29



« Antworten #2 am: 24.06.20 - 09:58:29 »

Hallo, jBubbleBoy, danke für deine Antwort.

Ich glaube ich habe es nicht gut genug erklärt:

Ich weiss durchaus, das es keine direkte Möglichkeit gibt, zwischen verschiedenen Notes-Sessions in einer Datenbank in LotusScript kinen direkten Datenaustausch durchzuführen.
 
Aber z.B. habe ich Anwendungen die temporär lokal eine Tages-Subdir anlegen und dort ebenfalls temporär Dateien ablegen. Diese Subdir muss dann am nächsten Tag gelöscht werden. Wenn ich das im Databasescript machen könnte, wäre gesichert, das alle DB-Sessions die danach laufen, davon ausgehen können, das es aktuell und erledigt ist. Aber da der DB-Script eben nicht vorher ausgeführt wird, muss in allen Notes Desgin Objekte die betroffen sein könnten der Test wieder und wieder laufen, um sicherzustellen, das man einen saubere Stand hat.

Das ist nur ein Beispiel. Ein anderes Beispiel ist, das ich gerne in einem Profildokument oder der Notes.ini  der DB für den aktuellen User seine Rollen, Grupppen und/oder andere Daten beim Einstieg ermitteln und ablegen könnte. Alle anderen Notes-Design Elemente könnten solche  Daten als Standardprozedur aus dem Profildokument/INI  lesen und man hätte einen sauberen Stand - Der Start der DB würde dieses Userprofil sauber einmal definieren und man muss sich keine Gedanken um mögliche Änderung z.B. der Rollen etc. während der Laufzeit machen.
 
Oder ein autoamtischer Mini-Daten-Import beim Start der Db ... oder ....

Und da wäre es sehr schön wenn der Databasescript zuerst vollständig durchlaufen (incl. Postopen) bevor irgend etwas anderes ausgeführt wird.
« Letzte Änderung: 24.06.20 - 10:00:44 von JoeeoJ » Gespeichert

Gruss, Joe
Peter Klett
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 2704



« Antworten #3 am: 24.06.20 - 10:50:26 »

Auch wenn das so funktionieren würde. könnte ich mir vorstellen, dass das DatabaseScript nicht zuverlässig läuft, wenn die Datenbank beim Schließen von Notes noch offen ist. Beim nächsten Starten von Notes ist die Datenbank immer noch offen, ob dann das DatenbankScript wieder läuft? Habe es nicht probiert, könnte mir aber vorstellen, dass es jetzt oder in einer späteren Version nicht mehr läuft.

Ich würde mir eine Function in eine Bibliothek bauen, die genau das macht, was Du brauchst. Zusätzlich schreibt die an eine Stelle, wann das zuletzt gelaufen ist (INI?). Jedes relevante Objekt ruft diese Function auf, die zuerst prüft, ob sie heute schon gelaufen ist. Falls ja, legt die sich gleich wieder hin. Du musst dann zwar den Funktionsaufruf in jedes Objekt schreiben, hast aber nur eine einzige Stelle, an der Du die Function ändern kannst/musst.
Gespeichert
JoeeoJ
Frischling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 29



« Antworten #4 am: 24.06.20 - 11:29:04 »

Hallo Peter Klett,

danke für die Antwort.

Natürlich setzt mein Vorschlag voraus, das der Databasescript immer läuft, wenn die Datenbank geöffnet wird. Wenn man in der DB im Designer arbeitet, ist natürlich die DB schon offen und der DatabseScript wird im Client nicht ausgeführt, wenn man die Kachel aktiviert. Das muss man wissen und als Entwickler gegebenfalls die DB im Designer schliessen (nicht remove) , dafür gibt es ja auch extra eine Option. Das passiert aber dem normalen User nicht.

Oder gibt es noch andere Konstellationen, bei denen der Databaseskript nicht läuft ?  Das wäre dann in der Tat nicht gut für meinen Vorschlag.

Dein skizzierter Weg ist wohl der Weg der meisten Notesentwickler, dies zu lösen, meiner natürlich auch. Ja der Test ist ... Peanuts,  um im Banker Jargon zu sprechen, aber man muss dann auch immer Libraries dafür laden, die man möglicherweise an der Stelle nicht braucht oder man baut Monster-Libraries, wo immer alles drin ist.Daher finde ich den vollständige Ausführung des Database-Skript- Vorschlag einfacher und man kann nichts vergessen, wenn es schon im Database Skript gemacht wurde.
Gespeichert

Gruss, Joe
it898ur
Senior Mitglied
****
Offline Offline

Beiträge: 472


« Antworten #5 am: 24.06.20 - 12:13:19 »

Hallo,

es gibt tatsächlich Situationen, wo das Datenbankskript nicht geladen wird. Und zwar wenn man Dokumente / Ansichten über einen direkten Link öffnet (z. B. aus einem Info-Mail heraus). Daher waren wir in unserem Projekte gezwungen genau den von Peter beschriebenen Weg zu nutzen.

Viele Grüße

André
Gespeichert
Ralf_B
Aktives Mitglied
***
Offline Offline

Geschlecht: Männlich
Beiträge: 125


« Antworten #6 am: 24.06.20 - 12:19:38 »

Stimmt:Wenn die DB im Designer offen ist läuft das DB Script nicht im Client = Entwicklerproblem und betrifft keine Anwender.
Das DBScript läuft auch nicht wenn die DB per Script geöffnet wird.
Ich meine auch wenn die DB per Gehe zu Ansicht" geöffnet wird komt das DB Script nicht zum Einsatz.

Ansonsten ermitteln wir die Userrollen im DB Script bei sehr vielen Datenbanken ohne Probleme.
Auch eine ev. notwendige Umleitung auf eine andere DB geht mit dem DB Script.
Ev. mal Postopen benutzen und für die Sache mit dem Ordner ev. VBScript per LotusScript aufrufen.
PS:
Vorsicht bei Profildokumenten per User: Die Anzahl ist begrenzt.
Gespeichert
JoeeoJ
Frischling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 29



« Antworten #7 am: 25.06.20 - 12:23:00 »

Danke für eure Antworten

Tja, dachte es wäre nur ein Umstellung in der Reihenfolge der Eventaufrufe ... aber der DatabaseScript müsste dann immer beim Öffnen einer NotesDB ausgeführt werden.

Das würde also in der Tat bedeuten, das HCL dann dort mehr ändern müsste. Kann schlecht abschätzen, ob das sehr viel Aufwand ist. Und es ist ja in Notes Ur-Zeiten (Notes 4.5 glaube ich) implementiert worden. Naja, mal ansprechen sollte man es bei HCL, aber wenn die HCL'er dann aussehen, als würden Sie auf einer Zitrone kauen ... sollte man den Vorschlag schnell diplomatisch zurückziehen.  Wink
Gespeichert

Gruss, Joe
Ralf_B
Aktives Mitglied
***
Offline Offline

Geschlecht: Männlich
Beiträge: 125


« Antworten #8 am: 25.06.20 - 13:15:57 »

Es wäre schon cool wenn in LScript, wie das in anderen Systemen auch geht, man einfach selbst Events erstellen könnte. Das wäre mal ein Fortschritt.
Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1224



« Antworten #9 am: 25.06.20 - 14:06:37 »

Es wäre schon cool wenn in LScript, wie das in anderen Systemen auch geht, man einfach selbst Events erstellen könnte. Das wäre mal ein Fortschritt.
Was geht nicht?
Nenne mal Beispiele, was Du gerne machen möchtest.
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.11
--
Nur ein toter Bug, ist ein guter Bug!
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: