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)
我想通过 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)