Хранение данных виджетов, библиотек виджетов и проектов реализовано в БД, доступных системе OpenSCADA. БД организована по принадлежности данных к библиотеке-проекту. Т.е. отдельная библиотека-проект хранится в отдельной группе таблиц одной или разных БД. Перечень библиотек виджетов хранится в индексной таблице библиотек с именем "VCALibs", со структурой "Libs", а перечень проектов в индексной таблице "VCAPrjs", со структурой "Projs". Экземпляр этих таблиц создаётся в каждой БД, где хранятся данные этого модуля с перечнем библиотек, содержащихся в конкретно взятой БД. В состав таблиц, принадлежащих библиотеке виджетов и проектов, входят следующие:
- "{DB_TBL}" — таблица с виджетами, принадлежащими библиотеке (структура "LibWigets"), или страниц принадлежащих проекту (структура "ProjPages");
- "{DB_TBL}_io" — таблица с рабочими свойствами виджетов этой библиотеки и вложенными виджетами контейнерных виджетов (структура "LibWidgetIO"), или свойствами страниц (структура "ProjPageIO");
- "{DB_TBL}_uio" — таблица с пользовательскими свойствами виджетов этой библиотеки и вложенными виджетами контейнерных виджетов (структура "LibWidgetUserIO"), или с пользовательскими свойствами страниц (структура "ProjPageUserIO");
- "{DB_TBL}_incl" — таблица с перечнем вложенных виджетов в виджеты-контейнеры данной библиотеки (структура "LibWidgetIncl") или проекта (структура "ProjPageWIncl");
- "{DB_TBL}_mime" — таблица с ресурсами библиотеки и её виджетов (структура "LibWidgetMime"), или проекта и его страниц (структура "ProjMime");
- "{DB_TBL}_stl" — таблица для хранения значений стилевых параметров проекта (структура "PrjStlIO");
- "{DB_TBL}_ses" — таблица для хранения данных режима исполнения проектов, т.е. сеансов (структура "PrjSesIO").
Проекции (структуры) основных таблиц таковы:
- Libs(ID, NAME, DSCR, DB_TBL, ICO) — Библиотеки виджетов ID.
ID — идентификатор;
NAME — имя;
DSCR — описание;
DB_TBL — корень таблиц БД с виджетами;
ICO — закодированное (Base64) изображение иконки библиотеки.
- LibWigets(__ID__, ICO, PARENT, PROC, PROC_PER, ATTRS, TIMESTAMP) — Виджеты ID библиотеки.
ID — идентификатор;
ICO — закодированное (Base64) изображение иконки виджета;
PARENT — адрес виджета основы в виде /wlb_originals/wdg_Box;
PROC — внутренний сценарий и язык сценария виджета;
PROC_PER — периодичность вычисления сценария виджета;
ATTRS — перечень атрибутов виджета, модифицированных пользователем;
TIMESTAMP — метка времени последней модификации.
- LibWidgetIO(__IDW__, ID, IDC, IO_VAL, SELF_FLG, CFG_TMPL, CFG_VAL) — Рабочие атрибуты ID виджета IDW.
IDW — идентификатор виджета;
ID — идентификатор IO;
IDC — идентификатор дочернего виджета;
IO_VAL — значение атрибута;
SELF_FLG — внутренние флаги IO;
CFG_TMPL — шаблон элемента конфигурации, основанного на данном атрибуте;
CFG_VAL — значение элемента конфигурации (ссылка, константа ...).
- LibWidgetUserIO(__IDW__, ID, IDC, NAME, IO_TP, IO_VAL, SELF_FLG, CFG_TMPL, CFG_VAL) — Пользовательские атрибуты ID виджета IDW.
IDW — идентификатор виджета;
ID — идентификатор IO;
IDC — идентификатор дочернего виджета;
NAME — имя IO;
IO_TP — тип и главные флаги IO;
IO_VAL — значение IO;
SELF_FLG — внутренние флаги IO;
CFG_TMPL — шаблон элемента конфигурации, основанного на данном атрибуте;
CFG_VAL — значение элемента конфигурации (ссылка, константа ...).
- LibWidgetIncl(__IDW__, ID, PARENT, ATTRS) — Включенные в контейнер IDW виджеты ID.
IDW — идентификатор виджета;
ID — идентификатор экземпляра вложенного виджета;
PARENT — адрес виджета основы в виде /wlb_originals/wdg_Box;
ATTRS — перечень атрибутов виджета, модифицированных пользователем.
- LibWidgetMime(__ID__, MIME, DATA) — Audio, video, media и другие ресурсы виджетов библиотеки.
ID — Идентификатор ресурса.
MIME — Mime тип данных ресурса (в формате — "{mimeType};{Size}").
DATA — Данные ресурса кодированные Base64.
- Projs(ID, NAME, DSCR, DB_TBL, ICO, USER, GRP, PERMIT, PER, FLGS, STYLE) — Проекты ID интерфейса визуализации.
ID — идентификатор проекта;
NAME — имя проекта;
DSCR — описание проекта;
DB_TBL — корень таблиц БД со страницами;
ICO — закодированное (Base64) изображение иконки проекта;
USER — имя владельца проекта;
GRP — имя группы пользователей проекта;
PERMIT — права доступа к проекту;
PER — период вычисления проекта, в миллисекундах;
FLGS — флаги проекта;
STYLE — типовой стиль проекта.
- ProjPages(__OWNER__, ID, ICO, PARENT, PROC, PROC_PER, FLGS, ATTRS, TIMESTAMP) — Страницы ID содержащиеся в проекте/странице OWNER.
OWNER — проект/страница — владелец данной страницы (в виде — "/AGLKS/so/1/gcadr");
ID — идентификатор страницы;
ICO — закодированное (Base64) изображение иконки страницы;
PARENT — адрес виджета основы в виде /wlb_originals/wdg_Box;
PROC — внутренний сценарий и язык сценария страницы;
PROC_PER — периодичность вычисления сценария страницы;
FLGS — флаги типов страницы;
ATTRS — перечень атрибутов страницы, модифицированных пользователем;
TIMESTAMP — метка времени последней модификации.
- ProjPageIO(__IDW__, ID, IDC, IO_VAL, SELF_FLG, CFG_TMPL, CFG_VAL) — Рабочие атрибуты страниц. Структура фактически совпадает с таблицей "LibWidgetIO".
- ProjPageUserIO(__IDW__, ID, IDC, NAME, IO_TP, IO_VAL, SELF_FLG, CFG_TMPL, CFG_VAL) — Пользовательские атрибуты страниц. Структура фактически совпадает с таблицей "LibWidgetUserIO".
- ProjPageWIncl(__IDW__, ID, PARENT, ATTRS) — Включенные на страницы виджеты. Структура фактически совпадает с таблицей "LibWidgetIncl".
- ProjMime(__ID__, MIME, DATA) — Audio, video, media и другие ресурсы страниц проектов. Структура фактически совпадает с таблицей "LibWidgetMime".
- PrjStl(__ID__, V_0, V_1, V_2, V_3, V_4, V_5, V_6, V_7, V_8, V_9) — Значения поля стиля ID проекта.
ID — идентификатор поля стиля;
V_{N} — значение поля стиля для стиля N.
- ProjSess(__IDW__, ID, IO_VAL) — Таблица проекта IDW для хранения данных сеансов, исполняющих проект.
IDW — полный путь элемента проекта;
ID — атрибут элемента;
IO_VAL — значение атрибута.