При внедрении корпоративных систем у Заказчиков понадобилось проводить уникальные настройки интерфейсной части для некоторых рабочих мест (пользователей или ролей пользователей).
При этом выделили два типа рабочих мест пользователей:

  • Постоянное рабочее место - пользователь у которого есть собственный компьютер и ему доступен расширенный набор функций (все то, что есть в системе: меню, формы, функции);
  • Виртуальное рабочее место - терминал в цеху, на терминале могут работать разные пользователи, необходимо для каждого из пользователей сохранять уникальные настройки видимости полей и дизайна визуальной части, а так же параметров и настроек бизнес-логики.

Подобные задачи возможно решать стандартными средствами доступными в Devexpress XAF – через настройку политик безопасности. Однако штатных средств настройки оказалось недостаточно, требовалось настраивать под пользователя почти все параметры доступные в метамодели, например формы выбора.

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

Добавленный уровень настройки – по умолчанию представляют собой файлы хранящиеся в директории приложения. Настройка модели для ролей производится администратором системы.
Стандартный функционал Devexpress XAF позволяет настроить изменения модели либо для всех пользователей системы, либо для каждого конкретного пользователя. Гибкая структура платформы и модели XAF позволила реализовать собственное расширение модели (на рисунке показано желтым цветом), которое добавляет новый слой настроек рабочего места пользователя для конкретной роли.

Добавленный уровень настройки, по умолчанию, представляет собой файлы хранящиеся в директории приложения. Настройка модели для ролей производится администратором системы при внедрении у Заказчика.

Описание реализации

На данный момент реализован механизм настройки рабочих мест (РМ) по Ролям, который позволяет:

  1. Настраивать различные варианты РМ и связать РМ с Ролью пользователя (из системы безопасности Галактика EAM);
  2. При запуске приложения, для пользователя анализируются доступные для него рабочие места и ему предлагается выбрать то РМ, которое необходимо использовать для работы.

Модель приложения состоит из 4 уровней (на схеме снизу вверх):

  1. Уровень «Приложение» - модель на этом уровне разрабатывается только разработчиками и жестко прошита в программе, ее непосредственно нельзя изменить без перекомпиляции приложения
  2. Уровень «Настраиваемая модель приложения» - модель этого уровня хранится в файле Model.xafml (Model_ru.xafml). Файл находится в папке установки приложения. Этот файл редактируется с помощью утилиты DevExpress.ExpressApp.ModelEditor.v12.2.exe (находится в папке установки приложения). Изменения сделанные на этом уровне видны абсолютно всем пользователям, работающим в приложении.
  3. Уровень «Настраиваемые рабочие места» - модели этого уровня хранятся в файлах Model.Workplace.<имя роли>.xafml (Model. Workplace.<имя роли>_ru.xafml), где .<имя роли> - это наименование роли в списке ролей приложения Галактика EAM. Файлов создается столько – сколько рабочих мест настраивается. Файлы по умолчанию находится в папке установки приложения, но путь к ним можно изменить в config файле приложения. Эти файлы редактируются с помощью утилиты Xafari.Workplace.ModelEditor.exe (находится в папке установки приложения). Изменения сделанные на этом уровне видны только тем пользователям, которые обладают соответствующей ролью и при запуске приложения выбрали соответствующее рабочее место.
  4. Уровень «Настройки пользователя» - модели этого уровня хранятся в файлах Model.User.<имя роли>.xafml (Model.User.<имя роли>_ru.xafml), где .<имя роли> - это наименование роли в списке ролей приложения Галактика EAM. Для одного пользователя может быть создано несколько файлов. Если пользователь заходит в систему и выбирает нужное РМ, то для этого пользователя с этим РМ создается файл.

Настройка рабочих мест в системе Галактика EAM

Настройка ролей для рабочих мест

В системе необходимо завести Роли, которые будут соответствовать настраиваемым РМ.
Вот примеры наименования ролей:

  • Механик
  • Мастер
  • Оператор

Давать этим ролям права на объекты не нужно, они будут использоваться только для связи пользователя с моделью.

Назначение пользователю роли

После того как роли созданы, они могут назначаться пользователям. Это можно сделать как в каталоге ролей, так и в каталоге пользователей.

Пользователю можно назначить несколько ролей, для которых будут разработаны АРМ.

Создание нового рабочего места

Чтобы создать новый АРМ, нужно, по сути, создать новый файл модели для требуемой роли Model.Workplace.<имя роли>.xafml. Создать файл модели для рабочего места (роли) можно тремя способами:

  • Вручную
  • Используя приложение Галактика EAM
  • Используя приложение Xafari.Workplace.ModelEditor.exe

Создание файла модели для рабочего места вручную

Просто руками создаем новый файл Model.Workplace.<имя роли>.xafml в паке приложения. В файл надо скопировать следующее содержимое:

<?xml version="1.0" encoding="utf-8"?>
<Application/>

Создание файла модели для рабочего места используя приложение Галактика EAM

Создавать/редактировать модели рабочих мест в приложении Галактика EAM могут пользователи с правами Администратора (пользователь у которого есть роль Administrator), либо пользователи, имеющие разрешение на редактирование модели приложения.

Для создания нового рабочего места для роли нужно:

  • Запустить программу Галактика EAM
  • Входите в приложение от имени пользователя с правами администратора, либо пользователя, имеющего разрешение на редактирование модели приложения.

  • После окна «Вход в систему» откроется окно «Выбор рабочего места»

  • В этом окне выберите рабочее место (роль из списка ролей, для которой нужно рабочее место). В списке отображаются все роли, которые созданы в системе
  • После выбора нужной роли программа будет запущена. При этом если для выбранной роли уже есть файл Model.Workplace.<имя роли>.xafml, то модель из него будет загружена. Если такого файла нет, то система запустится, но файл пока еще создан не будет. В любом случае система запускается от имени выбранного рабочего места. Имя текущего рабочего места видно в строке состояния в низу окна программы. На картинке видно что запущено «Рабочее место: Механик»

  • Теперь чтобы отредактировать модель надо выбрать в меню Инструменты-«Редактировать модель Рабочее место "наименоваие_рабочего_места"»

  • Откроется редактор модели для текущего рабочего места

  • Надо в редакторе модели выполнить нужные изменения и сохранить. После этого, если файла модели не было на диске, он будет создан, если файл был – он будет изменен.
  • Закрываем редактор модели и приложение. На диске появятся файлы модели для рабочего места

Создание файла модели используя приложение Xafari.Workplace.ModelEditor.exe

  • Запустить приложение Xafari.Workplace.ModelEditor.exe. В диалоговом окне «Открыть модель рабочего места» указать конфигурационный файл приложения и, при необходимости, папку с файлами рабочих мест

  • Задать имя файла рабочего места в соответствии с шаблоном Model.Workplace.<имя роли>.xafml.
  • Нажать ставшую активной кнопку «Создать».
  • При необходимости можно запустить редактор моделей, нажав «Открыть»

Редактирование модели существующего рабочего места

Для того чтобы отредактировать модель уже существующего рабочего места (на диске уже есть файл Model.Workplace.<имя роли>.xafml) есть два способа:

  • использовать само приложение Галактика EAM
  • специальную программу Xafari.Workplace.ModelEditor.exe

Редактирование модели рабочего места в приложении Галактика EAM

Для редактирования модели существующего рабочего места надо выполнить те же шаги что описано в п. 3.3.2 данного документа

Редактирование модели рабочего места в приложении Xafari.Workplace.ModelEditor.exe

Вместе с приложением Галактика EAM устанавливается и специальная утилита Xafari.Workplace.ModelEditor.exe (находится в то же папке что и Galaktika.EAM.Win.exe). Также эта утилита может быть вызвана из меню «Пуск».

  • Запускаем данную утилиту
  • В появившемся окне надо вначале заполнить поле «Конфигурационный файл приложения». Задать путь и имя файла Galaktika.EAM.Win.exe.config

  • Потом выдрать нужный «Файл рабочего места»

  • После этого откроется редактор модели для выбранного рабочего места

  • Все изменения выполняемые в редакторе модели будут сохраняться в файле выбранного рабочего места

Настройка модели всего приложения (для всех пользователей)

Для настройки модели приложения которые действую для всех пользователей используется утилита DevExpress.ExpressApp.ModelEditor.v12.1.exe.
Все изменения сделанные в этой утилите сохраняются в файлах Model.xafml, Model_ru.xafml
Файлы лежат в той же папке что и исполняемые файлы Галактика EAM
Утилита DevExpress.ExpressApp.ModelEditor.v12.1.exe поставляется с продуктом DevExpress, а так же находится в папке в которой установлена Галактика EAM.
При запуске утилиты надо задать имя config файла приложения. Имя файла надо задавать с полным путем к нему.

После этого открывается редактор модели, в котором настраиваем модель приложения

Запуск приложения с настройками рабочего места

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

  • Запускаю приложение
  • Вхожу в систему под пользователем Иванов

  • Открывается окно выбора рабочего места

  • Выбираем рабочее место «Механик»
  • и запускаем приложение

h2>Параметры запуска приложения с настройками рабочего места

Параметры запуска приложения с настройками рабочего места определяются в CONFIG файле приложения (Galaktika.EAM.Win.exe.config). Доступны следующие параметры

Папка где хранятся файлы настройки рабочих мест

Параметр определяет папку на диске, где лежат файлы настройки рабочих мест (Model.Workplace.<имя роли>.xafml). Если этот параметр не задан, то файлы по умолчанию берутся из папки приложения.

Элемент в Config файле

В config файле приложения данный параметр задается элементом

<add key="WorkplaceFilesPath" value =" d:\Application|Workplaces \" />

Отображать или нет окно выбора рабочего места при запуске приложения

Параметр определяет отображать или нет окно выбора рабочего места при запуске приложения.

Если задано не отображать, то будет автоматически использоваться последнее рабочее место, с которым работал данный пользователь. Если последнего рабочего места нет, то будет использовано первое из списка

Элемент в Config файле

В config файле приложения данный параметр задается элементом

<add key="ShowWorkplaceSelectorOnStart" value ="true" />

Файлы настройки модели пользователей

Настройки (изменения) модели пользователя хранятся в файлах. Имя файла имеет следующий вид Model.User.<имя роли>.xafml. Т.к. один и тот же пользователь может использовать различные рабочие места, то для каждого рабочего места создается отдельный файл пользовательских настроек. Например, если пользователь запустит приложение и выберет рабочее место «Мастер», то будет создан файл изменений модели пользователя Model.User.Мастер.xafml, если потом пользователь запустит приложение и выберет рабочее место «Механик», то будет создан файл изменений модели пользователя Model.User.Механик.xafml. Файлы пользователя сохраняются в отдельном подкаталоге, уникальном для данного пользователя. Имя подкаталога соответствует идентификатору этого пользователя в таблице пользователей (GUID).