Domino 9 und frühere Versionen > ND8: Entwicklung
Mit Agent auf andere DB zugreifen
yannick:
Super, klappt wunderbar. Also nochmal vielen Dank an alle Helfer! Schön, dass hier auch einem Neuling weitergeholfen wird :)
yannick:
Hallo zusammen,
da ich nicht noch einmal einen neuen Thread aufmachen wollte, und es auch gut hier rein passt schreibe ich es einfach hier. Zur Angelegenheit:
In unserer Datenbank werden nur Dokumente einer Form gespeichert (es ist quasi wie ein Formular). Dieses Formular hat mehrere sections. Unter bestimmten Umständen (die hier jetzt unwichtig sind) wird in einer anderen DB (DB2) ein Dokument, das über einen primary key eindeutig zu dem Dokument in unserer DB zugeordnet werden kann, erstellt. Im Moment müsste der User, der den Antrag in unserer DB stellt, am Ende das "Ergebnis" einmal in DB2 eintragen, und einmal in die entspr. section aus dem Formular unserer DB. Da der User aber i.d.R. seine Ergebnisse nur in DB2 einträgt wollten wir diese Felder mit unseren Feldern "synchronisieren".
Da ich, wie gesagt, noch relativ neu in Lotus Notes/Domino (ca. 2-3 Wochen) bin wollte ich euch meine Ideen dazu vorstellen. Der Grund ist, dass wir morgen ein Meeting darüber haben und wir quasi die Besitzer der anderen DB davon überzeugen müssen, dass diese Synchronisation nötig ist, und eben dementsprechend auch Möglichkeiten vorstellen müssen was wir uns bisher gedacht haben. Hier also meine Ideen:
1. Infos manuell über Button aus DB2 holen:
Einen Button in unser Formular integrieren, der (nur) für dieses Dokument die section im Formular mit den Daten aus DB2 füllt.
Voraussetzung: Jeder User unserer DB, der den Button betätigen kann (können nur bestimmte Rollen) bräuchte Lesezugriff
auf DB2.
2. Infos periodisch über Agent aus DB2 holen:
Einen Agent programmieren, der periodisch (z.B. wöchentlich) die sections aller Dokumente unserer DB mit den Daten aus den
jeweiligen Dokumenten der DB2 füllt.
Voraussetzung: Unsere DB bräuchte Lesezugriff auf DB2 und müsste dort als Trusted Server eingetragen sein.
3. Trigger in DB2
Einen Agent in DB2 einbauen, der, sobald die entsprechenden Felder in DB2 gefüllt wurden, diese an das entsprechende
Dokument in unserer DB sendet.
Ich denke Nummer3 wäre am besten, wird aber wohl nicht umsetzbar sein, da dies Programmieraufwand für die Leute der DB2 bedeutet. Nummer2 wird wahrscheinlich wegfallen, da Nummer1 (meiner Meinung nach) wohl am einfachsten umzusetzen wäre.
Meine Fragen wären jetzt zum einen, ob es vielleicht noch andere Möglichkeiten gibt, die wir von unserer Seite her umsetzen können? Und zum anderen welche Voraussetzungen bestehen müssten, damit diese Möglichkeiten umsetzbar wären (Stichwort Access etc.)?
Ich hoffe das "Problem" ist einigermaßen rübergekommen, falls ihr sonst noch etwas wissen müsstet einfach nachfragen. Und schonmal vielen Dank!
Peter Klett:
Deine Frage ist schwierig zu beantworten, da das Umfeld völlig unklar ist. Im vorhergehenden Thread dreht sich alles um Excel, jetzt schreibst Du "Stichwort Access". Meinst Du damit MS Access oder den Zugriff auf die andere Datenbank?
Wenn die gewünschten Daten in der db2 in Notes gehalten sind (also Items in Dokumenten, keine Dateianhänge), würde ich in die Maske der db1 Felder "berechnet zur Anzeige" einbauen, die die Informationen aus der db2 beim Öffnen des Dokuments aktuell holen. Diese Informationen werden allerdings nicht im Dokument der db1 gespeichert. Zugriff auf db2 wäre wie bei Deiner Idee 1. Da folgt die nächste Unklarheit: Wozu werden die Informationen gebraucht? Nur zum Anschauen, wenn das Dokument geöffnet ist, oder soll damit auch im Hintergrund gerechnet werden und die Daten müssen in der db1 gespeichert sein?
Der Trigger in db2 hat einen Nachteil, wenn db1 aus irgendeinem Grund nicht verfügbar ist (Server läuft nicht, Zugriff fehlt o.ä.), erfolgt keine Übertragung der Änderung. Welches Event holt das später nach?
Ein periodischer Agent, der die Daten abgleicht, ist m.E. die beste Wahl, außer die Daten müssen realtime aktuell sein. Und dann ist da wieder die Unklarheit von oben: liegen die Daten in Excel, wird es mit dem periodischen Agenten schwierig (das hatten wir schon diskutiert).
EDIT: Bei "berechnet zur Anzeige" müssen natürlich alle Zugriff auf db2 haben, hatte überlesen, dass es nur ein bestimmter Kreis Benutzer sein soll. Wie häufig ändern sich die Daten? Wenn niemand auf den Button drückt, bleiben die alt.
yannick:
Okay, wie gesagt, die Fragen beantworte ich gern.
Also bei den "Daten" handelt es sich um ganz normale Textfelder (also hier geht´s nicht um Excel!). Die DB2 ist ebenfalls in Notes gehalten. Also ich meine den Zugriff auf die DB2. Diese Daten werden "leider" in der DB2 gebraucht, um auch mit ihnen zu rechnen. Sie müssen also in unserer DB gespeichert werden; sie werden z.B. auch in ein Excel-Sheet exportiert. Die Daten müssen daher auch nicht realtime aktuell sein. Es würde genügen zum einen den Button einzufügen, mit dem man "manuell" die Daten aktualisieren kann und zum anderen bevor die Daten in das Excel-Sheet exportiert werden einen Agent laufen zu lassen, der dies automatisch für alle Dokumente macht. Der Export in Excel wird manuell angestoßen, somit wäre das gleiche bei dem Agent, der die Dokumente vorher aktualisiert.
Was würden wir für diese Methode also benötigen?
- alle "Rollen", die den Button betätigen können brauchen Lesezugriff auf DB2
- programmatische Namen der Views und Felder, von denen wir die Daten ziehen wollen
- Servername und Filepath
Ist das alles was wir dafür benötigen?
Peter Klett:
ich meine ja, unter der Voraussetzung, dass die Benutzer überhaupt auf den Server der db2 zugreifen dürfen (was natürlich in "Lesezugriff auf db2" enthalten, aber eine ganz andere Baustelle ist)
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln