Was this article helpful?

Спасибо за вашу оценку!

Оставляя более подробный отзыв, вы помогаете нам улучшать документацию

Практикум. Обращение в техподдержку. Объектная модель

Реализация любого приложения начинается с создания предметной области, типов объектов, их атрибутов и настройки связи между элементами объектной модели.

Перед тем как приступить к настройке приложения необходимо выделить основные используемые понятия:

  • Атрибут – значимая характеристика бизнес-сущности, используется для идентификации, классификации, выражения количественной характеристики или состояния объекта;

  • 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 типа связей: наследования, агрегации и ассоциации.

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

Работа с объектной моделью включает в себя несколько этапов:

  1. Создание предметной области, на которой будет происходить создание объектной модели;

  2. Создание типов объектов. Перед созданием типа объектов необходима проверка отсутствия в Системе, что позволит обойти дублирование данных;

  3. Определение атрибутивного состава нового типа объектов и других настроек;

  4. Настройка связей ассоциации и агрегации между типами объектов;

  5. Наполнение типа объектов данными – экземплярами объектов – и последующее использование созданного типа в реализации бизнес-приложения.

Для решения рассматриваемой бизнес-задачи необходимо построить объектную модель, содержащую следующие типы объектов:

  • Обращение в техподдержку – ключевой тип объектов, с которым взаимодействуют пользователи. В нем содержится информация о проблеме, исполнителях и степени критичности;

  • Критичность – справочник, который будет хранить объекты описывающие степень критичности поступившего обращения клиента;

  • Классификация обращения – справочник, который будет хранить значения о типах обращений;

  • Оценка решения – справочник, который будет хранить значения оценок решений обращений;

  • Тип обращения – справочник, который будет хранить значения о типах обращений.

Целевая объектная модель должна выглядеть следующим образом:

image017

Создание предметной области

Для удобства работы на платформе предусмотрена работа с моделью данных в виде ER-диаграммы (диаграммы предметной области), которая наглядно отображает состав и связи между элементами настраиваемой объектной модели.

Для создания новой ER-диаграммы есть два способа:

  1. На стартовой странице в виджете «Предметные области» нажмите на кнопку «Создать».

    image018

    В модальном окне воспользуйтесь кнопкой «Создать с нуля» чтобы создать пустую предметную область.

    image019

  2. Через главное меню перейти в пункт «Администрирование»«Управление объектами»«Предметные области». После перехода в реестре предметных областей создать новый экземпляр типа с помощью кнопки «Создать».

    image020

    Создайте новую предметную область. Задайте для предметной области Наименование «Обращение в техподдержку». Сохраните экземпляр с помощью кнопки на верхней панели.

    image021

Определение типов объектов

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

В редакторе предметной области предусмотрено добавление уже имеющихся типов объектов и создание новых.

image

Определение и наполнение справочника «Критичность»

Добавьте тип объектов «Критичность» - справочник, который будет хранить значения о вариантах критичности обращений.

Создайте тип объектов «Критичность» [CRITICALNESS]. В качестве родителя выберите тип объектов «Объект» и сохраните настройки типа объектов.

Важно! Следует корректно заполнить поля «Наименования таблицы» и «Родитель» при создании типа объектов, так как после первого сохранения их редактирование будет недоступно.

image023

В окне настроек типа объектов «Критичность» перейдите в реестр экземпляров с помощью кнопки «Открыть реестр» на панели управления.

image024

Реестр нового типа объектов по умолчанию пустой и не имеет экземпляров объектов. На панели инструментов расположены кнопки взаимодействия с реестром и экземплярами типа объектов.

image

Создайте новый объект (экземпляр) с помощью кнопки на панели управления. Заполните поле «Наименование» значением «Высокая» и сохраните объект.

image

Вернитесь к реестру и создайте остальные объекты:

  • Средняя;

  • Низкая.

После этого реестр будет выглядеть следующим образом:

image

Вернитесь к предметной области и сохраните ее.

Определение и наполнение справочника «Тип обращения»

Добавьте тип объектов «Тип обращения» - справочник, который будет хранить значения о типах обращений.

Создайте тип объектов «Тип обращения» [APPEAL_TYPE]. В качестве родителя выберите тип объектов «Объект» и сохраните настройки типа объектов.

image

В окне настроек перейдите в реестр экземпляров типа объектов «Тип обращения» с помощью кнопки «Открыть реестр» и заполните реестр следующими записями:

  • Инцидент;

  • Заявка;

  • Жалоба;

  • Вопрос;

  • Запрос.

image

Определение и наполнение справочника «Оценка решения»

Добавьте тип объектов «Оценка решения» - справочник, который будет хранить значения оценок решений обращений.

Создайте тип объектов «Оценка решения» [RATING]. В качестве родителя выберите тип объектов «Объект» и сохраните настройки типа объектов. Заполните реестр записями от 1 до 10.

image

Определение типа объектов «Классификация обращения»

Добавьте тип объектов «Классификация обращения» - справочник, который будет хранить значения о типах обращений.

Создайте тип объектов «Классификация обращения» [PROBLEM_TYPE]. В качестве родителя выберите тип объектов «Объект» и сохраните настройки типа объектов.

image031

Вернитесь к предметной области.

Определение типа объектов «Обращение в техподдержку»

Создайте новый тип объектов «Обращение в техподдержку» [CONTACT_TECH_SUPP] – экземпляры этого типа объектов будут содержать информацию об обращениях клиентов. В качестве родителя выберите тип объектов «ДО. Документ» и сохраните настройки типа объектов.

Тип объектов «ДО. Документ» – это системный тип объектов, настройки которого нельзя изменить. Но его можно использовать в качестве родителя для типов объектов, по данным которых в дальнейшем будут формироваться документы, так как он имеет необходимые для этого атрибуты «Дата документа», «Номер документа» и «Прикрепленные файлы».

image032

На вкладке «Атрибуты» настройте атрибутивный состав типа объектов. В списке атрибутов указываются унаследованные (родительские), существующие и созданные пользователем атрибуты.

Настройте унаследованные атрибуты. Для того чтобы отобразить список родительских атрибутов, необходимо активировать переключатель «Показать атрибуты родительского типа».

image033

Перейдите к настройке атрибута «Номер документа» [DOC_NUM], для этого выберите его в списке атрибутов и перейдите к редактированию с помощью кнопки image034.

image035

В модальном окне настройки атрибута его параметры расположены на следующих вкладках:

  • Основное – ввод основной информации об атрибуте;

  • Визуал – выбор визуального отображения атрибута;

  • Версионность значений – определение зависимости значения атрибута от времени;

  • События – настройка дополнительных действий при изменении значения атрибута в объекте;

  • Дополнительное – ввод иных (некритичных) характеристик атрибута.

Измените наименование атрибута на «Номер обращения» и сохраните настройки атрибута.

image

Аналогично перейдите к настройке атрибута «Состояние» [STATE_ID] и измените наименование на «Статус обращения», укажите значение по умолчанию «Новый». Сохраните настройки атрибута.

image

Перейдите к настройке атрибута «Прикрепленные файлы» [SYS_FILE_ID] и перейдите к настройке визуала. Выберите визуал «Виджет для файлов» и укажите классификацию «Все файлы».

image

На этой же вкладке ниже установите флаг «Разрешить удаление файлов». Сохраните настройки атрибута и вернитесь в окно настройки типа объектов.

image

Добавьте существующий атрибут, для этого на вкладке «Атрибуты» необходимо нажать на кнопку «Добавить существующий» и в появившемся модальном окне выбрать интересующий из перечня атрибутов. Использование существующих атрибутов позволит избежать дублирования структур и расширения базы данных.

image

Добавьте атрибут, который будет хранить информацию о списке ответственных сотрудников. Добавьте существующий атрибут, для этого нажмите на кнопку «Добавить существующий». В модальном окне активируйте переключатель «Выбор атрибута из полного списка атрибутов» и в поле «Атрибут» с помощь поиска найдите и выберите атрибут «Ответственные по документу» [ATTR_OBJ_RESP], затем подтвердите выбор с помощью кнопки «Добавить».

image

Измените настройки добавленного атрибута, для этого в списке выберите атрибут «Ответственные по документу» и нажмите на кнопку редактирования. На вкладке «Основное» замените наименование атрибута на «Ответственные сотрудники». Сохраните настройки атрибута с помощью кнопки «Ок».

image

Также добавьте существующий атрибут «Исполнитель» [RESP_EMP_ID] для назначения сотрудника, который будет рассматривать проблему клиента.

image

Создайте новый атрибут для хранения информации о проблеме, для этого нажмите на кнопку «Создать».

image

На вкладке «Основное» заполните поля:

  • Наименование – «Краткое описание проблемы»;

  • Идентификатор – «SHORT_DESCRIPTION»;

  • Тип – «Строка»;

  • Размер – «2000»;

  • Обязательность – «Да».

image

Сохраните настройки типа объектов.

Добавьте остальные атрибуты, согласно таблице ниже (см. Таблица 1).

Таблица 1. Атрибуты типа объектов «Обращение в техподдержку»

Наименование Идентификатор Тип Обязательность Значение по умолчанию

Время закрытия обращения

TECH_SUPP_END

Дата и время

Нет

-

Время обработки обращения (мин.)

REQUEST_TIME

Целое число

Нет

-

Дата взятия в работу

DATE_START

Дата и время

Нет

-

Комментарий клиента

CLIENT_COMMENT

Текст

Нет

-

Решено

IS_SOLVED

Логический

Нет

нет

Описание

ISSUE_DESCRIPTION

Текст

Нет

-

Настройка связей между типами объекта

Настройте связи между типами объектов на предметной области. На платформе реализован функционал установки связей для сопоставления данных между двумя типами объектов.

Связь между типами объектов устанавливает отношения между совпадающими значениями в ключевых полях, что позволяет обращаться к записям одного типа из другого.

Существует 3 вида взаимосвязи между объектами:

  • Наследования – ссылка на родительский объект;

  • Ассоциации – создание объектного атрибута – атрибута с ссылкой на тип объектов;

  • Агрегации – создание дочернего атрибута – атрибут, хранящий в себе набор записей другой таблицы (типа объекта, указанного при настройках атрибута), которая в свою очередь имеет объектную ссылку на текущую таблицу.

Один родительский объект может иметь несколько дочерних, однако у всякого дочернего объекта может быть только один родитель. Кроме того, один и тот же объект может быть родительским для одних объектов и в то же время дочерним для других.

Создайте ассоциативную связь от типа объектов «Обращение в техподдержку» к типу объектов «Критичность», для того чтобы отображать данные о критичности проблемы клиента. Для этого выберите тип объектов «Обращение в техподдержку» и откройте выпадающий список действий, выберите команду «Создать ассоциативную связь» и щелкните по типу объектов «Критичность».

image

После этого откроется модальное окно создания атрибута. При необходимости в текущем окне можно изменить настройки атрибута до сохранения, но после часть настроек будет недоступна для редактирования. Измените «Обязательность»«Да», «Значение по умолчанию»«Средняя». Сохраните изменения, нажав на кнопку «Ок».

Аналогичную настройку можно произвести с помощью создания нового атрибута на типе объектов: таким образом можно добавить связь с типом, которого нет на предметной области, но несть в Системе.

image

Таким образом, в типе объектов «Обращение в техподдержку» будет создан объектный атрибут, ссылающийся на Тип объектов «Критичность».

image

Сохраните предметную область.

Добавьте остальные объектные атрибуты, согласно таблице ниже (см. Таблица 2).

Таблица 2. Объектные атрибуты типа объектов «Обращение в техподдержку»

Наименование Идентификатор Тип Обязательность Значение по умолчанию

Время закрытия обращения

TECH_SUPP_END

Дата и время

Нет

-

Время обработки обращения (мин.)

REQUEST_TIME

Целое число

Нет

-

Дата взятия в работу

DATE_START

Дата и время

Нет

-

Комментарий клиента

CLIENT_COMMENT

Текст

Нет

-

Решено

IS_SOLVED

Логический

Нет

Нет

Описание

ISSUE_DESCRIPTION

Текст

Нет

-

image

Настройка иерархичности типа объектов

Настройка иерархичности типа объектов позволяет создать тип объектов, где допускается вложенность данных. Это позволяет накапливать в реестре данных дерево вложенности объектов создаваемого типа. Для упорядочивания вложенности назначается Атрибут иерархии.

Настройте иерархичность для типа объектов «Классификация обращения», для этого необходимо создать объектный атрибут, ссылающийся на собственный тип объектов, а затем активировать настройку иерархии.

Добавьте существующий атрибут «Классификация обращения» [PROBLEM_TYPE_ID] и измените наименование на «Родительская классификация». После этого в разделе «Дополнительные настройки» на вкладке «Иерархия» заполните поля «Иерархический тип» - «Да», «Атрибут иерархии» – «Родительская классификация».

image

Сохраните настройки типа объектов. Вернитесь к предметной области и сохраните ее.

image

Перейдите в реестр типа «Классификация обращения» и создайте иерархический экземпляр. Создайте новый экземпляр и заполните поле «Наименование»«Бизнес-процессы», а поле «Родительская классификация» оставьте пустым. Сохраните, вернитесь к реестру и создайте новый экземпляр. Заполните поля: «Наименование»«Конструктор схемы процесса», «Родительская классификация»«Бизнес-процессы». Сохраните и вернитесь к реестру. Таким образом в реестре появится 2 строки: первая агрегирующая, обозначающая родительскую классификацию, вторая – обозначающая дочернюю.

image052

Определение выражений для типов объекта

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

Система поддерживает работу со всеми типами алгоритмов: линейными, разветвляющимися, циклическими и вспомогательными. Они задаются на языке Groovy – объектно-ориентированном языке программирования, который является дополнением к языку Java.

Бэковые алгоритмы объектов выполняются на серверной части приложения. Они используются для:

  • заполнения значений атрибутов типа объектов;

  • расчета вычислимых показателей;

  • запуска этапа процесса интеграции;

  • создания условий и действий на бизнес-процессе;

  • трансформации аналитических форм.

Откладка бэковых алгоритмов возможна на этапе создания формулы. Каждый алгоритм может использоваться в Системе один или несколько раз.

Выражения – это алгоритмы на типе объекта, выполняющие автоматическое заполнение привязанных к ним атрибутов. С помощью выражений можно реализовать автонаименование объектов, их нумерацию, расчет вычислимых показателей, а также заполнение атрибутов данными.

Создание и настройка выражений происходит в настройках типа объекта на вкладке «Выражения\Автокалькуляции». Все системные и созданные пользователями алгоритмы выражений хранятся в реестре алгоритмов объектов в папке «Карточки объектов», в который можно перейти с помощью главного меню: «Администрирование» - «Управление объектами» - «Алгоритмы объектов».

Также можно создать собственную папку для хранения созданных алгоритмов с помощью кнопки на верхней панели.

image053

Если выражения наследуются от родительского типа объектов, их невозможно отредактировать и удалить на уровне дочернего типа. Например, все типы объектов по умолчанию содержат выражение для автоматического заполнения наименования объекта. Указанное выражение наследуется от типа «Объект». Для задания нового алгоритма следует использовать кнопку «Переопределить настройки».

Для создания нового выражения воспользуйтесь кнопкой «Добавить новое выражение».

image

Редактор алгоритмов содержит в себе поле для формулы и панель «Инструменты», на которой располагаются доступные функции: набор функций определяется типом алгоритма.

image

Алгоритм для автоматической нумерации обращений

Каждый объект типа «ДО. Документ» (или его дочернего) имеет атрибут «Номер документа», который заполняется номером документа автоматически.

Настройте алгоритм для нумерации экземпляров типа объектов «Обращение в техподдержку».

Для реализации механизма автонумерации на платформе представлен отдельный тип объектов «Автонумерация» [SYS_SEQUENCE].

Для того чтобы перейти к нему, откройте главное меню и перейдите в раздел «Справочники» - «Автонумерация».

image

В открывшемся реестре создайте новый экземпляр «Автонумерация обращений в техподдержку» [AUT_NUMB_ISSUE], укажите текущее значение – 1. Сохраните объект.

image057

Вернитесь к предметной области и откройте настройки типа объектов «Обращение в техподдержку» и перейдите на вкладку «Выражения/Автокалькуляции». Переопределите настройки выражения для Автоматической нумерации документов.

image058

Создайте алгоритм «Автоматическая нумерация обращений в техподдержку», в качестве базового типа объектов оставьте «Обращение в техподдержку». Данный алгоритм будет автоматически нумеровать обращения при их создании и сохранять номер в атрибуте «Номер обращения». Уже существующим обращениям будет присвоен номер, указанный при их создании.

Заполните поле формулой алгоритма.

image059

Воспользуйтесь функциями:

Выполните следующие шаги чтобы повторить формулу алгоритма:

  1. На панели инструментов в разделе «Логико-арифметические» вызовите функцию if;

  2. В качестве условия необходимо проверить новый ли текущий объект или он уже сохранен в Системе. Для этого воспользуйтесь функцией isNewObject из раздела «Объекты». В качестве аргумента функции укажите функцию currentObject из того же раздела;

  3. В качестве операторов к выполнению необходимо указать объект автонумерации в случае удовлетворения заданным условиям. Для этого из раздела «Дополнительные» вызовите функцию sequenceNextVal – в появившемся окне выберите «Автонумерация обращений в техподдержку». При вызове данной функции система присвоит следующее по порядку числовое значение в атрибуте «Текущее значение» в выбранном экземпляре типа «Автонумерация».

    image

  4. После фигурных скобок функции if из раздела «Логико-арифметические» вставьте функцию else. В качестве оператора к выполнению вставим значение атрибута «Номер обращения» с помощью функции attr из раздела «Источники»: в появившемся модальном окне нужно выбрать атрибут из списка и нажать «Ок».

    image

Сохраните изменения и вернитесь к настройке выражений типа.

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

image

Сохраните настройки выражения с помощью кнопки «Сохранить».

Алгоритм для автоматического формирования наименования обращений

Настройте алгоритм для автоматического наименования экземпляра для типа объектов «Обращение в техподдержку». Для этого в настройках типа объектов на вкладке «Выражения/Автокалькуляция» выберите строку с алгоритмом наименования и выберите «Переопределить настройки».

Создайте алгоритм «Заполнение атрибута наименование обращения», в качестве базового типа объектов оставьте «Обращение в техподдержку». Алгоритм будет автоматически генерировать значение для атрибута «Наименование» при создании экземпляра. Если краткое описание проблемы содержит более 150 символов, в наименовании отобразится ровно 150.

Заполните формулу алгоритма.

image

Для этого воспользуйтесь следующими функциями:

Выполните следующую последовательность действий чтобы создать формулу алгоритма:

  1. На панели инструментов в разделе «Логико-арифметические» вызовите функцию if. Данная функция появится в виде структуры, состоящей из двух частей: условие (задается в обычных скобках) и последующего действия в случае соответствия данному условию (задается в фигурных скобках);

  2. В условии функции if вызовите функцию attr (раздел «Источники»): в появившемся окне выберите атрибут, значение которого будет подставляться в алгоритм – «Краткое описание проблемы»;

    image

  3. С помощью клавиатуры введите .length(). Для условия последовательно нажмите на клавиатуре «<» и «=» и введите 150;

  4. Внутри блока if выберите функцию return в разделе «Алгоритмы». Добавьте функцию text на вкладке «Текст». В кавычках впишите текст «Обращение №». После текста введите с клавиатуры «+» для конкатенации(склеивания) элементов и строк формулы алгоритма между собой, его можно добавить при помощи соответствующей клавиши на клавиатуре;

  5. Далее с помощью функции attr добавьте атрибут «Номер обращения»;

  6. Далее снова добавьте знак сложения. С помощью функции text и введите « от »;

  7. Далее снова добавьте знак сложения. Из раздела «Даты» вставьте функцию dateFormat. В качестве первого атрибута передайте атрибут «Дата создания» с помощью функции attr. В качестве второго оставьте формат даты: «dd.MM.yyyy HH:mm»;

  8. Аналогично шагам 4-7, используя функции text и attr и добавьте указание критичности и краткое описание проблемы;

  9. После фигурных скобок функции if вызовите функцию else из раздела «Логико-арифметические». В качестве действий скопируйте и вставьте действия функции if.В конце вручную впишите с помощью клавиатуры функцию .substring(0, 150).

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

image

Поскольку в алгоритме для заполнения наименования используется значение из атрибута «Номер обращения», которое также рассчитывается с помощью заданного ранее выражения, то расчет выражения для атрибута «Номер обращения» должен осуществляться раньше, чем расчет выражения для атрибута «Наименование». Таким образом, необходимо убедиться, что данные выражения в реестре расположены в соответствующем порядке. Для изменения порядка выражений необходимо использовать кнопки перемещения.

image

Сохраните изменения на типе объектов.

Алгоритм для установки инициатора

Создайте новое выражение для автоматической установки инициатора текущим сотрудником. В модальном окне выберите тип «Выражение», а в поле «Алгоритм, на основании которого считается выражение» добавьте новый алгоритм: для этого раскройте панель дополнительных действий и выберите опцию «Добавить».

image

Создайте алгоритм «Установка текущего сотрудника инициатором», в качестве базового типа объектов оставьте «Обращение в техподдержку». Алгоритм будет возвращать сотрудника текущего пользователя.

Заполните поле формулы алгоритмом:

image068

Чтобы повторить алгоритм, воспользуйтесь функцией currentUser.Атрибут: в модальном окне выберите атрибут «Сотрудник».

image

Сохраните настройки алгоритма и вернитесь к настройкам выражения. Активируйте опцию «Установить результат в атрибут», в поле «Атрибут» выберите «Инициатор» [INITIATOR_EMP_ID]. Сохраните настройки выражения.

image

Сохраните настройки типа объектов.