Формулировка проблемы: при разработке бизнес-приложений на базе Synergy разработчики сталкиваются с такими проблемами:
разобщенность кода: Synergy позволяет добавлять пользовательский код в различные объекты, при этом точки добавления этого кода неочевидны (например, сложно найти код, добавленный в компоненты формы);
неудобство ввода кода: редактор кода, встроенный в Synergy, не подходит для работы с большим кодом, из-за чего разработчики вынуждены создавать и править код во внешних SDK, а потом копировать готовый код в компоненты формы или пользовательские компоненты;
сложность совместной разработки приложений: большинство объектов Synergy не поддерживают версионность, а при выполнении импорта конфигурации заменяются не только те объекты, которые были непосредственно именены, но и те, от которых зависит измененный объект. При этом возникают ситуации, когда изменения, внесенные одним разработчиком Synergy, перекрываются изменениями, внесенными следующим разработчиком, во время замены связанных объектов;
невозможность логической группировки объектов Synergy: часто экземпляр Synergy содержит несколько групп объектов, не взаимодействующих между собой (например, объекты для работы приложения CRM и для приложения HRM). При этом структурировать список однотипных объектов, относящихся к разным логическим блокам (реестры CRM, реестры HRM, реестры для внутренних процессов организации), возможно только с помощью их названий, потому что располагаются они в общем списке объектов.
Решение:
Реализовать логическое структурирование объектов Synergy таким образом, чтобы объекты из различных блоков не взаимодействовали между собой.
Изменить структуру сущностей таким образом, чтобы пользовательский код, добавленный в них, располагался в отдельном файле для упрощения процедуры его переноса между экземпляром Synergy и произвольной SDK.
Изменить интерфейс оболочки Конфигуратора (без учета существующих редакторов сущностей и общих настроек платформы), приведя его к виду ShowCase.
В данной задаче будет рассмотрена концепция приложений.
Сущность - набор специфических атрибутов (реестры, формы и т.д.).
Объект - экземпляр с уникальными значениями атрибутов соответствующей сущности (например, реестр "Служебные записки").
Приложением называется изолированный набор объектов различных сущностей, сгруппированных произвольным образом, характеризующийся уникальным именем, кодом, номером ревизии и правами доступа.
Под изолированностью будем понимать отсутствие каких-либо зависимостей между объектами приложения или совместно используемых объектов, за исключением автогрупп и настроек платформы.
Экземпляр Synergy может одновременно содержать несколько приложений, однако обязательным условием является уникальность кода объектов, используемых в приложениях, в разрезе сущностей.
Настройки платформы - свойства, общие для всех приложений, содержащихся в одном экземпляре Synergy.
Synergy Developer, разработчик Synergy - пользователь, обладающий ролью "Разработчик Synergy", имеющий полные права доступа ко всем приложениям и настройкам платформы.
Synergy Application Developer, разработчик приложения Synergy - пользователь, входящий в группу, имеюшую права доступа ("Чтение" или "Изменение") на отдельное приложение экземпляра Synergy.
Название - мультиязычное поле ввода, обязательное для заполнения.
Код - текстовое поле ввода, обязательное для заполнения. К введенному значению применяются существующие правила валидации и альтернативные сценарии. Значение должно быть уникальным среди приложений, содержащихся в одном экземпляре Synergy.
Ревизия - автоматически вычисляемое число, характеризующее состояние всех объектов приложения. По умолчанию номер ревизии приложения равен 1. Каждое создание и сохранение изменений любого объекта приложения или самого приложения увеличивает номер ревизии.
Права доступа к приложению - набор групп пользователей и соответствующие им права на чтение и изменение объектов приложения.
Право "Чтение" для приложения аналогично праву на чтение всех объектов, входящих в приложение, без возможности их редактирования и добавления новых сущностей.
Право "Изменение" для приложения аналогично правам на изменение и назначение прав. Пользователь, входящий в группу, которой предоставлено это право, может создавать, изменять и удалять/скрывать все объекты приложения, а также назначать права на приложение.
Назначение группе права "Изменение" автоматически добавляет ей право "Чтение". Отключение группе права "Чтение" влечет за собой также отключение права "Изменение", если оно было назначено.
При назначении прав доступа к приложению могут использоваться только группы, входящие в это приложение, и автогруппы.
Примечание:
Права доступа групп, входящих в приложение, к папкам Хранилища, регулируются настройками платформы.
Сущность "Приложение" можно создавать и изменять.
Создание приложения производится из пункта меню "Приложение" - "Все приложения". Данный пункт доступен пользователю с ролью "Разработчик Synergy", а также разработчикам приложения Synergy.
Кнопка | Действие | Доступность |
---|---|---|
Открыть приложение |
Отображается навигатор по объектам приложения, список приложений закрывается |
Synergy Developer Synergy Application Developer для выбранного приложения |
Создать |
Отображается то же окно, но с пустыми полями |
Synergy Developer |
Добавить |
Отображается диалог выбора групп, содержащихся в текущем приложении |
Synergy Developer Synergy Application Developer с правом "Изменение" для текущего приложения |
Сохранить |
Сохраняются изменения, редактор приложения не закрывается |
Synergy Developer Synergy Application Developer с правом "Изменение" для текущего приложения |
В списке приложений пользователю отображаются только те приложения, для которых у него есть как минимум право "Чтение".
Логирование действий с приложением
Необходимо добавить новые события для источника "Конфигуратор":
Событие: "Создание приложения"
Описание:
Идентификатор: %uuid_приложения%. Объект: перечисление всех свойств
Событие: "Изменение приложения"
Описание:
Идентификатор: %uuid_приложения%. Объект: перечисление измененных свойств
Группы
Базовые сущности:
Счетчики
Справочники
Формы
Документооборот:
Шаблоны номеров
Журналы
Типы документов
Шаблоны документов
Управление трудовыми ресурсами:
Карточки пользователей
Карточки должностей
Карточки подразделений
Действия по сотрудникам
Действия по резерву
Интеграция:
Пользовательские компоненты
Внешние модули-компоненты
Внешние модули
Процессы:
Реестры
Группы реестров
Шаблоны маршрутов
Пользовательские отчеты
Для обеспечения группировки различных объектов в приложении используются папки. Разработчики приложений Synergy могут произвольным образом создавать папки и располагать в них объекты приложения.
Для добавления новой папки Synergy Application Developer, имеющий право "Изменить", в меню выбирает пункт "Добавить" - "Папку". Открывается диалог создания/редактирования папки:
Атрибутом папки является Наименование - текстовое поле ввода, обязательное для заполнения. К введенному значению применяются существующие правила валидации кода. Значение должно быть уникальным среди папок, содержащихся в указанной родительской папке. Возможно выполнение альтернативных потоков 1-3.
Новая папка добавляется в папку дерева объектов приложения, которая была выделена в момент создания.
Нода папки в навигаторе содержит контекстное меню с пунктами:
"Добавить" с подпунктами, дублирующими подпункты пункта "Добавить" в панели меню;
"Изменить": открывается диалог редактирования папки, аналогичный диалогу "Новая папка";
"Удалить": выполняется удаление выбранной папки. Возможно выполнение альтернативных потоков 4-5.
Для пользователя Synergy Application Developer, у которого отсутствует право "Изменение" для текущего проекта, добавление новой папки, переименование и удаление существующей недоступно (недоступен пункт на верхней панели меню и не отображаются пункты контекстного меню).
Логирование действий с папкой
Необходимо добавить новые события для источника "Конфигуратор":
Событие: "Создание папки"
Описание:
Идентификатор: %uuid_папки%. Объект: расположение папки, наименование папки
Событие: "Изменение папки"
Описание:
Идентификатор: %uuid_папки%. Объект: расположение папки, наименование папки
Событие: "Перемещение папки"
Описание:
Идентификатор: %uuid_папки%. Объект: расположение папки, наименование папки
Альтернативный поток 1. Поле "Наименование" не заполнено, выполняется сохранение.
Действие не выполняется, поле "Наименование" подсвечивается красным, отображается ошибка с текстом:
"Укажите наименование папки".
Альтернативный поток 2. Поле "Наименование" создержит неразрешенные символы либо начинается с цифры, выполняется сохранение
Действие не выполняется, поле "Наименование" подсвечивается красным, отображается ошибка с текстом:
*Наименование папки может содержать прописные и строчные буквы латинского алфавита, цифры и _, но не должно начинаться с цифры*
Альтернативный поток 3. Указанное наименование папки не уникально в выбранной родительской папке, выполняется сохранение.
Действие не выполняется, поле "Наименование" подсвечивается красным, отображается ошибка с текстом:
"Данное наименование уже используется в родительской папке".
Альтернативный поток 4. Выполняется удаление папки, причем папка содержит объекты (в том числе скрытые).
Действие не выполняется, отображается ошибка с текстом:
"Данная папка не пуста".
Альтернативный поток 5. Выполняется удаление пустой папки.
Отображается запрос подтверждения действия:
"Вы уверены, что хотите удалить папку?"
Если разработчик подтверждает действие, папка удаляется из навигатора.
Если разработчик отклоняет действие, удаление папки не выполняется.
Настройки системы:
Общие настройки
Региональные настройки:
Языки
Переводы
Параметры уведомлений
Рабочее время (бывший раздел "Календарь")
Управление модулями:
Настройки пунктов создания
Сотрудники
Доп. настройки управления модулями
Настройки почты
Настройки адресной книги
Системные справочники
Настройки документооборота:
Дела
Шаблоны протокола
Настройки потоков работ:
Фильтры потоков работ
Диалоги создания
Приоритеты
Процессы
Резолюции
Нагрузки
Формы завершения (бывший раздел "Специальные справочники")
Дополнительные настройки
Настройки документооборота
Создание документов
Трудовые ресурсы (бывший раздел "Отдел кадров"):
Личное дело
Отчет по оргструктуре (без списка встроенных отчетов)
Проекты:
Категории рисков
Портфели проектов
Настройки проектов
Шаблоны проектов
Операционная деятельность:
Шаблоны системных показателей
Настройки системных показателей
Хранилище:
Папки
Роли
Свойства
Классификатор