Дополнительные действия
AZykov (обсуждение | вклад) Новая страница: «Описание всех параметров и возможностей класса» |
AZykov (обсуждение | вклад) |
||
(не показаны 44 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
Предыдущая статья курса: [[Быстрый старт]] | |||
= Общая информация = | |||
[[Файл:Раздел Classes.png|мини|Раздел Classes приложения Builder]] | |||
Классы являются основой всех систем и приложений, разрабатываемых на платформе Эра. Набор классов в пакете реализует структуру данных, с которой взаимодействуют остальные элементы пакета. | |||
Каждый класс определяется набором параметров, свойств (полей) и действий. Параметры класса определяют его наименование, <u>поведение</u>, способ хранения данных, структуру наследования и т.д. Обзор параметров класса будет произведен ниже в данной статье. | |||
Для создания и изменения параметров классов, необходимо использовать приложение Builder, раздел Classes. | |||
Набор полей определяет <u>структуру</u> данных класса, а также формирует связь объектов этого класса с другими классами (в рамках всех пакетов системы). | |||
Набор действий может определять некоторые операции, которые могут производиться над объектами данного класса. С помощью действий может реализовываться часть <u>логики</u> работы с классом. Также для реализации логики работы с данными можно использовать обработчики (handlers) и сервисы (services). | |||
При создании модели класса, указывается его <u>тип (classKind)</u>: | |||
* entity - сущность, объект для хранение данных | |||
* interface - интерфейс для взаимодействия других классов (не хранит данные, только определяет структуру) | |||
* object - аналог интерфейса, для которого также не создается хранилище, однако создаются обертки при генерации кода. Позволяет реализовать, например, "интерфейс" с расчитываемыми полями | |||
Классы могут наследовать поля и действия от других, родительских классов. | |||
Для каждого нового класса, при активации пакета совершается следующий набор действий: | |||
* создается <u>хранилище</u>, соответствующее настройкам класса | |||
* создается два '''control'а''' (элемент управления) по-умолчанию, для визуализации данных класса в табличном виде и в виде карточки редактирования | |||
* генерируется исходный код работы с классом. Блоки кода, включенные в параметры класса сохраняются | |||
Хранилище может размещаться в оперативной памяти, в распределенной объектной БД (mnesia), в реляционной БД Postgres (с партициями для исторических данных и без), в брокере Kafka, а также сохранять данные в аналитической колоночной БД Clickhouse. | |||
Класс может быть абстрактным (abstract), или интерфейсом (interface) в этом случае, для него не генерируются хранилище. Данные вариации классов не хранят в себе данные, и используются для наследования, взаимодействия между другими классами и описания структур данных. | |||
= Параметры класса = | |||
[[Файл:Параметры класса.png|мини|Окно редактирования параметров класса]]У класса достаточно большой набор настраиваемых параметров. Для удобства, рассмотрим их в порядке группировки в окне редактирования. | |||
Все настройки разделены по вкладкам в окне редактирования: | |||
* Common - общие настройки класса | |||
* Properties - свойства класса. Данная вкладка будет детально рассмотрена в следующей статье | |||
* Actions - действия класса. Данная вкладка будет детально рассмотрена в следующей статье | |||
* Security - параметры, задающие правила доступа к данным класса | |||
* UI - параметры, влияющие на визуализацию класса в интерфейсе | |||
* Help - информация для использования в справке и подсказках<br /> | |||
=== Вкладка Common === | |||
Основная вкладка, содержащая ключевые параметры работы класса.[[Файл:Блок Name and Location.png|мини|Блок Name and Location]] | |||
==== Name and Location ==== | |||
Данный блок параметров отвечает за наименование класса в различных ситуациях. | |||
При создании классов, в целях единообразия, технической красоты и удобства сопровождения, выработаны следующие соглашения по наименованию: | |||
* name: uppercase (Ticket, CurrentConnection, ArchiveConnection) | |||
* multiName: uppercase (Tickets, CurrentConnections, ArchiveConnections) | |||
* class folders: lowercase with slash (connections, acd/core, tickets/catalogs) | |||
{| class="wikitable mw-collapsible" | |||
|+Параметры класса | |||
!Название параметра | |||
!Значение по-умолчанию | |||
!Комментарий | |||
|- | |||
|package | |||
|[текущий выбранный пакет] | |||
|Определяет, к какому пакету будет относиться данный класс | |||
|- | |||
|folderName | |||
| | |||
|Определяет имя папки для группировки классов | |||
|- | |||
|name | |||
| | |||
|Системное наименование класса в единственном числе (используется в API) | |||
|- | |||
|multiName | |||
| | |||
|Системное наименование класса во множественном числе числе (используется в API) | |||
|- | |||
|fullName | |||
|[package]/[folderName]/[name] | |||
|Формируется автоматически, используется для доступа к данным через API | |||
|- | |||
|fullMultiName | |||
|[package]/[folderName]/[multiName] | |||
|Формируется автоматически, используется для доступа к данным через API | |||
|- | |||
|caption | |||
| | |||
|Заголовок класса, используется для отображения данных пользователю (напр., при отображении карточки редактирования) | |||
|- | |||
|multiCaption | |||
| | |||
|Заголовок класса, используется для отображения данных пользователю (напр., при отображении реестра данных класса) | |||
|} | |||
[[Файл:Раздел Data.png|мини|Блок Data|283x283пкс]] | |||
==== Data ==== | |||
В данном блоке, настраивается низкоуровневое поведение класса. | |||
Можно задать параметры хранения данных, настроить кеширование на различных уровнях платформы, а также в случае необходимости, реализовать получение данных из собственных источников (вместо использования штатного механимза хранилища) | |||
{| class="wikitable mw-collapsible" | |||
|+Параметры класса | |||
!Название параметра | |||
!Значение по-умолчанию | |||
!Комментарий | |||
|- | |||
|storageMode | |||
|category | |||
|Определяет тип хранилища, создаваемого для класса | |||
ram/runtime/category/history | |||
* <code>ram</code> - хранение в распределенной объектной БД (mnesia on ram only). Не сохраняет данные на диск. Целостность и сохранность данных обеспечивается пока доступен один из экземпляров группы микросервисов, ответственной за обслуживание класса. Производительность операций доступа по ключу и операций записи ~10000 в секунду в расчете на один свободный поток обработчик. | |||
* <code>runtime</code> - хранение в распределенной объектной БД (mnesia on disc+ram). Сохраняет данные на диск и под нагрузкой значительно загружает дисковую подсистему на запись. Производительность операций доступа по ключу и операций записи ~10000 в секунду в расчете на один свободный поток обработчик. | |||
* <code>category</code> - хранение в реляционной БД postgresql без партицирования. Скорость до 10000 операций в секунду в режиме параллельной обработки, ~3000 операций в секунду в синхронном режиме. | |||
* <code>history</code> - хранение в реляционной БД postgresql с партицированием по дате. Требует указания размерности партишена (год, месяц, день), и поля со значением для патицирования. | |||
* <code>transactionlog</code> - отправка данных в кластер Kafka. При обнаружении storage с type=<code>clickhouse</code> с тем же значением instance автоматически генерирует таблицу-приемщик из Kafka в ClickHouse (ReplicatedReplacingMergeTree), и делает доступными операции чтения. | |||
|- | |||
|storageInstance | |||
| | |||
|Используется только для storage_mode = <code>category</code>, <code>history</code>, <code>transactionlog</code> | |||
Данным параметром задается ключ инстанса для хранения данных. | |||
При отсутствии настроенного хранилища с кодом 'auto' класс автоматически привязывается к модельной базе ('era_model_DOMAIN'), созданной через основное подключение к БД Postgres домена). | |||
|- | |||
|section | |||
| | |||
|Имя секции для выбора экземпляра DMS | |||
|- | |||
|integrityMode | |||
|<code>sync_fast_notify</code> | |||
|Режим обеспечения целостности (приоритетность применения изменений в хранилище и рассылки уведомлений) | |||
* <code>async</code> - N(=10) очередей чтения с распределением по хешам идентификаторов, очередь чтения не используется. | |||
* <code>sync</code> - одна очередь записи, одна очередь чтения. | |||
* <code>sync_fast_read</code> - N(=10) очередей чтения с распределением по хешам идентификаторов, M(=10) очередей чтения. Отправка уведомления после сохранения в БД. Читатели ждут завершения более ранних операций записи. | |||
* <code>sync_fast_notify</code> - N(=10) очередей чтения с распределением по хешам идентификаторов, M(=10) очередей чтения. Отправка уведомления об изменении перед сохранением в БД. Читатели не ждут завершения более ранних операций записи. | |||
|- | |||
|partitionPropertyName | |||
| | |||
|Используется только для storage_mode = <code>history</code>, <code>transactionlog</code> | |||
Является опциональным для режима history, и обязательным для transactionlog | |||
В данном параметре определяется имя поля (с типом datetime), которое будет использоваться для построения партиции в Postgresql / префикса ключа в Kafka+Clickhouse | |||
|- | |||
|maxLimit | |||
| | |||
|Максимальное количество строк при чтении одной страницы. Используется в API при пагинации данных | |||
|- | |||
|realtime | |||
| | |||
|Обеспечение обновлений данных в реальном времени (путем подписки на изменения). Данный параметр в том чилсе, влияет на работу в интерфейсе (когда два пользователя пытаются изменять один и тот же объект этого класса). | |||
|- | |||
|serverCacheMode | |||
|none | |||
|Режим кэширования данных на сервере (слой платформы, роль DMS) | |||
* <code>full</code> - кэшируется весь объем данных. Применимо только для type=<code>category</code>. Чтение производится из кэша - поиск по идентификатору в кэше быстрый, но выборка при большом объеме может быть медленнее чем в оригинальном движке БД. Не применяется для storage_mode = 'transactionlog' | |||
* <code>temp</code> - кэшируется последнее используемое в ограниченном объеме. Удаляется автоматически при переполнении кэша. Поиск по идентификатору в кэше быстрый, выборка всегда производится в оригинальном хранилище БД. | |||
* <code>none</code> - кэш не используется. | |||
|- | |||
|clientCacheMode | |||
|temp | |||
|Режим кэширования данных на клиенте (в приложениях и микросервисах продуктового слоя). | |||
Возможные значения аналогичны serverCacheMode | |||
|- | |||
|classDataSource | |||
|model | |||
|Источник данных класса | |||
Возможные значения: | |||
* model - данные из хранилища | |||
* view - данные из представления (только в режиме category и history) | |||
* root - данные из сервиса | |||
|- | |||
|restURL | |||
| | |||
|URL сервиса для получения данных. Используется только при dataSource = root | |||
|- | |||
|dataFactoryServiceName | |||
| | |||
|Имя сервиса, который используется в качестве фабрики данных (вместо классического REST) | |||
|- | |||
|dataFactoryMethodName | |||
| | |||
|Имя метода сервиса, который используется в качестве фабрики данных (вместо классического REST) | |||
|- | |||
|tuningOptions | |||
| | |||
|Дополнительные опции (opts) для design/classes | |||
Полный список опций доступен в [https://vendor.era-platform.ru/docs/era/latest/entities/design/class.html документации к классу] | |||
|}[[Файл:Блок Class.png|мини|Блок Class]] | |||
==== Class ==== | |||
{| class="wikitable mw-collapsible" | |||
|+Параметры класса | |||
!Название параметра | |||
!Значение по-умолчанию | |||
!Комментарий | |||
|- | |||
|classKind | |||
|entity | |||
|Тип класса (сущность, объект или интерфейс) | |||
|- | |||
|parent | |||
| | |||
|Родительский класс (для наследования свойств и действий) | |||
|- | |||
|abstract | |||
|False | |||
|Для абстрактных классов не создаются таблицы в хранилищах, они предназначены для дальнейшего наследования | |||
|- | |||
|unionContents | |||
| | |||
|Список дочерних классов для объединения в единую коллекцию | |||
|- | |||
|onlyAddProperties | |||
| | |||
|Предполагается, что класс уже существует (создан на слое платформы), но в него необходимо добавить недостающие поля | |||
|} | |||
[[Файл:Блок Autodelete.png|мини|Блок Autodelete]] | |||
==== Autodelete ==== | |||
{| class="wikitable mw-collapsible" | |||
|+Параметры класса | |||
!Название параметра | |||
!Значение по-умолчанию | |||
!Комментарий | |||
|- | |||
|expiresMode | |||
|none | |||
|Режим автоматического удаления устаревших объектов (по истечении времени жизни) | |||
Только для storage_mode = <code>runtime</code>. | |||
* <code>none</code> - режим автоудаления не используется. | |||
* <code>modify</code> - таймштамп выставляется автоматически в момент любой модификации сущности. | |||
* <code>create</code> - таймштамп выставляется автоматически только при создании сущности. | |||
* <code>custom</code> - таймштамп выставляется только вручную с помощью REST. | |||
|- | |||
|expiresTimestampPropertyName | |||
| | |||
|Имя поля, относительно которого рассчитывается время жизни (timestamp, в миллисекундах unix time * 1000) | |||
|- | |||
|expiresTimeToLivePropertyName | |||
| | |||
|Имя поля, содержащего время жизни объекта (в секундах) | |||
|} | |||
[[Файл:Блок Lookup.png|мини|Блок Lookup]] | |||
==== Lookup ==== | |||
{| class="wikitable mw-collapsible" | |||
|+Параметры класса | |||
!Название параметра | |||
!Значение по-умолчанию | |||
!Комментарий | |||
|- | |||
|lookupLink | |||
|True | |||
|Разрешить ли переход к объектам данного типа по гиперссылкам | |||
|- | |||
|lookupLinkKind | |||
| | |||
|Способ открытия гиперссылки: | |||
* default | |||
* redirect | |||
* tabbed | |||
* popup | |||
|- | |||
|lookupAddEnabled | |||
| | |||
|Разрешить автоматическое пополнение справочника (добавление значений из выпадающих списков) | |||
|- | |||
|lookupAddConfirmationText | |||
| | |||
|Текст подтверждения при автоматическом пополнении справочника | |||
|- | |||
|lookupAddValues | |||
| | |||
|Значения при автоматическом пополнении справочника (JSON) | |||
|- | |||
|lookupSearchExpr | |||
| | |||
|Поле или список полей для поиска в выпадающих списках (JSON) | |||
|- | |||
|indexedProperties | |||
| | |||
|Индексированные свойства для быстрого поиска в локальном кэше | |||
|} | |||
[[Файл:Блоки Misc и Templates.png|мини|Блоки Misc и Templates]] | |||
==== Misc ==== | |||
{| class="wikitable mw-collapsible" | |||
|+Параметры класса | |||
!Название параметра | |||
!Значение по-умолчанию | |||
!Комментарий | |||
|- | |||
|historyChangesMode | |||
| | |||
|Режим автоматического сохранения истории изменений объектов класса | |||
|- | |||
|previousName | |||
| | |||
|Предыдущее имя класса (fullMultiName, для автоматического переименования старой таблицы при активации пакета) | |||
|- | |||
|enabled | |||
| | |||
|Включен ли данный класс. Отключенные классы игнорируются при активации пакета | |||
|} | |||
==== Templates ==== | |||
{| class="wikitable mw-collapsible" | |||
|+Параметры класса | |||
!Название параметра | |||
!Значение по-умолчанию | |||
!Комментарий | |||
|- | |||
|generateCommunications | |||
| | |||
|Генерация joined-свойства, содержащего средства связи | |||
|- | |||
|generateUniversalHistory | |||
| | |||
|Генерация вкладки с универсальной историей и комментариями | |||
|} | |||
[[Файл:Блок Code.png|мини|Блок Code]] | |||
==== Code ==== | |||
{| class="wikitable mw-collapsible" | |||
|+Параметры класса | |||
!Название параметра | |||
!Значение по-умолчанию | |||
!Комментарий | |||
|- | |||
|afterApplyUpdatesCode | |||
| | |||
|Фрагмент кода, выполняемый после применения изменений (TypeScript) | |||
|- | |||
|beforeInsertCode | |||
| | |||
|Фрагмент кода, выполняемый перед добавлением (TypeScript) | |||
|- | |||
|beforeModifyCode | |||
| | |||
|Фрагмент кода, выполняемый перед изменением (TypeScript) | |||
|- | |||
|beforeDeleteCode | |||
| | |||
|Фрагмент кода, выполняемый перед удалением (TypeScript) | |||
|} | |||
=== Вкладка Properties === | |||
Опциональные параметры, определяют применение полей класса.[[Файл:Блок Properties. Misc.png|мини|Блок Properties. Misc]] | |||
==== Блок Misc ==== | |||
{| class="wikitable mw-collapsible" | |||
|+Параметры класса | |||
!Название параметра | |||
!Значение по-умолчанию | |||
!Комментарий | |||
|- | |||
|keyPropertyName | |||
| | |||
|Имя ключевого свойства (которое сохраняется в полях-ссылках других классов) | |||
|- | |||
|displayPropertyName | |||
| | |||
|Имя отображаемого свойства (которое отображается в выпадающих списках) | |||
|- | |||
|colorPropertyName | |||
| | |||
|Имя свойства, содержащего цвет (отображается в пользовательских интерфейсах) | |||
|- | |||
|hashPropertyName | |||
| | |||
|Имя свойства, хэш-функцией от которого определяется идентификатор id | |||
|- | |||
|modificationTimePropertyName | |||
| | |||
|Имя свойства, в которое автоматически сохраняется время последнего изменения объекта | |||
|- | |||
|autoCalcCondition | |||
| | |||
|Условие, при выполнении которого рассчитываются поля с заданным autoCalcExpression (TypeScript) | |||
|} | |||
=== Вкладка Security === | |||
Опциональные параметры, определяют настройки доступа к данным класса.[[Файл:Блок Roles access.png|мини|Блок Roles access]] | |||
==== Roles access ==== | |||
{| class="wikitable mw-collapsible" | |||
|+Параметры класса | |||
!Название параметра | |||
!Значение по-умолчанию | |||
!Комментарий | |||
|- | |||
|readRoles | |||
| | |||
|Роли, которым разрешено чтение (если оба списка пусты – все роли пакета имеют разрешение на чтение и запись) | |||
|- | |||
|writeRoles | |||
| | |||
|Роли, которым разрешена запись (если оба списка пусты – все роли пакета имеют разрешение на чтение и запись) | |||
|- | |||
|readByIDRoles | |||
| | |||
|Роли, которым разрешено чтение по ИД (если полное чтение ограничено) | |||
|} | |||
[[Файл:Блок readFilter.png|мини|Блок readFilter]] | |||
==== readFilter ==== | |||
Фильтр, применяемый к классу при чтении (ограничивает выдачу строк). | |||
Возможные параметры конфигурации фильтра можно посмотреть на [https://vendor.era-platform.ru/docs/era/latest/api/rest/v1/model/overview/index.html#read_collection_filter портале вендора]. | |||
{| class="wikitable mw-collapsible mw-collapsed" | |||
|+Параметры класса | |||
!Название параметра | |||
!Значение по-умолчанию | |||
!Комментарий | |||
|- | |||
|roles | |||
| | |||
| | |||
|- | |||
|userPropertyNames | |||
| | |||
| | |||
|- | |||
|subordintatedPropertyNames | |||
| | |||
| | |||
|- | |||
|mandatePropertyName | |||
| | |||
| | |||
|- | |||
|customFilter | |||
| | |||
| | |||
|} | |||
==== writeFilter ==== | |||
Блок writeFilter по составу аналогичен блоку readFilter. | |||
Фильтр, применяемый к классу при записи (запрещает изменение строк). | |||
Возможные параметры конфигурации фильтра можно посмотреть на [https://vendor.era-platform.ru/docs/era/latest/api/rest/v1/model/overview/index.html#read_collection_filter портале вендора]. | |||
{| class="wikitable mw-collapsible mw-collapsed" | |||
|+Параметры класса | |||
!Название параметра | |||
!Значение по-умолчанию | |||
!Комментарий | |||
|- | |||
|roles | |||
| | |||
| | |||
|- | |||
|userPropertyNames | |||
| | |||
| | |||
|- | |||
|subordintatedPropertyNames | |||
| | |||
| | |||
|- | |||
|mandatePropertyName | |||
| | |||
| | |||
|- | |||
|customFilter | |||
| | |||
| | |||
|} | |||
=== Вкладка UI === | |||
На данной вкладке содержится большое число параметров, влияющих на интерфейс работы с данными. | |||
В данной статье будут рассмотрены только параметры, влияющие на логику работы класса. Остальные параметры UI будут рассмотрены в статье, посвещенной control'ам. | |||
[[Файл:Блок dataOptions.png|мини|Блок dataOptions]] | |||
==== dataOptions ==== | |||
{| class="wikitable mw-collapsible" | |||
|+Параметры класса | |||
!Название параметра | |||
!Значение по-умолчанию | |||
!Комментарий | |||
|- | |||
|allowInsert | |||
| | |||
|Доступно добавление данных | |||
|- | |||
|allowInsertRoles | |||
| | |||
|Роли с доступом к добавлению данных | |||
|- | |||
|allowModify | |||
| | |||
|Доступно изменение данных | |||
|- | |||
|allowModifyRoles | |||
| | |||
|Роли с доступом к изменению данных | |||
|- | |||
|allowDelete | |||
| | |||
|Доступно удаление данных | |||
|- | |||
|allowDeleteRoles | |||
| | |||
|Роли с доступом к удалению данных | |||
|- | |||
|allowActions | |||
| | |||
|Доступны действия класса | |||
|- | |||
|autoCalcProperties | |||
| | |||
|Использовать автоматический расчет значений полей | |||
|- | |||
|autoRefreshInterval | |||
| | |||
|Интервал автоматического обновления данных | |||
|} | |||
==== Вкладка Help ==== | |||
Опциональные параметры, опеределяют выводимые подсказки | |||
{| class="wikitable" | |||
|+Параметры класса | |||
!Название параметра | |||
!Значение по-умолчанию | |||
!Комментарий | |||
|- | |||
|description | |||
| | |||
|Описание класса, выводится подсказкой в реестре класса | |||
|- | |||
|includeProperties | |||
| | |||
|Включать ли описания полей в текст подсказки | |||
|- | |||
|includeActions | |||
| | |||
|Включать ли описания действий в текст подсказки | |||
|- | |||
|showInTable | |||
| | |||
| | |||
|} | |||
Следующая статья курса: [[Хранение данных. Классы. Поля и действия]] | |||
Предыдущая статья курса: [[Быстрый старт]] | |||
[[Категория:Курс "Разработка приложений"]] |
Текущая версия от 15:59, 20 января 2025
Предыдущая статья курса: Быстрый старт
Общая информация
Классы являются основой всех систем и приложений, разрабатываемых на платформе Эра. Набор классов в пакете реализует структуру данных, с которой взаимодействуют остальные элементы пакета.
Каждый класс определяется набором параметров, свойств (полей) и действий. Параметры класса определяют его наименование, поведение, способ хранения данных, структуру наследования и т.д. Обзор параметров класса будет произведен ниже в данной статье.
Для создания и изменения параметров классов, необходимо использовать приложение Builder, раздел Classes.
Набор полей определяет структуру данных класса, а также формирует связь объектов этого класса с другими классами (в рамках всех пакетов системы).
Набор действий может определять некоторые операции, которые могут производиться над объектами данного класса. С помощью действий может реализовываться часть логики работы с классом. Также для реализации логики работы с данными можно использовать обработчики (handlers) и сервисы (services).
При создании модели класса, указывается его тип (classKind):
- entity - сущность, объект для хранение данных
- interface - интерфейс для взаимодействия других классов (не хранит данные, только определяет структуру)
- object - аналог интерфейса, для которого также не создается хранилище, однако создаются обертки при генерации кода. Позволяет реализовать, например, "интерфейс" с расчитываемыми полями
Классы могут наследовать поля и действия от других, родительских классов.
Для каждого нового класса, при активации пакета совершается следующий набор действий:
- создается хранилище, соответствующее настройкам класса
- создается два control'а (элемент управления) по-умолчанию, для визуализации данных класса в табличном виде и в виде карточки редактирования
- генерируется исходный код работы с классом. Блоки кода, включенные в параметры класса сохраняются
Хранилище может размещаться в оперативной памяти, в распределенной объектной БД (mnesia), в реляционной БД Postgres (с партициями для исторических данных и без), в брокере Kafka, а также сохранять данные в аналитической колоночной БД Clickhouse.
Класс может быть абстрактным (abstract), или интерфейсом (interface) в этом случае, для него не генерируются хранилище. Данные вариации классов не хранят в себе данные, и используются для наследования, взаимодействия между другими классами и описания структур данных.
Параметры класса
У класса достаточно большой набор настраиваемых параметров. Для удобства, рассмотрим их в порядке группировки в окне редактирования.
Все настройки разделены по вкладкам в окне редактирования:
- Common - общие настройки класса
- Properties - свойства класса. Данная вкладка будет детально рассмотрена в следующей статье
- Actions - действия класса. Данная вкладка будет детально рассмотрена в следующей статье
- Security - параметры, задающие правила доступа к данным класса
- UI - параметры, влияющие на визуализацию класса в интерфейсе
- Help - информация для использования в справке и подсказках
Вкладка Common
Основная вкладка, содержащая ключевые параметры работы класса.
Name and Location
Данный блок параметров отвечает за наименование класса в различных ситуациях.
При создании классов, в целях единообразия, технической красоты и удобства сопровождения, выработаны следующие соглашения по наименованию:
- name: uppercase (Ticket, CurrentConnection, ArchiveConnection)
- multiName: uppercase (Tickets, CurrentConnections, ArchiveConnections)
- class folders: lowercase with slash (connections, acd/core, tickets/catalogs)
Название параметра | Значение по-умолчанию | Комментарий |
---|---|---|
package | [текущий выбранный пакет] | Определяет, к какому пакету будет относиться данный класс |
folderName | Определяет имя папки для группировки классов | |
name | Системное наименование класса в единственном числе (используется в API) | |
multiName | Системное наименование класса во множественном числе числе (используется в API) | |
fullName | [package]/[folderName]/[name] | Формируется автоматически, используется для доступа к данным через API |
fullMultiName | [package]/[folderName]/[multiName] | Формируется автоматически, используется для доступа к данным через API |
caption | Заголовок класса, используется для отображения данных пользователю (напр., при отображении карточки редактирования) | |
multiCaption | Заголовок класса, используется для отображения данных пользователю (напр., при отображении реестра данных класса) |
Data
В данном блоке, настраивается низкоуровневое поведение класса.
Можно задать параметры хранения данных, настроить кеширование на различных уровнях платформы, а также в случае необходимости, реализовать получение данных из собственных источников (вместо использования штатного механимза хранилища)
Название параметра | Значение по-умолчанию | Комментарий |
---|---|---|
storageMode | category | Определяет тип хранилища, создаваемого для класса
ram/runtime/category/history
|
storageInstance | Используется только для storage_mode = category , history , transactionlog
Данным параметром задается ключ инстанса для хранения данных. При отсутствии настроенного хранилища с кодом 'auto' класс автоматически привязывается к модельной базе ('era_model_DOMAIN'), созданной через основное подключение к БД Postgres домена). | |
section | Имя секции для выбора экземпляра DMS | |
integrityMode | sync_fast_notify
|
Режим обеспечения целостности (приоритетность применения изменений в хранилище и рассылки уведомлений)
|
partitionPropertyName | Используется только для storage_mode = history , transactionlog
Является опциональным для режима history, и обязательным для transactionlog В данном параметре определяется имя поля (с типом datetime), которое будет использоваться для построения партиции в Postgresql / префикса ключа в Kafka+Clickhouse | |
maxLimit | Максимальное количество строк при чтении одной страницы. Используется в API при пагинации данных | |
realtime | Обеспечение обновлений данных в реальном времени (путем подписки на изменения). Данный параметр в том чилсе, влияет на работу в интерфейсе (когда два пользователя пытаются изменять один и тот же объект этого класса). | |
serverCacheMode | none | Режим кэширования данных на сервере (слой платформы, роль DMS)
|
clientCacheMode | temp | Режим кэширования данных на клиенте (в приложениях и микросервисах продуктового слоя).
Возможные значения аналогичны serverCacheMode |
classDataSource | model | Источник данных класса
Возможные значения:
|
restURL | URL сервиса для получения данных. Используется только при dataSource = root | |
dataFactoryServiceName | Имя сервиса, который используется в качестве фабрики данных (вместо классического REST) | |
dataFactoryMethodName | Имя метода сервиса, который используется в качестве фабрики данных (вместо классического REST) | |
tuningOptions | Дополнительные опции (opts) для design/classes
Полный список опций доступен в документации к классу |
Class
Название параметра | Значение по-умолчанию | Комментарий |
---|---|---|
classKind | entity | Тип класса (сущность, объект или интерфейс) |
parent | Родительский класс (для наследования свойств и действий) | |
abstract | False | Для абстрактных классов не создаются таблицы в хранилищах, они предназначены для дальнейшего наследования |
unionContents | Список дочерних классов для объединения в единую коллекцию | |
onlyAddProperties | Предполагается, что класс уже существует (создан на слое платформы), но в него необходимо добавить недостающие поля |
Autodelete
Название параметра | Значение по-умолчанию | Комментарий |
---|---|---|
expiresMode | none | Режим автоматического удаления устаревших объектов (по истечении времени жизни)
Только для storage_mode =
|
expiresTimestampPropertyName | Имя поля, относительно которого рассчитывается время жизни (timestamp, в миллисекундах unix time * 1000) | |
expiresTimeToLivePropertyName | Имя поля, содержащего время жизни объекта (в секундах) |
Lookup
Название параметра | Значение по-умолчанию | Комментарий |
---|---|---|
lookupLink | True | Разрешить ли переход к объектам данного типа по гиперссылкам |
lookupLinkKind | Способ открытия гиперссылки:
| |
lookupAddEnabled | Разрешить автоматическое пополнение справочника (добавление значений из выпадающих списков) | |
lookupAddConfirmationText | Текст подтверждения при автоматическом пополнении справочника | |
lookupAddValues | Значения при автоматическом пополнении справочника (JSON) | |
lookupSearchExpr | Поле или список полей для поиска в выпадающих списках (JSON) | |
indexedProperties | Индексированные свойства для быстрого поиска в локальном кэше |
Misc
Название параметра | Значение по-умолчанию | Комментарий |
---|---|---|
historyChangesMode | Режим автоматического сохранения истории изменений объектов класса | |
previousName | Предыдущее имя класса (fullMultiName, для автоматического переименования старой таблицы при активации пакета) | |
enabled | Включен ли данный класс. Отключенные классы игнорируются при активации пакета |
Templates
Название параметра | Значение по-умолчанию | Комментарий |
---|---|---|
generateCommunications | Генерация joined-свойства, содержащего средства связи | |
generateUniversalHistory | Генерация вкладки с универсальной историей и комментариями |
Code
Название параметра | Значение по-умолчанию | Комментарий |
---|---|---|
afterApplyUpdatesCode | Фрагмент кода, выполняемый после применения изменений (TypeScript) | |
beforeInsertCode | Фрагмент кода, выполняемый перед добавлением (TypeScript) | |
beforeModifyCode | Фрагмент кода, выполняемый перед изменением (TypeScript) | |
beforeDeleteCode | Фрагмент кода, выполняемый перед удалением (TypeScript) |
Вкладка Properties
Опциональные параметры, определяют применение полей класса.
Блок Misc
Название параметра | Значение по-умолчанию | Комментарий |
---|---|---|
keyPropertyName | Имя ключевого свойства (которое сохраняется в полях-ссылках других классов) | |
displayPropertyName | Имя отображаемого свойства (которое отображается в выпадающих списках) | |
colorPropertyName | Имя свойства, содержащего цвет (отображается в пользовательских интерфейсах) | |
hashPropertyName | Имя свойства, хэш-функцией от которого определяется идентификатор id | |
modificationTimePropertyName | Имя свойства, в которое автоматически сохраняется время последнего изменения объекта | |
autoCalcCondition | Условие, при выполнении которого рассчитываются поля с заданным autoCalcExpression (TypeScript) |
Вкладка Security
Опциональные параметры, определяют настройки доступа к данным класса.
Roles access
Название параметра | Значение по-умолчанию | Комментарий |
---|---|---|
readRoles | Роли, которым разрешено чтение (если оба списка пусты – все роли пакета имеют разрешение на чтение и запись) | |
writeRoles | Роли, которым разрешена запись (если оба списка пусты – все роли пакета имеют разрешение на чтение и запись) | |
readByIDRoles | Роли, которым разрешено чтение по ИД (если полное чтение ограничено) |
readFilter
Фильтр, применяемый к классу при чтении (ограничивает выдачу строк).
Возможные параметры конфигурации фильтра можно посмотреть на портале вендора.
Название параметра | Значение по-умолчанию | Комментарий |
---|---|---|
roles | ||
userPropertyNames | ||
subordintatedPropertyNames | ||
mandatePropertyName | ||
customFilter |
writeFilter
Блок writeFilter по составу аналогичен блоку readFilter.
Фильтр, применяемый к классу при записи (запрещает изменение строк).
Возможные параметры конфигурации фильтра можно посмотреть на портале вендора.
Название параметра | Значение по-умолчанию | Комментарий |
---|---|---|
roles | ||
userPropertyNames | ||
subordintatedPropertyNames | ||
mandatePropertyName | ||
customFilter |
Вкладка UI
На данной вкладке содержится большое число параметров, влияющих на интерфейс работы с данными.
В данной статье будут рассмотрены только параметры, влияющие на логику работы класса. Остальные параметры UI будут рассмотрены в статье, посвещенной control'ам.
dataOptions
Название параметра | Значение по-умолчанию | Комментарий |
---|---|---|
allowInsert | Доступно добавление данных | |
allowInsertRoles | Роли с доступом к добавлению данных | |
allowModify | Доступно изменение данных | |
allowModifyRoles | Роли с доступом к изменению данных | |
allowDelete | Доступно удаление данных | |
allowDeleteRoles | Роли с доступом к удалению данных | |
allowActions | Доступны действия класса | |
autoCalcProperties | Использовать автоматический расчет значений полей | |
autoRefreshInterval | Интервал автоматического обновления данных |
Вкладка Help
Опциональные параметры, опеределяют выводимые подсказки
Название параметра | Значение по-умолчанию | Комментарий |
---|---|---|
description | Описание класса, выводится подсказкой в реестре класса | |
includeProperties | Включать ли описания полей в текст подсказки | |
includeActions | Включать ли описания действий в текст подсказки | |
showInTable |
Следующая статья курса: Хранение данных. Классы. Поля и действия
Предыдущая статья курса: Быстрый старт