Notes链接到当前数据库中使用XPage从其他数据库打开文档

时间:2013-10-17 03:26:28

标签: xpages xpages-ssjs

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

在发送给审核人的文件批准电子邮件中,我包含2个链接。一个用于普通的http(Web浏览器)链接,另一个是notes链接。脚本fr在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开放文档

如果我使用上面的方法,那么文档将使用NSF2中的XPage打开,这不是我想要的。我试过了here这个例子并像我一样做了

  

注释://nsf1server/nsf1.nsf/xpage.xsp OpenXPage&安培; documentId = UNIDOFTHEDOCUMENTINNSF2

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

2 个答案:

答案 0 :(得分:2)

至少,您还需要action参数,否则数据源将使用设计中指定的操作,默认情况下为createDocument。这将导致忽略documentId,因为始终为新文档分配新ID。指定操作(例如openDocumenteditDocument会强制数据源也查看documentId(如果提供,databaseName)以确定正在访问哪个文档。< / p>

答案 1 :(得分: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的人员编写的。具体来说,我的猜测是Henry Newberry写的。它是一个相当有趣的设计的一部分 - 共享资源数据库中的XPages,主要数据,然后是其他两个数据库中的附件和工作流程(配置和跟踪)。

在我看来,XPages实际上是用于设计和数据分离,数据也是分散的(甚至可能在非Notes位置!)