HCL Notes / Domino / Diverses > Entwicklung
Notes Agent programmatisch erstellen
Andreas1977:
Hallo,
nachdem ich (mit eurer Hilfe) mit Lotusscript eine Mail-In Datenbank anlegen kann, würde ich diese Funktion gerne erweitern.
Ich möchte gern einen neuen Agenten in dieser Mail-In Datenbank erstellen.
Könnt ihr mir sagen ob das möglich ist?
Bisher konnte ich nur Lesezugriff auf die Liste der Agenten in der Dokumentation finden. Ich konnte nirgends Funktionen finden, um einen Agent mit Programmcode zu erzeugen.
Vielen Dank schonmal für eure Hilfe.
eknori (retired):
Das geht nur über das C API SDK https://opensource.hcltechsw.com/domino-c-api-docs/howto/user_guide/Agents/
it898ur:
Hallo,
Notes-Designelemente verteilt man normalerweise nicht per Skript. Daher wirst Du auch keine Möglichkeit finden Agenten programmtechnisch zu erzeugen. Im besten Fall kann man Agenten von einer Datenbank in eine andere kopieren.
Das korrekte Vorgehen wäre hier aber das Anlegen einer Schablone und anschließend der neuen DB einfach die Schablone zuweisen. Dann klappt es auch mit der automatischen Verteilung von Agenten und anderen Designelementen.
Viele Grüße
André
Tode:
Ich stimme zu, dass man Agenten normalerweise nicht programmatisch verteilt, trotzdem kann man das tatsächlich rein mit LotusScript hinbekommen.
Bevor ich den Lösungsansatz erläutere würde ich aber nach dem Anwendungszweck fragen. Mir ist in meinen knapp 30 Jahren mit Notes / Domino kein Fall untergekommen, wo ich einen Agenten hätte "generisch" mittels LotusScript erstellen müssen.
Sowas macht man normalerweise mit einer angepassten Schablone, die den gewünschten Agenten enthält und ggf. Konfigurationsdokumenten, um das Verhalten des Agenten zu steuern.
Das höchste der Gefühle, was ich bisher benötigt habe, war, dass man LotusScript-Code in einer Konfigurationsmaske hinterlegt, und diesen dann mittels "Evaluate" innerhalb eines Agenten ausführt.
Aber nun zurück zur Frage:
Nutze mal den Designer Client, um einen Agenten als DXL zu exportieren (Tools - DXL Utilities - Exporter). Du erhältst ein XML File, in dem Du den Quellcode gut erkennen kannst... Diesen Quellcode kannst Du nun fast beliebig anpassen (Maskierung von Sonderzeichen beachten) und dann den Agenten mittels NotesDXLImporter einfach in eine beliebige Datenbank importieren... Der XML Quellcode, den Du importierst kommt dabei entweder aus einem File, was irgendwo liegt, oder aus einem In-Memory NotesStream...
Hier mal ein Auszug aus einer meiner Klassen für generellen DXL Import (zu finden in meiner N4Y Toolbar unter https://torsten.link in der ScriptLibrary "N4Y.ImportExportLib" in der Klasse "N4YDXLImporter"). Ist zwar so nicht lauffähig, aber damit solltest Du ein Gefühl dafür geben, wie das geht:
--- Code: ---Dim dxlImport As NotesDXLImporter
Dim streamXml As NotesStream
Set streamXml = g_ses.CreateStream
Call streamXml.Open( Me.xmlFilePath )
Set dxlImport = g_ses.Createdxlimporter(streamXml, Me.dbImport)
dxlImport.Documentimportoption = Me.m_limportOptions( N4Y_DXLTYPE_DOCUMENTS )
dxlImport.Designimportoption = Me.m_limportOptions( N4Y_DXLTYPE_DESIGN )
dxlImport.Aclimportoption = Me.m_limportOptions( N4Y_DXLTYPE_ACL )
dxlImport.Replacedbproperties = Me.m_limportOptions( N4Y_DXLTYPE_DBPROPERTIES )
dxlImport.Compilelotusscript = Me.m_limportOptions( N4Y_DXLTYPE_COMPILE )
dxlImport.Replicarequiredforreplaceorupdate = Me.m_limportOptions( N4Y_DXLTYPE_REPLICAREQUIRED )
On Error GoTo ErrorImport
Call dxlImport.Process()
On Error GoTo ErrorRoutine
--- Ende Code ---
In Deinem Fall würdest Du DesignImportOption = DXLIMPORTOPTION_REPLACE_ELSE_CREATE setzen und alle anderen auf DXLIMPORTOPTION_IGNORE statt das irgendwoher aus irgendeiner Konfiguration auszulesen.
ascabg:
Man kann den Vorrednern nur zustimmen, einen Agenten nicht auf diese Art und Weise in einer Datenbank zu erstellen.
Am Einfachsten ist es, du hast ein Template, auf dem basierend du die neue Datenbank erstellst. Und in diesem Template ist der
betreffende Agent bereits enthalten.
Und mit Set dbNewNotesDb = dbTemplate.CreateFromTemplate("Server", "Filename", Trus/False, [max. Size])
erstellst du dann die neue Datenbank basierend auf dem Template.
Andreas
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln