Xpages:从 SSJS 调用的 LotusScript 代理中的错误陷阱

Xpages: error trapping in LotusScript Agent called from SSJS

我正在从 xpage 的 PostSave 事件(取自 IBM Wiki 模板)中调用 lotusscript 代理。我想添加一些错误捕获,这样如果发生某些事情(我有 "attachments missing... run compact to fix this" 错误的情况),应用程序至少会警告用户出现问题。

是否需要将错误捕获代码放入代理中?它属于 xpages 的 PostSave 事件吗?

这样调用代理:

<xp:this.data>
    <xp:dominoDocument var="pageDocument" formName="fPage"
        action="openDocument" ignoreRequestParams="false"
        computeWithForm="onsave">
        <xp:this.postSaveDocument><![CDATA[#{javascript:var agent = database.getAgent("XPSavePage");
agent.runOnServer(pageDocument.getDocument().getNoteID());}]]>
        </xp:this.postSaveDocument>
    </xp:dominoDocument>
<xp:this.data>

代理运行良好,但在某些文档上,由于某些转换错误和其他情况(很可能与持久性相关),我们确实存在附件丢失错误。但是我不知道如果 Lotus Script 代理中发生错误如何捕获...

我推荐使用的方法:

agent.runWithDocumentContext(doc); // << ssjs

然后在代理中,您将使用最后的更改更新文档:

设置文档 = ses.documentContext ' << ls

其他选项是使用 DocumentDataSource

的 属性 webQuerySaveAgent

除了 DocumentContext,代理对调用环境的可见性为零。 因此,您需要将任何状态写回文档并在 XPage 中检查该值。 如果您想非常谨慎,可以将状态设置为 'AgentFailed' 并让代理使用 'success' 或更具体的错误更新它。这样您就可以捕获代理无法写回文档的错误。

当您在使用它时:通过删除代理运行时的启动来改进您的应用程序的响应时间 - 在 bean 中编写您的代码。 SessionAsSigner 为您提供您可能需要的更高权限