Классы структур автоматизации пользовательского интерфейса и интерфейсы
Иллюстрации
Показать всеИзобретение относится к способу и системе для обеспечения клиента информацией пользовательского интерфейса. Техническим результатом является повышение эффективности доступа ко всем формам и компонентам пользовательского интерфейса. Способ и система реализуют набор интерфейсов прикладных программ для обеспечения информации пользовательского интерфейса клиенту через систему обеспечения доступности, которая содержит механизм для переноса информации пользовательского интерфейса от стороны провайдера к клиентской стороне и логическое дерево для селективного обнаружения информации пользовательского интерфейса. Система интерфейса прикладной программы содержит интерфейсы прикладной программы клиентской стороны для обеспечения помощи клиенту в получении информации пользовательского интерфейса. Интерфейсы прикладной программы клиентской стороны содержат: класс автоматизации, класс логического элемента, класс исходного элемента, классы шаблонов управления и класс ввода. Интерфейсы прикладной программы стороны провайдера содержат: класс автоматизации провайдера, интерфейс автоматизации провайдера, интерфейс исходного элемента и интерфейсы шаблонов управления провайдера. 6 н. и 57 з.п. ф-лы, 14 ил., 26 табл.
Реферат
Область техники
Изобретение относится к области технологии поддержки, автоматизированного тестирования и к другим продуктам, которые собирают пользовательскую информацию, и к взаимодействию этих продуктов с информацией пользовательского интерфейса.
Предшествующий уровень техники
Продукты технологии поддержки существуют для оказания помощи пользователям компьютеров, которым требуется поддержка в сферах обучения, коммуникаций и доступа к информации, содержащейся в компьютерном программном обеспечении и представляемой посредством этого программного обеспечения. Аналогичным образом, существующие продукты автоматизированного тестирования и управляющие обслуживающие программы пользовательских интерфейсов также нуждаются в информации о пользовательском интерфейсе. В настоящее время эти продукты не имеют существенного источника информации о пользовательском интерфейсе (ПИ). От этих трех типов продуктов (клиентов) требуется, чтобы они откуда-либо имели необходимую поддержку для обеспечения выполнения ими следующих функций: (1) сбор информации о пользовательском интерфейсе приложения; (2) программным образом обнаружение и опрос элементов ПИ независимо от технологии, используемой для построения ПИ; (3) генерация ввода посредством клавиатуры и указателя (курсора) и (4) понимание того, какой тип поведения или функциональности доступен в текущий момент. В настоящее время отсутствует единая технология, которая обеспечивала бы продукту технологии поддержки (ТП) всех этих возможностей. Кроме того, современные продукты ТП не всегда совместимы со всеми технологиями графических операционных систем (ОС) и не имеют возможности отфильтровывать и координировать избыточные или вводящие в заблуждение уведомления централизованным способом. Дополнительным недостатком является то, что современные инфраструктуры автоматизации и обеспечения доступности не являются расширяемыми и поэтому требуют изменений на уровне ОС для добавления новых функциональных возможностей.
Кроме того, в настоящее время для того чтобы собрать информацию о пользовательском интерфейсе приложения, продукт ТП должен написать специфический для приложения программный код для получения информации для пользователя. Процесс написания этого специфического для приложения программного кода требует времени и постоянной поддержки. Современная инфраструктура автоматизации также не способна фильтровать и координировать избыточные или вводящие в заблуждение уведомления о событиях согласованным способом. Таким образом, необходимы потребители событий для независимой фильтрации информации.
Современные системы позволяют продуктам ТП запрашивать уведомления о событиях на трех уровнях степени детализации: (1) для каждого элемента на рабочем столе; (2) в конкретном процессе (например, открытие текстового процессора); (3) для подпроцесса в конкретном процессе (множество объектов, выполняющих задачу в процессе). В современных условиях, когда клиент получает событие, он получает описатель (дескриптор, абстрактный идентификатор) окна для конкретного окна, в котором возникло событие, и другие биты информации для указания того, где возникло событие. Клиент может сделать перекрестный вызов из процесса для извлечения объекта ПИ, связанного с событием. При наличии этого объекта клиент может сделать дополнительные перекрестные вызовы из процесса для запроса информации об этом объекте. Если клиенту нужно пять частей информации, то клиент должен будет сделать пять перекрестных вызовов из процесса. Перекрестные вызовы из процесса чрезвычайно медленные, результатом чего являются высокие затраты на сбор информации ПИ с использованием доступной в настоящее время инфраструктуры. Этот тип известного сценария показан на фиг.8. Серверное приложение 12 запускает событие 6. Ядро 14 определяет, какие клиенты должны быть уведомлены и посылает уведомление 18 о событии к заинтересованному клиенту 10. Клиент 10 направляет запрос 16 из серверного приложения 12 через границу 2 процесса об объекте, относящемся к уведомлению 18 о событии. Серверное приложение 12 возвращает объект 20, и затем клиент может начать посылать запросы 16 на получение информации об управлении ПИ, который запустил событие. Серверное приложение 12 возвращает запрошенную информацию 20 через границу 2 процесса клиенту 10.
Другой имеющийся в настоящее время вариант позволяет загружать клиентский код как динамически подсоединяемую библиотеку (DLL) в рамках процесса. Этот вариант имеет ряд недостатков. Во-первых, он требует координации из системы для загрузки клиентского кода в процесс. Во-вторых, он обуславливает возникновение вопросов защиты, поскольку как только клиентский код загружен в процесс приложения, трудно ограничить собираемую им информацию. В-третьих, чтобы быть эффективным методом для клиента, он должен загружаться в каждый процесс в системе. Оптимальным образом, только доверительные клиенты должны загружаться в процесс другого приложения.
Кроме того, требуется система, которая дает клиенту возможность определять, какие уведомления о событиях ему желательно получать. В известных системах клиенту может потребоваться сделать несколько перекрестных вызовов из процесса и затем проанализировать информацию, чтобы определить, заинтересован ли он в данном событии. Необходим механизм, который может осуществить эту фильтрацию событий более эффективным способом и который может легко обновляться для поддержки событий новой системы или приложения. Кроме того, необходима система, которая использует только доверительные компоненты, чтобы учесть факторы, связанные с обеспечением защиты.
В настоящее время при поиске информации о пользовательском интерфейсе требуется продукт ТП для доступа к деревьям (древовидным схемам), присущим структуре конкретного ПИ. Соответственно, требуется множество деревьев для передачи информации о пользовательском интерфейсе для множества структур ПИ. Эти различные деревья могут содержать информацию, которая не представляет интереса или не видима для пользователя, такую как скрытые контейнерные объекты, которые управляют видимыми средствами управления ПИ, которыми манипулирует конечный пользователь. Поэтому существует потребность в едином объединенном дереве, имеющем только те узлы, которые представляют интерес для пользователя.
Требуется решение, которое учитывает потребности продуктов ТП, инструментальных средств автоматизированного тестирования и управляющих обслуживающих программ. Решение должно быть применимым для всех технологий графических ОС и должно обеспечить возможность доступа ко всем формам ПИ и компонентов ПИ.
Сущность изобретения
Настоящее изобретение направлено на способ и компьютерное приложение для обеспечения клиента информацией о пользовательском интерфейсе. В одном аспекте изобретения обеспечивается система инструментальных средств для использования в системе обеспечения доступности, которая обеспечивает клиента информацией о пользовательском интерфейсе. Система обеспечения доступности включает в себя клиентскую сторону и сторону провайдера. Система инструментальных средств включает в себя инструментальные средства автоматизации клиентской стороны, включающие в себя класс автоматизации клиента для поиска информации о пользовательском интерфейсе. Класс автоматизации клиента включает в себя инструментальные средства регистрации события и инструментальные средства обнаружения логического элемента. Набор инструментальных средств также включает в себя инструментальные средства автоматизации стороны провайдера для обеспечения клиента информацией о пользовательском интерфейсе. Инструментальные средства автоматизации стороны провайдера включают в себя класс автоматизации провайдера, имеющий инструментальные средства для обеспечения клиента информацией о событиях.
В другом аспекте набор инструментальных средств клиентской стороны включает в себя механизм автоматизации клиентской стороны, включающий в себя класс автоматизации клиента для поиска информации о событии пользовательского интерфейса со стороны провайдера и механизм логических элементов клиентской стороны, включающий в себя класс логических элементов для представления элемента пользовательского интерфейса в логическом дереве.
Еще в одном аспекте инструментальные средства провайдера включают в себя класс автоматизации стороны провайдера для обеспечения уведомлений о событиях клиенту и интерфейс автоматизации стороны провайдера для представления свойств пользовательского интерфейса. Инструментальные средства провайдера дополнительно включают в себя интерфейс исходных (необработанных) элементов для возврата информации, относящейся к конкретному релятивному элементу и контекстному интерфейсу исходных элементов для управления событиями и функциональными средствами, не относящимися к конкретному элементу.
Согласно дополнительному аспекту изобретение относится к системе интерфейса прикладной программы для обеспечения информации о пользовательском интерфейсе клиенту через систему обеспечения доступности. Система обеспечения доступности включает в себя механизм для переноса информации о пользовательском интерфейсе от стороны провайдера к клиентской стороне и логическое дерево для селективного воспроизведения информации о пользовательском интерфейсе. Система интерфейса прикладной программы включает в себя интерфейсы прикладных программ клиентской стороны для помощи клиенту в получении информации о пользовательском интерфейсе. Интерфейсы прикладных программ клиентской стороны включают в себя класс автоматизации, класс логических элементов, класс исходных элементов, класс шаблонов управления и класс вводов данных. Интерфейсы прикладных программ стороны провайдера включают в себя класс автоматизации провайдера, интерфейс автоматизации провайдера, интерфейс исходных элементов и интерфейсы шаблонов управления провайдера.
В дополнительном аспекте изобретение относится к реализованному с помощью компьютера способу обеспечения информации о пользовательском интерфейсе клиенту через систему обеспечения доступности. Способ включает в себя обеспечение интерфейсов прикладных программ клиентской стороны для помощи клиенту в получении информации о пользовательском интерфейсе, причем интерфейсы прикладных программ клиентской стороны включают в себя класс автоматизации, класс логических элементов, класс исходных элементов, класс шаблонов управления и класс вводов данных. Способ также включает в себя обеспечение интерфейсов прикладных программ стороны провайдера для реагирования на клиентские запросы, причем интерфейсы прикладных программ стороны провайдера включают в себя класс автоматизации провайдера, интерфейс автоматизации провайдера, интерфейс исходных элементов и интерфейсы шаблонов управления провайдера.
Еще в одном аспекте изобретение относится к реализованному с помощью компьютера способу обеспечения информации о пользовательском интерфейсе клиенту через систему обеспечения доступности. Способ включает в себя запрос информации о пользовательском интерфейсе с использованием выбранного обработчика событий из класса автоматизации клиента и включает в себя способ для провайдера, используемый для обеспечения уведомлений о событиях пользовательского интерфейса с использованием соответствующего способа установления флага события.
Дополнительные преимущества и новые признаки изобретения изложены в последующем описании и будут понятны для специалистов в данной области техники частично из нижеследующего описания или могут быть освоены путем практической реализации изобретения.
Краткое описание чертежей
Настоящее изобретение подробно описано ниже со ссылками на иллюстрирующие чертежи, на которых представлено следующее:
Фиг.1 - блок-схема вычислительной системной среды, подходящей для использования настоящего изобретения;
Фиг.2 - блок-схема взаимодействия между системой обеспечения доступности, клиентской средой и серверной средой;
Фиг.3 - блок-схема, иллюстрирующая компоненты ядра системы обеспечения доступности;
Фиг.4(А)-4(D)- иллюстрации создания логического дерева из собственных элементов;
Фиг.5 - блок-схема, иллюстрирующая последовательность процедур построения логического дерева;
Фиг.6 - диалоговое окно и его компоненты, образующие логические элементы;
Фиг.7 - блок-схема, иллюстрирующая процедуры, используемые при активизации механизма событий согласно изобретению;
Фиг.8 - блок-схема, иллюстрирующая интерфейсы прикладных программ клиентской стороны в варианте осуществления изобретения;
Фиг.9 - блок-схема, иллюстрирующая интерфейсы прикладных программ стороны провайдера в варианте осуществления изобретения;
Фиг.10 - диаграмма, иллюстрирующая взаимодействие между клиентом и сервером с использованием варианта осуществления системы обеспечения доступности согласно изобретению, и
Фиг.11 - известная система для уведомления о событиях.
Детальное описание изобретения
Примерная операционная среда
На фиг.1 представлен пример среды 100 вычислительной системы, на которой может быть реализовано настоящее изобретение. Среда 100 вычислительной системы является лишь примером подходящей вычислительной среды и не предполагает никаких ограничений объема использования или функциональных возможностей изобретения. Вычислительная среда 100 не должна интерпретироваться как имеющая какую-либо зависимость или требование связи с каким-либо одним компонентом или комбинацией компонентов, показанных в составе приведенной для примера операционной среды 100.
Изобретение может быть описано в общем контексте команд, исполняемых компьютером, таких как программные модули, исполняемые компьютером. В общем случае программные модули включают в себя стандартные программы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют некоторые абстрактные типы данных. Более того, специалистам в данной области техники должно быть понятно, что изобретение может быть реализовано с другими конфигурациями вычислительных систем, включая портативные устройства, мультипроцессорные системы, основанные на микропроцессорах или программируемые приборы бытовой электроники, сетевые ПК, миникомпьютеры, универсальные компьютеры и т.д. Изобретение также может быть реализовано в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, которые связаны коммуникационной сетью. В распределенной вычислительной среде программные модули могут быть расположены как в локальных, так и в удаленных компьютерных запоминающих средах (носителях), включая устройства памяти.
Как показано на фиг.1, приведенная для примера система 100 для реализации изобретения, включает в себя универсальное вычислительное устройство в форме компьютера 110, включающего в себя блок 120 обработки, системную память 130 и системную шину 121, которая связывает различные системные компоненты, включая системную память, с блоком 120 обработки.
Компьютер 110 в типовом случае включает в себя множество считываемых компьютером сред (носителей). К примеру, но не в качестве ограничения, считываемые компьютером носители могут содержать компьютерные носители записи и коммуникационную среду. Системная память 130 включает в себя компьютерные носители записи в форме энергозависимых и энергонезависимых носителей, таких как постоянная память (ROM, ПЗУ) 131, оперативная память (RAM, ОЗУ) 132. Базовая система ввода/вывода (BIOS) 133, содержащая базовые подпрограммы, которые способствуют переносу информации между элементами в компьютере 110, например, при запуске, в типовом случае сохранена в ПЗУ 131. ОЗУ 132 в типовом случае содержит данные и/или программные модули, которые непосредственно доступны и/или обрабатываются блоком 120 обработки. В качестве примера, но не ограничения, на фиг.1 показаны операционная система 134, прикладные программы 135, другие программные модули 136 и программные данные 137.
Компьютер 110 может также включать в себя другие съемные/ несъемные, энергозависимые/энергонезависимые компьютерные носители записи. Например, на фиг.1 показан дисковод 141 жестких дисков для считывания с несъемного, энергонезависимого магнитного носителя и записи на него, дисковод 151 магнитных дисков для считывания со съемного энергонезависимого магнитного диска 152 и записи на него, и дисковод 155 оптических дисков для считывания со съемного энергонезависимого оптического диска 156 или записи на оптический диск, такой как, например, ПЗУ на компакт-диске (CD-ROM) или иные оптические носители записи. Другие съемные и несъемные, энергозависимые и энергонезависимые компьютерные носители записи, которые могут быть использованы в приведенной для примера операционной среде, включают в себя, не ограничиваясь указанным, кассеты на магнитных лентах, карты флэш-памяти, DVD, цифровые видео магнитные ленты, твердотельные ОЗУ, твердотельные ПЗУ и т.п. Дисковод 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. Кроме монитора компьютеры также могут включать в себя другие периферийные устройства вывода, например, громкоговорители 197 и принтер 196, которые могут быть соединены через интерфейс 195 устройств вывода.
Компьютер 110 согласно настоящему изобретению может работать в сетевой среде с использованием логических соединений с одним или более удаленными компьютерами, такими как удаленный компьютер 180. Удаленный компьютер 180 может представлять собой персональный компьютер (ПК) и в типовом случае включает в себя многие или все из элементов, описанных выше применительно к компьютеру 110, хотя на фиг.1 показано только устройство 181 памяти. Логические соединения, показанные на фиг.1, включают в себя локальную сеть (LAN) 171 и глобальную сеть (сеть широкого охвата - WAN) 173, но могут включать в себя и другие сети.
При использовании в сетевой среде локальной сети (LAN) компьютер 110 соединяется с локальной сетью 171 через сетевой интерфейс или адаптер 170. При использовании в сетевой среде глобальной сети (WAN) компьютер 110 в типовом случае включает в себя модем 172 или иное средство для установления связи в глобальной сети 173, такой как Интернет. Модем 172, который может быть внутренним или внешним, соединен с системной шиной 121 через интерфейс 160 пользовательского ввода или иной подходящий механизм. В сетевой среде программные модули, изображенные по отношению к компьютеру 110, или их части могут быть сохранены в удаленном устройстве памяти. В качестве примера, но не ограничения, фиг.1 иллюстрирует удаленные прикладные программы 185 как хранящиеся в устройстве памяти 181. Следует иметь в виду, что показанные сетевые соединения приведены для примера, и что могут быть использованы и другие средства установления канала связи между компьютерами.
Хотя многие другие внутренние компоненты компьютера 110 не показаны, специалистам в данной области техники должно быть понятно, что такие компоненты и взаимные соединения хорошо известны. Соответственно, дополнительные детали, относящиеся к внутренней конструкции компьютера 110, не требуют раскрытия во взаимосвязи с настоящим изобретением.
Структура системы обеспечения доступности
Как показано на фиг.2, система 200 обеспечения доступности взаимодействует с клиентской средой 300 и серверной средой 400. Система 200 обеспечения доступности может быть реализована в компьютерной среде 100, описанной выше со ссылкой на фиг.1. Система 200 обеспечения доступности включает в себя интерфейс 220 обеспечения доступности клиентской стороны для обеспечения взаимодействия с клиентом 300, интерфейс 230 обеспечения доступности серверной стороны для обеспечения взаимодействия с серверной стороной 400 и ядро 201 системы обеспечения доступности. Система 200 обеспечения доступности согласно изобретению обеспечивает новые интерфейсы прикладных программ (ИПП), включающие в себя ИПП 305 клиентской стороны и ИПП 440 стороны провайдера для программного доступа к пользовательскому интерфейсу (ПИ). Система 200 обеспечения доступности позволяет приложениям обеспечивать доступность к ним самим и любым компонентам, которые они используют.
Клиентская среда 300 предпочтительно включает в себя продукт технологии поддержки (ТП) или инструментальное средство тестирования автоматизированного ПИ. Серверная сторона 400 может реализовывать множество различных технологий, как показано на фиг.2. Серверная система 410 включает в себя адаптер 412 и ядро 414, которые могут быть найдены в первом типе ПИ. Серверная система 420 включает в себя компонент-посредник 422 и средства управления 424, которые могут быть найдены во втором типе ПИ, таком как ПИ Win32, доступный в продуктах операционной системы Microsoft компании Microsoft Corporation (Redmond, Washington). Серверная система 430 включает в себя адаптер 432 и внутренние операционные модули 434, которые могут быть найдены в альтернативном третьем типе ПИ.
Как показано на фиг.3, механизм 210 событий, который включен в состав системы 200 обеспечения доступности, основывается на клиенте 202 автоматизации ПИ и сервере 204 автоматизации ПИ для обеспечения взаимодействия с клиентской средой 300 и серверной средой 400. Клиент 202 автоматизации ПИ и сервер 204 автоматизации ПИ описаны более детально ниже со ссылками на механизм 210 событий согласно изобретению. Система 200 обеспечения доступности, соответствующая изобретению, обеспечивает клиенту (продукту ТП) 300 следующие возможности: (1) сбор информации о пользовательском интерфейсе приложения; (2) программным образом обнаружение и опрос элементов ПИ независимо от технологии, используемой для построения ПИ; (3) генерация ввода посредством клавиатуры и указателя (курсора) и (4) понимание того, какой тип поведения или функциональности доступен в текущий момент. Система 200 обеспечения доступности позволяет приложениям обеспечивать доступность к ним самим и любым компонентам, которые они используют. Структура, показанная на фиг.2 и 3, обеспечивает реализацию различных основных аспектов системы 200 обеспечения доступности, включая следующее: (1) логическое дерево ПИ; (2) шаблоны управления; (3) механизм событий; (4) свойства и (5) ИПП клиентской и серверной стороны. Все эти аспекты описаны ниже более подробно.
Логическое дерево 222 доступа ПИ
Интегральным компонентом системы 200 обеспечения доступности является логическое дерево 222, пример которого приведен на фиг.4(D). Дерево 222 включено в интерфейс 220 обеспечения доступности клиентской стороны.
Логическое дерево 222 является отфильтрованным представлением базовой структурной иерархии элементов ПИ, а не отдельным деревом, которое должно быть реализовано разработчиком средств управления или приложения. Вместо этого, оно вычленяет ряд хорошо определенных свойств, представляющих интерес и не представляющих интереса, которые показывают, должен ли структурный элемент быть представлен в логическом дереве 222. Ядро 201 системы обеспечения доступности потребляет эту информацию для выработки отфильтрованного логического дерева 222 ПИ, которое, в свою очередь, представляется в продукты ТП или в скрипт (сценарий) тестирования.
Логическое дерево 222 является деревом элементов, каждый из которых представляет управление, элемент в управлении, структуру группирования, которая может быть диалогом, панелью, фреймом. Структура логического дерева 222 должна представлять ПИ приложения, как это воспринимается пользователем (даже если средства управления в действительности реализованы с использованием другой базовой структуры). Дерево должно быть стабильным во времени. Пока приложение представляется одинаковым для пользователя, логическое дерево 222, представляющее это приложение, должно оставаться тем же самым, даже если детали реализации приложения «за сценой» изменились. Собственные элементы, которые существуют по структурным причинам или по причинам реализации, такие как окно "ShDocView" в продуктах ОС Microsoft, не должны появляться в этом дереве, поскольку пользователь не воспринимает их.
Логическое дерево 222 является единым деревом, построенным из множества фрагментов, которое может унифицировать множество различных процессов таким образом, что они являются одинаковыми для клиента. Логическое дерево 222 обеспечивает групповой поиск и способно получать значение для списка свойств. За время, в которое пользователь обычно должен был осуществлять перекрестный вызов из процесса для запроса значений, система 200 обеспечения доступности уже осуществит их выборку за счет использования логического дерева 222.
Вместо формирования на одном этапе, как в известных системах, логическое дерево 222 формируется из фрагментов, которые используются для формирования исходного дерева. Как показано на фиг.5, три главные процедуры формируют логическое дерево 222. В процедуре 72, система обеспечения доступности 200 обнаруживает собственные элементы базовых технологий и получает собственные деревья, показанные на фиг.4(А). В процедуре 74 система обеспечения доступности объединяет собственные элементы для формирования исходного дерева 20, как показано на фиг.4(В). И, наконец, в процедуре 76 логическое дерево 222 получается путем скрытия не представляющих интерес компонентов исходного дерева 20, как показано на фиг.4(D).
Фиг.4(А) иллюстрирует два собственных дерева 10 и 14, которые формируются из собственных элементов базовых технологий, таких как ПИ Win32 или другие доступные ПИ. Собственное дерево 10 включает в себя родительский узел 11 и множество узлов-потомков 12, имеющих различные соотношения друг с другом. Аналогичным образом, собственное дерево 14 включает в себя родительский узел 15, имеющий множество дочерних узлов 16. Дочерние узлы 16 могут быть описаны как узлы-братья (объекты, имеющие общий родительский узел).
Как показано на фиг.4(В), собственные деревья 10 и 14 могут быть объединены для формирования исходного дерева 20. Исходное дерево 20 включает в себя родительский узел 21, имеющий два дочерних узла 22 и 30. Дочерний узел 22 имеет узлы-потомки 23-29, а дочерний узел 30 имеет узлы-потомки 31-33. Это исходное дерево 20 является комбинацией собственных деревьев 10 и 14, причем узлы собственного дерева 10 формирует узлы 22-29, а узлы собственного дерева 14 формируют узлы 30-33.
Посредством способа, в общем виде показанного на фиг.4(С) и 4(D), исходное дерево 20 преобразуется в логическое дерево 222. Для перехода от исходного дерева 20 к логическому дереву 222, разработчик может ввести подсказки в исходное дерево. Разработчик может маркировать узлы в исходном дереве 20 как «скрыть себя», или «скрыть себя и дочерние узлы», или «скрыть узлы-потомки узла» и т.д. Разработчик также может сдвинуть узлы в стороны или поместить узлы перед дочерними узлами. Такие подсказки и модификации в исходном дереве 20 используются для формирования логического дерева 222. Например, на фиг.4(С), разработчик пометил узлы 24-26 и 33 исходного дерева 20 как не представляющие интереса, как указано блоками 40 и 41. В типовом случае, узлы, которые содержат элементы, которые не будут видимы для пользователя, маркируются как неинтересные. Узлы, связанные с видимым ПИ, в типовом случае рассматриваются как представляющие интерес и будут включены в логическое дерево 222 для использования клиентом 300 ТП. Как показано на фиг.4(D), узлы, маркированные как не представляющие интереса, не включаются в логическое дерево 222.
Система 200 обеспечения доступности использует логическое дерево 222 для нахождения информации об элементах управления. Известные системы не имели возможности действовать в пределах их деревьев. Навигация по логическому дереву 222 может осуществляться на основе предпочтений клиента 300, и оно может обеспечивать информацию относительно используемого приложения серверной стороны.
Логическое дерево 222 является единым объединенным деревом, которое является логическим представлением ПИ и сформировано в форме, которая включает в себя только элементы, представляющие интерес для клиента 300. Соответственно, вместо того чтобы вынуждать продукты ТП фильтровать структурную иерархию элементов ПИ и делать приблизительные оценки на модели, представляемой конечному пользователю, логическое дерево 222 представляет иерархию, которая близко отображает структуру, представляемую конечному пользователю. Это в значительной степени упрощает задачу продукта ТП описания ПИ для пользователя и помогает пользователю взаимодействовать с приложением.
Поскольку это логическое дерево 222 ПИ является фундаментальной частью системы 200 обеспечения доступности, все другие компоненты системы 200 обеспечения доступности предназначены для работы исходя из логического дерева 222. Например, фиг.6 показывает простое диалоговое окно 60, которое представляется имеющим очень простую структуру. Однако при рассмотрении с учетом существующей технологии обеспечения доступности структура этого дерева является очень сложной. Оно содержит 264 объекта, которые должны быть отфильтрованы продуктом ТП, чтобы обнаружить те, которые имеют смысл для конечного пользователя. С использованием системы 200 обеспечения доступности и ее поддержки для логического дерева 222 ПИ, разработчик, имеющий это диалоговое окно 60, может установить новые свойства для представления следующей структуры, показанной на фиг.6, продуктам 300 ТП.
Как показано на фиг.6, для диалога «выполнить», разработчик может указать в качестве интересующих элементов графику 62 плавающих окон и текст «Введите имя программы, папки, документа или интернет-ресурса, и окна будут открыты для вас» в 63. Разработчик может также указать в качестве интересующего комбинированное окно 64, включающее в себя блокнот, слово, калькулятор и т.д. и кнопки «ОК» 65, «отменить» 66 и «просмотреть» 67. Это обеспечивает разработчику дешевый механизм маркировки своей иерархии элементов и тем самым формирования логического представления своего ПИ приложения посредством системы 200 обеспечения доступа ПИ. Каждый из показанных признаков может быть представлен узлом, который имеет определенное взаимоотношение с каждым другим узлом в логическом дереве 222. Это логическое представление предоставляет непосредственную выгоду для подразделения тестирования и для продуктов ТП или клиентов 300.
Хотя логическое дерево 222 представляет в конечном счете интерес для пользователя, дерево 20 логических элементов также выполняет некоторые важные функции. В то время как логическое дерево 222 содержит только элементы, к которым может иметь отношение пользователь, дерево 20 исходных элементов содержит узлы, такие как 22, которые представляют структуру реализации базовой структуры. Для фрагмента ПИ Win32, например, это дерево должно содержать узлы, которые представляют HWND (узлы аппаратных средств). В некоторых аспектах дерево 22 исходных элементов является «домом на полпути» между деревом 222 логических элементов и деревьями собственных элементов базовой структуры. Дерево 22 исходных элементов используется как основа для построения дерева 222 логических элементов, и именно в нем собственные элементы впервые встраиваются в систему.
Дерево 20 исходных элементов может также использоваться для отладки и тестирования. Это полезно для точной локализации неисправностей или описания, где находится конкретный узел, вызывающий проблемы. Функциональные возможности на базовом узле исходных элементов включают следующее: способы навигации по дереву исходных элементов, способ перехода к конкретному логическому элементу (если он существует); определяющая свойство «строка отладки» для этого элемента, например, "HWND 0x483FE" для узлов HWND и другие способы «скрытой инфраструктуры». Эти другие способы обеспечивают возможность тестирования и локализации совпадений, событий и представления свойств, которые базовая структура может легко обеспечить (например, сфокусировано (приведено в активное состояние), разрешено).
Дерево 22 исходных элементов содержит узлы 22-33, которые представляют элементы различных механизмов визуализации. Дерево исходных элементов используется в качестве начального пункта для механизмов визуализации, чтобы встраиваться в систему 200 обеспечения доступности, и формируется из мелких объектов адаптера, которые адаптируют собственные элементы такие, как HWND из Win32, для объединенного логического дерева 222. Оно дополнительно используется для обработки переходов в ведущую систему, где одна технология использует другую. Поскольку дерево 20 исходных элементов является основой, на которой строится логическое дерево 222, оно может быть использовано для проверки того, что логическое дерево 222 завершено и соединено и может быть использовано для проверки на неучтенные элементы. Дерево 20 исходных элементов может также быть использовано для других инфраструктурно-подобных задач, таких как обеспечение идентификаторов некоторых базовых элементов и обеспечение свойств некоторых обеспечиваемых базовой структурой элементов, таких как «сфокусировано», «разрешено», «локализация».
Дерево 20 исходных элементов не является основным источником информации для продуктов ТП или клиентов 300, не используется для логической навигации и не предоставляется конечным пользователям. Дерево 20 исходных элементов также не может быть использовано для определения положения элемента в дереве, чтобы оно могло быть возвращено в некоторый будущий момент времени в будущем. Все эти функции выполняет дерево 222 логических элементов.
Дерево 20 исходных элементов может в типовом случае строиться механически из исходных элементов базовой технологии визуализации (HWND, Элементы) без знания представляемых логических элементов. Поэтому оно может быть использовано для поиска исходных элементов, которые не были учтены в логическом дереве 222. Дерево 20 исходных элементов является полезным инструментальным средством отладки и диагностики, так как обеспечивает возможность описания через «стек дампа» местоположения определяемого узла. Кроме того, известные системы основывают свои деревья на специфических для программного кода критериях и вызывают трудности в реализации с различными технологиями. Предложенный подход использует обобщенный абстрактный тип «исходного элемента», который может быть реализован посредством или исходя из любой базовой