在 Revit Server 中管理锁

在基于服务器的工作共享中,有三种不同类型的锁定用于维护数据的完整性:

图元级锁定

当多个用户在同一个模型中工作时,可以利用图元级锁定控制对每个图元的访问。 在基于文件和基于服务器的工作流中都可以使用图元级锁定,它们的行为遵循下列原则:
  • 一个图元一次只能归一个用户所有。
  • 图元锁定通过 Revit 用户名与 Revit 用户相关联。
  • 只有拥有图元的用户可以修改图元;所有其他用户都不能修改图元。
  • 用户只能获得未被修改过的图元的所有权。
  • 对已修改过的图元所做的修改必须提交给中心模型或者完全放弃,之后才能放弃对图元的所有权。

图元级锁定通过检出工作集、明确借用图元或通过直接编辑图元来获取。 当用户执行“与中心文件同步”时,可以解除锁定,而且当“放弃全部请求”操作完成后,也始终会解除锁定。

在基于服务器的工作流中,图元级锁定在一系列 SQLite 数据库中进行维护。 例如,未使用工作集而获得的图元级锁定存储在 ElementPermissions.db3 文件中:

由于图元级锁定是通过 Revit 用户名与用户关联的(而不是通过特定的 Revit 实例、特定的工作站或网络用户帐户),所以 Revit Server 会将具有同一个 Revit 用户名的两个人视为同一个用户。 在这种情况下,两个人可以同时修改同一个图元,这样可能会导致数据丢失和模型损坏。 因此,通过 Revit Server 进行协作的每个用户都应确保选择唯一的 Revit 用户名。

在某些情况下,一个用户通过故意采用另一个用户的 Revit 用户名来冒充该用户的身份也是可以接受的:如果第一个用户必须修改由第二个用户锁定的图元,而第二个用户无法放弃该图元,此时管理员可以暂时采用第二个用户的身份来解除锁定。 请注意,这样可能会用中心模型以不可撤销的方式渲染第二个用户的本地副本,有可能会导致数据丢失。 因此,在可能的情况下,最好由原来创建锁定的人放弃图元。

模型级锁定

模型级锁定在基于文件和基于服务器的工作共享中都可以使用,它们是由 Revit 在某些操作过程中创建的,用于在并发访问可能会损害数据完整性的情况下限制对中心模型的访问。 当这些操作成功完成后,会自动解除锁定,不需要手动干预。

管理员级锁定

管理员级锁定仅适用于基于服务器的工作共享,用于帮助 Revit Server Host 完成维护操作,在进行维护操作时,模型(或一组模型)中的活动应停止。 例如,在对模型进行归档之前,应该先冻结模型的状态。 否则,可能会导致归档的副本包含更新中部分提交的修改,而这样的副本将无法使用。 如果首先应用管理员级锁定,模型的状态可以保证是不活动的,所以可以避免上述问题。

管理员级锁定可以使用基于 Web 的 Revit Server Administrator 管理实用程序(或相应的命令行实用程序)来应用。 此锁定可以应用于整个 Revit Server Host、某个文件夹中的所有模型或者单个模型。

对项目应用管理员级锁定的步骤

  1. 打开 Revit Server Administrator。
  2. 在树状控制结构中,选择项目,然后单击 (锁定)。
    注: 如果使用命令行实用程序来应用锁定,执行刷新操作后将显示锁定图标,当前使用的模型的信息显示在右窗格中。

锁定某个项目后:

锁定实际上是分两个阶段应用的。 首先,所有正在进行的操作仍然可以继续,而新的操作将被阻止。 当正在进行的操作全部完成后,锁定将完全提交,进一步的访问将被无条件阻止,直到解除锁定为止。

管理员级锁定几乎不需要任何类型的操作。 但是,如果存在任何有问题的中心模型(可能是因为第一次保存新的中心模型失败),Revit Server 可能无法正确创建或解除管理员级锁定。 在这种情况下,可以通过从 Revit Server Host 的根项目存储目录中删除 super.lock 文件来解除锁定。 (请注意,还应该删除有问题的模型,以防再次出现该问题。)

使用锁定的最佳做法

应由系统以透明的方式管理和维护锁定。 在跨地理位置分散的站点使用 Revit Server 进行协作时,遵循以下原则有助于确保获得良好的用户体验。
  • 确保所有用户都拥有唯一的 Revit 用户名。
  • 在 Revit 执行操作的过程中,不要终止 Revit
  • 如果操作失败,立即重试(如果需要,重新启动 Revit 后)。
  • 如果第一次保存新的中心模型失败,应提醒管理员,从而删除有问题的模型。