冲突预防

适用于 Location Referencing 许可。

冲突预防通过在 企业级地理数据库 线性参考系统 (LRS) 中协调路径和事件编辑内容来改进对多用户编辑的支持。 ArcGIS Location Referencing 通过强制使用一组条件和行为来协调编辑内容,这些条件和行为要求编辑者在编辑路径或事件之前获得锁。

Location Referencing 冲突预防的主要原则是:如果编辑者在数据库版本中对路径或事件进行编辑锁定,则另一个数据库版本中的同一个人或者任何版本中的其他人均无法编辑这些路径或事件。

启动冲突预防

冲突预防仅在分支版本化的 LRS 数据集上受支持。

传统版本化在 Location Referencing 中受支持,但冲突预防在传统版本化数据集中不可用。

对数据集进行分支版本化后,请运行修改 LRS 工具,其中冲突预防选项设置为启用

“修改 LRS”工具,已启用“冲突预防”
“启用冲突预防”选项。

如果启用冲突预防,则每个编辑工具都会自动获取锁(如果可用),或者在无法获取锁时提醒您。

编辑路径并针对冲突预防创建锁

将使用“停用路径”显示以下示例冲突预防工作流: RouteXL、Route 和 RouteS 是 LineXYZ 的一部分。 RouteX 将停用。

冲突预防和路径停用
路径是 LineXYZ 的一部分。
  1. Location Referencing 选项卡上单击标识路径按钮 识别路径,然后单击 RouteX

    随即显示标识路径对话框。

    “标识路径”对话框
    路径标识符显示不存在任何锁。
  2. 确认所选路径或线路上不存在任何锁。

    上一示例未显示任何锁,由此验证对于 RouteX,不存在任何锁。

  3. 验证路径上不存在任何锁后,单击 Location Referencing 选项卡上的停用 停用

    停用路径窗格随即出现。

  4. 停用路径窗格中,单击路径始于名称按钮,然后单击要停用的路径。

    选择路径名称后,窗格顶部随即显示一条获取锁消息。

    “停用路径”窗格,已获取锁
    将在“停用路径”窗格中确认获取的路径。

    锁定消息提供了以下信息:

    • 已在 LineXYZ 上获取锁。
      注:

      RouteXL 是 LineXYZ 的一部分。

      由于 RouteY 和 RouteZ 是 LineXYZ 的一部分,因此也会对其进行编辑锁定。

    • 门户用户 User11 已获取锁。
    • User11 已获取数据库版本 Version1 的 LineXYZ 锁。
    注:

    如果满足以下条件,您会自动将现有路径或线路锁从其他人员转移给您自己:

    • 其他人拥有的版本为公共版本。
    • 您正在其他人拥有锁的相同版本中发出请求。
    • 如果锁版本为子版本,则锁所有者当前未在该版本中打开编辑会话。 如果锁版本为默认版本,则锁所有者当前未在默认版本中打开读取会话。

  5. 或者,通过再次单击 Location Referencing 选项卡上的标识路径和 RouteX 来确保锁存在。
    “标识路径”对话框,“LRS 锁”部分
    路径标识符显示路径已锁定。

    被您锁定图标 被您锁定 也确认您拥有已标识路径的锁,并且可以编辑该路径。

  6. 或者,可以使用 Location Referencing 选项卡上的 LRS 锁按钮 LRS 锁表 标识现有锁。

    LRS 锁表随即出现。

    LRS 锁表
    锁表显示了存在最近获取的锁。

防止冲突

如前所述,冲突预防逻辑允许一次仅由一个人在单个版本中编辑路径或线路以及事件。

例如,如果 User22 尝试在 RouteX 被 User11 锁定时停用相同的 RouteX,则会显示以下消息:

“停用路径”窗格,未获取锁
当 User11 拥有锁时,User22 无法编辑路径。

该消息提供了以下信息:

  • 由于锁属于其他人,因此无法编辑 LineXYZ。
    注:

    RouteXL 是 LineXYZ 的一部分。

  • 门户用户 User11 已获取锁。
  • User11 已获取数据库版本 Version1 的 LineXYZ 锁。

路径标识符 识别路径 显示了以下结果:

“标识路径”对话框,现有锁
由于现有锁,该路径无法编辑。

LRS 锁表随即出现,其中列出了锁。

LRS 锁表
LRS 锁表随即出现,其中列出了锁。

确保已编辑数据集的最新版本

编辑数据库的最新版本,以便对数据进行的所有最新更改都存在于正在编辑的版本中。 要确认最新版本,Location Referencing 将在获取锁之前,检查是否需要与默认版本进行协调。 当需要将某个版本与默认版本进行协调时,将显示以下消息:

“获取锁”对话框
与默认版本进行协调。

当出现获取锁时,单击可将编辑器版本与默认版本进行协调。

注:

在编辑路径或事件之前,确保协调与默认版本的任何冲突。

了解有关协调并发布对分支版本的编辑内容、解决冲突以及发布更改的详细信息

可以选择获取锁之前自动进行协调。 启用自动协调后,无需协调即可获取锁,除非在协调期间检测到冲突。

编辑路径时的整体冲突预防逻辑如下图所示:

冲突预防流程图
显示了编辑开始时,Location Referencing 中的冲突预防。

锁类型

Location Referencing 中的冲突预防具有两种锁类型:

  • 路径锁和线路锁
  • 事件锁

路径锁和线路锁

在编辑路径时,路径锁和线路锁可以防止其他人编辑路径以及该路径上的事件。

路径锁和线路锁具有以下属性:

  • 当编辑连续网络中的路径时,锁称为路径锁。
  • 当编辑支持线路的工程网络中的路径时,将获取线路锁。 整条线路及其所有路径均已锁定。 线路锁意味着如果一个人正在编辑组成线路的多条路径中的一条,则其他任何人都无法编辑该线路上的任何其他路径。
  • 锁定路径意味着仅拥有锁的人能够在已获取锁的版本中编辑路径及其事件,除非满足锁传输条件。

事件锁

事件锁可防止其他人编辑特定路径的事件图层。 为路径或线路的事件图层获取事件锁。

如果 User1 在 Version1 中为 Route1 锁定了 Event Layer1,则适用以下情况:

  • 在任何版本中,其他人都无法编辑 Route1 的 Event Layer1。
  • User1 无法在除了 Version1 之外的任何其他版本中编辑 Route1 的 Event Layer1。
  • 如果该路径不存在路径锁,则其他人可以在 Route1 或任何其他路径的其他事件图层(Event Layer1 除外)上获取锁。
  • 如果多人拥有该路径的事件锁,则任何人都无法获取路径锁。
  • 其他人可以在 Event Layer1 上为任何其他可以获取锁的路径获取锁。
  • 如果编辑注册到网络的事件(点或线),该网络支持线路,则将在线路上获取事件锁。
  • 如果编辑注册到网络的事件(点或线),该网络不支持线路,则将在路径上获取事件锁。
注:
  • 如果路径或事件存在多个时间片,则获取的锁对所有时间片均有效。
  • 地理处理工具将根据需要获取锁。

路径上存在事件时的冲突预防逻辑如下图所示:

路线上事件的冲突预防
显示了路径上存在事件时的冲突预防流程图。

中心线编辑过程中的冲突预防

在存在并发路径的情况下,会根据公共中心线锁定路径。 下图演示了此概念:

冲突预防和中心线编辑
显示了锁定并发路径。

  • 如果编辑路径 X,则会在路径 X 上获取锁,并且其他任何人都无法在路径 Y 上获取锁,因为其共享公共中心线 C2。
  • 如果编辑路径 Y,则会在路径 Y 上获取锁,并且其他任何人都无法在路径 X 上获取锁,因为其共享公共中心线 C2。
  • 如果编辑中心线 C1(制图重新对齐或分割中心线),则仅锁定路径 X。
  • 如果编辑中心线 C3,则仅锁定路径 Y。
  • 如果编辑中心线 C2,则将同时锁定路径 X 和路径 Y ,因为 C2 是这两条路径之间的共享中心线。

释放锁

在以下情况下,将会自动释放锁:

  • 将包含锁的版本发布到默认版本。
  • 删除包含锁的版本。
  • 由于使用路径编辑、中心线编辑或地理处理工具而在默认版本中获取的锁将在执行完成后释放。

可以根据锁的可释放状态手动释放锁。

如果可释放状态值为 Yes,则可以通过执行以下操作来释放锁:

  • 单击 Location Referencing 选项卡上的释放锁按钮 释放全部
  • 单击 LRS 锁表中的释放锁按钮 释放全部

如果可释放状态值为 No,则无法释放锁。

如果可释放状态值为 On Post,则仅在发布到默认版本后,才能释放锁。

冲突预防规则摘要

启用冲突预防后,在以下情况下,可以在路径上获取锁后,对该路径进行编辑:

  • 在任何版本的数据库中,任何人都无法在该路径上获取锁。
  • 同一个人在其当前工作的相同版本数据库中已拥有该路径上的路径锁。

启用冲突预防后,如果不满足提供的锁传输条件,则无法在以下情况下编辑路径:

  • 需要与默认版本进行协调。
  • 当前版本中存在地理数据库冲突。
  • 其他人已锁定该路径。
  • 同一个人在其当前工作的其他版本数据库中已拥有该路径上的路径锁。
  • 其他人在该路径上拥有事件锁(前提是不满足锁传输条件)。
  • 同一个人在其他版本数据库中拥有该路径上的事件锁。

启用冲突预防后,在以下情况下,可以在事件图层上获取锁后,对该事件进行编辑:

  • 在任何数据库版本中,对于事件所在的路径,任何人在该事件图层上都没有锁(前提是不满足锁传输条件)。
  • 同一个人在其当前工作的相同版本数据库中已拥有事件锁(对于事件所在的路径)。
  • 同一个人在相同版本中已拥有路径或线路锁(对于事件所在的路径或线路)。

启用冲突预防后,在以下情况下,将无法编辑事件:

  • 需要与默认版本进行协调。
  • 当前版本中存在地理数据库冲突。
  • 对于事件所在的路径,其他人已锁定事件图层(前提是不满足锁传输条件)。
  • 对于事件所在的路径,同一个人已锁定事件图层,但在不同的版本中。
  • 其他人已锁定事件所在的路径(前提是不满足锁传输条件)。
  • 同一个人已锁定事件所在的路径,但在不同的版本中。