【问题标题】:How can I run from an agent to another agent running on a different domino server?如何从一个代理运行到另一个运行在不同多米诺服务器上的代理?
【发布时间】:2022-09-16 03:55:24
【问题描述】:

简要描述;简介

我们确实有多个 Domino 服务器 (DS)。每个DS 都托管多个邮件数据库。我想删除特定的邮件数据库。删除过程由可以运行DS 代理的外部应用程序触发。外部应用程序也可以将参数传递给代理。

基础架构概述

我有 1 个笔记数据库 (ND),名为 delete-database.nsf。这个ND 与 3 个 Domino 服务器 (DS) 一起复制,我们称它们为 DS1DS2DS3

工作流程

外部应用程序将使用参数 mailserver 和 mailfilename 在 DS1 上运行 agent1。假设 mailserver-parameter-value 是 DS2 并且 mailfilename-parameter 是 mail\doe.nsf

由于我无法删除与代理当前正在运行的DS 不同的邮件数据库,因此我在副本数据库(基于邮件服务器参数)上调用agent2 并传递邮件文件名。

Agent2 应该收到 malfilename 参数并删除邮件数据库,该数据库与它本身位于同一 DS

问题

我怎样才能从DS1 上的agent1 呼叫另一个名为agent2DS2 代理,并传递邮件文件名等参数。

我试过这个,但它没有调用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


【解决方案1】:

到目前为止,最简单的方法是向其他数据库发送一封内部邮件,其中包含您需要的所有信息。在另一个数据库中,您创建一个在邮件到达时运行的代理,检查它是否来自正确的来源,然后执行您需要的任何内容。您只需将您的数据库设置为邮件数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 2013-06-07
    • 2020-07-04
    • 1970-01-01
    • 2017-08-21
    • 2010-12-19
    • 2012-03-22
    相关资源
    最近更新 更多