Механизм параметризации
Параметризация представляет собой процесс построения запроса, выражения фильтра событий или выражения иходных данных отчета, который предложит пользователю различные параметры при его выполнении. Как только вы завершили процесс, вы получаете простую строку - часть текста вы можете использовать в качестве текста для запроса или выражения фильтра событий.
Исходные данные для механизма параметризации состоят из формата и параметризованного выражения. Они определяют ряд параметров, которые необходимо ввести в процессе параметризации. Обычное использование выглядит следующим образом: администраторы создают исходные данные для параметризации и помещают их в параметризованный запрос или фильтр событий. Затем пользователи указывают параметры на лету, при выполнении запроса или фильтра.
Формат параметров
Формат является форматом Таблицы данных, которая создается и отображается в режиме редактирования, чтобы пользователь мог изменять поля. Значения этих полей будут конвертированы в строки и вставлены в Выражение для параметризации. Таблица данных, построенная из Формата, всегда содержит только одну запись. Данная таблица позволяет пользователю интерактивно задаввать значения параметров, которые будут в дальнейшем использованы в Выражении для параметризации.
Далее приведен пример таблицы полей Формат:

Данный пример определяет два поля: поле типа Boolean под названием "byusername" (с удобным для чтения описанием, "Фильтрация по имени пользователя") и строку "username" ("Имя пользователя"). Первый параметр может использоваться, к примеру, для включения фильтрации определенным пользователем в отчете, второй параметр – это имя пользователя.
Пользователю дается подсказка для ввода данных параметра (скриншот, сделанный в AggreGate Client):

Здесь намного более сложный формат:

Который включает в себя даже привязки:

Этот формат определяет множество полей и некоторые отношения между ними, контролируемые привязками. Например, привязка "username#enabled={byusername}" делает так, чтобы пользователь мог заполнить лишь параметр "Имя пользователя" ("username"), если включена фильтрация по имени пользователя (т.е., поле "byusername" выставлено как TRUE).
При запуске фильтра, использующего этот формат, пользователю дается подсказка для ввода данных параметра, используя следующий диалог (скриншот, сделанный в AggreGate Client):

Выражение для параметризации
Выражение для параметризации представляет собой всего лишь текст, необходимый для формирования запроса или Выражения AggreGate, используемых фильтром событий или отчетом. Текст может содержать две специальные конструкции, которые зависят от значений параметров, определенных полями Формата.
![]() | Так как Выражение для параметризации содержит теги XML (см. далее), оно не может быть записано в блоке CDATA. Из этого следует, что символы, используемые в синтаксисе XML должны быть экранированы (escaped). Например, если в итоговом выражении должен появиться символ |
Условный абзац
Условный абзац определяет блок текста, который вставляется в параметризованное выражение, если выражение в его заголовке имеет результат TRUE. Данное выражение может содержать ссылки на различные поля в Формате.
Синтаксис:
<p enabled="ENABLING_CONDITION_EXPRESSION">TEXT_OF_CONDITIONAL_PARAGRAPH</p>
ENABLING_CONDITION_EXPRESSION является выражением AggreGate, которое может содержать ссылки на ячейки Таблиц данных, построенных из PARAMETERS_FORMAT. Форматом ссылок является {FIELD_NAME}, где FIELD_NAME - имя поля, определенного через PARAMETERS_FORMAT. Более подробную информацию о ссылках см. здесь.
Пример ENABLING_CONDITION_EXPRESSION:
{filterByName} && {filterByValue}
С помощью данного ENABELLING_CONDITION_EXPRESSION текст условного абзаца будет вставлен в параметризованное выражение только в том случае, если значения двух логических полей filterByName и filterByValue равны TRUE. Эти поля должны быть определены в Формате.
Пример параметризованного выражения с условным абзацем:
SELECT * FROM users.*:childInfo <p enabled="{showOnlyUsersWithPhones}">WHERE childInfo$phone IS NOT NULL</p>
В данном примере, childInfo$phone ссылается на поле "phone number" в записи информации о пользователе (см. Запросы). ENABLING_CONDITION_EXPRESSION ссылается на поле типа Boolean showOnlyUsersWithPhones , определенное в PARAMETERS_FORMAT (например, так: "<<showOnlyUsersWithPhones><B><D=Show only users that have phone numbers>>"). Если это поле установлено пользователем на FALSE во время процесса параметризации, полученным выражением будет "SELECT * FROM users.*:childInfo". Если это поле установлено на TRUE, итоговым выражением будет "SELECT * FROM users.*:childInfo WHERE childInfo$phone IS NOT NULL", т.е. TEXT_OF_CONDITIONAL_PARAGRAPH включен в результат.
Условный абзац не должен обязательно быть в конце строки запроса/фильтра. В следующем примере, он расположен в середине выражения (прямо перед оператором ORDER BY):
SELECT * FROM users.*:childInfo <p enabled="{showOnlyUsersWithPhones}">WHERE childInfo$phone IS NOT NULL</p> ORDER BY childInfo$name DESC
Выражения
Как было сказано выше, Выражение для параметризации является просто строкой. Само по себе оно не является Выражением AggreGate. Однако, оно может включать Выражения AggreGate. Такие выражения AggreGate могут содержать в себе ссылки на ячейки Таблиц данных, простроенных из Формата. Выражение оценивается, результат оценки конвертируется в строку и вставляется в конечный результат параметризации (выражение запроса или фильтра AggreGate, которое образуется в ходе процесса параметризации).
Синтаксис:
<e>EXPRESSION</e>
Данное выражение может содержать ссылки на ячейки Таблицы данных, построенной из Формата так же, как и ENABLING_CONDITION_EXPRESSION условного параграфа (см. выше).
![]() | Пример:
Метки ' сверху необходимы, т.к. они используются для экранирования строкового литерала SQL. В этом примере предполагается, что поле "телефон" существует в заданном формате. Например, если пользователь ввел номер телефона "123-45-67" в процессе параметризации, результатом параметризации будет " |
1) Условные абзацы позволяют вам добавлять/удалять различные части итогового выражения, основанные на результате да/нет (Boolean) какого-либо выражения.
2) Выражения позволяют вам вставлять специальные значения, полученные в результате вычислений, в ваш итоговый резльтат параметризации.
Поток процесса параметризации
Выполняется анализ и проверка пригодности данных для параметризации.
Пользователю предлагается ввести параметры, заданные через Формат.
Полученная Таблица данных с параметрами, введенными оператором вручную, сохранятся и доступна для использования в качестве, например, таблицы по умолчанию для расчета значений дополнительных параметров отчета.
Теперь изменяется Выражение для параметризации с применением параметров из шага (2): текст условных абзацев добавляется или даляется, выражения оцениваются, а результат оценки вставляется в конечную строку.
Полученная строка используется в качестве выражения запроса или фильтра.
Was this page helpful?

