Экземпляры моделей типа Query являются основными строительными блоками, на базе которых строится весь экранный интерфейс, связанный с отображением данных из внешнего источника и представлением их в различных стилях.
Модель Query является наиболее функциональным и самодостаточным объектом проектирования в системе PowerModeller. Главное ее назначение - обеспечить динамическую генерацию соответствующей экранной формы на основании внутренней интерпретации собственных свойств и значений переданных параметров. В дополнение к этому, во время своей работы объект модели полностью автоматизирует процесс формирования SQL-команд на выборку и изменение данных в рабочей СУБД, а также обеспечивает развитый оконный интерфейс по работе с этими данными.
В качестве примера таких возможностей может служить табличное представление данных (Grid style), которое обладает не только мощными средствами по отображению, сортировке, фильтрации и настройке внешнего вида экранной таблицы, но также и встроенными средствами автоматического создания экранных форм для добавления новых и редактирования существующих строк. При этом, для генерации таких форм используется одна и та же информация, введенная при описании соответствующей визуальной модели.
Создание модели Query выполняется по шаблону Сущность-Атрибут-Значение (EAV). Таким образом атрибуты сущности описываются не горизонтально, а вертикально - в структуре Атом-В-Запросе.
Для создания и редактирования экземпляров Query-моделей служит специальный редактор, который вызывается по команде Главного меню Model\Query. Структура описания такой модели является сложносоставной и содержит три основных раздела: 1) Общие данные (General), 2) Атомы (Atoms) и 3) Примечания (Notes). В зависимости от заданного Стиля представления значения некоторых свойств модели могут не использоваться или принимать значения по умолчанию.
На следующем рисунки изображен пример окна определения общих свойств Query-модели с именем d_buyorder_spec (Спецификация заказа на поставку).
Свойства модели Query
Свойство | Описание |
Общие | |
Код (Code) |
Код запроса - уникальное символьное обозначение модели не более 20 символов. |
Стиль (Style) |
Стиль (способ) отображения данных: GRID (сетка), FORM (форма), TABULAR (таблица), GRAPH (график). |
Флаги, определяющие общее поведение модели. Если значение отдельных флагов зависит от какого-либо условия, их установку/снятие можно произвести в программном коде соответствующего события класса-обработчика. Некоторые флаги зависят от выбранного стиля модели и могут быть не задействованы. |
|
Сущность |
Ссылка на объект-сущность. Одноименные свойства модели Query, определенные на уроне сущности, имеют более высокий приоритет |
Бизнес объект |
Имя класса бизнес объекта, который будет автоматически создан и прикреплен к Query-модели при ее инициализации |
Справка |
Ключевое слово или ИД темы справки. В последнем случае значение вводится в формате: #<ID>. Файл справки в формате .CHM определяется в конфигурационном файле проекта |
Timer interval |
Интервал времени в секундах для вызова события timer() |
Заголовок (Header) |
Текст, отображаемый в строке заголовка окна-подложки. Может быть динамически вычислен, если текст введен в формате: &<Выражение>, где Выражение – любое корректное выражение, выполняющееся над текущей строкой запроса-родителя. |
Иконка (MainIcon) |
Главная иконка модели, автоматически отображаемая в левой части области подзаголовка |
Параметры (Params) |
Параметры модели в следующем формате: <имя>:<тип> [=<значение_по_умолчанию>], где тип может принимать одно из следующих значений: string, number, decimal, date, time, datetime, stringlist, numberlist, decimallist, datelist, timelist, datetimelist. |
DISTINCT |
Флаг, определяющий формирование оператора SELECT DISTINCT … |
Источник |
Имя основной таблицы - обновляемой таблицы, над которой автоматически выполняются SQL – команды INSERT, UPDATE, DELETE (если не заданы соответствующие хранимые процедуры). |
Алиас (Alias) |
Алиас (краткое имя, псевдоним) основной таблицы. По умолчанию совпадает с именем самой таблицы |
Join Tables |
Связанные таблицы, дополнительно участвующие в операторе FROM предложения SELECT. Формат описания таблиц: <table1>[ <alias1>][|<table2>[ <alias2>]…[|<tableN>[<aliasN>]]. В качестве имени таблицы может быть указан объект сущности в формате: {имя_сущности} |
Join Keys |
Условные выражения для связи дополнительных таблиц с главной таблицей или между собой. Формат: <[alias.]column><operator><[alias.]column> |
WHERE |
Условное выражение, которое фильтрует строки в результирующем наборе данных. На имеющийся параметр запроса можно сослаться следующим образом: :<имя_аргумента> |
GROUP BY |
Выражение для оператора GROUP BY |
HAVING |
Выражение для оператора HAVING |
ORDER BY |
Выражение для оператора ORDER BY |
Хранимые процедуры | |
UPDATE (SP) | SQL-процедура, автоматически выполняемая при сохранении измененных данных |
INSERT (SP) | SQL-процедура, автоматически выполняемая при сохранении новой записи |
DELETE (SP) | SQL-процедура, автоматически выполняемая при удалении какой-либо записи |
Правило проверки |
|
Выражение |
Выражение, результат которого должен возвращать логическое значение true/false. Вычисляется перед непосредственным сохранением текущей строки данных |
Сообщение |
Текстовая строка, которая выводится на экран в том случае, когда правило проверки вернуло результат false |
График |
|
Тип графика | Тип графика, выбираемый из списка |
Данные оси X | Программные имена атомов, разделенные символом "," (запятая), формирующие ось категорий (ось X) |
Надпись оси X | Надпись для оси категорий |
Данные оси Y | Программные имена атомов, разделенные символом "," (запятая), формирующие ось значений (ось Y) |
Надпись оси Y | Надпись для оси значений |
Серии (Ось Z) | Разбивка данных оси категорий по сериям |
Данные оси Z |
Программные имена атомов, разделенные символом "," (запятая) и влияющие на создания серий данных |
Надпись оси Z |
Надпись для серий |
График
Группа атрибутов График предназначена для описания характеристик представления текущих данных модели в виде графика указанного типа. Для модели типа GRAPH ввод таких атрибутов обязателен. Для моделей Query других типов графики создаются по отдельному запросу - вызовом команды Главного меню Функции>График. В этом случае, окно с изображением графика появляется в виде дополнительного дочернего окна, свойства которого можно изменять через его контекстное меню по щелчку правой клавиши мыши.
Команды SQL
Как было описано выше, модель Query автоматически генерирует SQL-предложения для выборки и модификации данных на основе своего описания. Прежде всего, при инициализации модели формируется синтаксис команды SELECT, все элементы которой имеются в описании модели в неявном виде. Далее, в зависимости от текущего состояния строк в визуальном представлении модели (создана, изменена, удалена) и при условии выполнения команды Сохранить, автоматически формируется синтаксис SQL-команд INSERT, UPDATE, DELETE, которые в итоге отправляются базе данных для исполнения. Если базой данных поддерживаются хранимые процедуры (stored procedures), в качестве соответствующих SQL-команд могут быть вызваны процедуры, указанные в группе свойств модели "Хранимые процедуры (SP)". Для описания таких процедур, кроме указания имени необходимо также произвести привязку аргументов функций к данным текущего представления. Ниже описана структура таблицы для описания такой привязки:
Свойство | Описание |
Пор. номер | Порядковый номер аргумента |
Аргумент | Имя аргумента в хранимой процедуре |
Тип значения | Тип значения, указанного в следующем свойстве. Может принимать следующие значения: Column (программное имя колонки в модели), Expression (выражение, результат выполнения которого и передается), Unused (Значение не передается) |
Значение | Имя колонки или PowerScript-выражение |
Источник | New - новое (текущее) значение, Original - начальное значение |
InOut | Способ передачи значения: In/ Out/ InOut |