You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Domino服务器DS1的agent1调用DS2的agent2并传递参数

跨Domino服务器调用代理并传递参数的解决方案

问题分析

你当前的代码无法跨服务器调用agent2,核心原因是runWithDocumentContext仅支持在本地服务器执行代理,不能触发远程服务器上的代理运行;同时未保存的临时文档也无法被远程代理正确读取。

修正方案

通过创建并保存参数文档+RunOnServer方法实现跨服务器代理调用,具体代码和步骤如下:

1. 修改agent1代码(DS1上)

Dim ses As New NotesSession
Dim db2 As NotesDatabase
Dim agent2 As NotesAgent
Dim docTemp As NotesDocument
Dim serverName As String
Dim mailFile As String

' 获取外部应用传入的参数
serverName = ses.GetEnvironmentString("mailserver", True)
mailFile = ses.GetEnvironmentString("mailfilename", True)

' 连接目标服务器的delete-database.nsf
Set db2 = New NotesDatabase(serverName, "delete-database.nsf")
If Not db2.IsOpen Then
    Call db2.Open("", "")
End If

' 创建并保存参数文档(必须保存才能被远程代理读取)
Set docTemp = New NotesDocument(db2)
docTemp.Form = "TempParam" ' 可创建专用表单标记临时参数文档
docTemp.mailfilename = mailFile
Call docTemp.Save(True, False)

' 触发目标服务器上的agent2
Set agent2 = db2.GetAgent("agent2")
If Not agent2 Is Nothing Then
    ' 传递参数文档的NoteID,让agent2通过ID读取参数
    Call agent2.RunOnServer(docTemp.NoteID)
End If

2. 修改agent2代码(DS2上)

Dim ses As New NotesSession
Dim db As NotesDatabase
Dim docTemp As NotesDocument
Dim mailfilename As String
Dim noteID As String

Set db = ses.CurrentDatabase
' 获取agent1传递的参数文档NoteID
noteID = ses.ParameterDocID

If noteID <> "" Then
    Set docTemp = db.GetDocumentByID(noteID)
    If Not docTemp Is Nothing Then
        mailfilename = docTemp.mailfilename(0)
        
        ' --- 执行邮件数据库删除逻辑 ---
        Dim mailDB As NotesDatabase
        Set mailDB = New NotesDatabase("", mailfilename)
        If mailDB.IsOpen Then
            Call mailDB.Remove
        End If
        ' --- 删除逻辑结束 ---
        
        ' 可选:删除临时参数文档,避免冗余数据
        Call docTemp.Remove(True)
    End If
End If

关键注意事项

  • 权限配置:确保DS1上的代理运行账号拥有DS2上delete-database.nsf的创建文档权限、DS2上的代理运行权限,以及删除目标邮件数据库的权限。
  • 文档必须保存:参数文档必须执行Save操作,否则远程代理无法读取到参数内容。
  • 正确触发方法:RunOnServer是跨Domino服务器触发代理的唯一有效方法,run/runWithDocumentContext仅支持本地服务器执行。
  • 参数传递可靠性:通过NoteID传递参数文档能避免服务器复制延迟带来的文档查找问题,是最稳妥的跨服务器参数传递方式。

内容的提问来源于stack exchange,提问作者Baku Bakar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 02:05:26