Дозволяє створювати користувачу власні web-інтерфейси на мові OpenSCADA.
Ліцензія:
GPL
Вступ
Модуль WebUser надає користувачу механізм створення Web-сторінок, а також дозволяє обробляти інші Web-запити на одній із внутрішніх мов OpenSCADA, зазвичай JavaLikeCalc, не залучаючись до низькорівневого програмування OpenSCADA.
Крім приналежності модуля системі OpenSCADA він також належить та є модулем модуля транспортного протоколу HTTP. Власне, виклик WebUser здійснюється з Protocol.HTTP. Виклик здійснюється за посередництвом розширеного механізму комунікації через експортовані у цьому модулі функції: HTTP_GET(), HTTP_POST().
Адресація сторінок починається із другого елементу URI. Що пов'язано із тим, що перший елемент URI використовується для ідентифікації самого модуля користувацького Web-інтерфейсу. Наприклад URL: http://localhost.localdomain:10002/WebUser/UserPage можна розшифрувати як виклик користувацької сторінки "UserPage" цього модуля на хості "localhost.localdomain" через порт 10002. У випадку відсутності другого елементу URI та вказання відображати індекс користувацьких сторінок у конфігурації — формується індекс сторінок (рис.1).
Рис.1. Індекс користувацьких сторінок.
Головна вкладка конфігурації модуля (рис.2) містить стан модуля, надає можливість обрання сторінки по замовченню та дозволяє сформувати перелік користувацьких сторінок.
Рис.2. Основна вкладка конфігурації модуля.
1. WEB — сторінки
Модуль надає можливість створення реалізацій Web-сторінок у об'єкті "Користувацька сторінка" (рис.3).
Рис.3. Головна вкладка конфігурації користувацької сторінки.
Головна вкладка містить основні налаштування користувацького протоколу:
Розділ "Стан" — містить властивості, що характеризують стан користувацької сторінки:
Стан — поточний режим та статистика.
Включено — стан сторінки "Включено".
БД — БД, у якій зберігається конфігурація.
Дата модифікації — дата та час останньої модифікації об'єкту.
Розділ "Конфігурація" — безпосередньо містить поля конфігурації:
ID — інформація про ідентифікатор сторінки.
Ім'я — вказує на ім'я сторінки.
Опис — короткий опис сторінки та її призначення.
Включати — вказує на стан "Включено", у який переводити сторінку при завантажені.
Всі запити до користувацьких сторінок спрямовуються до процедури обробки запитів користувацької сторінки, яка представлена на вкладці "Програма" об'єкту сторінки користувача (рис.4).
Вкладка процедури обробки запитів до користувацької сторінки містить поле для обрання внутрішньої мови програмування OpenSCADA та поле вводу тексту процедури обробки.
Для процедури обробки предвизначено наступні змінні обміну:
rez — Результат оброки (по замовченню — "200 OK").
HTTPreq — Метод HTTP запиту (GET, POST).
url — URI запиту.
page — Вміст сторінки Get/Post, як для запиту так і для відповіді.
sender — Відправник запиту.
user — Аутентифікований користувач.
HTTPvars — HTTP змінні у Object. Змінені та додані змінні (окрім "Date", "Server", "Accept-Ranges" та "Content-Length") будуть розташовані у пакеті відповіді.
URLprms — Параметри URL у Object.
cnts — Елементи вмісту для POST у Array<XMLNodeObj>.
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.