2012-03-26 65 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. 檢查您的代理目標 - 查看窗口或無