Java DocumentContext不返回值

Java DocumentContext不返回值,java,lotus-notes,lotus-domino,lotus,lotusscript,Java,Lotus Notes,Lotus Domino,Lotus,Lotusscript,我在Lotus Notes中的Java代理中使用以下代码: Session session = getSession(); AgentContext agentContext = session.getAgentContext(); Document doc = agentContext.getDocumentContext(); 但它将docvariable返回为Null值。我在表单的postsave中初始化LotusScriptcode中的代理。当我在postsave by ToolsR

我在Lotus Notes中的Java代理中使用以下代码:

Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Document doc = agentContext.getDocumentContext(); 
但它将docvariable返回为
Null
值。我在表单的postsave中初始化
LotusScript
code中的代理。当我在postsave by ToolsRun宏中使用它时,它运行良好。但通过LotusScript的Run方法启动它根本不起作用


有人能帮我知道原因吗?

当您使用run方法运行代理时,您可以通过ParameterDocId属性在代理中传递NoteId并访问它

我没有很好的解释为什么会这样,但是,DocumentContext属性的行为会根据代理运行的上下文而有所不同。

下面是示例。你们可以通过消除的过程来确定发生了什么。在新邮件到达之前或从浏览器中,您不是在视图中运行。这意味着没有为您的代理建立DocumentContext

您可以在PostSave事件中执行以下操作:

Sub Postsave(Source As Notesuidocument)
    Dim ns As New NotesSession, agent As NotesAgent
    Set agent=ns.CurrentDatabase.GetAgent("PostSave Agent")
    Call agent.Run(Source.Document.NoteID)
End Sub
然后在代理中执行此操作以获取通过的文档:

Database db = agentContext.getCurrentDatabase();
Agent agent = agentContext.getCurrentAgent();
Document doc = db.getDocumentByID(agent.getParameterDocID());

请检查以下需要完成的步骤

  • 检查代理是否应使用服务器ID或管理员ID签名
  • 需要在代理属性中检查以Web用户身份运行(属性)
  • 检查代理目标-查看窗口或无

  • 谢谢但我最后做的是,将代码更改为用公式语言调用代理,它成功了。。不知道为什么。。但确实是这样,我在一个特工身上用过。我打电话给的探员是postsave的。