From OpenSCADAWiki
Jump to: navigation, search
This page is a translated version of the page Modules/WebUser and the translation is 100% complete.

Other languages:
English • ‎российский • ‎українська
Модуль Имя Версия Лицензия Источник Языки Платформы Тип Автор Описание
WebUser WWW-страница пользователя 1.0 GPL2 ui_WebUser.so en,uk,ru,de x86,x86_64,ARM Пользовательские интерфейсы Роман Савоченко Обеспечивает создание собственных WWW-страниц на внутреннем языке OpenSCADA.

Модуль предоставляет пользователю механизм создания WWW-страниц, а также позволяет обрабатывать иные WWW-запросы на внутреннем языке OpenSCADA, обычно JavaLikeCalc, не прибегая к низкоуровневому программированию. В роли обработчика страниц модуль позволяет использовать стандартные шаблоны DAQ. Использование шаблонов DAQ позволяет создавать библиотеки WWW-страниц и вызов их в этом модуле многократно, как их реализации, а также предоставляет контекст данных исполнения шаблона с их связыванием с данными подсистемы "Сбор Данных".

Кроме принадлежности модуля к OpenSCADA он также принадлежит и является модулем модуля транспортного протокола Protocol.HTTP. Собственно вызов модуля WebUser осуществляется из Protocol.HTTP и посредством расширенного механизма коммуникации, экспортированными в этом модуле функциями: HTTP_GET(), HTTP_POST().

Адресация страниц начинается со второго элемента URI. Это связанно с тем, что первый элемент URI используется для идентификации самого модуля пользовательского WWW-интерфейса. Например, URL http://localhost.localdomain:10002/WebUser/UserPage можно расшифровать как вызов пользовательской страницы "UserPage" этого модуля "WebUser" на хосте "localhost.localdomain" через порт 10002. В случае отсутствия второго элемента URI и указания отображать индекс пользовательских страниц в конфигурации — формируется индекс страниц (рис.1).

Рис.1. Индекс пользовательских страниц.

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

Рис.2. Основная вкладка конфигурации модуля.

WWW-страницы

Модуль предоставляет возможность создания реализаций множества WWW-страниц в объекте "Пользовательская WWW-страница" (рис.3).

Рис.3. Главная вкладка конфигурации пользовательской страницы.

Главная вкладка содержит основные настройки WWW-страницы:

  • Раздел "Состояние" — содержит свойства, характеризующие состояние страницы: статус, "Включен", имя БД (содержащей конфигурацию) и дату последней модификации.
  • Идентификатор, имя и описание страницы.
  • Состояние "Включен", в которое переводить страницу при загрузке.
  • Язык прямой процедуры или DAQ-шаблон, связанный со страницей.

Все запросы к пользовательским страницам направляются в прямую процедуру обработки запросов пользовательской страницы, или процедуру DAQ-шаблона, которая представлена на вкладке "Программа" объекта страницы пользователя (рис.4). В случае с DAQ-шаблоном также предоставляется вкладка конфигурации шаблона (рис.5).

Рис.4. Вкладка "Процедура" объекта пользовательской WWW-страницы.

Вкладка процедуры обработки запросов к пользовательской странице содержит:

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

Для прямой процедуры обработки предопределены, и обязательны или опциональны для создания в шаблоне, следующие атрибуты обмена с протоколом HTTP:

  • Результат (rez) <Строка> — результат обработки, по умолчанию — "200 OK"; в режиме DAQ-шаблона Вы должны писать сюда прямо, не оператором "return";
  • HTTP запрос (HTTPreq) <Строка> — метод HTTP запроса: GET, POST;
  • URL (url) <Строка> — URI запроса;
  • WWW-страница (page) <Строка> — содержимое страницы Get/Post, как для запроса так и ответа;
  • Отправитель (sender) <Строка> — отправитель запроса;
  • Пользователь (user) <Строка> — аутентифицированный пользователь;
  • HTTP переменные (HTTPvars) <Объект> — HTTP переменные; изменённые и добавленные переменные (кроме "Date", "Server", "Accept-Ranges" и "Content-Length") будут помещены в пакет ответа;
  • Параметры URL (URLprms) <Объект> — параметры URL;
  • Элементы содержимого (cnts) <Объект::Array<XMLNodeObj>> — элементы содержимого для POST;
  • Этот объект (this) <Объект> — указатель на объект этой страницы;
  • Объект протокола (prt) <Объект> — указатель на объект входной части HTTP протокола.

Общий сценарий запроса пользовательской страницы:

  • Внешняя сетевая станция формирует HTTP запрос с URI вида "/WebUser/{UserPage}", который попадает на транспорт OpenSCADA с значением поля конфигурации "Протокол", равного "HTTP".
  • Транспорт направляет запрос на модуль транспортного протокола "Protocol.HTTP".
  • Модуль транспортного протокола, согласно первого элемента URI, направляет запрос данному модулю.
  • Данный модуль выбирает объект страницы пользователя, которая указана во втором элементе URI.
  • Выполняется инициализация переменных HTTP-протокола для процедуры страницы:
    • HTTPreq — устанавливается в значение строки "GET" или "POST", в зависимости от типа запроса;
    • url — адрес запрашиваемого ресурса (URI);
    • page — содержимое передаваемой страницы, для метода "POST";
    • sender — адрес отправителя запроса;
    • user — идентификатор аутентифицированного пользователя, если аутентификация имела место;
    • HTTPvars — разобранный перечень переменных протокола HTTP в виде свойств объекта;
    • URLprms — разобранный перечень параметров URL в виде свойств объекта;
    • cnts — разобранные элементы содержимого для POST, в Array<XMLNodeObj>, с содержимым элементов в тексте и свойствами, в атрибутах XMLNodeObj.
  • Вызов процедуры на исполнение, которая, обработав запрос, формирует содержимое страницы в "page" и результат запроса в "rez".
  • В завершение формируется ответ с кодом возврата HTTP из "rez" и содержимым из "page", а также изменёнными и добавленными переменными протокола HTTP из "HTTPvars".