0

我有一个带有 2 个数据库的应用程序。NSF1 仅包含设计(Xpages、脚本库等),NSF2 包含包括数据在内的所有内容。用户只能访问 NSF1,NSF2 中的任何文档都将通过 NSF1 XPages 显示。

在发送给审阅者的文档批准电子邮件中,我包含 2 个链接。一个是普通的 http(网络浏览器)链接,一个是注释链接。这个脚本在 NSF1 中。

我对http链接没有问题。它类似于以下内容,并且可以正常工作:

http://www.nsf1hostname.com/xsp/nsf1server!!nsf1.nsf/xpage.xsp?databaseName=nsf2server!!nsf2.nsf&documentId=AAAEXAMPLEONLY08283162&action=editDocument

但我一直在构建笔记链接。在我之前的应用程序中,所有内容(设计和数据)都在一个 NSF 中,我可以只使用 doc.getNotesURL() 并且我会得到一个如下所示的链接:

笔记://nsfserver/nsf.nsf/0/UNIDOFTHEDOCUMENT0123456789?OpenDocument

如果我使用上述方法,那么文档将使用 NSF2 中的 XPage 打开,这不是我想要的。我在这里试过这个例子,我喜欢

笔记://nsf1server/nsf1.nsf/xpage.xsp?OpenXPage&documentId=UNIDOFTHEDOCUMENTINNSF2

但这对我来说似乎不合逻辑,因为 NSF2 的服务器和数据库未在链接中指定,我不知道将这 2 个参数放在哪里,或者链接中是否允许它们。单击该链接只会导致空 XPage,因为 ti 不知道 UNID。所以有人知道吗?

4

2 回答 2

2

至少,您还需要该action参数,否则数据源将使用设计中指定的操作,默认情况下为createDocument. 这将导致documentId被忽略,因为新文档总是被分配一个新的 ID。指定一个动作(例如openDocument,或editDocument强制数据源也查看documentId(并且,如果提供的话databaseName)来确定正在访问哪个文档。

于 2013-10-17T13:11:44.827 回答
1

我相信,当您指示数据源时,您所要做的就是指定要从哪个数据库中提取数据。

下面的代码片段在我们共享资源数据库的自定义控件的面板中使用。您可以通过任何您想要的编程方式确定 documentId,包括将其作为参数传递到 Notes URL。数据库名称也是如此。

    <xp:this.data>
        <xp:dominoDocument var="poDoc" formName="PurchaseOrder"
            action="editDocument" documentId="#{javascript:sessionScope.newPODocUNID}">
            <xp:this.databaseName><![CDATA[#{javascript:getDb("tamisDb")}]]></xp:this.databaseName>
        </xp:dominoDocument>
    </xp:this.data>

这段代码不是我写的,而是 Teamwork Solutions 的人写的。具体来说,我的猜测是亨利纽伯里写的。这是一个相当有趣的设计的一部分 - 共享资源数据库中的 XPages,主要数据,然后是另外两个数据库中的附件和工作流(配置和跟踪)。

在我看来,XPages 确实旨在与设计和数据分开使用,数据也是分散的(甚至可能在非 Notes 位置!)

于 2013-10-22T21:10:26.997 回答