AgentContext 不是 found/null

AgentContext not found/null

我想通过 proton 接口 运行 来自 node.js 的 Java 代理。遗憾的是我无法让 Agent Context 工作

Node.js代码

async function callEvalAgent(query) {
  const agent = await db.useAgent({ name: "search" });
  console.log("got the agent");

  const requestDocUNID = await db.createDocument({
      document: {
        Form: "searchRequest",
        query
      }
  });
  console.log("queryDoc created");
  console.log(requestDocUNID);

  await agent.run({
    selection: { search: { query: "Form = 'document'" } },
    context: { unid: requestDocUNID }
  });

  ...
}

输出:

got the agent
queryDoc created
B72CA8819EDA0691C1258592003BFBE5

...

代理代码

public class JavaAgent extends AgentBase {

    public void NotesMain() {

      try {
          Session session = getSession();
          AgentContext agentContext = session.getAgentContext();
          Document requestDoc = agentContext.getDocumentContext();
          String query = requestDoc.getItemValueString("query");
          
         ...

      } catch(Exception e) {
          System.out.println("bla");
          e.printStackTrace();
      }
   }
}

当运行输入代码时,我在

处得到一个NullPointerException
String query = requestDoc.getItemValueString("query");

在 Domino 服务器上,因为 agentContext 为空。如果我之后手动检查它,我的视图中会出现具有给定 UNID 的文档。

我做错了什么?使用与 HCL 示例 here

中相同的方法

文档应该更清楚。

文档应该说明提供给代理的可选文档可供使用 ParameterDocID 的代理使用。

在 Java 代理中执行如下操作:

    final Session session = getSession();
    final Database db = session.getCurrentDatabase();
    final AgentContext agentContext = session.getAgentContext();
    final Agent agent = agentContext.getCurrentAgent();
    final String noteid = agent.getParameterDocID();
    final Document context = db.getDocumentByID(noteid);

在 LotusScript 代理中执行如下操作:

    Dim session As New NotesSession
    Dim agent As NotesAgent
    Dim db As NotesDatabase
    Dim context As NotesDocument

    Set agent = session.CurrentAgent
    Set db = session.CurrentDatabase

    Set context = db.GetDocumentByID(agent.ParameterDocID)