Практикум. Обращение в техподдержку. Объектная модель
Реализация любого приложения начинается с создания предметной области, типов объектов, их атрибутов и настройки связи между элементами объектной модели.
Перед тем как приступить к настройке приложения необходимо выделить основные используемые понятия:
-
Атрибут – значимая характеристика бизнес-сущности, используется для идентификации, классификации, выражения количественной характеристики или состояния объекта;
-
https://docs.greendata.ru/platform/ru/architecture-of-system-objects.html#%D1%82%D0%B8%D0%BF%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0[Тип объектов] – набор характеристик (атрибутов) для описания бизнес-сущности;
-
https://docs.greendata.ru/platform/ru/architecture-of-system-objects.html#%D1%8D%D0%BA%D0%B7%D0%B5%D0%BC%D0%BF%D0%BB%D1%8F%D1%80%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0[Экземпляр] – набор сведений о конкретном объекте, создается Системой при заполнении данными;
-
https://docs.greendata.ru/platform/ru/architecture-of-system-objects.html#%D1%80%D0%B5%D0%B5%D1%81%D1%82%D1%80%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2[Реестр объектов] – накопитель сведений одного типа;
-
Связь – индикатор взаимоотношений между объектами. Существует 3 типа связей: наследования, агрегации и ассоциации.
При проектировании объектной модели существует возможность использовать готовые и создавать новые типы объектов. После описания типов объектов и определения их характеристик платформа автоматически создаст оптимальные таблицы, ключи, индексы, связи и структуры.
Работа с объектной моделью включает в себя несколько этапов:
-
Создание предметной области, на которой будет происходить создание объектной модели;
-
Создание типов объектов. Перед созданием типа объектов необходима проверка отсутствия в Системе, что позволит обойти дублирование данных;
-
Определение атрибутивного состава нового типа объектов и других настроек;
-
Настройка связей ассоциации и агрегации между типами объектов;
-
Наполнение типа объектов данными – экземплярами объектов – и последующее использование созданного типа в реализации бизнес-приложения.
Для решения рассматриваемой бизнес-задачи необходимо построить объектную модель, содержащую следующие типы объектов:
-
Обращение в техподдержку – ключевой тип объектов, с которым взаимодействуют пользователи. В нем содержится информация о проблеме, исполнителях и степени критичности;
-
Критичность – справочник, который будет хранить объекты описывающие степень критичности поступившего обращения клиента;
-
Классификация обращения – справочник, который будет хранить значения о типах обращений;
-
Оценка решения – справочник, который будет хранить значения оценок решений обращений;
-
Тип обращения – справочник, который будет хранить значения о типах обращений.
Целевая объектная модель должна выглядеть следующим образом:
Создание предметной области
Для удобства работы на платформе предусмотрена работа с моделью данных в виде ER-диаграммы (диаграммы предметной области), которая наглядно отображает состав и связи между элементами настраиваемой объектной модели.
Для создания новой ER-диаграммы есть два способа:
-
На стартовой странице в виджете «Предметные области» нажмите на кнопку «Создать».
В модальном окне воспользуйтесь кнопкой «Создать с нуля» чтобы создать пустую предметную область.
-
Через главное меню перейти в пункт «Администрирование» – «Управление объектами» – «Предметные области». После перехода в реестре предметных областей создать новый экземпляр типа с помощью кнопки «Создать».
Создайте новую предметную область. Задайте для предметной области Наименование «Обращение в техподдержку». Сохраните экземпляр с помощью кнопки на верхней панели.
Определение типов объектов
Для реализации объектной модели используются типы объектов для описания сущностей.
В редакторе предметной области предусмотрено добавление уже имеющихся типов объектов и создание новых.
Определение и наполнение справочника «Критичность»
Добавьте тип объектов «Критичность» - справочник, который будет хранить значения о вариантах критичности обращений.
Создайте тип объектов «Критичность» [CRITICALNESS]. В качестве родителя выберите тип объектов «Объект» и сохраните настройки типа объектов.
Важно! Следует корректно заполнить поля «Наименования таблицы» и «Родитель» при создании типа объектов, так как после первого сохранения их редактирование будет недоступно.
В окне настроек типа объектов «Критичность» перейдите в реестр экземпляров с помощью кнопки «Открыть реестр» на панели управления.
Реестр нового типа объектов по умолчанию пустой и не имеет экземпляров объектов. На панели инструментов расположены кнопки взаимодействия с реестром и экземплярами типа объектов.
Создайте новый объект (экземпляр) с помощью кнопки на панели управления. Заполните поле «Наименование» значением «Высокая» и сохраните объект.
Вернитесь к реестру и создайте остальные объекты:
-
Средняя;
-
Низкая.
После этого реестр будет выглядеть следующим образом:
Вернитесь к предметной области и сохраните ее.
Определение и наполнение справочника «Тип обращения»
Добавьте тип объектов «Тип обращения» - справочник, который будет хранить значения о типах обращений.
Создайте тип объектов «Тип обращения» [APPEAL_TYPE]. В качестве родителя выберите тип объектов «Объект» и сохраните настройки типа объектов.
В окне настроек перейдите в реестр экземпляров типа объектов «Тип обращения» с помощью кнопки «Открыть реестр» и заполните реестр следующими записями:
-
Инцидент;
-
Заявка;
-
Жалоба;
-
Вопрос;
-
Запрос.
Определение и наполнение справочника «Оценка решения»
Добавьте тип объектов «Оценка решения» - справочник, который будет хранить значения оценок решений обращений.
Создайте тип объектов «Оценка решения» [RATING]. В качестве родителя выберите тип объектов «Объект» и сохраните настройки типа объектов. Заполните реестр записями от 1 до 10.
Определение типа объектов «Классификация обращения»
Добавьте тип объектов «Классификация обращения» - справочник, который будет хранить значения о типах обращений.
Создайте тип объектов «Классификация обращения» [PROBLEM_TYPE]. В качестве родителя выберите тип объектов «Объект» и сохраните настройки типа объектов.
Вернитесь к предметной области.
Определение типа объектов «Обращение в техподдержку»
Создайте новый тип объектов «Обращение в техподдержку» [CONTACT_TECH_SUPP] – экземпляры этого типа объектов будут содержать информацию об обращениях клиентов. В качестве родителя выберите тип объектов «ДО. Документ» и сохраните настройки типа объектов.
Тип объектов «ДО. Документ» – это системный тип объектов, настройки которого нельзя изменить. Но его можно использовать в качестве родителя для типов объектов, по данным которых в дальнейшем будут формироваться документы, так как он имеет необходимые для этого атрибуты «Дата документа», «Номер документа» и «Прикрепленные файлы».
На вкладке «Атрибуты» настройте атрибутивный состав типа объектов. В списке атрибутов указываются унаследованные (родительские), существующие и созданные пользователем атрибуты.
Настройте унаследованные атрибуты. Для того чтобы отобразить список родительских атрибутов, необходимо активировать переключатель «Показать атрибуты родительского типа».
Перейдите к настройке атрибута «Номер документа» [DOC_NUM], для этого выберите его в списке атрибутов и перейдите к редактированию с помощью кнопки .
В модальном окне настройки атрибута его параметры расположены на следующих вкладках:
-
Основное – ввод основной информации об атрибуте;
-
Визуал – выбор визуального отображения атрибута;
-
Версионность значений – определение зависимости значения атрибута от времени;
-
События – настройка дополнительных действий при изменении значения атрибута в объекте;
-
Дополнительное – ввод иных (некритичных) характеристик атрибута.
Измените наименование атрибута на «Номер обращения» и сохраните настройки атрибута.
Аналогично перейдите к настройке атрибута «Состояние» [STATE_ID] и измените наименование на «Статус обращения», укажите значение по умолчанию «Новый». Сохраните настройки атрибута.
Перейдите к настройке атрибута «Прикрепленные файлы» [SYS_FILE_ID] и перейдите к настройке визуала. Выберите визуал «Виджет для файлов» и укажите классификацию «Все файлы».
На этой же вкладке ниже установите флаг «Разрешить удаление файлов». Сохраните настройки атрибута и вернитесь в окно настройки типа объектов.
Добавьте существующий атрибут, для этого на вкладке «Атрибуты» необходимо нажать на кнопку «Добавить существующий» и в появившемся модальном окне выбрать интересующий из перечня атрибутов. Использование существующих атрибутов позволит избежать дублирования структур и расширения базы данных.
Добавьте атрибут, который будет хранить информацию о списке ответственных сотрудников. Добавьте существующий атрибут, для этого нажмите на кнопку «Добавить существующий». В модальном окне активируйте переключатель «Выбор атрибута из полного списка атрибутов» и в поле «Атрибут» с помощь поиска найдите и выберите атрибут «Ответственные по документу» [ATTR_OBJ_RESP], затем подтвердите выбор с помощью кнопки «Добавить».
Измените настройки добавленного атрибута, для этого в списке выберите атрибут «Ответственные по документу» и нажмите на кнопку редактирования. На вкладке «Основное» замените наименование атрибута на «Ответственные сотрудники». Сохраните настройки атрибута с помощью кнопки «Ок».
Также добавьте существующий атрибут «Исполнитель» [RESP_EMP_ID] для назначения сотрудника, который будет рассматривать проблему клиента.
Создайте новый атрибут для хранения информации о проблеме, для этого нажмите на кнопку «Создать».
На вкладке «Основное» заполните поля:
-
Наименование – «Краткое описание проблемы»;
-
Идентификатор – «SHORT_DESCRIPTION»;
-
Тип – «Строка»;
-
Размер – «2000»;
-
Обязательность – «Да».
Сохраните настройки типа объектов.
Добавьте остальные атрибуты, согласно таблице ниже (см. Таблица 1).
Таблица 1. Атрибуты типа объектов «Обращение в техподдержку»
Наименование | Идентификатор | Тип | Обязательность | Значение по умолчанию |
---|---|---|---|---|
Время закрытия обращения |
TECH_SUPP_END |
Дата и время |
Нет |
- |
Время обработки обращения (мин.) |
REQUEST_TIME |
Целое число |
Нет |
- |
Дата взятия в работу |
DATE_START |
Дата и время |
Нет |
- |
Комментарий клиента |
CLIENT_COMMENT |
Текст |
Нет |
- |
Решено |
IS_SOLVED |
Логический |
Нет |
нет |
Описание |
ISSUE_DESCRIPTION |
Текст |
Нет |
- |
Настройка связей между типами объекта
Настройте связи между типами объектов на предметной области. На платформе реализован функционал установки связей для сопоставления данных между двумя типами объектов.
Связь между типами объектов устанавливает отношения между совпадающими значениями в ключевых полях, что позволяет обращаться к записям одного типа из другого.
Существует 3 вида взаимосвязи между объектами:
-
Наследования – ссылка на родительский объект;
-
Ассоциации – создание объектного атрибута – атрибута с ссылкой на тип объектов;
-
Агрегации – создание дочернего атрибута – атрибут, хранящий в себе набор записей другой таблицы (типа объекта, указанного при настройках атрибута), которая в свою очередь имеет объектную ссылку на текущую таблицу.
Один родительский объект может иметь несколько дочерних, однако у всякого дочернего объекта может быть только один родитель. Кроме того, один и тот же объект может быть родительским для одних объектов и в то же время дочерним для других.
Создайте ассоциативную связь от типа объектов «Обращение в техподдержку» к типу объектов «Критичность», для того чтобы отображать данные о критичности проблемы клиента. Для этого выберите тип объектов «Обращение в техподдержку» и откройте выпадающий список действий, выберите команду «Создать ассоциативную связь» и щелкните по типу объектов «Критичность».
После этого откроется модальное окно создания атрибута. При необходимости в текущем окне можно изменить настройки атрибута до сохранения, но после часть настроек будет недоступна для редактирования. Измените «Обязательность» — «Да», «Значение по умолчанию» — «Средняя». Сохраните изменения, нажав на кнопку «Ок».
Аналогичную настройку можно произвести с помощью создания нового атрибута на типе объектов: таким образом можно добавить связь с типом, которого нет на предметной области, но несть в Системе.
Таким образом, в типе объектов «Обращение в техподдержку» будет создан объектный атрибут, ссылающийся на Тип объектов «Критичность».
Сохраните предметную область.
Добавьте остальные объектные атрибуты, согласно таблице ниже (см. Таблица 2).
Таблица 2. Объектные атрибуты типа объектов «Обращение в техподдержку»
Наименование | Идентификатор | Тип | Обязательность | Значение по умолчанию |
---|---|---|---|---|
Время закрытия обращения |
TECH_SUPP_END |
Дата и время |
Нет |
- |
Время обработки обращения (мин.) |
REQUEST_TIME |
Целое число |
Нет |
- |
Дата взятия в работу |
DATE_START |
Дата и время |
Нет |
- |
Комментарий клиента |
CLIENT_COMMENT |
Текст |
Нет |
- |
Решено |
IS_SOLVED |
Логический |
Нет |
Нет |
Описание |
ISSUE_DESCRIPTION |
Текст |
Нет |
- |
Настройка иерархичности типа объектов
Настройка иерархичности типа объектов позволяет создать тип объектов, где допускается вложенность данных. Это позволяет накапливать в реестре данных дерево вложенности объектов создаваемого типа. Для упорядочивания вложенности назначается Атрибут иерархии.
Настройте иерархичность для типа объектов «Классификация обращения», для этого необходимо создать объектный атрибут, ссылающийся на собственный тип объектов, а затем активировать настройку иерархии.
Добавьте существующий атрибут «Классификация обращения» [PROBLEM_TYPE_ID] и измените наименование на «Родительская классификация». После этого в разделе «Дополнительные настройки» на вкладке «Иерархия» заполните поля «Иерархический тип» - «Да», «Атрибут иерархии» – «Родительская классификация».
Сохраните настройки типа объектов. Вернитесь к предметной области и сохраните ее.
Перейдите в реестр типа «Классификация обращения» и создайте иерархический экземпляр. Создайте новый экземпляр и заполните поле «Наименование» – «Бизнес-процессы», а поле «Родительская классификация» оставьте пустым. Сохраните, вернитесь к реестру и создайте новый экземпляр. Заполните поля: «Наименование» – «Конструктор схемы процесса», «Родительская классификация» – «Бизнес-процессы». Сохраните и вернитесь к реестру. Таким образом в реестре появится 2 строки: первая агрегирующая, обозначающая родительскую классификацию, вторая – обозначающая дочернюю.
Определение выражений для типов объекта
На платформе GreenData предусмотрена работа с алгоритмами. Алгоритм – это некая последовательность вычислительных шагов, используемая для выполнения определенной задачи или преобразования данных.
Система поддерживает работу со всеми типами алгоритмов: линейными, разветвляющимися, циклическими и вспомогательными. Они задаются на языке Groovy – объектно-ориентированном языке программирования, который является дополнением к языку Java.
Бэковые алгоритмы объектов выполняются на серверной части приложения. Они используются для:
-
заполнения значений атрибутов типа объектов;
-
расчета вычислимых показателей;
-
запуска этапа процесса интеграции;
-
создания условий и действий на бизнес-процессе;
-
трансформации аналитических форм.
Откладка бэковых алгоритмов возможна на этапе создания формулы. Каждый алгоритм может использоваться в Системе один или несколько раз.
Выражения – это алгоритмы на типе объекта, выполняющие автоматическое заполнение привязанных к ним атрибутов. С помощью выражений можно реализовать автонаименование объектов, их нумерацию, расчет вычислимых показателей, а также заполнение атрибутов данными.
Создание и настройка выражений происходит в настройках типа объекта на вкладке «Выражения\Автокалькуляции». Все системные и созданные пользователями алгоритмы выражений хранятся в реестре алгоритмов объектов в папке «Карточки объектов», в который можно перейти с помощью главного меню: «Администрирование» - «Управление объектами» - «Алгоритмы объектов».
Также можно создать собственную папку для хранения созданных алгоритмов с помощью кнопки на верхней панели.
Если выражения наследуются от родительского типа объектов, их невозможно отредактировать и удалить на уровне дочернего типа. Например, все типы объектов по умолчанию содержат выражение для автоматического заполнения наименования объекта. Указанное выражение наследуется от типа «Объект». Для задания нового алгоритма следует использовать кнопку «Переопределить настройки».
Для создания нового выражения воспользуйтесь кнопкой «Добавить новое выражение».
Редактор алгоритмов содержит в себе поле для формулы и панель «Инструменты», на которой располагаются доступные функции: набор функций определяется типом алгоритма.
Алгоритм для автоматической нумерации обращений
Каждый объект типа «ДО. Документ» (или его дочернего) имеет атрибут «Номер документа», который заполняется номером документа автоматически.
Настройте алгоритм для нумерации экземпляров типа объектов «Обращение в техподдержку».
Для реализации механизма автонумерации на платформе представлен отдельный тип объектов «Автонумерация» [SYS_SEQUENCE].
Для того чтобы перейти к нему, откройте главное меню и перейдите в раздел «Справочники» - «Автонумерация».
В открывшемся реестре создайте новый экземпляр «Автонумерация обращений в техподдержку» [AUT_NUMB_ISSUE], укажите текущее значение – 1. Сохраните объект.
Вернитесь к предметной области и откройте настройки типа объектов «Обращение в техподдержку» и перейдите на вкладку «Выражения/Автокалькуляции». Переопределите настройки выражения для Автоматической нумерации документов.
Создайте алгоритм «Автоматическая нумерация обращений в техподдержку», в качестве базового типа объектов оставьте «Обращение в техподдержку». Данный алгоритм будет автоматически нумеровать обращения при их создании и сохранять номер в атрибуте «Номер обращения». Уже существующим обращениям будет присвоен номер, указанный при их создании.
Заполните поле формулой алгоритма.
Воспользуйтесь функциями:
Выполните следующие шаги чтобы повторить формулу алгоритма:
-
На панели инструментов в разделе «Логико-арифметические» вызовите функцию if;
-
В качестве условия необходимо проверить новый ли текущий объект или он уже сохранен в Системе. Для этого воспользуйтесь функцией isNewObject из раздела «Объекты». В качестве аргумента функции укажите функцию currentObject из того же раздела;
-
В качестве операторов к выполнению необходимо указать объект автонумерации в случае удовлетворения заданным условиям. Для этого из раздела «Дополнительные» вызовите функцию sequenceNextVal – в появившемся окне выберите «Автонумерация обращений в техподдержку». При вызове данной функции система присвоит следующее по порядку числовое значение в атрибуте «Текущее значение» в выбранном экземпляре типа «Автонумерация».
-
После фигурных скобок функции if из раздела «Логико-арифметические» вставьте функцию else. В качестве оператора к выполнению вставим значение атрибута «Номер обращения» с помощью функции attr из раздела «Источники»: в появившемся модальном окне нужно выбрать атрибут из списка и нажать «Ок».
Сохраните изменения и вернитесь к настройке выражений типа.
В окне настройки выражения деактивируйте переключатель «Рассчитать в момент создания новых объектов», чтобы алгоритм выполнялся после сохранения объекта.
Сохраните настройки выражения с помощью кнопки «Сохранить».
Алгоритм для автоматического формирования наименования обращений
Настройте алгоритм для автоматического наименования экземпляра для типа объектов «Обращение в техподдержку». Для этого в настройках типа объектов на вкладке «Выражения/Автокалькуляция» выберите строку с алгоритмом наименования и выберите «Переопределить настройки».
Создайте алгоритм «Заполнение атрибута наименование обращения», в качестве базового типа объектов оставьте «Обращение в техподдержку». Алгоритм будет автоматически генерировать значение для атрибута «Наименование» при создании экземпляра. Если краткое описание проблемы содержит более 150 символов, в наименовании отобразится ровно 150.
Заполните формулу алгоритма.
Для этого воспользуйтесь следующими функциями:
Выполните следующую последовательность действий чтобы создать формулу алгоритма:
-
На панели инструментов в разделе «Логико-арифметические» вызовите функцию if. Данная функция появится в виде структуры, состоящей из двух частей: условие (задается в обычных скобках) и последующего действия в случае соответствия данному условию (задается в фигурных скобках);
-
В условии функции if вызовите функцию attr (раздел «Источники»): в появившемся окне выберите атрибут, значение которого будет подставляться в алгоритм – «Краткое описание проблемы»;
-
С помощью клавиатуры введите .length(). Для условия последовательно нажмите на клавиатуре «<» и «=» и введите 150;
-
Внутри блока if выберите функцию return в разделе «Алгоритмы». Добавьте функцию text на вкладке «Текст». В кавычках впишите текст «Обращение №». После текста введите с клавиатуры «+» для конкатенации(склеивания) элементов и строк формулы алгоритма между собой, его можно добавить при помощи соответствующей клавиши на клавиатуре;
-
Далее с помощью функции attr добавьте атрибут «Номер обращения»;
-
Далее снова добавьте знак сложения. С помощью функции text и введите « от »;
-
Далее снова добавьте знак сложения. Из раздела «Даты» вставьте функцию dateFormat. В качестве первого атрибута передайте атрибут «Дата создания» с помощью функции attr. В качестве второго оставьте формат даты: «dd.MM.yyyy HH:mm»;
-
Аналогично шагам 4-7, используя функции text и attr и добавьте указание критичности и краткое описание проблемы;
-
После фигурных скобок функции if вызовите функцию else из раздела «Логико-арифметические». В качестве действий скопируйте и вставьте действия функции if.В конце вручную впишите с помощью клавиатуры функцию .substring(0, 150).
Сохраните алгоритм и вернитесь к настройке выражения. Переведите в активное положение переключатель «Рассчитать в момент создания новых объектов» и в поле Автоматический пересчет выражения выберите из списка значение «При изменении атрибутов, используемых в алгоритме».
Поскольку в алгоритме для заполнения наименования используется значение из атрибута «Номер обращения», которое также рассчитывается с помощью заданного ранее выражения, то расчет выражения для атрибута «Номер обращения» должен осуществляться раньше, чем расчет выражения для атрибута «Наименование». Таким образом, необходимо убедиться, что данные выражения в реестре расположены в соответствующем порядке. Для изменения порядка выражений необходимо использовать кнопки перемещения.
Сохраните изменения на типе объектов.
Алгоритм для установки инициатора
Создайте новое выражение для автоматической установки инициатора текущим сотрудником. В модальном окне выберите тип «Выражение», а в поле «Алгоритм, на основании которого считается выражение» добавьте новый алгоритм: для этого раскройте панель дополнительных действий и выберите опцию «Добавить».
Создайте алгоритм «Установка текущего сотрудника инициатором», в качестве базового типа объектов оставьте «Обращение в техподдержку». Алгоритм будет возвращать сотрудника текущего пользователя.
Заполните поле формулы алгоритмом:
Чтобы повторить алгоритм, воспользуйтесь функцией currentUser.Атрибут: в модальном окне выберите атрибут «Сотрудник».
Сохраните настройки алгоритма и вернитесь к настройкам выражения. Активируйте опцию «Установить результат в атрибут», в поле «Атрибут» выберите «Инициатор» [INITIATOR_EMP_ID]. Сохраните настройки выражения.
Сохраните настройки типа объектов.