Инфраструктурные возможности фреймворка#

Возможности классов расширяются сервисным окружением, которое постоянно совершенствуется.

Служебные атрибуты#

Для сервисных возможностей фреймворк добавляет в таблицы служебные атрибуты. Служебные атрибуты заканчиваются постфиксом _dz.

Пример:

  • nVersion_dz;

  • screateuser_dz;

  • dcreatedate_dz.

Внимание

Разработчикам запрещено создавать и изменять такие атрибуты.

Отображение состояния сессии в форме#

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

Все состояния формы перечислены в таблице:

Пользовательская блокировка

Данные для отправки в базу данных

Кнопка «Сохранить»

Кнопка «Откатить»

Нет

Нет

не активна

не активна

Нет

Есть

активна

активна (крест)

Есть

Нет

не активна

активна (круг)

Есть

Есть

активна

активна (крест)

Настройки приложения#

Настройки приложения позволяют задавать глобальные константы. Для получения значения настройки используйте функцию:

Btk_AppPropertiesTypeApi.GetbValue(  
  sType //- Системное имя настройки  
  idObjectType //Тип объекта  
) //возвращает true или false

Btk_AppPropertiesType

Таблица настройки приложения, содержит поля:

  • sSysName — Системное имя;

  • sCaption — Наименование;

  • sDescription — Описание;

  • idModule — Модуль.

Btk_AppProperties

Таблица значений настроек приложения, содержит поля:

  • idType — Настройка;

  • idObjectType — Тип объекта;

  • bValue — Значение boolean;

  • nValue — Значение number;

  • sValue — Значение string;

  • dValue — Значение date.

Поиск по шаблону#

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

Алгоритм работы поиска#

  1. Определяются поля, по которым требуется осуществлять поиск, и их приоритет.

  2. Выполняются последовательно запросы, пока не получен результат в виде одной записи:

    • По всем полям в порядке приоритета ищутся значения по полному совпадению введенного текста (=).

    • По всем полям в порядке приоритета ищутся значения по частичному совпадению введенного текста (like).

  3. Возвращается результат: первым считается первый запрос, вернувший одну запись, либо первый запрос, вернувший данные.

По умолчанию для класса включен поиск по шаблону и осуществляется по служебным полям sheadline_dz и smnemocode_dz. Сначала — по заголовку, затем — по мнемокоду.

Настройка поиска для класса#

В odm-файле для класса добавьте тег patternSearch:

<class>
    <patternSearch isActive="true"
                   headLineOrder="100"
                   mnemoCodeOrder="200"
                   searchType="startsWith"
                   indexHlMc="true"/>
</class>

Описание настроек:

  • isActive — Активность поиска по шаблону на классе. Если выключено, функция поиска по шаблону будет возвращать 0 записей. Умолчательное значение — true.

  • headLineOrder — Порядок поиска по служебному полю sheadline_dz. Умолчательное значение — 1. Чем меньше значение, тем выше приоритет поиска по этому полю. Поля с наименьшими значениями порядкового номера обрабатываются в первую очередь.

  • mnemoCodeOrder — Порядок поиска по служебному полю smnemocode_dz. Умолчательное значение — 2. Логика обработки аналогична headLineOrder.

  • searchType — Тип поиска:

    • По началу слова (по умолчанию) — like с правым %.

    • По вхождению — like с правым и левым %.

  • indexHlMc — Индексировать поля sheadline_dz и smnemocode_dz. При включенном свойстве будут созданы индексы по этим полям в верхнем регистре.

Настройка поиска по атрибутам#

  1. Откройте odm-файл.

  2. Добавьте тег patternSearch для нужного атрибута. Если тег добавлен, атрибут участвует в поиске по шаблону.

Пример:

<attr name="sText"
      attribute-type="Text"
      type="basic"
      order="130"
      caption="Text">
  <patternSearch order="10"
          searchType="contains"/>
</attr>   

Описание настроек:

  • order — Порядковый номер поиска по полю этого атрибута. Нумерация сквозная по классу: можно настроить, чтобы атрибут обрабатывался раньше заголовка и мнемокода.

  • searchType — Тип поиска:

    • По началу слова (по умолчанию) — like с правым %.

    • По вхождению — like с правым и левым %.

Перекрытие метода поиска#

Метод реализован в одном из рутовых API:

ru.bitec.app.gtk.eclipse.rdb.SEntityBaseApiImpl#findByPattern

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

Полнотекстовый поиск#

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

Данные классов хранятся в индексе полнотекстового поиска в схеме fts:

  • Btk_FtsReg — индекс объектов классов;

  • Btk_FtsWords — индекс используемых слов.

Форма поиска доступна в главном меню приложений, в меню «Сервис».

Настройка#

Для включения полнотекстового поиска в Odm установите свойство класса fts.Enabled в значение true.

По умолчанию в полнотекстовом поиске участвуют все строковые значимые/автонумерующиеся/вычисляемые, а также ссылочные на объект и атрибуты переменной ссылочности с указанным ссылочным классом.

Для переопределения поиска по атрибуту используется свойство fts.Enabled.

Обновление индекса#

После обновления кода на проекте и вызова ssh-команды init Data происходит анализ классов. Если настройки класса изменились (класс стал индексируемым или добавились новые индексируемые атрибуты, которые до этого не индексировались; новые атрибуты не учитываются), происходит планирование обновления индекса для всех объектов класса.

При изменении объектов классов и сохранении в БД (session.flush()), которые индексируются, или на которые ссылаются объекты индексируемых классов, эти объекты добавляются в лог измененных объектов индекса.

Значения ссылочных полей хранятся в строковом виде и определяются как значение поля sHeadLine_dz ссылочного объекта.

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

Команды строки поиска#

Формат описания:

  • Введенная строка — Логика обработки.

Команды:

  • Цепь — Найдёт текст, в котором присутствует слово «цепь», «цепи», «цепью» и т. д.

  • цепь звено — Найдёт текст, в котором присутствуют оба слова и их склонения.

  • Цепь И звено — То же самое, что и цепь звено. Пробел считается оператором «И».

  • Цепь & звено — То же самое, что и цепь звено.

  • Цепь ИЛИ звено — Найдёт текст, в котором присутствует одно из слов или оба, с учётом склонений.

  • Цепь | звено — То же самое, что и цепь ИЛИ звено.

  • Цепь И (Звено ИЛИ Кольцо) — Найдёт текст, в котором есть слово «цепь» и одно из слов «звено» или «кольцо».

  • Цепь#40 — Найдёт текст, в котором есть похожие на «цепь» слова, например, «цеп.». Число после # показывает точность поиска — от 1 до 100, где 100 — полное совпадение.

  • #Цепь — То же самое, что и Цепь#40.

  • Цеп* — Найдёт текст, слова в котором начинаются на «цеп», например, «цепь», «цепная» и т. д.