kurilka написал(а):
Дело в том, что структура получилась n-звенной, где n=количество пользователей.
Допустим, есть 30 человек, которые используют общий профиль "111". Нашелся какой то "умник", который залез в настройки, что то поменял, удалил пару лифтов, а может больше и все это сохранил. Все 30 разом получают неприятности - где то не звенит, группы перетасованны, не хватает лифтов и что то там еще. Потом надо найти злодея, а ведь он может быть и не из этих 30 а, к примеру, из 60. Потому что ВСЕ могут всё. Анархия, которая может привести к хаосу.
Именно по этому я предложил ограничить возможности пользователям. Если нужен некий "Настройщик", то пусть он будет назначен администратором, т.е. какой то пользователь получает разрешение создавать и управлять профилями, назначать профили пользователям или группе пользователей. Остальные могут редактировать ТОЛЬКО ЛИЧНЫЕ профили. Назначение профиля пользователю, с точки зрения "клиент-сервер", выглядит более логично. Ведь "Настройщику" гораздо проще сделать пару кликов мышкой, нежели обзванивать всех и диктовать по буквам название профиля.
По терминологии. Предлагаю для профилей "по умолчанию" использовать термин "основной", как менее непонятный для неподготовленных пользователей.
В условия компромисса между желаемым и возможным предлагаются следующие доработки:
1. Добавить пользователю признак - "Возможность изменения общих профилей".
Пользователь, имеющий данный признак (Настройщик), может сохранять, изменить, удалять общие и личные профили. Если данного права нет, то пользователь может сохранять, изменить, удалять только личные профили.
В связанной группе пользователей, имеющих одинаковый доступ к лифтам, например, операторы одной диспетчерской, должен быть, по крайней мере, один пользователь с правом создавать общие профили, нужные этой группе.
Таким образом, возможность случайного или намеренного изменения общих профилей ограничивается пользователями с данным правом.
2. В параметры пользователя добавить ссылку на основной профиль. Основной профиль может быть из общих и личных профилей.
Если основной профиль назначен из общих профилей, то пользователь не может создавать личный профиль с таким же именем. Это гарантирует то, что пользователь, подключившийся под основным профилем, назначенным из общих профилей, всегда будет видеть последние изменения в профиле.
Если пользователь подключается без указания в панели подключения профиля, то, при наличии у пользователя основного профиля, используется этот профиль, а если основного профиля у пользователя нет, то при первом подключении используется размещение, заданное Администратором (фактически общий основной профиль). При последующих подключениях используется размещение из сохраненного XML файла, если основного профиля у пользователя не появилось (т.е. работа производится, как и сейчас)
Назначать основной профиль пользователям может Администратор из дерева "Пользователи и группы лифтов" или сам пользователь. Если пользователь подключился с указанием профиля, то у него появляется в режиме настройки пункт меню
"Сделать личный/общий профиль <имя_профиля> основным"
3. Добавить для общих профилей признак - "Не замещаемый". Если признак установлен, то пользователь, подключившийся с использованием такого общего профиля, не сможет сохранить личный профиль под тем же именем, что и общий профиль. Это гарантирует то, что пользователь всегда будет видеть последние изменения в профиле.
4. При подключении SPult с использованием упрощенной (сокращенной) панели подключения, профиль выбрать нельзя (поле будет отсутствовать) и используется основной профиль.
5. При подключении SPult с использованием упрощенной (сокращенной) панели подключения нельзя перейти в режим Настройки.
kurilka написал(а):
Работу с несколькими профилями тоже предлагаю организовать в рамках клиент-серверных отношений. При подключении SPult выдает список доступных пользователю профилей, полученный с сервера. Дальше все просто, кликай нужный профиль, загружайся. Ведь какой-нибудь "пытливый ум" может попробовать подключиться под непредназначенным для него профилем. Результат непредсказуем.
Список доступных профилей выдать сложно, т.к. при этом существенно меняется алгоритм подключения, подключение становиться двухфазным и не хотелось бы его трогать. Но и получается, что в основном используется личный основной профиль, а если пользователь хочет использовать нестандартный профиль, то пусть уж сам пользователь знает имя этого нестандартного профиля и укажет его при подключении.
Если пользователь подключается с указанием профиля, то профиль ищется в следующей последовательности:
- среди личных профилей
- среди общих профилей
Даже если пользователь случайно или намеренно указал непредназначенный ему общий профиль, то результат предсказуем.
Профиль не даёт доступа и прав - это только размещение, соответственно после подключения просто появится незнакомое размещение.
kurilka написал(а):
Совместимость ПО аккуратно решается при помощи "профиля по умолчанию". Ведь конечному пользователю абсолютно все равно, где программа сохраняет настройки. При первом подключении пользователю загружаются настройки из "профиля по умолчанию". Изменив размеры окон, расположения групп лифтов и т.д. настройки сохраняются на сервере в "личном профиле", а не на локальном компьютере. При следующем подключении пользователю загружаются настройки из "личного профиля".
По поводу совместимости ПО. Все-таки нужно оставить работу без профилей как она была и раньше, т.е. сохранять размещение в XML файле. Профили, сохраняемые на сервере, должны использоваться только сознательно. Т.е. пользователь сам должен сохранить профиль на сервере и сделать его основным. Конечно, это может делать не сам оператор, а Настройщик, подключившись под именем оператора.