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

使用Lotusscript实现Database1-Agent向Database2-Agent传参的可行性咨询

LotusScript 跨库触发代理并传参的实现方案

该需求完全可以实现,以下是3种常用的落地方式,可根据实际业务场景选择:

方式1:字符串拼接传参(轻量参数优先选择)

通过NotesAgent.Run方法原生支持传递1个字符串类型参数,你可以将多个字段值用自定义分隔符拼接后传递,目标代理接收后拆分即可。

  • Database1(调用侧)代码示例:
Dim session As New NotesSession
Dim db2 As NotesDatabase
Dim targetAgent As NotesAgent
Dim paramStr As String
' 此处的doc为当前上下文的源文档,根据自己的业务逻辑获取
paramStr = doc.fieldA(0) & "|" & doc.fieldB(0)
' 替换为实际的服务器名称、Database2的文件路径
Set db2 = session.GetDatabase("ServerName", "path/Database2.nsf")
Set targetAgent = db2.GetAgent("TargetAgentName")
' 运行目标代理,第三个参数为传递的拼接字符串
Call targetAgent.Run(paramStr, 0, "")
  • Database2(接收侧)代码示例:
Dim session As New NotesSession
Dim currentAgent As NotesAgent
Dim paramArr As Variant
Set currentAgent = session.CurrentAgent
' 读取传入的参数
paramStr = currentAgent.ParameterDocInit
' 按分隔符拆分得到两个字段值
paramArr = Split(paramStr, "|")
fieldAVal = paramArr(0)
fieldBVal = paramArr(1)
' 后续业务逻辑编写

方式2:临时文档传参(多参数/复杂参数优先选择)

如果需要传递的参数数量多、或者存在非字符串类型的参数,可以在目标库创建临时文档存储所有参数,将文档NoteID作为参数传递,目标代理根据ID读取文档获取参数即可,用完可删除临时文档避免冗余数据。

  • Database1调用侧代码示例:
Dim session As New NotesSession
Dim db2 As NotesDatabase
Dim tempParamDoc As NotesDocument
Dim targetAgent As NotesAgent
Set db2 = session.GetDatabase("ServerName", "path/Database2.nsf")
' 在Database2中创建临时参数文档
Set tempParamDoc = db2.CreateDocument
tempParamDoc.Form = "TempParam"
tempParamDoc.fieldA = doc.fieldA(0)
tempParamDoc.fieldB = doc.fieldB(0)
Call tempParamDoc.Save(True, False)
Set targetAgent = db2.GetAgent("TargetAgentName")
' 传递临时文档的NoteID
Call targetAgent.Run(tempParamDoc.NoteID, 0, "")
  • Database2接收侧代码示例:
Dim session As New NotesSession
Dim currentAgent As NotesAgent
Dim tempParamDoc As NotesDocument
Set currentAgent = session.CurrentAgent
Set db = session.CurrentDatabase
' 读取传入的NoteID,获取临时文档
noteID = currentAgent.ParameterDocInit
Set tempParamDoc = db.GetDocumentByID(noteID)
' 直接读取字段值
fieldAVal = tempParamDoc.fieldA(0)
fieldBVal = tempParamDoc.fieldB(0)
' 用完删除临时文档,可选操作
Call tempParamDoc.Remove(True)

方式3:环境变量传参(同服务器轻量场景可选)

如果两个数据库部署在同一台Domino服务器上,也可以通过NotesSession.SetEnvironmentVar方法存储参数,目标代理读取后删除即可,不适合高并发场景使用,容易出现参数覆盖冲突。


注意事项

  1. 需保证运行Database1代理的用户身份,拥有Database2的访问权限以及目标代理的执行权限
  2. 目标代理的属性设置中,需要开启「允许远程调用」的选项
  3. 选择第一种拼接参数的方式时,确保自定义分隔符不会出现在fieldA、fieldB的实际业务值中,避免拆分错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:09:12