Процессинг

Для полноценной работы приложения необходимо не только выводить данные на формы и отчеты, но и обрабатывать данные, которые вводят пользователи. В данном разделе описывается блок «Процессинг» в редакторе страницы. Данный блок отвечает за обработку пользовательских данных на разных этапах работы со страницей.

На вкладке Процессинг отображается список обработчиков запросов, сгруппированных по виду процессов или типу вызова обработчика. Состав контекстного меню доступного по нажатию ПКМ определяется типом группы:

../_images/processing.png

Процессинг предоставляет следующие виды обработчиков запросов:

  • Процесс - это основной механизм взаимодействия приложения с базой данных. Выполнение процессов происходит при поступлении от приложения различных запросов (Request). При появлении запроса от приложения все процессы соответствующего типа выполняются в порядке очередности (Sequence).

  • Ветвь – процесс по выполнению условия (Server-side Condition) которого произойдет перенаправление на другую страницу приложения или ссылку.

  • Валидация – процесс проверки корректности введенных пользователем данных.

  • Вызов REST - процесс который позволяет вызвать сторонний REST API. Позволяет приложению обрабатывать и осуществлять запросы к сторонним сервисам. При этом вызов будет осуществлять сервер приложений PGHS.

  • Процесс Data Grid - процесс для обработки измененных данных в DATAGRID.

  • Процесс Kanban - процесс для обработки изменений в компоненте Kanban.

  • Загрузка – процесс, позволяющий загрузить файл из базы на клиент.

  • Схема аутентификации – процесс аутентификации пользователя.

Процессы группируются также по типу процесса:

  • До загрузки страницы – процессы, которые выполняются перед загрузкой страницы. Их основное предназначение – подготовить компоненты для взаимодействия с пользователем (например, заполнить поля формы значениями из БД). До загрузки страницы могут быть выполнены следующие виды обработчиков: процессы, вызовы REST и ветви.

  • Обработка – процессы данного вида выполняются при отправке формы на сервер (submit).

  • После обработки - процессы данного вида выполняются после обработки страницы. Например, переходы на другие страницы по нажатию кнопок.

  • Обратный вызов Ajax - процессы данного вида позволяют взаимодействовать с БД по запросу от JS-скрипта.

Ответ от процессов Ajax должен обрабатываться разработчиком в JS-скрипте. Остальные виды процессов могут самостоятельно взаимодействовать с пользователем, сообщая об успешности выполнения запроса или о возникшей ошибке.

Процессы

Для создания обработчика типа процесс необходимо выбрать соответствующий пункт контекстного меню по ПКМ и заполнить параметры создаваемого процесса.

../_images/proc.png

Параметр

Тип

Описание

Имя

Текст

Имя процесса.

Имя запроса

Строка

Определяет имя запроса. Если указано, то процесс будет выполняться только тогда, когда значение глобальной переменной REQUEST будет соответствовать введенному значению.

Тип процесса

Список

Тип процесса. Тип влияет на порядок вызова кода. В XRAD предусмотрены следующие типы процессов:

  • До загрузки страницы

  • Обработка

  • Обратный вызов Ajax

Источник данных

Список

Название источника данных для данного процесса.

Именованные параметры

Переключатель

Флаг, который указывает необходимость воспринимать входящие параметры как часть текста sql запроса. При установке в false, разработчику потребуется явно указать входяшие параметры. Отображается для источника данных отличных от типа Oracle.

Принять модальный

Переключатель

Определяет необходимость закрытия модального окна после выполнения Процесса. Поле доступно только для модальных страниц.

Возвращаемые значения

Текст

Перечень имен элементов ввода, значения которых можно передать на родительскую форму после закрытия модального диалога. Поле доступно при выборе флага «Принять модальный».

Фиксация TX

Переключатель

Определяет необходимость вызывать COMMIT транзакции после успешного завершения процесса. После вызова COMMIT все изменения, внесенные в базу процессами, которые выполнялись до этого процесса, будут записаны в базу. После чего XRAD откроет новую транзакцию для выполнения последующих процессов.

Тип

Список

Список с возможным типом выполняемого кода.

Источник - SQL

Область текста

Определяет SQL-запрос, который необходимо выполнить.

Параметры запроса

Текст / Окно конструктора

Определяет элементы, которые необходимо передать в исполняемый запрос в качестве переменных.

Выходные параметры

Текст / Окно конструктора

Определяет выходные элементы. Если процессу необходимо установить значения сессионных переменных, необходимо указать их в данном поле.

Последовательность

Число

Определяет последовательность выполнения процесса в списке процессов одного типа.

Сообщение об успехе

Область текста

Определяет сообщение, которое будет отображено пользователю при успешном выполнении процесса. Если вызывается цепочка процессов - будет выведено последнее сообщение об успешном исполнении.

Сообщение об ошибке

Область текста

Определяет сообщение об ошибке.

Условия отображения - Тип

Список

Определяет тип условия отображения региона на странице. Подробнее см. в условиях выполнения.

Примечание

При появлении запроса от приложения сначала выполняются все удовлетворяющие условиям запроса глобальные процессы в соответствии с их порядковыми номерами, а затем процессы текущей открытой страницы.

Условия выполнения процесса

Для выполнения процесса есть 2 вида условий:

  1. выполнение по запросу (Request);

  2. условие на стороне сервера (Server-side condition).

Выполнение по запросу (Request)

При работе приложение постоянно посылает различные запросы. Будь то submit страницы или запрос из JS-скрипта. В зависимости от источника запроса исполняются процессы различного типа, но их всех объединяет вид исполнения – выполняются все процессы одного типа в порядке очередности. Для того, чтобы на запрос не были выполнены не нужные процессы используется поле Request Name. Если поле Request Name пустое, то процесс будет выполнен при любом запросе со стороны приложения, если тип процесса подходит под тип запроса. Однако, если указать конкретное имя запроса в поле Request Name, то процесс будет выполнен только в том случае, если имя запроса, посланного приложением, совпадет с именем в поле Request Name.

Того же эффекта можно достичь, используя условие на стороне сервера (Server-side Condition) с типом SQL Expression, а в качестве входного поля указать поле REQUEST.

Управление транзакцией

При выполнении цепочки запросов к базе данных иногда возникает ситуация, когда возникновение ошибки в очередном шаге не должно приводить к отмене результатов предыдущих шагов. Эта ситуация разрешается завершением транзакции при успешном завершении процесса. Чтобы завершить транзакцию необходимо процессу выставить флаг фиксации транзакции (Commit TX).

Если данный флаг не выставлен, то, в случае возникновения ошибки в любом из процессов, будут отменены все изменения, внесенные другими процессами, у которых так же не выставлен флаг завершения транзакции. Таким образом имеется возможность разбивать большое действие на группы более мелких действий, ошибки в которых не будут влиять на действия, выполненные в предыдущих группах.

Закрытие диалога

В работе приложений часто используются модальные окна для выполнения некоторых действий. Например: создание пользователя. При нажатии на кнопку “Создать” выполняется некоторый, привязанный к кнопке, процесс. В таких случаях задача модального окна выполнена и окно можно закрыть. Для облегчения задачи у процессов имеется специальный флаг. При выставленном флаге в случае успешного выполнения процесса модальное окно будет автоматически закрыто с результатом Accept.

При успешном выполнении на запрос нескольких процессов модальное окно будет закрыто автоматически только в случае, если у последнего из цепочки процессов выставлен флаг Принять модальный (Accept Modal).

Ветви

При работе приложения бывают ситуации, при которых необходимо произвести автоматический переход на некоторую страницу при загрузке выбранной или после выполнения какого-либо процесса. Для этих целей используются ветви - переходы между страницами (Branch).

Если ветвь расположена в блоке, то переход на указанную в поле Link страницу будет осуществлён при загрузке страницы, на которой расположен Branch при выполнении условия в блоке Server-side Condition. Для безусловного перенаправления в блоке Server-side Condition необходимо оставить значение Always, для отключения перенаправления – Never.

Если Branch расположен в блоке After Processing, то переход на указанную в поле Link страницу будет осуществлён при завершении всех процессов при выполнении условия в блоке Server-side Condition. Для безусловного перенаправления в блоке Server-side Condition необходимо оставить значение Always, для отключения перенаправления – Never.

../_images/branch.png

Рассмотрим уникальные параметры для процессов типа ветвь:

Параметр

Тип

Описание

Имя

Текст

Имя ветви.

Имя запроса

Текст

Определяет имя запроса. Если указано, то процесс будет выполняться только тогда, когда значение глобальной переменной REQUEST будет соответсвовать введенному значению.

Источник данных

Список

Определяет источник данных для данной ветви.

Именнованные параметры

Переключатель

Флаг, который указывает неолбходимость воспринимать входящие параметры как часть текста sql запроса. При утстановке в false, разработчику потребуется явно указать входязщие параметры. Отображается для источнка данных отличных от типов Oracle.

Место выполнения

Список

Определяет место выполнения перехода.

  • Перед загрузкой страницы - переход будет выполнен перед загрузкой страницы. Данный пункт удобно использовать в случае, если необходимо реализовать перенаправления пользователя в зависимости от каких-либо условий.

  • После обработки - перенаправление будет вызвано после завершения выполнения процессов.

Последовательность

Число

Определяет последовательность выполнения процесса в списке процессов одного типа.

Поведение - Тип

Список

Определяет тип перехода страницы для выполнения:

  • URL-адрес перенаправления

  • Функция, возвращающая URL

Ссылка

Текст / Окно конструктора

Определяет ссылку на страницу, если задан тип перехода «URL-адрес перенаправления»

Источник - SQL

Область текста

Определяет SQL-запрос, который возвращает URL

Параметры запроса

Текст / Окно конструктора

Определяет элементы, которые необходимо передать в исполняемый запрос в качестве переменных.

Элемент формы, определяющий страницу

Список

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

Условия отображения - Тип

Список

Определяет тип условия отображения региона на странице. Подробнее см. в условиях выполнения.

Валидация

Для создания полноценного приложения требуется взаимодействие с пользователем. Все действия и данные пользователя необходимо сохранять в базу данных. Однако, пользователь может умышленно или непреднамеренно вводить некорректные данные. Для того чтобы этого избежать, в XRAD предусмотрена проверка данных – валидация. Валидация – это проверка корректности введенных пользователем данных в поля ввода формы.

Типы валидаторов

В XRAD процесс валидации – это вызов различных функций и процедур (далее - валидаторы), которые выполняются перед тем как данные будут отправлены на сервер для обработки.

../_images/validpro.png

Разработчику доступно 24 типа валидаторов:

  1. Exists (SQL query returns at least one row) – позволяет выполнить проверочный SQL-запрос. Условие счи-тается выполненным, если запрос вернул хотя бы 1 строку;

  2. NOT Exists (SQL query returns no rows) – позволяет выполнить проверочный SQL-запрос. Условие счита-ется выполненным, если запрос не вернул ни одной строки;

  3. Value of Item / Column in Expression 1 Is NOT NULL – встроенное условие на заполненность поля или ячейки таблицы. Условие считается выполненным, если поле ввода или ячейка таблицы содержит какое-либо значение;

  4. Value of Item / Column in Expression 1 != Zero – встроенное условие на значение отличное от 0 (нуль) поля ввода или столбца таблицы. Условие считается выполненным, если объект проверки будет содержать значение отличное от 0 (нуль);

  5. Value of Item / Column in Expression 1 Is NULL – встроенное условие на значение NULL (пустое значение) поля ввода или столбца таблицы. Условие считается выполненным, если объект проверки содержит NULL (пустое значение);

  6. Value of Item / Column in Expression 1 Is NULL or Zero – встроенное условие на значение NULL (пустое значение) или 0 (нуль) поля ввода или столбца таблицы. Условие считается выполненным, если объект проверки содержит NULL (пустое значение) или равно 0 (нуль);

  7. Value of Item / Column in Expression 1 = Zero – встроенное условие на значение 0 (нуль) поля ввода или столбца таблицы. Условие считается выполненным, если объект проверки будет содержать значение 0 (нуль);

  8. Value of Item / Column in Expression 1 Is NOT null and the Item / Column Is NOT Zero – встроенное условие на заполненность и значение отличное от 0 (нуль) поля ввода или столбца таблицы. Условие считается выполненным, если объект проверки не содержит NULL (пустое значение) и не равно 0 (нуль);

  9. SQL Expression – позволяет выполнить SQL-запрос, возвращающий TRUE или FALSE. В поле ввода запро-са указывается только тело запроса, без ключевых слов SELECT и/или FROM. Если необходимо выполнить какой-то подзапрос, то его необходимо обернуть в “(” “)”. Условие считается выполненным, если запрос вернул TRUE;

  10. Request = Value - проверяет значение системной глобальной переменной REQUEST на введенное значение. Условие выполняется если значение равняется указанному

  11. Request != Value - проверяет значение системной глобальной переменной REQUEST на введенное значение. Условие выполняется если значение не равняется указанному.

  12. Request is contained in Value - проверяет значение системной глобальной переменной REQUEST на введенное значение. Условие выполняется если значение содержится в указанной строке (LIKE).

  13. Request is NOT contained in Value - проверяет значение системной глобальной переменной REQUEST на введенное значение. Условие выполняется если значение не содержится в указанной строке (NOT LIKE).

  14. Item = Value - проверяет соответствие значения элемента ввода на указанное. Условие выполняется если значения соответствуют.

  15. Item != Value - проверяет соответствие значения элемента ввода на указанное. Условие выполняется если значения не соответствуют.

  16. Item is numeric - проверяет значение элемента ввода. Условие выполняется если значение содержит только цифры или равно null. Общие разделители десятичных и разрядов игнорируются.

  17. Item is NOT numeric - проверяет значение элемента ввода. Условие выполняется если значение не является числовым или равно null. Общие разделители десятичных и разрядов игнорируются.

  18. Item is alphanumeric - проверяет значение элемента ввода. Условие выполняется если значение содержит только цифры и буквы или равно null.

  19. Item is in colon delimeted list - проверяет значение элемента ввода. Условие выполняется если значение соответствуют одному из введенных вариантов. Варианты вводятся с помощью разделителя двоеточие.

  20. Item is not in colon delimeted list - проверяет значение элемента ввода. Условие выполняется если значение не соответствуют ни одному из введенных вариантов. Варианты вводятся с помощью разделителя двоеточие.

  21. PL/SQL Expression - выполняет условие на языке PL/SQL. Доступно только для элементов с источником данных типа Oracle. Условие выполняется если выражение возвращает значение TRUE.

  22. PL/SQL Function Body - выполняет тело функции на языке PL/SQL. Доступно только для элементов с источником данных типа Oracle. Условие выполняется если функция возвращает значение TRUE.

  23. Function returning Error Text – позволяет выполнить SQL-запрос возвращающий текст ошибки. В поле за-проса необходимо указать полноценный запрос возвращающий строку. Проверка считается пройденной успешно, если запрос вернул NULL. В противном случае будет отображен возвращенный запросом текст ошибки;

  24. Regular Expression – позволяет проверить значение поля формы по регулярному выражению. В поле Item указывается проверяемое поле, а в поле Value регулярное выражение. Проверка считается пройденной успешно, если значение поля Item будет соответствовать регулярному выражению.

Также имеется отдельный тип валидации – это флаг, который определяет необходимость заполнения поля формы. Для любого поля ввода можно поставить флаг, что поле обязательно для заполнения. В таком случае, даже если не сформировать иных валидаторов, при попытке отправить данные на сервер будет проведена проверка на заполненность поля данными.

Вышеуказанные валидаторы могут применяться как к данным формы, так и к данным введенным в интерактивный компонент DataGrid. Для осуществления данной проверки необходимо укзать связанный DataGrid в соответствующем поле. В таком случае имена колонок могут использоваться как входящие параметры для валидатора.

Подробнее условия выполнения см. в Типы условий.

Ошибка валидации

В случае возникновения исключения в любом из присутствующих на форме валидаторе отправка на сервер блокируется и пользователю выдается заданное разработчиком предупреждение. Если валидатор привязан к полю ввода, то дополнительно будет подсвечено поле ввода, на котором произошло исключение.

Системные валидаторы

Если поле отмечено как обязательное, но оно не заполнено, то в этом случае сработает системный валидатор и пользователь будет уведомлен о необходимости заполнить обязательные поля всплывающей подсказкой. Если на поле ввода требуется добавить дополнительную проверку, то необходимо создать валидатор для данного поля. В этом случае сначала будут вызваны системные валидаторы, а затем пользовательские.

Условия для выполнения валидации

Так как валидации выполняются автоматически при submit страницы, то часто возникают ситуации, когда необходимо ограничить их выполнение. Для этого в системе XRAD предусмотрен блок условий, по которым выполняются валидации. Подробнее смотри в Типы условий.

../_images/validcond.png

Пропуск валидаций.

Управление исполнением валидаций также можно управлять с помощью специального флага «Пропустить валидации», который указывается в атрибутах элемента «Кнопка». При указнии данного флага будут пропущены все системные валидаторы, а также те что выполняются на сервере приложений. Если необходимо пропустить только часть , в атрибутах валидации необходимо указать флаг «Всегда выполнять». При указании данного флага валидация будет выполняться вне зависимости от атрибута кнопку, но при этом все равно будут учитываться условия выполнения и имя запроса.

Вызовы REST

Вызов REST - процесс, который позволяет вызвать внешний REST API.

Рассмотрим уникальные для данного типа процесса параметры:

Параметр

Тип

Описание

Источник - URL

Текст

Определяет URL-адрес для выполнения запроса. URL необходимо указывать полностью включая протокол.

HTTP-метод

Список

Определяет HTTP-метод для выполнения запроса:

  • GET

  • POST

  • PUT

  • DELETE

  • PATCH

HTTP-заголовки

Окно конструктора

Определяет заголовки HTTP. Заголовки могут включать в себя статические значения, а также принимать значения элементов формы.

Параметр запроса URL

Окно конструктора

Определяет параметры запроса, которые будут добавлены в URL. Значения параметров могут быть как статическими, так и взятыми из элемента ввода.

Тип тела запроса

Список

Определяет тип тела запроса. Возможные варианты:

  • Отсутствует

  • Статичное значение

  • Form-encoded

  • SQL

Обработка ответа

Список

Определяет тип обработчика ответа сервиса:

  • Отсутствует

  • Назначить переменные

  • SQL-обработчик

Назначение переменных

Окно конструктора

Определяет соответствие элементов формы и элементов ответа в формате JSON. В качестве аргумента обработчика ответа можно указать путь JMES. В случае если путь вернет просто значение JSON (строка, число, булево значение) элемент будет содержать это значение. Если JMES путь возвращает составное значение (объект или массив) в элемент будет передано вернувшееся значение в формате JSON.

Обработка в SQL

Окно конструктора

Определяет SQL-обработчик.

Входные параметры

Текст / Окно конструктора

Определяет элементы, которые необходимо передать в SQL-запрос в качестве переменных.

Процесс DataGrid

Для обработки данных введенных в интерактивных компонент DataGrid используется специальный процесс. В рамках данного процесса указывается как именно должны обрабатываться строки, измененные или добавленные пользователем. Процесс позволяет ввести собственный код который должен вызываться для удаления, обновления и вставки строк. Для обработки пользовательских значений процессу доступна информация о каждой ячейки измененных строк. Доступ к данным в этом случае осуществляется по имени столбца.

Помимо общих полей с обычным процессом, выделяются следующие атрибуты:

Параметр

Тип

Описание

Data Grid

Список

Указывается регион с типом DataGrid, для которого должен быть применим данный процесс.

Предотвращать потерянное обновление

Переключатель

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

Удалить

Область текста

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

Вставка

Область текста

Определяет код процесса, который необходимо выполнить в случае вставки пользователем новой строки. Для того чтобы новая строка сразу отобразилась в DataGrid, необходимо чтобы процесс возвращал колонки, которые помечены как «Первичный ключ».

Обновление

Область текста

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

Условия отображения - Выполнить

Список

Позволяет задать условие выполнения с учетом данных переданных из DataGrid. Возможные варианты:

  • Один раз - условие выполняется единожды. Результат выполнения будет применен ко всем переданным строкам

  • Для каждой строки - условие выполняется для каждой строки.

Загрузки

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

Параметр

Тип

Описание

Имя

Текст

Имя процесса загрузки.

Источник данных

Список

Определяет источник данных для данного процесса.

Имя запроса

Текст

Определяет имя запроса. Если указано, то процесс будет выполняться только тогда, когда значение глобальной переменной REQUEST будет соответствовать введенному значению.

Последовательность

Число

Определяет последовательность выполнения процесса в списке процессов одного типа.

Источник - SQL

Область текста

Определяет SQL-запрос, который возвращает URL.

Колонка с наименованием

Список

Определяет колонку, содержащую название файла.

Колонка с файлом

Список

Определяет колонку, содержащую данные файла.

Mime Type Колонка

Список

Определяет колонку содержащую mime тип файла.

Content Disposition

Список

Определяет содержание заголовка Content-Disposition:

  • Attachment

  • Inline

Заголовок отвечает за то как необходимо отобразить содержимое файла в браузере. Если указано attachment - файл будет загружен на компьютер пользователя.Если указано inline – содержимое файла будет отображено в браузере.

Схемы аутентификации

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

Рассмотрим уникальные параметры процесса аутентификации:

Параметр

Тип

Описание

Тип аутентификации

Список

Определяет тип аутентификации. Поддерживаемые типы аутентификации:

  • Custom

  • Ldap

  • Microsoft Ldap

  • Kerberos SSO

  • Microsoft Kerberos SSO

  • OIDC

Аутентификаиця

Список

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

Источник - Логин

Список

Определяет элемент формы, который будет использоваться для ввода логина. Атрибут доступен для схем Ldap и Microsoft Ldap.

Источник - Пароль

Список

Определяет элемент формы, который будет использоваться для ввода пароля. Атрибут доступен для схем Ldap и Microsoft Ldap.

Функция аутентификации

Область текста

Определяет SQL-запрос, который будет выполнен для осуществления аутентификации. Функция должна возвращать значение типа boolean. Первый параметр функции должен быть логин пользователя. Данное поле доступно только при выборе типа аутентификации «Custom».

Функция пост-логина

Область текста

Определяет SQL-запрос, который будет выполнен после успешной авторизации пользователя. Возвращаемые значения фукнции будут установлены в новую сессию аутентифицированного пользователя.

Сообщение об ошибке

Текст

Позволяет указать текст ошибки, которые будет выведен пользователю в случае неуспешной аутентификации.

Схемы авторизации

Определить доступность страницы конкретному пользователю можно в редакторе страниц через свойство «Безопасность - Схема авторизации».

В выпадающем списке можно увидеть доступные схемы авторизации.

../_images/authorschemes.png

Выбранная схема авторизации будет применена к странице после сохранения изменений через кнопку «Сохранить».

Если у пользователя нет прав на просмотр страницы, то будет отображена сообщение об ошибке, указанное в схеме авторизации.