ПРИОРИТЕТНОЕ СВЯЗЫВАНИЕ
PRIORITY BINDING

ПРИОРИТЕТНОЕ СВЯЗЫВАНИЕ
ССЫЛКИ НА РОДСТВЕННЫЕ ЗАЯВКИ
Настоящая заявка на патент относится к заявке на патент MSFT-3490/307399.1, озаглавленной “Application of a data-binding mechanism to perform command binding”, подаваемой одновременно с настоящей заявкой.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящее изобретение относится к вычислительной технике и, в частности, к отображению мишени на некоторое количество элементов данных посредством технологии приоритетного связывания.
УРОВЕНЬ ТЕХНИКИ
Задача разработки интерфейса пользователя (ИП) для прикладных программ является кропотливой и времязатратной. Разработчики обычно затрачивают большое количество времени на написание кодов для передачи информации от нижележащих данных приложения к элементам или компонентам ИП и обратно. Но это не только поглощает время разработчика, это также означает, что разработчик должен быть существенным образом вовлечен в проектирование ИП. В то время как ИП становится все более визуально сложным, все большую важность приобретает тот факт, чтоб проектирование ИП ведут профессиональные проектировщики, а не разработчики приложений. Но поскольку коды все еще требуют “привязки” интерфейса к нижележащим данным, задача проектирования ИП должна быть распределена между проектировщиками и разработчиками приложений.
Было бы полезным, если бы существовал простой и гибкий путь привязки интерфейса к нижележащим данным.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Система и способ приоритетного связывания допускает декларативное определение ИП, не требуя кода, отвечающего за передачу данных. Декларативное описание отображения один-ко-многим элемента ИП в один или несколько нижележащих элементов данных в описании ИП дает возможность разработки сложного ИП без необходимости разработки сложного кода. Предоставляется список связываний и порядок приоритетов. Во время исполнения указанные связывания вычисляются. Связывание с наивысшим приоритетом, вычисление которого дает действительный результат (т.е. вычисляется успешно), исполняется, управляя передачей информации между ИП и нижележащими данными. В процессе исполнения ИП отслеживаются все возможные пути связывания данных. Если успешно вычисляется связывание, которое имеет более высокий приоритет, чем существующее связывание, существующее связывание завершается и исполняется новое связывание.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Приведенное выше краткое описание, также как и нижеследующее подробное описание иллюстративных вариантов осуществления изобретения будут более понятны при изучении совместно с прилагаемыми чертежами. Для иллюстрации настоящего изобретения приведены чертежи иллюстративных вариантов исполнения изобретения; однако изобретение не ограничивается конкретными раскрытыми способами и устройствами. На чертежах:
Фиг. 1 является блок-схемой, показывающей иллюстративную компьютерную среду, в которой могут быть реализованы аспекты настоящего изобретения;
Фиг. 2 является блок-схемой иллюстративной системы для выполнения приоритетных связываний согласно одному из вариантов осуществления настоящего изобретения;
Фиг. 3а является более подробным вариантом диаграммы по Фиг. 2 согласно одному из вариантов осуществления настоящего изобретения;
Фиг. 3b является более подробным вариантом диаграммы по Фиг. 3а согласно одному из вариантов осуществления настоящего изобретения;
На Фиг. 4а-4с показан иллюстративный интерфейс пользователя согласно одному из вариантов осуществления настоящего изобретения;
Фиг. 5 является блок-схемой последовательности операций иллюстративного способа приоритетного связывания согласно одному из вариантов осуществления настоящего изобретения;
Фиг. 6 является блок-схемой последовательности операций иллюстративного способа вычисления списка объявлений приоритетного связывания согласно одному из вариантов осуществления настоящего изобретения;
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
Обзор
Для исключения необходимости при кодировании привязывать элементы компонента ИП к нижележащим данным свойство, обычно называемое “связывание данных”, позволяет проектировщикам декларативно описывать связь между нижележащими данными и ИП. При описании связи элемента или компонента ИП, такого как Текстовое Окно (Text Box), например, с элементом данных (т.е. количеством или счетчиком сотрудников), платформа может затем иметь возможность автоматического управления перемещением данных в ИП и из него. Например, связывание данных может быть вызвано выражением, таким как:
Text.TextContent=Bind(“Employees.Count”),
которое будет отображать количество сотрудников (т.е. состояние модели) в текстовое окно ИП. Двунаправленное связывание также дает возможность отражать изменения мишени в модели. Например, следующее выражение вызывает двунаправленное связывание:
CheckBox.IsChecked=Bind(“Employee.IsMarried”).
В вышеприведенном выражении изменение состояния выбора будет немедленно отражено в модели Employee в дополнение к отображению состояния модели.
Недостатком такого подхода является его жесткость. Например, один элемент ИП может быть связан с множеством элементов данных, что, например, может иметь место при отображении текста статуса или помощи в ИП. Текст статуса может показывать различные сообщения в зависимости от состояния ИП. Для демонстрации того, что выбран некий элемент списка, текст статуса может показывать информацию о выбранном элементе, если выбор не сделан, текст может показывать информацию обо всем списке в целом (например, текст может отображать количество элементов в списке).
Используя код, разработчик может описать более сложные связи между данными и ИП, чем отображение данных один-к-одному, которое выполняется при известном связывании данных, но этому подходу присущи проблемы, описанные выше, в отношении необходимости вовлечения в проектирование ИП как проектировщика, так и разработчика приложений.
Настоящее изобретение направлено на указанные и другие проблемы путем расширения отображения один-ко-многим при помощи системы и способа, которые являются более гибкими, позволяя проектировщикам описывать более сложные ИП без необходимости связывания только с одним элементом данных, но вместо этого может быть предоставлен список связываний и порядок приоритетов. В некоторых вариантах осуществления приоритет указывается при помощи порядка, в котором появляются объявления (т.е. последовательности появления объявлений в коде или разметке). В качестве альтернативы, может быть предоставлено множество объявлений связывания и указание порядка, в котором связывания должны вычисляться и/или выполняться (как, например, при помощи указателя приоритета, связанного с объявлением связывания). Когда во время исполнения создается экземпляр элемента ИП, указанные связывания вычисляются, и в случае, если существует конкретный элемент данных, идентифицированный объявлением связывания данных (т.е. объявление вычислено успешно), связывание становится активным и управляет переносом данных между ИП и нижележащими данными.
За время жизни ИП, если изменяется любое из состояний, описанное в списке элементов данных, механизм связывания данных выполняет повторное вычисление списка связываний с тем, чтобы снова найти действительное связывание с наивысшим приоритетом. Действительное связывание с наивысшим приоритетом исполняется. Предположим, что нижеследующее объявление описывает вышеприведенный пример:
StatusTextLabel.Text.Bindings.Add(“Emloyees.SelectedItem.Namе”);
StatusTextLabel.Text.Bindings.Add(“Emloyees.Count”).
Во время вычисления связывания механизм связывания данных в некоторых вариантах осуществления изобретения сначала проверяет первое связывание. Если выражение
Emloyees.SelectedItem.Name
может быть успешно вычислено, то это связывание является действительным, и механизм связывания данных делает указанные связывания активными, копируя данные в надпись текста статуса, как это необходимо. Если объявление вычислено неуспешно, либо потому что не существует данных с именем “Emloyees”, либо потому что в настоящее время в указанных данных отсутствует выбранный элемент, либо потому что SelectedItem не имеет свойства “Name”, то первое связывание не исполняется и вычисляется следующее. Если ни одно из связываний не является действительным, то ни одно связывание не исполняется и данные не копируются в ИП или из него.
Иллюстративная компьютерная среда
Фиг. 1 и нижеследующее описание предназначены для предоставления краткого общего описания подходящей компьютерной среды, в которой может быть реализовано настоящее изобретение. Хотя ниже описан компьютер общего назначения, это является только одним из примеров, и для настоящего изобретения необходим только тонкий клиент, имеющий возможность взаимодействия с сетевым сервером. Таким образом, настоящее изобретение может быть реализовано в среде сетевых служб, в которой реализовано немного или минимальное количество ресурсов клиента, например, сетевая среда, в которой клиентское устройство служит всего лишь в качестве браузера или интерфейса Всемирной Сети.
Хотя этого и не требуется, изобретение может быть реализовано при помощи интерфейса прикладных программ (API), для использования разработчиком, и/или программное обеспечение сетевого браузера, что будет описано в общем контексте исполняемых компьютером инструкций, таких как программные модули, исполняемых одним или несколькими компьютерами, такими как клиентские рабочие станции, серверы или другие устройства. В общем случае программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и им подобные, которые выполняют конкретные задачи или реализуют определенные абстрактные типы данных. Обычно функциональность программных модулей может быть скомбинирована или распределена, как это необходимо в различных вариантах осуществления. Помимо этого, специалисты в данной области техники признают, что настоящее изобретение может применяться с другими конфигурациями компьютерных систем. Другие хорошо известные компьютерные системы и/или конфигурации, которые могут подойти для использования с настоящим изобретением, включают в себя, без ограничения, персональные компьютеры (ПК), автоответчики, серверные компьютеры, носимые или портативные устройства, многопроцессорные устройства, основанные на микропроцессорах устройства, программируемую бытовую электронику, сетевые ПК, мини-компьютеры, мэйнфреймы и т.п. Изобретение также может быть реализовано в распределенных компьютерных средах, в которых задачи выполняются удаленными процессорными устройствами, соединенными по сети связи или через другую среду передачи данных. В распределенной компьютерной системе программные модули могут быть расположены на носителе данных как локального, так и удаленного компьютера, в том числе в запоминающих устройствах.
На Фиг.1 показан пример подходящей среды 100 компьютерной системы, в которой может быть реализовано настоящее изобретение. Хотя, как указывалось выше, среда 100 компьютерной системы является только одним примером подходящей компьютерной среды и не предназначена для введения каких-либо ограничений как на объем, так и на функциональность данного изобретения. Также компьютерную среду 100 не следует интерпретировать как имеющую какую-либо зависимость или требования, относящиеся к любому компоненту, приведенному в иллюстративной рабочей среде 100, или их комбинации.
Как показано на Фиг. 1, иллюстративная система для реализации настоящего изобретения включает в себя компьютерное устройство общего назначения в виде компьютера 110. Компоненты компьютера 110 могут включать в себя, без ограничения, процессорное устройство 120, системную память 130 и системную шину 121, связывающую различные компоненты системы, в том числе системную память, с процессорным устройством 120. Системная шина 121 может быть шинной структурой любого типа, включая шину памяти или контроллер памяти, периферийную шину и локальную шину с любой из многочисленных шинных архитектур. Для примера, но не с целью ограничения, такие архитектуры включают в себя шину архитектуры промышленного стандарта (ISA), шину микроканальной архитектуры (MCA), расширенную ISA (EISA) шину, локальную шину ассоциации стандартов видеоэлектроники (VESA) и шину соединений периферийных компонентов (PCI), также известную как шину Mezzanine.
Компьютер 110 обычно включает в себя ряд читаемых компьютером носителей данных. Читаемые компьютером носители данных могут быть любыми доступными носителями данных, к которым может получить доступ компьютер 110, и включают в себя как энергозависимые, так и энергонезависимые носители данных и как съемные, так и несъемные носители данных. Для примера, но не с целью ограничения, читаемые компьютером носители данных могут включать в себя компьютерные средства хранения данных и средства коммуникации. Компьютерные средства хранения данных включают в себя как энергозависимые так и энергонезависимые, и как съемные, так и несъемные средства хранения данных, реализованные с применением любого способа или технологии хранения информации, такой как читаемые компьютером инструкции, структуры данных, программные модули или другие данные. Компьютерные средства хранения данных включают в себя, без ограничения, ОЗУ, ПЗУ, EEPROM, флэш-память или другую технологию памяти, CD-ROM, универсальные цифровые диски (DVD) или другие оптические средства хранения данных, магнитные кассеты, магнитные ленты, средства хранения данных на магнитных дисках, или другие магнитные средства хранения данных, или любые другие носители данных, которые могут быть использованы для хранения необходимой информации и к которым может получить доступ компьютер 110. Средства коммуникации обычно представляют читаемые компьютером инструкции, структуры данных, программные модули или другие данные в виде модулированного сигнала данных, такого как несущая или другой транспортный механизм, и включают в себя любые средства доставки информации. Термин “модулированный сигнал данных” означает сигнал, имеющий одну или более его характеристик, установленных или изменяемых таким образом, что при этом в сигнале кодируется информация. Для примера, но не с целью ограничения, средства коммуникации включают в себя кабельные средства, такие как кабельная сеть или прямое кабельное соединение, беспроводные средства, такие как акустические, РЧ (радиочастотные), инфракрасные и другие беспроводные средства. В объем читаемых компьютером носителей данных также следует включить любую комбинацию упомянутых выше носителей.
Системная память 130 включает в себя компьютерные средства хранения данных в виде энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство (ПЗУ) 131 и оперативное запоминающее устройство (ОЗУ) 132. Базовая система 133 ввода/вывода (BIOS), содержащая основные подпрограммы, участвующие в передаче информации между элементами в компьютере 110, например, во время запуска, обычно хранятся в ПЗУ 131. ОЗУ 132 обычно содержит данные и/или программные модули, которые являются непосредственно доступными и/или выполняются в настоящее время процессорным устройством 120. Для примера, но не с целью ограничения, на Фиг. 1 показаны операционная система 134, прикладные программы 135, другие программные модули 136 и данные 137 программ.
Компьютер 110 также может включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные средства хранения данных. Исключительно в качестве примера на Фиг.1 показан привод 141 жесткого диска, считывающий или записывающий на несъемный, энергонезависимый магнитный носитель данных, привод 151 магнитного диска, считывающий или записывающий на съемный, энергонезависимый магнитный диск 152, и привод 155 оптического диска, считывающий и записывающий на съемный, энергонезависимый оптический диск 156, такой как CD-ROM или другой оптический носитель данных. Другие сменные/несменные, энергозависимые/энергонезависимые компьютерные средства хранения данных, которые могут применяться в иллюстративной рабочей среде, включают в себя, без ограничения, кассеты с магнитной лентой, карты флэш-памяти, универсальные цифровые диски, цифровую видеоленту, твердотельное ОЗУ, твердотельное ПЗУ и т.п. Привод 141 жесткого диска обычно связан с системной шиной 121 посредством интерфейса несъемной памяти, такого как интерфейс 140, и привод 151 магнитного диска, и привод 155 оптического диска обычно связаны с системной шиной 121 посредством интерфейса съемной памяти, такого как интерфейс 150.
Драйверы и ассоциированные с ними компьютерные средства хранения данных, обсуждаемые выше и иллюстрированные на Фиг. 1, обеспечивают в компьютере 110 хранение считываемых компьютером инструкций, структур данных, программных модулей и других данных. Например, на Фиг. 1 привод жесткого диска 141 изображен хранящим операционную систему 144, прикладные программы 145, другие программные модули 146 и данные 147 программ. Необходимо заметить, что эти компоненты могут быть либо теми же самыми, либо отличаться от операционной системы 134, прикладных программ 135, других программных модулей 136 и данных 137 программ. Операционная система 144, прикладные программы 145, другие программные модули 146 и данные 147 программ имеют в данном случае отличающиеся номера для иллюстрации того, что, по меньшей мере, они являются отдельными копиями. Пользователь может вводить команды и информацию в компьютер 110 через устройства ввода, такие как клавиатуру 162 и указывающее устройство 161, обычно называемое мышью, трекболом или сенсорным планшетом. Другие устройства ввода (не показано) могут включать в себя микрофон, джойстик, игровую панель, спутниковую тарелку, сканнер и т.п. Эти и другие устройства ввода часто соединены с процессорным устройством 120 через пользовательский интерфейс 160 ввода, связанный с системной шиной, но могут быть подсоединены через другой интерфейс или шинные структуры, такие как параллельный порт, игровой порт или универсальную последовательную шину (USB).
Монитор 191 или другое устройство отображения также подсоединены к системной шине 121 через интерфейс, такой как видеоинтерфейс 190. Графический интерфейс 182, такой как северный мост, также может быть подсоединен к системной шине 121. Северный мост является набором микросхем, осуществляющим связь с ЦПУ или главным процессорным устройством 120 и отвечающим за связь с ускоренным графическим портом (AGP). Одно или несколько графических процессорных устройств (ГПУ) 184 могут обмениваться данными с графическим интерфейсом 182. В этом отношении ГПУ 184 в общем случае включает в себя однокристальное запоминающее устройство, такое как регистровая память и набор ГПУ 184, обменивающихся данными с видеопамятью 186. Набор ГПУ 184, однако, представляет собой всего лишь один пример сопроцессора, и, таким образом, компьютер 110 может включать в себя разнообразные сопроцессорные устройства. Монитор 191 или устройство отображения другого типа также подсоединяется к системной шине 121 через интерфейс, такой как видеоинтерфейс 190, который, в свою очередь обменивается данными с видеопамятью 186. Дополнительно к монитору 191 компьютеры также могут включать в себя другие периферийные устройства вывода данных, такие как громкоговорители 197 и принтер 196, которые могут быть подсоединены через периферийный интерфейс 195 вывода.
Компьютер 110 может работать в сетевой среде, используя логические соединения с одним или более удаленными компьютерами, таким как удаленный компьютер 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым ПК, одноранговым узлом сети или другим обычным узлом сети, и обычно включает в себя многие или все элементы, описанные выше в связи с компьютером 110, несмотря на то, что на Фиг. 1 изображено только запоминающее устройство 181. Изображенные на Фиг.1 логические соединения включают в себя локальную сеть (ЛС) 171 и глобальную сеть (ГС) 173, но также могут включать в себя другие сети. Такие типы сетевой среды являются обычными в офисах, промышленных компьютерных сетях, интрасетях и Интернете.
При использовании в локальной сетевой среде компьютер 110 подсоединяется к ЛС 171 через сетевой интерфейс или адаптер 170. При использовании в глобальной сетевой среде компьютер 110 обычно включает в себя модем 172 или другие средства для установления соединения через ГС 173, такую как Интернет. Модем 172, который может быть внутренним или внешним, может быть подсоединен к системной шине 121 через пользовательский интерфейс 160 ввода или другим подходящим способом. В сетевой среде программные модули, описанные в связи с компьютером 110, или часть их могут храниться в удаленном устройстве хранения данных. Для примера, но не с целью ограничения, на Фиг.1 показаны удаленные прикладные программы 185, размещенные в запоминающем устройстве 181. Очевидно, что показанные сетевые соединения являются иллюстративными и могут быть использованы другие средства организации соединения между компьютерами.
Специалисты в данной области техники признают, что компьютер 110 или любое другое клиентское устройство может быть развернуто как часть компьютерной сети. В этой связи настоящее изобретение относится к любой компьютерной системе, имеющей любое число блоков памяти или хранения данных и любое количество приложений и процессов, находящихся в любом количестве блоков или томов хранения данных. Настоящее изобретение применимо в среде с серверными компьютерами и клиентскими компьютерами, развернутыми в сетевой среде, имеющими удаленные или локальные хранилища данных. Настоящее изобретение также применимо к изолированным компьютерным устройствам, выполненным с возможностью исполнения или интерпретации языков программирования и связанной с этим функциональностью.
Система и способ для выполнения приоритетного связывания данных
На Фиг.2 показана иллюстративная система для выполнения приоритетного связывания согласно некоторым вариантам осуществления настоящего изобретения. Такая система может частично или целиком размещаться на одном или нескольких компьютерах, таких как иллюстративный компьютер 202 на Фиг. 2. Компьютер 201 может содержать компьютер, такой как изображен на Фиг. 1. Система для выполнения приоритетного связывания может содержать один или несколько из следующих элементов: компонент 208 связывания данных, источник 206 и/или мишень 203.
Источник 206 может включать в себя один или несколько объектов-источников, представленных объектами-источниками 210а, 210b и т.п. Объекты-источники 210а, 210b и т.п. могут быть связаны с одним или несколькими дочерними объектами-источниками, представленных на Фиг.2 объектом-источником 212а и т.п. В некоторых вариантах осуществления настоящего изобретения источник 206 может представлять модель. Модель в некоторых вариантах осуществления настоящего изобретения представляет собой логику нижележащего приложения, представляющую множество нижележащих состояний. Например, рассмотрим приложение, которое дает возможность пользователю просматривать файловую систему. Модель для приложения в этом случае может представлять собой файловую систему: набор папок и файлов в папках выбранной директории. С одной моделью могут быть связаны несколько вариантов просмотра. Варианты просмотра, связанные с моделью, могут быть зависимы от модели. В некоторых вариантах осуществления настоящего изобретения, однако, модель не является зависимой от варианта просмотра или просмотров. Модель может посылать извещение об изменении, если свойство одного из ее объектов изменилось или если произошло изменение состояния. Например, если в папку добавлен новый файл, может быть послано извещение об изменении.
Мишень 203 может включать в себя один или несколько объектов-мишеней, представленных на Фиг. 2 объектами-мишенями 204а, 204b и т.д. Объекты-мишени 204а, 204b и т.д. могут быть связаны с одним или несколькими дочерними объектами-мишенями (не показаны). В некоторых вариантах осуществления настоящего изобретения цель может представлять собой вариант просмотра или интерфейс пользователя. Один или несколько вариантов просмотра могут быть связаны с моделью и отображать состояние нижележащей модели. В некоторых вариантах осуществления настоящего изобретения вариант просмотра или интерфейс пользователя определены при помощи языка разметки, такого как HTML (язык разметки гипертекста), XML (расширяемый язык разметки), XAML (расширяемый язык разметки приложений) или другого подходящего языка разметки, в котором определяется вид интерфейса пользователя и определяются элементы и компоненты интерфейса пользователя. Объект-мишень может представлять собой элемент или управляющий компонент интерфейса пользователя, такой как, без ограничения, элемент меню, кнопка, текстовый управляющий компонент или окно списка. В примере файловой системы, приведенном выше, иллюстративный интерфейс пользователя может отображать список файлов в выбранной папке.
Для связывания цели с источником (например, интерфейса пользователя с нижележащей моделью) в некоторых вариантах осуществления настоящего изобретения вместо явного определения связывания при помощи кода, который поддерживает взаимодействие между интерфейсом пользователя и нижележащей моделью, используя обработчик событий, объект, представляющий компонент интерфейса пользователя, связывают с нижележащей моделью при помощи определения источника данных и пути связывания, такого как, без ограничения, путь запроса. Если любая часть запроса изменяется, объект посылает извещение об изменении, и механизм приоритетного связывания данных обнаруживает извещение об изменении и обновляет соответствующий объект (объекты). Очевидно, что субъектом запроса являются активные объекты в исполняемой программе. В некоторых вариантах осуществления настоящего изобретения упомянутый источник данных может представлять собой источник данных любого типа, такой как, без ограничения, объект, определенный URI (универсальный идентификатор ресурсов), база данных, доступ к которой осуществляют через запрос к базе данных, программная модель и т.п. Путь запроса может быть определен как объект пути, как выражение XML Xpath и т.п.
В некоторых вариантах осуществления настоящего изобретения компонент 208 связывания данных представляет собой механизм приоритетного связывания данных, который предоставляет возможность динамического связывания любого из нескольких объектов-источников (например, иллюстративных объектов-источников 210а, 210b и т.п., 212а и т.п.) с объектом-мишенью (например, иллюстративными объектами-мишенями 204а, 204b и т.п.). Механизм 208 приоритетного связывания данных может прослушивать извещения об изменениях от объектов (таких как объекты 204а, 204b и т.п., 210а, 210b и т.п., 212а и т.п.) таким образом, чтобы изменение объекта-источника автоматически отражалось связанным объектом-мишенью, и наоборот. Объект-мишень может быть ассоциирован с источником данных, который может идентифицировать модель источника, с которой связан объект-мишень. Механизм 208 приоритетного связывания данных может поддерживать свойства-пути, что дает возможность связывать определенные пути мишеней с определенными путями источников. В некоторых вариантах осуществления настоящего изобретения связывание объекта-мишени с объектом-источником может быть выполнено декларативно в языках разметки, таких как HTML (язык разметки гипертекста), XML (расширяемый язык разметки), XAML (расширяемый язык разметки приложений) или другого подходящего языка разметки. Механизм 208 связывания данных может выполнять поиск объекта-источника для источника данных объекта-мишени и выполнять соответствующее обновление, и наоборот.
В некоторых вариантах осуществления настоящего изобретения генерируют граф объектно-ориентированных объектов, в котором один, некоторые или все объекты указывают на другие объекты, формируя граф, причем каждая стрелка в графе, указывающая из одного объекта на другой, представляет свойство. Иллюстративный граф объектно-ориентированных объектов частично показан на Фиг. 3а. На Фиг. 3а и 3b представлен пример файловой системы (файлы и папки). Специалисты в данной области техники признают, что рассматриваемое изобретение не является ограниченным файлами и папками или моделью приложения обозревателя файловой системы и что также может рассматриваться любой подходящий субъект, реализованный с возможностью представления в виде источника данных и иерархии свойств, такой как, без ограничения, объекты в объектно-ориентированном языке программирования. На Фиг.3а, например, объект 324 может представлять приложение обозревателя файловой системы (модель). И объекты 323 и 312 могут представлять объекты-файлы или объекты-папки в файловой системе. Объекты 322 и 316 могут представлять соответствующие свойства-имена объектов-папок и объектов-файлов 323 и 312 соответственно. В некоторых вариантах осуществления настоящего изобретения механизм 208 приоритетного связывания данных допускает описание источника данных (такого как объект 324) и свойства-пути (такого как “CurrentFolder.Name”), представляющего путь от источника данных (объект 324) к объекту, идентифицируемому данными пути (объект 323 или 322). Таким образом, в данном примере механизм 208 приоритетного связывания данных может выполнить запрос в графе объектов для определения, какой объект представлен путем “CurrentFolder.Name” (в данном случае объект 322), определить содержимое объекта 322 и обновить описанный объект-мишень (например, текстовое поле 330 в ИП 328).
На Фиг. 3а механизм 320 приоритетного связывания данных может связать свойство 316 объекта-источника 312 (часть модели 324) со свойством объекта-мишени 330 (например, текстовым полем - компонентом ИП). Механизм 320 приоритетного связывания данных может прослушивать извещения об изменениях свойств (например, при изменении свойства-имени 316 объекта 312 выбранного элемента модели 324, объект 312 выбранного элемента может послать извещение об изменении). Механизм 320 приоритетного связывания данных может прослушивать извещения об изменении и при обнаружении извещения об изменении синхронизировать источник и мишень (элемент ИП, текстовое поле 330) автоматически.
На Фиг.3b показана иллюстративная система приоритетного связывания данных согласно некоторым вариантам осуществления настоящего изобретения. На Фиг. 3b модель 324 содержит один или несколько объектов, представленных объектами 323 (текущая папка) и 312 (выбранный элемент), и открывает одно или несколько свойств (представленных именем 322) для текущей папки 323 и одно или несколько свойств (представленных именем 316) для выбранного элемента 312. ИП 328 включает в себя один или несколько компонентов ИП, представленных на Фиг 3b текстовым полем 330. Описание ИП 328 включает в себя одно или несколько объявлений связывания, представленных на Фиг. 3b связыванием 1 305, связыванием 2 306… связыванием n 308 и резервным значением 310 (необязательно). Компонент текстового поля (отображаемый в ИП) может быть связан либо с именем текущей папки (объект 322), либо с именем выбранного элемента (объект 316). Механизм 320 связывания данных в некоторых вариантах осуществления настоящего изобретения определяет, которое из связываний следует исполнять и, тем самым, какое содержимое будет отображаться в текстовом поле 330. Для вычисления могут быть описаны одно или несколько объявлений связывания. Порядок, в котором объявления связывания представлены, может определять приоритет, то есть первое представленное объявление может иметь наивысший приоритет и второе объявление может иметь следующий приоритет и т.д., хотя очевидно, что может использоваться любое подходящее средство определения приоритета. Например, приоритет может указываться ассоциированным тегом, порядком появления в разметке (приоритет соответствует порядку сверху вниз или снизу вверх), алфавитным порядком или любым другим подходящим способом. На Фиг.3b множество объявлений связывания включает в себя связывание 1305 и связывание 2 306, хотя может быть описано любое количество связываний. В некоторых вариантах осуществления настоящего изобретения порядок вычисления объявлений связывания совпадает с порядком приоритетов, хотя очевидно, что объявления связывания могут вычисляться в любом порядке. В некоторых вариантах осуществления настоящего изобретения механизм 320 связывания данных сначала пытается вычислить связывание 1 305. Предположим, что связывание 1 305 ассоциировано с именем 322 текущей папки 323. Если связывание 1 305 вычисляют успешно, имя текущей папки будет отображено в текстовом поле 330. Предположим, что связывание 2 306 ассоциировано с именем 316 выбранного элемента 312. Если связывание 1 305 вычисляют неуспешно, механизм 320 связывания данных пытается вычислить связывание 2 306. Если связывание 2 306 вычисляют успешно, имя 316 выбранного элемента 312 будет отображено в текстовом поле 330. Дополнительно, в некоторых вариантах осуществления настоящего изобретения может быть определено значение 310 возврата. В этом случае, если и связывание 1 305 и связывание 2 306 вычислено неуспешно, резервное значение 310 может быть отображено в текстовом поле 330. Таким образом, механизм 320 связывания данных прослушивает события изменений, определяет, которое из множества связываний следует вычислить (т.е. которое из них является активным связыванием), и обновляет мишень (например, компонент ИП) в соответствии со связыванием, активным в настоящее время.
В некоторых вариантах осуществления настоящего изобретения механизм связывания данных непрерывно отслеживает все объекты на предмет извещений об изменениях. Если механизм связывания данных получает извещение об изменении от связывания с более высоким приоритетом, это связывание вычисляется, и если связывание вычислено успешно, механизм связывания данных исполняет связывание с более высоким приоритетом. Помимо этого, если текущее связывание становится недействительным (например, из-за отсутствия выбранных элементов выбранный элемент становится пустым), все выражение более не вычисляется успешно и механизм связывания данных вычисляет множество выражений связывания снова. Выражение с наивысшим приоритетом, которое вычисляется корректно, исполняется, и отображаемые данные обновляются соответствующим образом.
На Фиг.4а-4с показана последовательность интерфейсов, демонстрирующая возможные сценарии в соответствии с вышесказанным. На Фиг.4а показан иллюстративный ИП 400, в котором моделью является файловая система (файлы и папки). Панель 402 Details отображает состояние текущего выбора. В некоторых вариантах осуществления настоящего изобретения то, что отображается на панели 402 Details, является декларативно описанным через набор объявлений приоритетного связывания в определении ИП. В некоторых вариантах осуществления настоящего изобретения ИП определяют через язык разметки такой, как HTML (язык разметки гипертекста), XML (расширяемый язык разметки), XAML (расширяемый язык разметки приложений) или другой подходящий язык разметки. Содержимое текста панели 402 Details (соответствующее текстовому полю-мишени 330 на Фиг. 3а и 3b) может быть привязано к текущему выбору (соответствующему выбранному элементу 312 на Фиг. 3а и 3b) и текущей папке (текущая папка 323) посредством списка приоритетных связываний, описанных в определении ИП. Список приоритетных связываний может указывать, что текстовый управляющий элемент должен быть связан с именем или единичным выбором (наивысший приоритет), и если выбор отсутствует, текст должен быть связан с именем текущей папки. Ниже приведено иллюстративное описание выше описанного, написанное в XAML:
Таким образом, если выбор отсутствует, панель 402 Details может отображать имя текущей папки 404 (“Internet Explorer”).
Описание элемента (“File Folder” 406) и время 408 модификации, также могут быть отображены при помощи описания подобной секции разметки. Например, текстовый управляющий элемент может быть связан с описанием единичного выбора, если выбор был сделан. Если единичный выбор отсутствует, текст может быть связан с количеством выбранных элементов. Если отсутствует любой выбор, текст может быть связан с описанием текущей папки. Ниже приведено иллюстративное описание выше описанного, написанное в XAML:
На Фиг.4а, поскольку отсутствует выбранный элемент, не вычисляется ни одно из первых двух объявлений связывания. Однако третье объявление связывания вычисляется успешно таким образом, что описание текущей папки (“File Folder”) вычисляется таким образом, что в текстовом поле 406 отображается “File Folder”. На Фиг. 4b показан иллюстративный ИП 400 после того, как выполнен выбор одного элемента. На Фиг. 4b выбран элемент “IEXPLORE.EXE” 412. Элемент “IEXPLORE.EXE” 412 соответствует выбранному элементу 312 на Фиг. 3а и 3b.
Панель 402 Details теперь отображает имя выбранного элемента (“IEXPLORE.EXE” 414), описание (“File” 416). Текстовый управляющий элемент также может быть связан с размером файла в единичном выборе. Если единичный выбор отсутствует, текст может быть связан с общим размером файлов множества выбранных элементов. Если отсутствует выбор любого вида, текст может принимать значение по умолчанию для этого типа управляющего элемента - пустая строка. Ниже приведено иллюстративное описание выше описанного, написанное в XAML:
Здесь, на Фиг. 4b, поскольку был выбран элемент, отображается размер 420 файла. Аналогичный блок разметки может быть описан для отображения времени 418 модификации.
На Фиг.4с показан иллюстративный ИП 400 по Фиг. 4а после выбора множества элементов. На Фиг.4с выбраны элементы “HMMAPI.DLL” 422 и “IEXPLORE.EXE” 412. В этом случае панель 402 Details отображает имя папки (“Internet Explorer”) 404, а не имена выбранных элементов, причем описание отображает количество выбранных элементов 424 и общий размер 426 файлов. Время модификации не отображается.
В некоторых вариантах осуществления настоящего изобретения может быть выбрано несколько элементов и отображаться как единичное множество элементов, включающее в себя все выбранные элементы (возможно имеющее тип “Collection”, а не тип “File” и т.п.). Если в множество элементов добавляют или удаляют что-либо, то посылается извещение об изменении и механизм связывания выполняет обновления.
В некоторых вариантах осуществления настоящего изобретения в случае отсутствия действительных связываний используется значение по умолчанию. Символьное значение может быть описано в определении ИП. Символьное может быть применено к мишени, если поиск в списке приоритетных связываний не установил объявление связывания, которое вычисляется успешно. Например, в случае, если ни одно из объявлений связываний для поля описания не может быть вычислено успешно, текстовый управляющий элемент может использовать определенное резервное значение (“No description available”). Ниже приведено иллюстративное описание выше описанного, написанное в XAML:
В некоторых вариантах осуществления настоящего изобретения механизм приоритетного связывания вычисляет необязательное выражение для каждого объявления связывания для обеспечения дополнительной гибкости. Например, может быть определено выражение, которое обеспечивает альтернативный подход в примере поля имени в файловой системе панели ИП Details по Фиг. 4а-4с. Предположим, что поле должно быть связано с именем выбранного элемента, если в выборе присутствует только один элемент, или с именем текущей папки в противном случае. Такой результат может обеспечить ниже приведенная группа выражений:
В этом случае предполагается, что выбрано два элемента. Хотя SelectedItems содержат нулевой элемент и этот элемент может иметь свойство Name, выражение объявления 1 связывания будет неверным, поскольку SelectedItems.Count не равен 1. Следовательно, объявление 1 связывания не будет вычислено успешно, и вычисляется объявление 2 связывания:
<Bind Path=”Model.CurrentFolder.Name”/>
как описано выше в связи с объявлением 1 связывания.
На Фиг.5 показана иллюстративная блок-схема последовательности операций для способа описания и исполнения приоритетных связываний согласно одному из вариантов осуществления настоящего изобретения. Один или несколько этапов данного способа могут быть необязательными. На Фиг. 5 принимают описание источника на этапе 502. Это может подразумевать кодирование и/или создание экземпляра модели или приложения. Например, разработчик может реализовать модель, предоставляющую одно или несколько свойств для связывания. На этапе 504 принимают описание мишени. Это может подразумевать описание мишени в виде кода или разметки, такой как интерфейс пользователя и/или экземпляр интерфейса пользователя. Например, проектировщик может создать интерфейс пользователя, используя язык разметки, или разработчик может создать интерфейс пользователя в виде кода. На этапе 506 может быть принято множество из одного или нескольких объявлений связывания, указывающее на порядок или приоритет исполнения. В некоторых вариантах осуществления настоящего изобретения порядок приоритетов указывается порядком объявлений таким образом, что первое объявление связывания в списке объявлений является объявлением с наивысшим приоритетом, второе объявление связывания в списке объявлений является объявлением со следующим приоритетом и т.д. В качестве альтернативы приоритет исполнения может быть указан маркером или индикатором, ассоциированным с объявлением связывания, или при помощи другого подходящего средства. Например, приоритет исполнения может быть указан последовательностью объявлений связывания, как они появляются сверху вниз или снизу вверх. Также возможны другие подходящие средства указания приоритета. В некоторых вариантах осуществления настоящего изобретения описание объявлений связывания может быть внедрено в определение мишени (этап 504). Это может подразумевать кодирование передачи данных между мишенью и источником (например, разработчиком) или описание множества из одного или нескольких объявлений связывания в разметке (например, проектировщиком), как описано выше.
На этапе 508 может быть сгенерирована и/или создан экземпляр приложения содержащего модель и интерфейс пользователя. Механизм связывания может прослушивать пути модели и исполнять множество объявлений связывания данных в порядке приоритетов, т.е., исполняется объявление с наивысшим приоритетом, вычисленное успешно, синхронизуя тем самым мишень и модель, как описано выше. В некоторых вариантах осуществления настоящего изобретения объявления связывания вычисляются в порядке приоритета исполнения, хотя объявления связывания могут вычисляться в случайной последовательности, от точки объявления, исполняемого в настоящее время, в указанном порядке вычисления или в другом подходящем порядке.
Фиг.6 является блок схемой последовательности операций, иллюстрирующей вычисление множества объявлений связывания, как описано выше. На этапе 602 вычисляют объявление связывания. В случае если вычисление успешно, и выражение является истинным (этап 604, необязательно), значение объекта применяют на этапе 606. Если объявление связывания вычисляют неуспешно, то вычисляют следующее (если оно существует) объявление связывания (этап 608). Если следующее объявление связывания вычисляют успешно, и выражение является истинным (этап 610, необязательно), то значение, указанное объявлением связывания, применяют на этапе 612. Если следующее объявление связывания вычисляют неуспешно, то вычисляют следующее (если оно существует) объявление связывания. Эти этапы повторяются до тех пор, пока не будут вычислены все объявления связывания в множестве. Объявления связывания могут вычисляться в порядке приоритета или в любом другом порядке, как описывалось выше. Исполняют объявление связывания с наивысшим приоритетом, которое вычисляют успешно (и для которого ассоциированное выражение, если оно присутствует, является истинным). Если все объявления связывания в множестве объявлений вычислены и ни одно из них не вычислено успешно, и определено резервное значение (этап 614, необязательно) резервное значение может быть использовано для обновления мишени. Если не предусмотрено резервное объявление, значение мишени может быть оставлено не установленным, значение может быть очищено, или значение может быть установлено в значении по умолчанию.
Вновь обращаясь к Фиг. 3b и 4b, предположим, что объявление 1 связывания представляет собой:
<Bind Path= “Model.SelectedItem.Name”/>
На этапе 602 может быть вычислен путь связывания “Model.SelectedItem.Name”. Может быть выполнен запрос к графу объектов и определено ниже следующее:
В источнике данных, модели, существует ли свойство SelectedItem?
Если это так, не является ли значение объекта пустым?
Если это так, имеет ли объект свойство “Name”?
Если это так, определено ли выражение?
Если это так, вычисляют выражение. Выражение вычислено верно?
Если это так, применяют связывание.
Если это не так, вычисление связывания не успешно.
В выше приведенном примере свойство SelectedItem модели существует, и имеет свойство Name, (IEXPLORE.EXE), выражение отсутствует, и таким образом применяют объявление 1 связывания и IEXPLORE.EXE возвращают для отображения в текстовом поле ИП. Очевидно, что этот набор этапов может быть повторен для каждого вычисленного объявления связывания до тех пор, пока не будет найдено объявление связывания с наивысшим приоритетом, вычисленное успешно.
Механизм связывания может отслеживать извещения об изменениях. Например, если извещение об изменении было послано из объекта 316, объявления связывания будут повторно вычислены для определения объявления с наивысшим приоритетом.
Различные способы, изложенные в настоящем описании, могут быть реализованы в виде аппаратных средств или программных средств либо в случае необходимости в виде их комбинации. Таким образом, способы и устройства настоящего изобретения, или определенные его аспекты или части, могут быть выполнены в виде программных кодов (т.е. инструкций), реализованных в виде материальных носителей, таких как флоппи-диски, CD-ROM, жесткие диски, или любого другого машиночитаемого носителя данных, причем, если программный код загружен и исполнен машиной, такой как компьютер, машина становится устройством, реализующим настоящее изобретение. В случае исполнения программных кодов программируемыми компьютерами, компьютерное устройство в общем случае включает в себя процессор, носитель данных, читаемый процессором (в том числе энергозависимая и энергонезависимая память и/или элементы хранения данных), по меньшей мере, одно устройство ввода и, по меньшей мере, одно устройство вывода. Одна или несколько программ, которые могут использовать создание и/или осуществление специфических аспектов программных моделей настоящего изобретения, например, используя API обработки данных или ему подобный, предпочтительно реализуются на языке высокого уровня, процедурном или объектно-ориентированном, для связи с компьютерной системой. Однако программа (программы) могут быть реализованы на ассемблере или машинном языке в случае необходимости. В любом случае язык может представлять собой компилируемый или интерпретируемый язык в комбинации с реализациями в виде аппаратных средств.
Хотя настоящее изобретение было описано в связи с предпочтительными вариантами осуществления на различных фигурах, очевидно, что могут быть использованы другие подобные варианты осуществления либо могут быть сделаны модификации или добавления к описанным вариантам осуществления для выполнения такой же функции настоящего изобретения без отступления от него. Таким образом, настоящее изобретение не следует ограничивать любым единичным вариантом осуществления, но, напротив, его следует рассматривать в объеме прилагаемой формулы изобретения.