2012-03-26 64 views
2

我使用下面的代码:DocumentContext在Java代理在Lotus Notes中没有返回值

Session session = getSession(); 
AgentContext agentContext = session.getAgentContext(); 
Document doc = agentContext.getDocumentContext(); 

但它返回DOCVARIABLE为Null值。我在表格的邮政编码LotusScript中初始化代理。当我通过ToolsRun MAcro在邮件中使用它时,它运行良好。但通过Lotus Script的Run方法启动它根本不起作用。

任何人都可以帮助我知道可能是什么原因?

回答

2

使用Run方法运行代理时,可以传递NoteId并使用ParameterDocId属性在代理中访问它。

对于这种方式,我没有很好的解释,但是,DocumentContext属性的行为有所不同,具体取决于代理运行的上下文。

1

这里是documentation for 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()); 
+0

谢谢。但我最终做的是,改变代码在代码中调用代理和它的工作..不知道为什么......但它确实。 – 2012-04-12 10:11:30

+0

我在代理中使用它。我打电话的代理人是来自邮件。 – 2012-04-14 01:48:25

0

请检查下面的步骤需要完成...

  1. 检查代理应该用服务器标识或管理员标识
  2. 需要检查代理属性中以Web用户身份运行(属性)。
  3. 检查您的代理目标 - 查看窗口或无