Xpages:从SSJS调用的LotusScript代理中的错误捕获

时间:2015-04-01 17:38:01

标签: xpages xpages-ssjs

我从xpage的PostSave事件中调用了一个lotusscript代理(取自IBM Wiki模板)。我想添加一些错误捕获,所以如果发生了什么事情(我有#34;附件丢失的情况......运行压缩以解决这个问题"错误),应用程序至少会警告用户出现了问题。

我是否需要将错误捕获代码放入代理?它是否属于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>

代理工作得很好,但在某些文档中,由于某些转换错误和其他情况(最常见的是与persitence相关),我们确实有错误的附件错误。但是我不清楚如果在Lotus Script代理中发生错误时如何捕获...

2 个答案:

答案 0 :(得分:3)

我建议使用方法:

剂的 runWithDocumentContext (DOC)。 //&lt;&lt; SSJS

然后在代理中,您可以使用上次更改来更新文档:

设置doc = ses.documentContext&#39; &LT;&LT; LS

其他选项是使用DocumentDataSource的 webQuerySaveAgent 属性

答案 1 :(得分:2)

代理对调用环境具有ZERO可见性,缺少DocumentContext。 因此,您需要将任何状态写回文档并在XPage中检查该值。 如果您需要非常谨慎,请将状态设置为“AgentFailed”,然后让代理使用“成功”或更具体的错误更新它。这样,您可以捕获代理无法写回文档的错误。

当您使用它时:通过取消代理运行时的开始来改进应用程序的响应时间 - 在bean中编写代码。 SessionAsSigner为您提供了可能需要的提升权限