Объект

Простой

Объектно-реляционное отображение (ORM, Object-Relational Mapping) в системе основано на объектах. Бизнес-объект — это компонент системы, используемый для backend-разработки и хранения данных.

Схема объекта реализована классом EntitySchema, в котором описываются:

  • колонки объекта;
  • индексы;
  • связи;
  • методы;
  • настройки поведения объекта.

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

  • таблицу базы данных;
  • представление базы данных (VIEW);
  • виртуальную сущность без хранения в базе данных.

В зависимости от назначения может использоваться один из типов объектов.

Различают следующие схемы объектов:

  • Пользовательские схемы объектов — это схемы, создаваемые при конфигурации системы. Данные схемы помещаются в пользовательские пакеты.
  • Базовые схемы объектов — предустановленные схемы, недоступные для изменения. Данные схемы могут быть расширены в пользовательских пакетах.
Базовые схемы объектов не рекомендуется редактировать напрямую, для расширения их функциональности есть специальный механизм — замещение.

Создание объекта

Алгоритм создания схемы объекта:

  1. Откройте раздел «Конфигурация».
  2. Выберите пользовательский пакет, в который хотите добавить объект.
  3. На панели инструментов рабочей области раздела «Конфигурация» нажмите «Добавить» и выберите «Объект».

Рисунок 1 — Создание схемы объекта

Рисунок 1 — Создание схемы объекта

  1. Заполните основные параметры объекта:

Таблица 1 — Свойства объекта

Свойство

Описание

Рекомендации и ограничения

Код

Название схемы

Должен начинаться с префикса, указанного в системной настройке «Префикс названия объекта». Код должен содержать символы латинского алфавита и цифры. Максимальная длина названия объекта — 128 символов

Заголовок

Локализуемый заголовок схемы

 

Родительский объект

Объект, от которого данная схема будет наследоваться. В поле указывается код объекта. Объект-наследник получает функциональность и колонки родительского объекта

Для базовых объектов в свойстве «Родительский объект» указывается BaseEntity.

 

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

 

После выбора родительского объекта подтвердите выбор родителя во всплывающем окне

Идентификатор

Первичный ключ. Тип данных идентификатора — «Уникальный идентификатор»

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

Рисунок 2 — Основные параметры объекта

Рисунок 2 — Основные параметры объекта

  1. Для добавления новой колонки нажмите Плюс в области расположения и добавления новых колонок:

Рисунок 3 — Область расположения унаследованных колонок и добавления новых колонок

Рисунок 3 — Область расположения унаследованных колонок и добавления новых колонок

Выберите тип поля, который хотите добавить:

Рисунок 4 — Меню выбора типа данных новой колонки

Рисунок 4 — Меню выбора типа данных новой колонки

Заполните свойства колонки:

Таблица 2 — Свойства колонки

Свойство

Описание

Рекомендации и ограничения

Код

Заполняется автоматически, рекомендуется изменить на необходимое значение. После публикации введенный код используется для наименования колонки в таблице базы данных

Важно помнить, что значение свойство «Код» колонки не должно совпадать со значением аналогичного поля родительского объекта. Иначе при попытке опубликовать объект возникнет ошибка. Код должен начинаться с префикса, указанного в системной настройке «Префикс названия объекта»

Заголовок

Локализуемое название колонки

 

Тип данных

Заполняется автоматически после выбора типа при создании колонки

 

Обязательность

Флаг обязательности заполнения колонки

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

Значение по умолчанию

Значение колонки при создании записи

Подробнее: Настройка значения по умолчанию для поля

Режим использования

Подробнее: Режим использования колонки

 

  1. Нажмите «Сохранить».
  2. После сохранения данные о новом объекте сохранятся в метаданных.

  3. Нажмите «Опубликовать».

После публикации таблица будет создана в базе данных.

Настройки колонок

Режим использования колонки

Режим использования колонки — это параметр, определяющий доступность и особенности применения колонки в системе (в интерфейсе, конфигурации или запросах к базе данных).

Существуют следующие режимы использования колонки:

  • Общий — стандартный режим колонок. Колонка будет доступна всем пользователям (например, колонки «Email» и «Phone» объекта «Contact»);
  • Расширенный — режим, который используется для системных колонок (например, колонки «Id», «CreatedBy», «CreatedOn», «ModifiedBy», «ModifiedOn» базового объекта «BaseEntity»). Не содержит дополнительной логики;
  • Никогда — колонка будет недоступна для использования в интерфейсе (UI) системы, но останется при работе с объектом в разделе «Конфигурация» (например, колонка «ProcessListeners» базового объекта «BaseEntity»).

Рисунок 5 — Режимы использования колонок в системе

Рисунок 5 — Режимы использования колонок в системе

Примечание. При необходимости можно реализовать проверку соответствия колонки режиму использования. Для этого используется свойство UsageType типа EntitySchemaColumn в сочетании с элементами перечисления EntitySchemaColumnUsageType. Например, для проверки режима «Расширенный» применяется значение EntitySchemaColumnUsageType.Advanced.
Пример проверки на тип колонки «Расширенный»
private void TestMethod(EntitySchemaColumn column)
{
	if(column.UsageType == EntitySchemaColumnUsageType.Advanced)
	{
		//Реализация логики
	}
}
Вы также можете исключать из выборки запросов к базе данных колонки, для которых установлен режим использования «Никогда». Данная функция может быть включена или отключена. Подробнее: Отключение загрузки полей.

Настройка каскадной связи

Используя колонку типа «Справочник», можно установить каскадную связь для объекта. Для этого:

  1. Добавьте новое поле типа «Справочник».

Рисунок 6 — Создание колонки типа «Справочник»

Рисунок 6 — Создание колонки типа «Справочник»

  1. Настройте связь в блоке «Источник данных», изменяя следующие свойства:
    • «Не контролировать целостность»;
    • Действия из свойства «При удалении значения справочника».

Рисунок 7 — Свойства для настройки каскадной связи

Рисунок 7 — Свойства для настройки каскадной связи

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

  • Если установлен признак «Не контролировать целостность», то при удалении записи контрагента записи контактов не будут удалены;
  • Если не установлен признак «Не контролировать целостность», и выбрано действие «Блокировать удаление, если есть связанные записи в текущем объекте с этим значением», то при попытке удаления записи контрагента удаление будет заблокировано, и система выдаст предупреждение. В случае подтверждения удаления пользователем, запись контрагента будет удалена, но связанные записи контактов останутся;
  • Если не установлен признак «Не контролировать целостность», и выбрано действие «Удалять записи из текущего объекта со значением», то при удалении контрагента будут удалены и записи контактов, связанные с контрагентом.

Добавление индексов

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

Алгоритм создания составного индекса:

  1. Создайте колонку типа «Справочник». В блоке «Источник данных» в свойстве «Выбор объекта» выберите необходимый объект, например, «Account».

Рисунок 8 — Колонка типа «BpmTestLookup»

Рисунок 8 — Колонка справочного типа «BpmTestLookup»

  1. Нажмите на кнопку Плюс.

Рисунок 9 — Блок расположения и добавления индексов

Рисунок 9 — Блок расположения и добавления индексов

  1. Заполните свойство «Код», указав идентификатор для создаваемого индекса.
  2. Установите значение «Уникальный», если необходимо исключить возможность вставки повторяющихся значений.

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

Рисунок 10 — Заполнение полей индекса

Рисунок 10 — Заполнение полей индекса

  1. В блоке «Колонки индекса» нажмите «Добавить».

Рисунок 11 — Блок «Колонки индекса»

Рисунок 11 — Блок «Колонки индекса»

  1. Добавьте колонки, которые будут включены в составной индекс.

Рисунок 12 — Добавление полей для составного индекса

Рисунок 12 — Добавление полей для составного индекса

  1. Нажмите «Сохранить», а затем «Опубликовать».
В Microsoft SQL Server нельзя создавать индексы для колонок с типом «Строка неограниченной длины». Подробнее: Создание реляционного индекса

Настройки объекта

Контроль коллизий

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

По умолчанию контроль коллизий отключен. Чтобы включить, выполните следующие шаги:

  1. Откройте раздел «Конфигурация».
  2. Найдите объект, для которого требуется настроить контроль коллизий.
  3. В настройках объекта найдите блок «Поведение».
  4. Установите флаг в поле «Контроль коллизий».
  5. Сохраните и опубликуйте изменения.

Рисунок 13 — Включение контроля коллизий

Рисунок 13 — Включение контроля коллизий

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

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

Деактивация записей объектов

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

Использование в дизайнере объекта

Данная возможность настраивается посредством изменения поля «Разрешить деактивацию записей» в дизайнере объектов. Деактивация записи становится возможной после публикации объекта.

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

Рисунок 14 — Настройка разрешения на деактивацию объектов в дизайнере объектов

Рисунок 14 — Настройка разрешения на деактивацию объектов в дизайнере объектов

Использование в программном коде

За активацию или деактивацию фильтрации деактивированных записей отвечает аргумент UseRecordDeactivation класса EntitySchemaQuery. Подробнее о классе EntitySchemaQuery смотрите в статье: Класс EntitySchemaQuery. По умолчанию этот аргумент установлен в значение false. Если в запросе требуется фильтрация по активным/неактивным объектам, необходимо присвоить аргументу значение true, тогда в запрос будет добавлен соответствующий фильтр, убирающий неактивные записи.

Код на стороне клиента (JavaScript)
var esq = Ext.create("BPMSoft.EntitySchemaQuery", {
	rootSchemaName: "ActivityType",
	useRecordDeactivation: true
});
Код на стороне сервера (C#)
var esq = new EntitySchemaQuery(userConnection.EntitySchemaManager, "ActivityType") {
	UseRecordDeactivation = true
};
MSSQL-скрипт
SELECT [ActivityType].[Id] [Id]
FROM [dbo].[ActivityType] [ActivityType] WITH(NOLOCK)
WHERE [ActivityType].[RecordInactive] = 0

Дополнительные настройки объекта

Ниже представлены дополнительные настройки для объекта:

Таблица 3 — Дополнительные настройки объекта

Название

Описание

Подробнее

Представление в базе данных

Используется чтобы указать, что объект основан не на таблице, а на представлении (VIEW) в базе данных

Использование представлений в базе данных для оптимизации производительности

Объект доступен на портале как раздел

Используется чтобы отобразить представление портального раздела

Портальный раздел

Виртуальный

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

 

Вести журнал изменений

Включает логирование в журнале изменений

Настройка журнала изменений

Измерять Apdex

Включает измерение метрик по методологии APDEX

Мониторинг производительности BPMSoft по методике APDEX

Рекомендуем изучить

Исходный код (C#)
Возможности раздела «Конфигурация»
Замещающий объект

Материал был полезен для вас?
Вебинар: 22 апреля в 11:00
Приглашаем вас на вебинар «BPMSoft – от выбора к реальным процессам», где покажем, как компании на практике сокращают time-to-market и масштабируют бизнес с помощью решений BPMSoft.
Регистрация на мероприятие
Готовы сделать выбор CRM?
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Готовы сделать выбор CRM? (детальная)
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Готовы сделать выбор CRM?
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Готовы сделать выбор CRM? (детальная)
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Оставить заявку
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время.
Демонстрационная версия BPMSoft
Заполните заявку для получения бесплатного доступа к демонстрационному стенду на 14 дней.
Типовое внедрение
Внедрите BPMSoft CRM в свою компанию всего за 8 рабочих дней по фиксированной цене! Заполните заявку для уточнения условий.
Заказать презентацию
Наш менеджер свяжется с Вами в ближайшее время.
Рассчитать стоимость
Задать вопрос
Карта сценариев использования ИИ для управления маркетингом, продажами и сервисом
Заполните форму и мы отправим исследование на E-mail
Присоединяйтесь к партнерской сети BPMSoft
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время
Тип партнерства*
Управление полным жизненным циклом клиента: от генерации лидов и продаж до внедрения, поддержки и продления подписки.
Разработка собственного Приложения – производного программного обеспечения, созданного на платформе BPMSoft (Базовое ПО).
Есть вопросы?
Не нашли для себя подходящую вакансию, или остались вопросы?
*
Есть вопросы?
Не нашли для себя подходящую вакансию, или остались вопросы?
*
Стать образовательным партнёром
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время.
Заявка на консультацию
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время.
Подписка
Спасибо!
Ваша заявка принята.
Наш сотрудник свяжется с вами в течение 1-2 рабочих дней.
Внимание!
Обнаружена ошибка.
Проверьте вашу почту
Для завершения подписки перейдите по ссылке в письме, которое мы только что отправили. Если письма нет во «Входящих», проверьте папку «Спам».
Telegram Подписаться
Уважаемые клиенты! Предупреждаем о случаях недобросовестной конкуренции и мошенничестве в сети Интернет.
Подробнее