【问题标题】:Can replication\save conflicts be identified in Xpages可以在 Xpages 中识别复制\保存冲突吗
【发布时间】:2015-04-13 22:30:40
【问题描述】:

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

【问题讨论】:

  • 您可以使用@IsAvailable($Conflict) 公式识别冲突文档

标签: xpages


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回复。如果视图是使用另一个公式创建的,我可以询问 $REF 字段吗?
  • 因为 $REF 是到父 UNID 的映射,这是否意味着 - 如果父被删除并保留响应,可能会有问题?
  • 好的做法是永远不要删除父级,如果冲突具有正确的值,您应该将它们移动到父级
  • @ThomasAdrian 谢谢托马斯。这就是我的想法,并且已经实现了一种系统所有者可以处理扭转这种情况的方法
  • 对于我的客户,我有一个加载在客户端中的 xpage,它显示所有冲突和所有不同的值,只需单击一个按钮,他们就可以删除每个冲突。或选择手动将其移至父级。非常方便和容易
【解决方案2】:

如果您的视图具有“在层次结构中显示响应文档”选项,那么您的父文档始终排在第一位,紧随其后的是所有复制冲突。您可以通过这种方式显示复制冲突:

<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>

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

如果您的视图没有设置了“在层次结构中显示响应文档”选项,那么所有复制冲突都将可见,即使是孤立的。文档按列值排序,因此在父文档下方不需要复制冲突。在这种情况下,您可能还想在 parentId 变量的帮助下显示父级的 DocumentUniqueID。

【讨论】:

  • @KnutHermann 谢谢克努特。这很有用,但我认为我对我的问题的这方面有一个修复,允许系统所有者处理问题文档
【解决方案3】:

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

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

& !@IsAvailable( $Conflict )

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

已编辑以回答您的问题:

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

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

不过我的两分钱 - 在 Notes 客户端中解决冲突是非常聪明的想法。

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 谢谢霍华德。是的。我同意。该应用程序非常复杂 - 我从未构建过它。我的老板不允许重建它,因此我们只需要对某些方面进行分类。我想我现在已经解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多