Lotus notes Java代理在启动后未接收更新

Lotus notes Java代理在启动后未接收更新,lotus-notes,lotus-domino,lotusscript,lotus-formula,lotus-designer,Lotus Notes,Lotus Domino,Lotusscript,Lotus Formula,Lotus Designer,我正在使用公式代码调用Java代理: @Command([RunAgent]; "My Agent"); 代理程序正确运行并读取其参数。代理仍在运行时,某些文档可能会更改。代理看不到更改并一直读取旧值。具体来说,处理可能会被取消,所以我试图告诉我的代理停止。我通过更改我专用于向代理传递参数的文档中的值来实现这一点: Call doc.ReplaceItemValue("Pause","True") Call doc.Save(True, False) 这就是代理所做的: Session s

我正在使用公式代码调用Java代理:

@Command([RunAgent]; "My Agent");
代理程序正确运行并读取其参数。代理仍在运行时,某些文档可能会更改。代理看不到更改并一直读取旧值。具体来说,处理可能会被取消,所以我试图告诉我的代理停止。我通过更改我专用于向代理传递参数的文档中的值来实现这一点:

Call doc.ReplaceItemValue("Pause","True")
Call doc.Save(True, False)
这就是代理所做的:

 Session session = getSession();
 AgentContext agentContext = session.getAgentContext();
 Database db = agentContext.getCurrentDatabase();
'Reload the document with the parameters
 paramDoc = db.getDocumentByID(paramDoc.getNoteID());
但是代理只看到默认值。它似乎有一个数据库的图像,因为它是在调用它的时候


关于如何通知代理有关新值或暂停/取消其线程的任何线索?

请查看NotesDocument类的刷新方法。您需要在检查代理中的值之前调用该函数,以获取任何更新的值。

要读取当前值(放弃缓存),请使用:

这是针对LotusScript的,您正在代理中使用Java。因此,我猜它将(编辑以包括nempoBu4提出的澄清):


这是我尝试的第一件事。NotesDocument没有这样的方法。也许你是说你是对的。在这种情况下,我可以考虑做您想要做的事情的唯一方法是在每次您想要/需要检查值是否已更改时重新打开文档。诺蒙德的回答就是一个很好的例子。如果愿意,您也可以使用DocumentID而不是NoteID。但是这会将文档完全从数据库中删除@啊,这不会从数据库中删除文档
paramDoc.recycle()
仅从
数据库
对象缓存中删除文档。我尝试了此操作并再次重新加载了对象,但我收到了NotesException“对象已被删除或回收”!我添加了更多的代码,以明确如何使用它。这里似乎没有解决方案。我必须使用环境变量。
noteid = paramDoc.getNoteID()
Delete paramDoc
paramDoc = db.getDocumentByID(noteid);
String noteid = paramDoc.getNoteID();
paramDoc.recycle();
paramDoc = db.getDocumentByID(noteid);
//Check the new value