Объект

PDF
Основы

Конфигурационный элемент типа Объект (Object) — это бизнес-сущность, которая на уровне серверного ядра позволяет объявить новый класс ORM-модели. На уровне базы данных создание объекта означает создание записи таблицы с таким же именем, как у созданного объекта, и с таким же набором колонок. То есть в большинстве случаев каждый объект в системе является системным представлением одной физической таблицы в базе данных. Назначение объекта — back-end разработка в приложении Creatio.

Виды объектов, которые позволяет добавить Creatio IDE, представлены значениями выпадающего списка Добавить (Add) панели инструментов рабочей области раздела Конфигурация (Configuration).

Виды объектов представлены на рисунке ниже.

Подробнее о видах конфигурационных элементов читайте в статье Операции в Creatio IDE.

Объект представлен схемой типа Объект (Object) выпадающего списка Тип (Type) панели инструментов рабочей области раздела Конфигурация (Configuration). В схеме объекта описывается набор колонок, индексов и методов объекта. Платформа Creatio не ограничивает количество колонок объекта. Количество колонок в объекте ограничивается максимально допустимым количеством столбцов в таблицах базы данных, которую использует клиент.

Тип схемы объекта представлен на рисунке ниже.

Подробнее о типах конфигурационных элементов читайте в статье Операции в Creatio IDE.

Реализовать объект 

Объект представлен видом схемы Объект (Object).

Чтобы реализовать объект:

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Объект (Add —> Object).

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

    Основные свойства схемы:

    • Код (Code) — название схемы (обязательное свойство). Начинается с префикса (по умолчанию Usr), который указан в системной настройке Префикс названия объекта (Prefix for object name, код SchemaNamePrefix). Может содержать символы латинского алфавита и цифры. Допустимая длина имени объекта — 128 символов. На базах Oracle ниже версии 12.2 не допускаются к использованию объекты с длиной имени более 30 символов. При создании схемы конфигурационного элемента префикс, который указан в системной настройке Префикс названия объекта (Prefix for object name, код SchemaNamePrefix), автоматически добавляется в текущее поле. Наличие префикса и его совпадение со значением системной настройки проверяется при сохранении свойств схемы. Если он отсутствует или не совпадает, то пользователь получает соответствующее уведомление.
    • Заголовок (Title) — локализуемый заголовок схемы (обязательное свойство). Заголовок схемы конфигурационного элемента генерируется автоматически и совпадает со значением свойства Код (Code) без префикса.
    • Пакет (Package) — пользовательский пакет, в котором создается схема. Заполняется автоматически и недоступно для редактирования.
    • Описание (Description) — локализуемое описание схемы.
  4. В дизайнере объекта выберите родительский объект.

    Чтобы объект наследовал функциональность другого объекта, в выпадающем списке свойства Родительский объект (Parent object) схемы выберите схему объекта, функциональность которого планируется наследовать. Например, чтобы наследовать функциональность базовой схемы объекта BaseEntity в качестве родительского объекта укажите схему BaseEntity. В свойство Унаследованные колонки (Inherited columns) схемы объекта автоматически добавляются колонки, которые унаследованы от родительского объекта.

  5. В дизайнере объекта выберите колонку, которая соответствует идентификатору объекта. Идентификатор (Id) — системная колонка, которая используется в качестве первичного ключа в таблице базы данных (обязательное свойство). Для этого воспользуйтесь инструкцией, которая приведена в пункте Установить идентификатор объекта.
  6. В дизайнере объекта добавьте индекс объекта (опционально). Для этого воспользуйтесь инструкцией, которая приведена в пункте Добавить индекс объекта.
  7. В дизайнере объекта настройте каскадную связь (опционально). Для этого воспользуйтесь инструкцией, которая приведена в пункте Настроить каскадную связь.
  8. На панели инструментов дизайнера объекта нажмите Опубликовать (Publish) для создания соответствующей таблицы в базе данных.

    Кнопка Опубликовать (Publish) позволяет генерировать статический контент и обновлять структуру базы данных. При этом компиляция конфигурации не выполняется. Это позволяет ускорить разработку объектов и замещающих объектов. Компиляция при публикации объекта необходима, если при редактировании встроенного процесса объекта он был сохранен, но не был опубликован в дизайнере процессов. Чтобы компилировать конфигурацию, генерировать статический контент и обновлять структуру базы данных, в выпадающем меню кнопки Опубликовать (Publish) выберите Опубликовать и компилировать (Publish and compile).

Установить идентификатор объекта 

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

Способы установки идентификатора объекта:

  • Если свойство Родительский объект (Parent object) — базовый объект, то свойство Идентификатор (Id) заполняется автоматически.
  • Если свойство Родительский объект (Parent object) — пользовательский объект, то свойство Идентификатор (Id) заполняется вручную.

Чтобы добавить пользовательский идентификатор:

  1. На панели свойств в контекстном меню узла Колонки (Columns) нажмите —> Другие —> Уникальный идентификатор (Other —> Unique identifier).

  2. В дизайнере объекта заполните свойства колонки.

    Основные свойства колонки:

    • Код (Code) — название колонки (обязательное свойство). Начинается с префикса (по умолчанию Usr), который указан в системной настройке Префикс названия объекта (Prefix for object name, код SchemaNamePrefix). Может содержать символы латинского алфавита и цифры. Значение свойства Код (Code) не должно совпадать со значением свойства Код (Code) объекта. В другом случае, при попытке опубликовать объект, отображается сообщение об ошибке.
    • Заголовок (Title) — локализуемый заголовок колонки (обязательное свойство).
    • Тип данных (Data type) — тип данных, которые содержатся в колонке. Заполняется автоматически в соответствии с типом колонки, которая была выбран при добавлении колонки. Недоступно для редактирования.
    • Описание (Description) — локализуемое описание колонки.
    • Обязательное (Required) — обязательность колонки. Выберите "Да" ("Yes"), поскольку колонка типа Уникальный идентификатор (Unique identifier) является обязательной для объекта. При попытке сохранить схему объекта без колонки типа Уникальный идентификатор (Unique identifier) отображается соответствующее сообщение.
    • Значение по умолчанию (Default value) — значение колонки по умолчанию. Чтобы установить значение по умолчанию, воспользуйтесь инструкцией, которая приведена в пункте Установить значение по умолчанию для колонки типа Уникальный идентификатор.
    • Режим использования (Usage mode) — выберите "Расширенный" ("Advanced").

      Режимы использования колонок, которые доступны в Creatio IDE:

      1. Общие (General) — стандартный режим колонок в приложении.
      2. Расширенный (Advanced) — колонка отображается в конфигурации и доступна для использования в приложении.
      3. Никогда (None) — колонка отображается в конфигурации как системная и недоступна для использования в приложении.

Установить значение по умолчанию для колонки типа Уникальный идентификатор 

Чтобы установить значение по умолчанию для колонки типа Уникальный идентификатор (Unique identifier):

  1. В свойстве Значение по умолчанию (Default value) нажмите на .
  2. Заполните свойства значения по умолчанию:

    • Тип значения (Default value type) — выберите "Cистемная переменная" ("System variable").
    • Cистемная переменная (System variable) — выберите "Новый идентификатор" ("New Id"), поскольку идентификаторы должны быть уникальными.

Добавить индекс объекта 

Кроме колонок Creatio IDE позволяет добавить в объект индексы, которые при публикации объекта будут автоматически созданы в таблице базы данных.

Способы добавления индекса объекта:

  • Индекс по одной колонке. В этом случае в блоке свойств Поведение (Behavior) установите признак Индексируемая (Indexed). По умолчанию справочные колонки — индексируемые.

  • Составной индекс. Для этого воспользуйтесь инструкцией, которая приведена ниже.

Чтобы добавить составной индекс объекта:

  1. На панели свойств в контекстном меню узла Индексы (Indexes) нажмите .
  2. Заполните свойства индекса:

    • Код (Code) — название индекса (обязательное свойство).
    • Уникальный (Unique) — установите признак, если для колонок индекса необходимо задать ограничение целостности (исключить возможность вставки повторяющихся комбинаций значений).
    • Колонки индекса (Index Columns) — выберите колонки, которые необходимо добавить в индекс. Для этого в блоке свойств Колонки индекса (Index Columns) нажмите Добавить (Add), выберите колонку объекта и укажите направление сортировки.

Настроить каскадную связь 

Creatio IDE позволяет настроить каскадную связь только для колонки типа Справочник (Lookup).

Чтобы настроить каскадную связь:

  1. Добавьте колонку типа Справочник (Lookup) (опционально). Для этого на панели свойств в контекстном меню узла Колонки (Columns) нажмите —> Справочник (Lookup).

  2. В блоке свойств Источник данных (Data source) настройте каскадную связь.

    Способы настройки каскадной связи:

    • Признак Не контролировать целостность (Do not control integrity).
    • Опции пункта При удалении значения справочника (On lookup value deletion).

Рассмотрим работу каскадной связи на примере объекта Контакт (Contact), который по справочной колонке [AccountId] связан с объектом Контрагент (Account). Для этого в поле Выбор объекта (Lookup) выберите Account.

Варианты настройки каскадной связи:

  • Если установлен признак Не контролировать целостность (Do not control integrity), то выполняется удаление контрагента. При этом не удаляются контакты, которые связаны с текущим контрагентом.
  • Если не установлен признак Не контролировать целостность (Do not control integrity) и выбрана опция Блокировать удаление, если есть связанные записи в текущем объекте с этим значением (Block deletion if there are connected records in current object with this value), то удаление контрагента заблокировано, если присутствуют контакты, которые связаны с текущим контрагентом. В этом случае приложение выдает предупреждающее сообщение. После подтверждения выполняется удаление удаление контрагента. При этом не удаляются контакты, которые связаны с текущим контрагентом.
  • Если не установлен признак Не контролировать целостность (Do not control integrity) и выбрана опция Удалять записи из текущего объекта с этим значением (Delete records from current object with this value), то выполняется удаление контрагента вместе с удалением контактов, которые связаны с текущим контрагентом.

Реализовать замещающий объект 

Замещающий объект представлен видом схемы Замещающий объект (Replacing object).

Чтобы реализовать замещающий объект:

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. Установите зависимости пакета. В зависимости обязательно добавьте пакет, который содержит замещаемый объект.
  3. На панели инструментов реестра раздела нажмите Добавить —> Замещающий объект (Add —> Replacing object).

  4. В дизайнере объекта выберите родительский объект.

    Чтобы объект замещал функциональность базового объекта, в выпадающем списке обязательного свойства Родительский объект (Parent object) схемы выберите схему объекта, которую планируется заместить. Например, чтобы замещать функциональность базовой схемы объекта BaseEntity в качестве родительского объекта укажите схему BaseEntity. В свойство Унаследованные колонки (Inherited columns) схемы объекта автоматически добавляются колонки, которые унаследованы от родительского объекта. После выбора родительского объекта остальные свойства объекта заполняются автоматически.

  5. В дизайнере объекта реализуйте функциональность, которая отличает замещающий объект от замещаемого.
  6. На панели инструментов дизайнера объекта нажмите Опубликовать (Publish) для создания соответствующей таблицы в базе данных.

    Кнопка Опубликовать (Publish) позволяет генерировать статический контент и обновлять структуру базы данных. При этом компиляция конфигурации не выполняется. Это позволяет ускорить разработку объектов и замещающих объектов. Компиляция при публикации объекта необходима, если при редактировании встроенного процесса объекта он был сохранен, но не был опубликован в дизайнере процессов. Чтобы компилировать конфигурацию, генерировать статический контент и обновлять структуру базы данных, в выпадающем меню кнопки Опубликовать (Publish) выберите Опубликовать и компилировать (Publish and compile).

Подробнее о замещении конфигурационных элементов читайте в статье Замещение конфигурационных элементов.

Деактивировать записи объекта 

Creatio предоставляет возможность деактивировать записи объектов приложения для исключения их из бизнес-логики. Это может понадобиться, например, если данные устарели и больше не используются. Функциональность деактивации записей объектов доступна для всех объектов.

Чтобы деактивировать записи объекта:

  1. Откройте схему объекта, записи которой планируется деактивировать.
  2. В блоке свойств Поведение (Behavior) установите признак Разрешить деактивацию записей (Allow records deactivation).

  3. На панели инструментов дизайнера объекта нажмите Опубликовать (Publish).

Автоматическая фильтрация неактивных записей доступна для отдельных элементов интерфейса.

Элементы интерфейса, для которых доступна автоматическая фильтрация записей:

  • Выпадающий список.
  • Окно выбора значения из справочника.
  • Быстрый фильтр.

Элементы интерфейса, для которых недоступна автоматическая фильтрация записей:

  • Страница с содержимым справочников.
  • Раздел.
  • Расширенный фильтр.

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

Пример деактивации записей на front-end стороне приведен ниже.

Пример деактивации записей (front-end)
var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
   rootSchemaName: "MyCustomLookup",
   useRecordDeactivation: true
});

Пример деактивации записей на back-end стороне приведен ниже.

Пример деактивации записей (back-end)
var esq = new EntitySchemaQuery(userConnection.EntitySchemaManager, "ContactType") {
    UseRecordDeactivation = true
};
esq.PrimaryQueryColumn.IsAlwaysSelect = true;

Результирующий SQL-запрос приведен ниже.

Пример SQL-запроса
SELECT [ContactType].[Id] [Id]
FROM [dbo].[ContactType] [ContactType] WITH(NOLOCK)
WHERE [ContactType].[RecordInactive] = 0