能否在Xpages中识别出replication\save冲突

Can replication\save conflicts be identified in Xpages

如果我知道在 Xpages 中打开的笔记文档创建了一个 replication\save 冲突重复文档,然后在 Xpages 中搜索文档 ID,那么两个(或所有)文档都会显示在 Xpage 设置中我的应用程序中的特定 Notes 视图。但是有什么方法可以告诉我哪个是父文档,哪个是复制响应文档?我需要能够在 Xpages 前端看到它,而不仅仅是在 Notes 数据库后端。

如果您使用 @IsAvailable($Conflict) 作为选择公式创建视图,您可以识别冲突。他们有一个映射到父文档的 $REF 字段。

因为XPages允许我们在一个XPage上有多个数据源,所以打开冲突应该是可行的,对于冲突和父文档(非冲突)有dominoDocument数据源。

如果您的视图具有选项 'Show response documents in a hierarchy',则您的父文档始终排在第一位,紧随其后所有复制冲突。您可以这样显示复制冲突:

<xp:viewPanel
    value="#{view1}"
    id="viewPanel1" 
    var="rowData">
    ...
    <xp:viewColumn
        columnName="yourColumnName"
        id="viewColumn2"
        value="#{javascript:
            if (rowData.getDocument().hasItem('$Conflict')) {
                var parentId = rowData.getDocument().getItemValue('$REF');
                return '[Replication ot Save Conflict]';
            }
            return rowData.getColumnValue('yourColumnName')
        }">
        <xp:this.facets>
            <xp:viewColumnHeader
                value="Unid"
                xp:key="header"
                id="viewColumnHeader2">
            </xp:viewColumnHeader>
        </xp:this.facets>
    </xp:viewColumn>
</xp:viewPanel>

具有已删除父文档的孤立复制冲突文档不会显示在这种视图中。

如果您的视图设置选项'Show response documents in a hierarchy',那么所有复制冲突都将可见,即使是孤儿也是如此。文档按列值排序,因此在父文档下方不需要复制冲突。在这种情况下,您可能还想在 parentId 变量的帮助下显示父级的 DocumentUniqueID。

虽然之前的答案会有所帮助,但它们会使页面级别的一切变得复杂。消除源代码中的冲突 - 这样 XPage 或后台代码就不需要了。

在我们的应用程序中,用于 XPage 的每个视图都具有丰富的选择公式

& !@IsAvailable( $Conflict )

这样XPage中无论什么代码(数据源、组件、SSJS、Java、@Formula)都不需要处理冲突。

已编辑以回答您的问题:

除上述之外,您还可以使用仅包含冲突的特殊视图(选择 @isAvailable( $Conflict ))按 @Text( $REF ) 列排序。您无法显示冲突文档的任何其他数据。

然后,您可以添加列来查找具有特定 UNID 的文档是否有任何冲突文档并突出显示它们、显示冲突计数或其他内容。

我的两分钱 - 在 Notes 客户端中解决冲突是一个非常聪明的主意。

这些反应都很好,但到底为什么会产生冲突呢?设计中应该有逻辑,以便最少的一组人可以在任何时候编辑文档。如果您的所有用户都是编辑级别,那么请重新考虑您的应用程序。大多数用户应该是作者访问权限,作者字段的使用定义了谁可以编辑该文档,这可能会根据工作流状态而改变。