Управление блокировками в Revit Server

Для обеспечения целостности данных при совместной работе на основе сервера используются блокировки трех типов.

Блокировки на уровне элемента

Блокировки на уровне элемента ограничивают доступ к элементам в ситуации, когда над одной и той же моделью работают несколько пользователей. Они используются в рабочих процессах на основе файла и на основе сервера и подчиняются следующим правилам:
  • Элемент может одновременно принадлежать только одному пользователю.
  • Блокировки элементов связываются с пользователями Revit через имена пользователей Revit.
  • Элемент может изменяться только пользователем, который им владеет; все остальные пользователи будут заблокированы.
  • Пользователь может только отказаться от права владения неизмененными элементами.
  • Изменения отредактированных элементов необходимо сохранить в модели в хранилище или полностью отказаться от них, только после этого право владения может быть полностью удалено.

Блокировки на уровне элемента можно получить, получив рабочий набор, явно заняв элемент или непосредственно отредактировав его. Они могут быть высвобождены при выполнении пользователем операции "Синхронизация с файлом хранилища"; они всегда высвобождаются по завершении операции "Освободить все забранные".

В рабочем процессе на базе сервера блокировки на уровне элемента выполняются в совокупности баз данных SQLite. Например, блокировки на уровне элементов, полученные без использования рабочих наборов, хранятся в файле ElementPermissions.db3:

Поскольку блокировки на уровне элементов связываются с пользователями в соответствии с именами пользователей Revit (а не в соответствии с определенным экземпляром Revit, определенной рабочей станцией или сетевой учетной записью пользователя), сервер Revit обрабатывает отдельных пользователей, имеющих идентичные имена пользователей Revit, как одного пользователя. В этом случае каждый из них получает разрешение одновременно редактировать один и тот же элемент, что может привести к потере данных или повреждению модели. Следовательно, все пользователи, работающие совместно через сервер Revit, должны иметь уникальные имена пользователей Revit.

В некоторых случаях может оказаться полезным работать от лица другого пользователя, намеренно выбрав его имя пользователя Revit: если одному пользователю необходимо отредактировать элемент, заблокированный другим пользователем, но второй пользователь не может сам снять блокировку, то для снятия блокировки в систему от лица второго пользователя может временно войти администратор. Обратите внимание, что в результате этого локальная копия второго пользователя может оказаться несовместимой с моделью в хранилище, что потенциально чревато потерей данных. Поэтому по возможности высвобождать элемент должен тот же пользователь, что заблокировал его.

Блокировки на уровне модели

Блокировки на уровне модели используются для совместной работы на основе файла и на основе сервера. Они создаются в Revit во время выполнения некоторых операций, чтобы ограничить доступ к модели из хранилища, если одновременный доступ может поставить под угрозу целостность данных. Блокировки снимаются автоматически после успешного завершения этих операций, при этом вмешательство пользователя не требуется.

Блокировки на уровне администратора

Блокировки на уровне администратора применяются только к совместной работе на основе сервера, поскольку они предназначены для упрощения операций обслуживания сервера Revit, во время которых необходимо приостановить работу над моделью (или над коллекцией моделей). Например, до архивации модели ее состояние необходимо заморозить. В противном случае может оказаться, что архивированная копия содержит частично записанные изменения, произошедшие в результате обновления, и использовать эту копию будет невозможно. Применение блокировки на уровне администратора позволяет гарантировать неизменность состояния модели и избежать этой ошибки.

Блокировка на уровне администратора применяется с использованием веб-утилиты администратора Revit Server (или аналогичной утилиты командной строки). Блокировку можно применить ко всему серверу Revit Server, ко всем моделям в папке или к отдельной модели.

Применение блокировки на уровне администратора к элементу

  1. Откройте администратор Revit Server.
  2. Выберите в структуре дерева элемент и щелкните (заблокировать).
    Прим.: Если для применения блокировки используется утилита командной строки, то после операции обновления появляется значок блокировки, а на правой панели отображаются сведения об используемой модели.

Если элемент заблокирован:

Блокировка применяется в два этапа. Сначала пользователю разрешается продолжить выполнение всех незавершенных операций, при этом новые операции блокируются. После завершения всех выполняемых операций блокировка применяется полностью, при этом любой доступ запрещается до снятия блокировки.

При применении блокировки на уровне администратора вмешательство пользователя требуется редко. Однако при искажении моделей из хранилища (например, в результате ошибки первого сохранения новой модели из хранилища) создание или снятие блокировки на уровне администратора в Revit Server может оказаться невозможным. В этом случае для снятия блокировки может потребоваться удалить файл super.lock из корневого каталога проекта на сервере Revit Server. (Обратите внимание, что такие искаженные модели, не позволяющие наложить блокировку, также следует удалить, чтобы предотвратить возникновение такой проблемы в дальнейшем).

Рекомендации по работе с блокировками

Блокировки обеспечивают прозрачное управление и поддержание системой. Соблюдение следующих рекомендаций позволит гарантировать успешную работу пользователей при совместной работе из различных географически удаленных друг от друга мест через Revit Server.
  • Убедитесь, что всем пользователям присвоены уникальные имена Revit.
  • Не завершайте работу Revit, если операция не завершена.
  • Если операцию выполнить не удалось, немедленно повторите ее (при необходимости перезагрузив Revit).
  • При ошибке операции сохранения новой модели из хранилища, уведомите об этом администратора для удаления искаженной модели.