Сеанс проекта это развёрнутое дерево проекта для непосредственного его исполнения, включающего отдельную задачу иерархического исполнения процедур виджетов. Для каждого проекта может быть открыто множество сеансов. Формирование конечного интерфейса визуализации осуществляется визуализаторами исходя из данных сеанса проекта, после создания сеанса по запросу.
Между виджетами на различных уровнях иерархии, в конечном счёте, выстраиваются достаточно сложные наследственные связи, которые определяются возможностью использования одних виджетов другими, начиная с библиотечного виджета и заканчивая виджетом сеанса. Для разъяснения этих особенностей взаимодействия на рисунке изображена исчерпывающая карта "использующего" наследования.
На уровне сеансов виджет содержит объект значений процедуры обсчёта. Этот объект инициируется и используется в случае наличия у процедуры обсчёта. В момент инициализации создаётся перечень параметров процедуры и выполняется её компиляция с этими параметрами в модуле, реализующем выбранный язык программирования и закодированным полным именем виджета. Скомпилированная функция подключается к объекту значений процедуры обсчёта. Далее выполняется вычисление с периодичностью сеанса.
Вычисление и обработка виджета в целом выполняется в следующей последовательности:
Объекты сеанса проекта наследуются от абстрактного объекта "Widget" и используют соответствующие объекты проекта. Так, сеанс ("Session") использует проект ("Project") и формирует развёрнутое дерево на основе него. Страница проекта "Page" прямо используется страницей сессии "SessPage". Остальные объекты ("SessWdg") разворачиваются в соответствии с иерархией элементов страницы.
В дополнение к стандартным свойствам абстрактного виджета ("Widget") элементы страницы и сами страницы сеанса получают свойства: хранения объекта значений вычислительной процедуры, обсчёта процедур и механизм обработки событий. Страницы сеанса, в дополнение ко всему, содержат контейнер следующих по иерархии страниц. Сеанс в целом вычисляется с указанной периодичностью и в последовательности:
Такая политика позволяет обходить страницы в соответствии с их иерархией, а событиям в виджетах "всплывать" на верх за одну итерацию.
Сеансы, на уровне интерфейса управления OpenSCADA, поддерживают многоязычность, которая зависит от значения общих атрибутов "lang" и далее "user", и которые визуализатор может устанавливать в соответствии со своим языком. Эта функция включается динамическим переводом сообщений OpenSCADA.
2015-08-03 17:56:08 | (39 Kb) | map_inher.odg | Диаграмма: Карта «использующего» наследования компонентов концепции/движка | |
2015-07-23 12:40:05 | (225 Kb) | map_inher.png | Карта «использующего» наследования компонентов концепции/движка |