Для всех, кто не очень любит читать, сразу предложу вместо большого количества букв посмотреть видеоролик, наглядно демонстрирующий, каким образом мы принудительно завершаем активные сеансы пользователей и временно блокируем соединение с информационными базами при применении "1С:Предприятия" 8.1 и 8.2.
Это еще одно интересное решение, которое применяется нашим коллективом на практике с 2007 года. Оно может быть интересно всем, кто применяет "1С:Предприятие" 8.х на динамично развиваемых высоконагруженных информационных базах (когда обновления работающих баз проводятся почти каждый день или по нескольку раз в день, когда количество пользователей исчисляется десятками, сотнями или тысячами).
Речь об управлении запретом на соединение пользователей с информационной базой и принудительном завершении активных сеансов пользователей.
Конечно, всё это можно делать с помощью стандартных средств 1С:Предприятия 8.х (например, консоли управления серверами 1С) или механизмов, имеющихся в некоторых типовых конфигурациях. Однако удобство применения повсеместно доступных средств, всё же, ограничено, затраты времени на управление блокировкой соединений можно сократить, а администраторы и разработчики при использовании стандартных механизмов вполне могут позволить себе не вполне корректно информировать пользователей о причинах и времени недоступности информационной базы. И позволю высказать своё мнение, что всё это вполне исправимо?
Итак, иногда разработчикам или администраторам необходимо обеспечить монопольный доступ к информационной базе. Например, при обновлении базы в случае изменения структур хранения или для резервного копирования в ночное время средствами конфигуратора "1С:Предприятия", а не сервера баз данных (размеры копии всё же очень значимо отличаются при применении этих подходов).
Для запрета установки новых соединений пользователями и начала завершения активных сеансов мы применяем вот такую форму:
Вызвать её - это один клик мышки, заблокировать информационную базу - еще один (по большой красной кнопке "Заблокировать").
После установки блокировки форма немного меняется и выглядит вот так:
Как видно, разрешить пользователям работать - это тоже один клик мышкой. В каком состоянии сейчас информационная база на форме видно, как разблокировать - тоже вроде понятно. Сделать что-то некорректное не то чтобы трудно, скорее невозможно.
Для простейших ситуаций установки/снятия запрета на использование информационной базы удобство администратора мы обеспечили. А как же пользователи? Ведь сотни людей в этот момент могут работать с информационной базой. Они просто увидят сообщение о разрыве соединения? Нет. Все сеансы будут завершены максимально корректно и так, чтобы все пользователи понимали, что, почему и как быстро от них требуется.
За 10 минут до времени, с которого нам необходимо обеспечить монопольный доступ к информационной базе, все пользователи получат первое уведомление:
Еще через 3 минуты те пользователи, что продолжают работать, получат второе уведомление:
Еще через 3 минуты те, кто не понимает, что такое завершить текущий сеанс или не смотрит на экран монитора, получат третье, последнее предупреждение:
Ну а через минуту, как и написано в уведомлении, сеанс будет корректно автоматически завершен клиентом "1С:Предприятия" (именно клиентом, а не будет разрорван в одностороннем порядке со стороны сервера).
Смысла дублировать в описании логику трех этапов предупреждения нет. Все сообщения на окошках сформулированы так, чтобы любой сотрудник вне зависимости от образования, квалификации, времени года или настроения понимал, что от него требуется и что надо сделать.
Таким образом, полный цикл завершения активных сеансов составляет не более 10-ти минут (конечно, это время настраивается, и в экстренных ситуациях может быть сокращено вплоть до 2-х минут за счет сокращения времени отображения всех уведомлений и установки времени начала действия запрета).
На время, пока установка соединения с базой запрещена, при попытке запустить программу (установить соединение с информационной базой) пользователи увидят вот такое сообщение:
Оно очень похоже на стандартное окно уведомления о запрете установки соединения с информационной базой. Но в нем дополнительно выводится пояснение, что использование системы недоступно временно и по причине проведения регламентных работ.
Часто ли администраторы удосуживаются писать подобные пояснения, запрещая подсоединение к информационной базе? Нет. Если это делать на десятках баз по несколько раз в день, то их вполне можно понять. А ведь уместным в разных ситуациях может быть разный текст уведомления, что стоит обсудить отдельно.
Пару слов про время недоступности, которое можно задать на форме в полях "с" и "по".
По умолчанию в поле "с" указывается время на Х минут больше от текущего времени, где Х - время, которое требуется для корректного поэтапного информирования пользователей и завершения сеансов. 15, 10, 7, 4 минут. Мы чаще всего используем 10-ти минутный интервал завершения сеансов.
При необходимости в этом поле можно задать любое другое время, с которого будет действовать запрет. Например, днем можно установить запрет на 23:00, т.е. на время, когда будет проводиться резервное копирование.
Но и заполнение времени ожидаемого завершения обслуживания (в поле "по") также является важным. При использовании стандартных средств администраторы редко удосуживаются его заполнять, т.к. пользы от этого не много. Угадать точное время завершения сложно, всё равно обычно уместно по завершению обслуживания не затягивая снять запрет использования информационной базы.
Но указание окончания времени недоступности крайне полезно. Почему? Потому что не корректно, информируя пользователей о том, что информационная база будет недоступна, не сообщать, с какого времени они смогут продолжить работать. Ведь указать ожидаемое время завершения регламентных работ не сложно, а подсистема в этом случае сможет информировать пользователей в другом, расширенном виде.
Благодаря заполненному времени, до которого планируется обслуживание информационной базы, мы имеем возможность более детально проинформировать пользователей о своих планах. На примерах уведомлений ниже видно, как изменятся некоторые уведомления и сообщения, основные изменения выделены.
Но и это еще не всё. Часто мы проводим шаблонные операции. Типовое обновление в обед, которое обычно занимает 10 минут. Или резервное копирование, которое займет около часа. Даже указание ожидаемого времени завершения обслуживания можно избежать. Для самых отъявленных лентяев мы применяем шаблоны:
Т.е., если, например, нам нужно быстренько обновить информационную базу, что займет не более 5-ти минут, достаточно вызвать окно шаблонов и нажать на кнопке "ВКЛ" напротив первого шаблона. Картинки обычно помогают нашим администраторам осознать суть предлагаемых шаблонов без слов ;)
Когда мы брались за разработку этих механизмов, я выставлял 2 главных требования:
- человечность и простота восприятия, ориентация на применение без необходимости глубоких познаний или интеллектуальных способностей (всё должно быть просто и удобно, как применять должно быть понятно и без инструкции);
- ориентация на минимизацию трудозатрат админов в сочетании с требованием корректного информирования при ограничении доступа пользователей к базам (промышленные объемы требуют отработки там, где при разовом применении можно было бы проделать на пару лишних действий).
Как думаете, получилось ли сделать то, что хотелось?