Для обеспечения целостности данных при совместной работе на основе сервера используются блокировки трех типов.
Блокировки на уровне элемента можно получить, получив рабочий набор, явно заняв элемент или непосредственно отредактировав его. Они могут быть высвобождены при выполнении пользователем операции "Синхронизация с файлом хранилища"; они всегда высвобождаются по завершении операции "Освободить все забранные".
В рабочем процессе на базе сервера блокировки на уровне элемента выполняются в совокупности баз данных SQLite. Например, блокировки на уровне элементов, полученные без использования рабочих наборов, хранятся в файле ElementPermissions.db3:
Поскольку блокировки на уровне элементов связываются с пользователями в соответствии с именами пользователей Revit (а не в соответствии с определенным экземпляром Revit, определенной рабочей станцией или сетевой учетной записью пользователя), сервер Revit обрабатывает отдельных пользователей, имеющих идентичные имена пользователей Revit, как одного пользователя. В этом случае каждый из них получает разрешение одновременно редактировать один и тот же элемент, что может привести к потере данных или повреждению модели. Следовательно, все пользователи, работающие совместно через сервер Revit, должны иметь уникальные имена пользователей Revit.
В некоторых случаях может оказаться полезным работать от лица другого пользователя, намеренно выбрав его имя пользователя Revit: если одному пользователю необходимо отредактировать элемент, заблокированный другим пользователем, но второй пользователь не может сам снять блокировку, то для снятия блокировки в систему от лица второго пользователя может временно войти администратор. Обратите внимание, что в результате этого локальная копия второго пользователя может оказаться несовместимой с моделью в хранилище, что потенциально чревато потерей данных. Поэтому по возможности высвобождать элемент должен тот же пользователь, что заблокировал его.
Блокировки на уровне модели используются для совместной работы на основе файла и на основе сервера. Они создаются в Revit во время выполнения некоторых операций, чтобы ограничить доступ к модели из хранилища, если одновременный доступ может поставить под угрозу целостность данных. Блокировки снимаются автоматически после успешного завершения этих операций, при этом вмешательство пользователя не требуется.
Блокировки на уровне администратора применяются только к совместной работе на основе сервера, поскольку они предназначены для упрощения операций обслуживания сервера Revit, во время которых необходимо приостановить работу над моделью (или над коллекцией моделей). Например, до архивации модели ее состояние необходимо заморозить. В противном случае может оказаться, что архивированная копия содержит частично записанные изменения, произошедшие в результате обновления, и использовать эту копию будет невозможно. Применение блокировки на уровне администратора позволяет гарантировать неизменность состояния модели и избежать этой ошибки.
Блокировка на уровне администратора применяется с использованием веб-утилиты администратора Revit Server (или аналогичной утилиты командной строки). Блокировку можно применить ко всему серверу Revit Server, ко всем моделям в папке или к отдельной модели.
Применение блокировки на уровне администратора к элементу
Если элемент заблокирован:
Блокировка применяется в два этапа. Сначала пользователю разрешается продолжить выполнение всех незавершенных операций, при этом новые операции блокируются. После завершения всех выполняемых операций блокировка применяется полностью, при этом любой доступ запрещается до снятия блокировки.
При применении блокировки на уровне администратора вмешательство пользователя требуется редко. Однако при искажении моделей из хранилища (например, в результате ошибки первого сохранения новой модели из хранилища) создание или снятие блокировки на уровне администратора в Revit Server может оказаться невозможным. В этом случае для снятия блокировки может потребоваться удалить файл super.lock из корневого каталога проекта на сервере Revit Server. (Обратите внимание, что такие искаженные модели, не позволяющие наложить блокировку, также следует удалить, чтобы предотвратить возникновение такой проблемы в дальнейшем).