Модуль |
Имя |
Версия |
Лицензия |
Источник |
Языки |
Платформы |
Тип |
Автор |
Описание
|
WebUser |
WWW-страница пользователя
|
1.6 |
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-страницы.
Вкладка процедуры обработки запросов к пользовательской странице содержит:
- Таблицу контекста данных процедуры. В основном имеет смысл только при работе по шаблону и где можно контролировать этот процесс обработки, включая возможность вмешательства через изменение значений данных.
- Текст прямой процедуры страницы, отсутствует в режиме работы по шаблону.
- Связи на данные подсистемы "Сбор Данных", которые видимы и доступны для определения в режиме работы по шаблону и во включенном состоянии объекта страницы.
For the direct processing procedure, and the required or optional ones to create in the template, the following exchange attributes with the HTTP-protocol are predetermined:
- Result (rez) <String> — processing result, by defaults — "200 OK"; in the DAQ-template mode you must write thither directly, not by the operator "return";
- HTTP request (HTTPreq) <String> — the HTTP request method: GET, POST;
- URL (url) <String> — URI of the request;
- WWW-page (page) <String> — content of the Get/Post page for the request and respond as well;
- Sender (sender) <String> — request sender;
- User (user) <String> — authenticated user;
- HTTP variables (HTTPvars) <Object> — HTTP variables; changed and appended variables (besides "Date", "Server", "Accept-Ranges" and "Content-Length") will be placed to the response package;
- URL's parameters (URLprms) <Object> — URL parameters;
- Content items (cnts) <Object::Array<XMLNodeObj>> — content items for POST;
- This object (this) <Object> — pointer to this page's object;
- Protocol's object (prt) <Object> — pointer to the input part object of the HTTP protocol;
- Scheduling the next service call (schedCall) <Integer> — write here the time value in seconds for scheduling the procedure context execution in a service call; the service calls are performed in the periodicity 10 seconds usually, so you can schedule the calls not often than at 10 seconds.
Общий сценарий запроса пользовательской страницы:
- Внешняя сетевая станция формирует 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".