2

我已经在 Agent 中编写了 lotusscript 代码,我需要通过单击 Xpage 中的按钮来运行代理。

我怎么能达到?

提前致谢

4

2 回答 2

9

此解决方案的一个问题可能是,当您想要使用在代理中操作的数据时,您必须重新加载 xpage 中的注释文档。这可以通过以下代码行来完成:

        var ag = database.getAgent("agentname");
    if(ag != null){
      var id = doc.noteid;
      ag.runonserver(id);
      doc.recycle();
      doc = database.getdocumentbyid(id);
       // check if the agent did its job.
       // if so do stuff otherwhise report this to the user?
    }

从版本 8.5.2 开始,代理类添加了一个新方法

agent.runWithDocumentContext(NotesDocument doc);

此方法使用 xPage 的内存文件。因此,您无需将文档保存在代理本身中,但您可以进行更改并退出代理代码。xpage 可以直接使用所做的更改。这可以为您省去很多麻烦,例如检查代理是否完成了他的工作、重新加载文档等。

为此,您必须将代理的选项设置为

  1. 以网络用户身份运行
  2. 允许受限操作
  3. 代理类型为“代理列表选择”,目标为“无”
于 2012-11-05T19:10:33.230 回答
8

只需在点击事件上调用它(代理使用什么语言没有区别)

database.getAgent("agentName").run() or database.getAgent("agentName").runOnServer()

请注意,代理的运行时必须是这样的 在此处输入图像描述

于 2012-11-05T18:03:14.850 回答