DocumentContext не возвращает значение - PullRequest
2 голосов
/ 27 марта 2012

Я использую следующий код в агенте Java в Lotus Notes:

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

Но он возвращает переменную docvariable в качестве значения Null.Я инициализирую агент в LotusScript коде в сообщении формы.Когда я использую его в postsave от ToolsRun MAcro, он работает нормально.Но инициирование его методом Run в Lotus Script вообще не работает.

Может кто-нибудь помочь мне узнать, в чем может быть причина?

Ответы [ 3 ]

2 голосов
/ 27 марта 2012

Когда вы запускаете агент с помощью метода Run, вы можете передать NoteId и получить к нему доступ в агенте с помощью свойства ParameterDocId.

У меня нет хорошего объяснения, почему именно так, однако свойство DocumentContext ведет себя по-разному в зависимости от контекста, в котором работает агент.

1 голос
/ 27 марта 2012

Вот документация для 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 голосов
/ 29 марта 2012

Пожалуйста, проверьте, что необходимо выполнить следующие шаги ...

  1. Убедитесь, что агент должен быть подписан с ID сервера или ID администратора
  2. Необходимо проверить пользователя «Запуск от имени» (свойство) в свойстве агента.
  3. Проверьте вашу цель агента - окно просмотра или нет
...