Привязки

Привязки AggreGate

Почему именно такое название? Привязки называются так, потому что они привязывают различные элементы друг к другу подобно тому, как вы привязываете что-нибудь в реальном мире. В этом и заключается весь смысл - крепко прикрепить что-либо к чему-либо.

В случае с AggreGate, привязки позволяют связать какие-либо данные с другими. Например, элементы инструментальной панели могут быть связаны с настройками устройства, сохранёнными на стороне сервера в его «снимке».

Система привязок AggreGate работает в виджетах, моделях, классах и других модулях. Она помогает привязать внутренние элементы модуля, такие как компоненты виджета или экземпляры класса, друг к другу и другим формализованным элементам единой модели данных.

Каждая привязка может срабатывать при запуске какого-либо компонента системы (например, инструментальной панели), при изменении переменной, по событию или периодически. У привязки есть выражение, которое обращается к указанным в нём переменным в единой модели данных, обрабатывает их согласно заданной логике и конвертирует в результат. Также у привязки есть цель - место, куда будет записан результат выполнения выражения.

Привязки могут самостоятельно анализировать пользовательские выражения и оптимизировать свою работу. Например, если выражение привязки выглядит как power = {voltage} * {current}, то она будет автоматически выполняться при изменении значения каждой из переменных.

Система привязок AggreGate

Пример:

У вас есть недоступное для редактирования текстовое поле, выделенное серым цветом. Данное поле может иметь рядом флаговую кнопку «Включить данную настройку?». Как только флаг установлен, текстовое поле становится доступным для редактирования, и теперь вы можете в него что-нибудь вписать. Все это происходит в результате привязки данных - значение контрольной кнопки («Включено» или «Отключено») привязано к состоянию текстового поля («Доступно для редактирования» или «Недоступно для редактирования»).

Параллельное выполнение привязок позволяет системным архитекторам оптимизировать потребление ресурсов платформы в зависимости от среды, в которой она развёрнута – правильная конфигурация гарантирует работу как на одноплатных компьютерах, так и в крупных распределённых инсталляциях.