冲突预防

适用于 Location Referencing 许可。

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

如果路径或事件被某个版本中的编辑者锁定以进行编辑,则该路径或事件不能在另一个版本中由同一位用户或在任何版本中由其他人进行编辑。 这是 Location Referencing 冲突预防的主要原则。

启动冲突预防

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

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

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

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

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

下方显示了使用“停用路径”工具进行的冲突预防工作流示例。 RouteY 将停用。

冲突预防和路径停用

  1. 单击识别路径 识别路径,然后单击 RouteY

    随即显示识别路径弹出窗口。

    “识别路径”弹出窗口
    “识别路径”弹出窗口显示不存在锁。

  2. 验证所选路径上是否不存在任何锁。

    由于结果不显示任何锁,可以得知该路径上不存在任何锁。

  3. 位置参考选项卡的路径组中,单击停用 停用

    停用路径窗格随即出现。

  4. 停用路径窗格中,单击从地图中选择路径按钮 从地图中选择路径,然后单击要停用的路径。

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

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

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

    • 已在 RouteY 上成功获取锁。
    • 门户用户 User11 已获取锁。
    • User11 已获取指定版本 Version1 的 RouteY 锁。
    注:

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

    • 其他人拥有的版本为公共版本。
    • 您正在其他人拥有锁的相同版本中发出请求。
    • 如果锁版本为命名版本,则锁所有者当前未在该版本中打开编辑会话。 如果锁版本为默认版本,则锁所有者当前未在默认版本中打开读取会话。
  5. 您也可以通过再次单击识别路径 识别路径RouteY 来确认锁是否存在。

    “识别路径”弹出窗口,“LRS 锁”部分
    “识别路径”弹出窗口显示路径已锁定。

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

  6. 位置参考选项卡的冲突预防组中,单击 LRS 锁按钮 LRS 锁表 识别现有锁。

    LRS 锁表随即出现。

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

冲突预防消息

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

例如,如果 User22 尝试在 User11 已锁定 RouteY 的情况下停用 RouteY,则会出现以下消息:

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

该消息提供了以下信息:

  • 由于锁属于其他人,因此无法编辑 RouteY。
  • 门户用户 User11 已获取锁。
  • User11 已获取 Version1 的 RouteY 锁。

“识别路径”弹出窗口显示以下结果:

“识别路径”弹出窗口,现有锁
“识别路径”弹出窗口显示路径因现有锁无法编辑。

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

LRS 锁表
锁表显示路径上的锁。

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

编辑最新版本,以便对数据进行的所有最新更改都存在于正在编辑的版本中。 要确认您是否正在编辑最新版本,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,则可以通过执行以下操作来释放锁:

  • 单击位置参考选项卡上的释放锁按钮 释放全部
  • 单击 LRS 锁表中的释放锁按钮 释放全部

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

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

注:

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

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

冲突预防规则摘要

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

  • 在任何版本中,任何人都无法在该路径上获取锁。
  • 同一用户已对同一版本中存在的路径应用路径锁。

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

  • 与默认版本的协调尚未完成。
  • 当前版本中存在地理数据库冲突。
  • 其他人已锁定该路径。
  • 同一用户已对其他版本中的路径应用路径锁。
  • 其他人在该路径上拥有事件锁(前提是不满足锁传输条件)。
  • 同一用户在其他版本中对该路径应用路径锁。

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

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

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

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