Основные концепции среды разработки¶
Чтобы эффективно использовать XRAD разработчики должны понимать некоторые ключевые понятия, включая управление дизайном пользовательского интерфейса, просмотр визуализированных страниц приложений, понимание обработки и визуализации страниц, управление состоянием сеанса, управление значениями и состояния сеанса.
Общая концепция приложения¶
Что такое приложение?¶
Приложение XRAD - это HTML интерфейс, который существует поверх объектов базы данных: таблиц и процедур. Приложение в среде XRAD логически и физически разделяется на две базы данных: база данных отвечающая за бизнес логику и база данных с набором метаданных интерфейса приложения. Среда исполнения XRAD (pghs) объединяет данные двух баз и предоставляет конечному пользователю веб интерфейс, который отображает бизнес данные и процессы в соответствии с тем как было описано разработчиком.
Для конечного пользователя приложение это набор страниц, которые отображают и позволяют вводить данные посредством различных компонентом.
Что такое страница?¶
Страницу можно представить как строительный блок приложения. Приложение может содержать всего одну а скорее всего множество таких блоков. Каждая страница может иметь кнопки и поля для ввода (называемые элементами), которые группируются посредством размещения в контейнер, который называется регион. Страницы могут включать в себя логику обработки данных, называемую процессами. Связь страниц друг с другом обеспечивают ссылки или ветви. Страницы могут включать в себя проверки пользовательских данных, разнообразные отчеты, графики и прочие элементы. Разработка страницы осуществляется в редакторе страниц.
Как работает рендеринг страницы и обработка ввода¶
Как XRAD осуществляет рендеринг страницы и обработку ввода¶
XRAD осуществляет динамическое построение страниц и обработку данных, основываясь на метаданных в базе данных PostgreSQL. Процесс рендеринга и обработки страницы основан на взаимодействии трех компонентов системы.
БД XRAD - базы данных с метаданными страницы. В ней хранится информация о компонентах запрашиваемой страницы, процессах которые должны произойти во время обработки страницы.
PGHS - серверная среда исполнения. Выступает в роли http сервера, который принимает запросы от клиента, формирует страницу на основе данных в БД XRAD, вызывает логику обработки страницы.
Веб приложение - веб приложение XRAD, которое отвечает за отрисовку компонентов переданных в управляющей структуре http сервером PGHS.
Для просмотра приложения необходимо вызвать страницу приложения XRAD по определенной ссылке, на которой размещается приложение. Когда вы запускаете приложение, XRAD вызывает два ключевых процесса:
showPage - процесс рендеринга страницы, который собирает все атрибуты страницы (включая регионы, кнопки и элементы) в один управляющий файл json. После чего среда исполнения передаёт эту управляющую структуру в веб браузер клиента, на котором происходит отрисовка описанных элементов приложения. За отрисовку компонентов на клиенте отвечает клиентская среда исполнения XRAD. Когда вы запрашиваете страницу, переходя по ссылке XRAD вызывает процесс showPage.
processPage - процесс обработки страницы. Отвечает за обработку введенных данных, включая в себя выполнения процессов, проверок данных и переходов на другие страницы. Процесс вызывается после отправки страницы на сервер, путем нажатия кнопки или вызова соответствующего метода jsAPI. После отправки все данные указанные в элементах страницы записываются в сессию и подставляются в соответствующие процессы.
Как работает транзакция¶
При вызове процессов showPage или processPage XRAD открывает транзакцию в БД с бизнес данными. Эта транзакция существует на протяжения всего времени выполнения процессов showPage или processPage. В случае успешного выполнения процессов транзакция завершается с вызовом commit. Если возникает ошибка в процессах обработки данных - транзакция будет прервана вызовом rollback на момент начала выполнения процесса.В связи с этим разработчику необходимо учитывать, что данные, которые будут переданы в базу данных посредством выполнения того или иного процесса будут доступны только при успешном завершении транзакции. Доступность данных в момент выполнения той или иной процедуры полностью зависит от того уровня изолированности транзакции настроенного на БД с бизнес данными. Напоминаем что по умолчанию уровень изолированности в PostgreSQL установлен в Read committed.
В связи с ограничениями связанными с подтранзакциями в PostgreSQL, вызов commit в бизнес процессе приведет к ошибке. Для обеспечения выполнения отдельного процесса вне зависимости от успешности выполнения обработки всей страницы предлагается в настройках процесса указывать вызов commit после его выполнения. Подробнее см. Процессинг страницы.
Значения сессии переданные в ходе вызова процессов showPage или processPage, также будут записаны в БД только после успешного выполнения обработки страницы. Однако их значения доступны в ходе выполнения этих процессов. Для передачи значений элементов ввода в бизнес процессы см. Процессинг страницы.
Сессии и их состояние¶
Что такое состояние сессии¶
Состояние сессии - это механизм который позволяет разработчикам хранить и получать значения для пользователя, даже когда он переходит по разным страницам приложения.
Протокол передачи гипертекста (HTTP), протокол, по которому чаще всего доставляются HTML-страницы, является протоколом без сохранения состояния. Веб-браузер подключается к серверу только на время, необходимое для загрузки полной страницы. Каждый запрос страницы обрабатывается сервером как независимое событие, не связанное с какими-либо запросами страницы, которые произошли ранее или могут произойти в будущем. Чтобы получить доступ к значениям формы, введенным на одной странице, на следующей странице, значения должны быть сохранены в состояние сессии. XRAD предоставляет разработчикам возможность получать и устанавливать значения состояния сессии с любой страницы приложения.
Что такое сессия¶
Сеанс — это логическая конструкция, которая устанавливает постоянство (или поведение с отслеживанием состояния) при просмотре страниц.
Каждой сессии присваивается уникальный идентификатор. XRAD использует этот идентификатор для хранения и извлечения рабочего набора данных приложения до и после каждого просмотра страницы. Поскольку сеансы полностью независимы друг от друга, в базе данных может существовать любое количество сеансов одновременно. Пользователь также может запускать несколько экземпляров приложения одновременно в разных программах браузера.
Сеансы логически и физически отличаются от сеансов базы данных, используемых для обслуживания запросов страниц. Пользователь запускает приложение в одном сеансе XRAD от входа до выхода с типичной продолжительностью, измеряемой в минутах или часах. Каждая страница, запрошенная во время этого сеанса, приводит к тому, что XRAD создает или повторно использует сеанс базы данных для доступа к ресурсам базы данных. Часто такие сеансы базы данных длятся всего доли секунды.
Значение идентификатора сессии хранится в cookie браузера. Время жизни данного cookie определяется настройками приложения и дополнительно контролируются средой исполнения PGHS.
Управление значениями сессии¶
Для хранения и получения значений для пользователя используется состояние сессии.
При создании интерактивных веб-приложений, управляемых данными, возможность доступа к значениям состояния сеанса и управления ими имеет решающее значение. В XRAD состояние сеанса автоматически управляется для каждой страницы, и на него легко ссылаться в статическом HTML или логических элементах управления, таких как процессы или проверки.
Как получить значение сессионной переменной¶
Значения контрольных элементов хранятся в состоянии сеанса в регионах, вычислениях, процессах, проверках и ветвях. Элемент может быть полем, текстовой областью, паролем, списком выбора и прочим элементом ввода.
Передача значений в исполняемый код¶
Для получения значения элемента и передачи его в исполняемый код, среда разработки предоставляет специальные поля для ввода наименований элементов. Эти поля подставляются в код как позиционные переменные. Код должен быть выражением SQL.
Передача значений для точной замены или в ссылку¶
Для статического текста или точной замены используйте условное обозначение &ITEM_NAME., за которым следует точка (.).
Как установить значение сессионной переменной¶
Значение сессионной переменной устанавливается автоматически после успешного выполнения процесса обработки страницы. Введенные пользователем данные в элементы ввода попадают в сессионные переменные, которые носят название указанное разработчиком в среде разработки.
Для передачи значений на форму пре переходе между страницами необходимо указать значение переменных в ссылке.
Ссылка страницу будет выглядеть следующим образом
/content/1000?P1000_MY_ITEM=test
Как очистить состояние сессии¶
Для очистки состояния сессии используйте управляющее слово clear в ссылке на страницу
/content/1000?clear=1000
Состояние сессии элементов указанных на странице в параметре clear будет сброшено. Можно указать несколько страниц через запятую.
Данный параметр указывается на форме редактирования ссылки
Дополнительно можно указать действие, которое позволит сбросить пагинацию регионов с типом «Отчет» или очистить в нем критерии поиска.
Глобальные переменные и их значения¶
Глобальные переменные позволяют хранить значения привязанные к самому приложению а не к определенной странице. Более подробно см. 8. Глобальные переменные.