【发布时间】:2022-09-16 03:55:24
【问题描述】:
简要描述;简介
我们确实有多个 Domino 服务器 (DS)。每个DS 都托管多个邮件数据库。我想删除特定的邮件数据库。删除过程由可以运行DS 代理的外部应用程序触发。外部应用程序也可以将参数传递给代理。
基础架构概述
我有 1 个笔记数据库 (ND),名为 delete-database.nsf。这个ND 与 3 个 Domino 服务器 (DS) 一起复制,我们称它们为 DS1、DS2 和 DS3。
工作流程
外部应用程序将使用参数 mailserver 和 mailfilename 在 DS1 上运行 agent1。假设 mailserver-parameter-value 是 DS2 并且 mailfilename-parameter 是 mail\doe.nsf 。
由于我无法删除与代理当前正在运行的DS 不同的邮件数据库,因此我在副本数据库(基于邮件服务器参数)上调用agent2 并传递邮件文件名。
Agent2 应该收到 malfilename 参数并删除邮件数据库,该数据库与它本身位于同一 DS。
问题
我怎样才能从DS1 上的agent1 呼叫另一个名为agent2 的DS2 代理,并传递邮件文件名等参数。
我试过这个,但它没有调用agent2,也没有传递参数。
agent1的代码:
Dim ses As New NotesSession
Dim db2 As NotesDatabase
Dim agent2 As NotesAgent
Dim docTemp As NotesDocument
Set db2 = New NotesDatabase( "DS2/Certifier", "delete-database.nsf" )
Set agent2 = db2.GetAgent( "agent2" )
Set docTemp = New NotesDocument( db2 )
' Parameters
docTemp.mailfilename = "mail\doe.nsf"
Call agent2.runWithDocumentContext( docTemp )
agent2的代码:
Dim ses As New NotesSession
Dim docTemp As NotesDocument
Dim description As String
Dim mailserver As String
Dim mailfilename As String
Set docTemp = ses.DocumentContext
mailfilename = docTemp.mailfilename
' * Delete mail file part *
' * ... *
' * Delete mail file part *
【问题讨论】:
-
如果数据库是副本,只需在数据库中创建一个文档。该文档将被复制到所有其他服务器当代理运行(在任何服务器上)时,它会检查视图以查看是否有任何文档正在等待它执行操作。您可能想要添加安全性,例如读者字段或签名(或两者)。
-
谢谢,这是解决此问题的全新方法。以前从未这样做过,所以我必须找出代码的样子。但是为了更好地理解,读者字段和签名的附加安全性的背景思想是什么?你有更多的信息/解释吗?
-
@Tode 在他对您的其他问题的回答中描述的内置 NotesAdministrationProcess.DeleteReplicas 功能确实是一种更好的方法。
-
@RichardSchwartz 好的。但我想知道的是,例如,代理在 Domino Server 1 上运行,带有 NotesAdministrationProcess.DeleteReplicas。但是邮件数据库位于 Domino Server 2 上,并且没有其他 Domino Server 的任何副本。这行得通吗?我的意思是,最大的挑战是删除邮件数据库,无论是否在与代理相同的多米诺服务器上。
-
Notes/Domino 已经存在了 30 多年。许多很多组织都面临着有效删除邮件数据库的问题。 adminp 进程的发明是为了让这样的事情变得更容易。它将通过共享的 admin4.nsf 数据库将删除请求复制到其他服务器,每个服务器都会处理该请求。如果一切设置正确,这将起作用。当然,会有延迟。第一个服务器必须弄清楚它需要向哪些服务器发送请求。然后在下一个周期会有复制。然后服务器将执行删除。
标签: lotus-notes lotus-domino lotusscript lotus hcl