ПРЕДСТАВЛЕНИЕ СОСТАВНОГО ПРИЛОЖЕНИЯ В МНОЖЕСТВЕННЫХ УСТРОЙСТВАХ
COMPOSITE APPLICATION PRESENTATION IN MULTIPLE DEVICES

УРОВЕНЬ ТЕХНИКИ
[0001] Вычислительные технологии революционизировали нашу трудовую деятельность, игры и общение. С развитием вычислительных технологий, мы получили многообразие устройств, которые осуществляют такие вычислительные системы или отображают контент из вычислительной системы. Например, вычислительная система может принимать форму серверной стойки, настольного компьютера, компактного портативного компьютера, планшета, смартфона, игровой консоли, часов, холодильника, интеллектуального дома, и т.п.
[0002] Вместе с многообразием вычислительных систем, подобным образом диверсифицировались типы устройств, которые могут быть использованы для воспроизведения вычисления выходной и входной информации для компьютера. Например, устройства вывода могут включать в себя устройства отображения, такие как проекторы, телевизионные мониторы, трехмерные устройства отображения, компактные портативные компьютеры, планшетные компьютеры, телефоны, и т.п. Устройства вывода могут включать в себя устройство вывода звука, такое как громкоговорители. Устройства вывода могут также включать в себя исполнительные механизмы, световые устройства, клапаны, и т.п. Устройства ввода могут включать в себя клавиатуры, указывающие устройства (такие как мышь), сенсорные экраны, микрофоны, видеокамеры, фотокамеры, трехмерные детекторы положений, мониторы глобальной системы позиционирования, световые датчики, акселерометры, термометры, компасы, и т.п.
[0003] Вычислительные системы и связанные с ними устройства ввода и вывода стали довольно производительными и, часто, мобильными. Часто, в любом данном местоположении, может присутствовать большое количество или большое разнообразие устройств. Например, в обычном конференц-зале, который полностью заполнен, могут быть верхние проекторы, телевизионные экраны, компактные портативные компьютеры, планшеты, смартфоны, микрофоны, камеры, устройства освещения, и т.п. Общепринятая парадигма состоит в том, что каждое устройство выполняет свое собственное приложение, или отображает контент из единственного приложения. При взаимодействии приложений, они часто взаимодействуют как отдельные приложения, взаимодействующие через интерфейс прикладных программ.
[0004] Объект изобретения, заявленный здесь, не ограничен вариантами осуществления, которые устраняют любые недостатки, или которые функционируют только в средах, таких как среды, описанные здесь. Напротив, этот уровень техники обеспечен только для иллюстрации одной иллюстративной области технологий, где могут быть применены на практике некоторые варианты осуществления, описанные здесь.
КРАТКАЯ СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0005] По меньшей мере некоторые варианты осуществления, описанные здесь, относятся к обеспечению представления выходных данных последовательностей преобразований на устройствах. Последовательность преобразований включает в себя один или несколько узлов представления, которые управляют воспроизведением выходных данных таким образом, чтобы изменение в значении в узле представления вызывало событие воспроизведения. В ответ на изменение в значении узла представления, система представления идентифицирует характеристики различных устройств, которые могут быть использованы для воспроизведения соответствующих выходных данных. Система представления идентифицирует подходящее устройство на основе идентифицированных характеристик этого устройства. Система представления, затем, обеспечивает воспроизведение по меньшей мере одной версии выходных данных на выбранном устройстве, возможно, даже с преобразованием выходных данных способом, подходящим для выбранного устройства. В некоторых вариантах осуществления, последовательность преобразований может быть составной последовательностью преобразований, создаваемой посредством объединения множественных составляющих последовательностей преобразований.
[0006] Данная сущность изобретения не предназначена для идентификации ключевых признаков или существенных признаков заявленного объекта изобретения, а также не предназначена для использования для помощи в определении объема заявленного объекта изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0007] Для описания способа, в котором вышеизложенные и другие преимущества и признаки могут быть получены, более конкретное описание различных вариантов осуществления будет приведено со ссылкой на прилагаемые чертежи. Следует понимать, что эти чертежи показывают только образцовые варианты осуществления и, следовательно, не должны рассматриваться как ограничивающие объем настоящего изобретения, таким образом, варианты осуществления будут описаны и объяснены с дополнительной конкретикой и подробностями с использованием сопутствующих чертежей, в которых:
[0008] Фиг. 1 абстрактно показывает вычислительную систему, в которой могут быть использованы некоторые варианты осуществления, описанные здесь;
[0009] Фиг. 2 абстрактно показывает простую последовательность преобразований, в которой существует только единственная связь, соединяющая единственный источник данных и единственный адресат данных, и в которой преобразование, представленное связью, автоматически выполняется с использованием значения в источнике данных в качестве входных данных, для генерации значения в адресате данных;
[0010] Фиг. 3 абстрактно показывает другую простую иллюстративную последовательность преобразований, в которой преобразование выполняется с использованием входных значений от трех источников данных, для генерации выходных значений в двух адресатах данных;
[0011] Фиг. 4 показывает последовательность преобразований в форме комбинации последовательности преобразований фиг. 2 и последовательности преобразований фиг. 3;
[0012] Фиг. 5 показывает иллюстративную среду, в которой могут функционировать принципы, описанные здесь, и которая включает в себя множественные устройства, связанные с составляющими последовательностями преобразований составного приложения, и которая также включает в себя устройства ввода и устройства вывода;
[0013] Каждая из фиг. 6A-6D показывает иллюстративные последовательности преобразований, которые могут быть связаны с соответствующими устройствами на фиг. 5 (стрелки, через которые данные не передаются при отсутствии объединения с другой последовательностью преобразований, показаны с помощью "X", а элементы взаимосвязей, которые не являются узлами в самой последовательности преобразований, показаны с помощью пунктирных границ);
[0014] Фиг. 7А показывает увеличенную последовательность преобразований, представляющую объединение последовательностей преобразований фиг. 6А и 6В;
[0015] Фиг. 7В показывает увеличенную последовательность преобразований, представляющую объединение последовательностей преобразований фиг. 6А и 6С;
[0016] Фиг. 7С показывает увеличенную последовательность преобразований, представляющую объединение последовательностей преобразований фиг. 6В и 6С;
[0017] Фиг. 7D показывает увеличенную последовательность преобразований, представляющую объединение последовательностей преобразований фиг. 6А и 6D;
[0018] Фиг. 8А показывает увеличенную последовательность преобразований, представляющую объединение последовательностей преобразований фиг. 6А, 6В и 6С;
[0019] Фиг. 8В показывает увеличенную последовательность преобразований, представляющую объединение последовательностей преобразований фиг. 6А, 6В и 6D;
[0020] Фиг. 8C показывает увеличенную последовательность преобразований, представляющую объединение последовательностей преобразований фиг. 6А, 6C и 6D;
[0021] Фиг. 9 показывает увеличенную последовательность преобразований, представляющую объединение последовательностей преобразований фиг. 6А, 6В, 6С и 6D;
[0022] Фиг. 10 показывает блок-схему последовательности операций способа для подготовки к обеспечению функционирования составного приложения;
[0023] Фиг. 11 абстрактно показывает систему, которая может быть использована для выполнения способа фиг. 10, 12, 13 и 14, и которая включает в себя библиотеку определений классов последовательностей преобразований и реестр устройств, а также услугу представлений;
[0024] Фиг. 12 показывает блок-схему последовательности операций способа для объединения двух экземпляров классов последовательностей преобразований;
[0025] Фиг. 13 показывает блок-схему последовательности операций способа для отсоединения последовательности преобразований от большей последовательности преобразований;
[0026] Фиг. 14 показывает блок-схему последовательности операций способа для воспроизведения изменений в одном или нескольких узлах представления последовательности преобразований на подходящем устройстве;
[0027] Фиг. 15A-15J показывают различные пользовательские интерфейсы, которые могут быть использованы в сценарии, называемом здесь «сценарием устройств», в котором пользователь должен заказать некоторое количество устройств; и
[0028] Фиг. 15K-15О показывают различные пользовательские интерфейсы, которые, при наличии, могут изменить составное приложение, используемое в сценарии устройств фиг. 15A-15J.
ПОДРОБНОЕ ОПИСАНИЕ
[0029] По меньшей мере некоторые варианты осуществления, описанные здесь, относятся к обеспечению представления выходных данных последовательностей преобразований на устройствах. Последовательность преобразований включает в себя один или несколько узлов представления, которые управляют воспроизведением выходных данных таким образом, чтобы изменение в значении в узле представления вызывало событие воспроизведения. В ответ на изменение в значении узла представления, система представления идентифицирует характеристики различных устройств, которые могут быть использованы для воспроизведения соответствующих выходных данных. Система представления идентифицирует подходящее устройство на основе идентифицированных характеристик этого устройства. Система представления, затем, обеспечивает воспроизведение по меньшей мере одной версии выходных данных на выбранном устройстве, возможно, даже с преобразованием выходных данных способом, подходящим для выбранного устройства. В некоторых вариантах осуществления, последовательность преобразований может быть составной последовательностью преобразований, создаваемой посредством объединения множественных составляющих последовательностей преобразований.
[0030] Некоторое предварительное обсуждение вычислительной системы будет приведено в отношении фиг. 1. Затем, технология составного приложения для устройств будет описана в отношении последующих фигур.
[0031] Вычислительные системы в настоящее время принимают все более разнообразные формы. Вычислительные системы могут быть, например, ручными устройствами, бытовыми электроприборами, компактными портативными компьютерами, настольными компьютерами, мэйнфреймами, распределенными вычислительными системами, или даже устройствами, которые обычно не рассматривались в качестве вычислительных систем. В этом описании и в формуле изобретения, термин «вычислительная система» определен в широком смысле как включающий в себя любое устройство или систему (или их комбинацию), которые включают в себя по меньшей мере один физический и материальный процессор, и физическую и материальную память, способную запоминать исполняемые компьютерами команды, которые могут быть исполнены процессором. Память может принимать любую форму и может зависеть от природы или формы вычислительной системы. Вычислительная система может быть распределена по сетевой среде и может включать в себя множественные составляющие вычислительные системы.
[0032] Как показано на фиг. 1, в своей самой основной конфигурации, вычислительная система 100 обычно включает в себя по меньшей мере один аппаратный обрабатывающий блок 102 и память 104. Память 104 может быть физической системной памятью, которая может быть энергозависимой памятью, энергонезависимой памятью, или некоторой их комбинацией. Термин «память» может быть также использован здесь для ссылки на энергонезависимые устройства массовой памяти, такие как физические запоминающие среды. Если вычислительная система распределена, то обработка, память и/или способность запоминания данных также могут быть распределены. При использовании здесь, термин «исполняемый модуль» или «исполняемый компонент» может относиться к программным объектам, средствам маршрутизации, или способам, которые могут быть исполнены в вычислительной системе. Разные компоненты, модули, механизмы, и услуги, описанные здесь, может быть реализованы в виде объектов или процессов, которые исполняются в вычислительной системе (например, в виде отдельных потоков).
[0033] В нижеследующем описании, варианты осуществления описаны со ссылкой на действия, которые выполняются одной или несколькими вычислительными системами. Если такие действия реализованы в программном обеспечении, то один или несколько процессоров соответствующей вычислительной системы, которая выполняет действие, управляют функционированием вычислительной системы в ответ на исполнение исполняемых компьютером команд. Например, такие исполняемые компьютером команды могут быть осуществлены в одной или нескольких считываемых компьютером средах, которые формируют компьютерный программный продукт. Пример такого функционирования включает в себя управление данными. Исполняемые компьютером команды (и управляемые данные) могут храниться в памяти 104 вычислительной системы 100. Вычислительная система 100 может также содержать каналы 108 связи, которые обеспечивают вычислительной системе 100 возможность установления связи с другими процессорами сообщений, например, по сети 110.
[0034] Вычислительная система 100 также может потенциально включать в себя компоненты воспроизведения выходных данных, такие как устройства отображения, громкоговорители, световые устройства, исполнительные механизмы, и т.п. Вычислительная система 100 может также включать в себя компоненты ввода данных, такие как клавиатура, указывающее устройство (такое как мышь или сенсорная панель), устройства распознавания речи, и, возможно, также физические датчики (например, термометры, глобальные системы позиционирования, световые детекторы, компасы, акселерометры, и т.д.).
[0035] Варианты осуществления, описанные здесь, могут содержать или использовать компьютер общего назначения или специального назначения, включающий в себя компьютерное аппаратное обеспечение, такое как, например, один или несколько процессоров и системную память, как описано более подробно ниже. Варианты осуществления, описанные здесь, также включают в себя физические и другие считываемые компьютером среды для переноса или запоминания исполняемых компьютерами команд и/или структур данных. Такие считываемые компьютером среды могут быть любыми доступными средами, к которым может осуществлять доступ вычислительная система общего назначения или специального назначения. Считываемые компьютером среды, которые запоминают исполняемые компьютерами команды, являются физическими запоминающими средами. Считываемые компьютером среды, которые переносят исполняемые компьютерами команды, являются средами передачи данных. Таким образом, в качестве примера, а не ограничения, варианты осуществления настоящего изобретения могут содержать по меньшей мере два отчетливо отличающихся вида считываемых компьютером сред: считываемые компьютером запоминающие среды и среды передачи данных.
[0036] Считываемые компьютером запоминающие среды включают в себя RAM, ROM, EEPROM, CD-ROM или другие запоминающие устройства на оптических дисках, запоминающие устройства на магнитных дисках или другие магнитные запоминающие устройства, или любую другую запоминающую среду, которая может быть использована для запоминания необходимого средства программного кода в форме исполняемых компьютером команд или структур данных, и к которой может быть осуществлен доступ посредством компьютера общего назначения или специального назначения.
[0037] «Сеть» определена как один или несколько каналов передачи данных, которые обеспечивают транспортировку электронных данных между вычислительными системами и/или модулями и/или другими электронными устройствами. Когда информация передается или обеспечивается через сеть или другое коммуникационное соединение (либо фиксированное, либо беспроводное, либо комбинацию фиксированного или беспроводного) с компьютером, компьютер, собственно, рассматривает это соединение как среду передачи данных. Среды передачи данных включают в себя сеть и/или каналы передачи данных, которые могут быть использованы для переноса необходимого средства программного кода в форме исполняемых компьютером команд или структур данных, и к которым может быть осуществлен доступ посредством компьютера общего назначения или специального назначения. Комбинации вышеупомянутого также должны быть включены в пределы объема считываемых компьютером сред.
[0038] Кроме того, после достижения различных компонентов вычислительной системы, средство программного кода в форме исполняемых компьютером команд или структур данных может быть передано автоматически из сред передачи данных в считываемые компьютером запоминающие среды (или наоборот). Например, исполняемые компьютером команды или структуры данных, принятые через сеть или канал передачи данных, могут быть буферизованы в RAM в пределах модуля сетевого интерфейса (например, "NIC"), и, затем, в конечном счете, переданы к RAM вычислительной системы и/или к менее энергозависимым считываемым компьютером запоминающим средам в вычислительной системе. Таким образом, следует понимать, что считываемые компьютером запоминающие среды могут быть включены в компоненты вычислительной системы, которые также (или даже в первую очередь) используют среды передачи данных.
[0039] Исполняемые компьютером команды содержат, например, команды и данные, которые, при исполнении в процессоре, обеспечивают выполнение компьютером общего назначения, компьютером специального назначения, или обрабатывающим устройством специального назначения некоторой функции или группы функций. Исполняемые компьютером команды могут быть, например, командами двоичного формата, или даже командами, которые подвергаются некоторой трансляции (например, компиляции), перед прямым исполнением процессорами, такими как команды промежуточного формата, такими как язык ассемблера, или даже исходный код. Хотя объект изобретения был описан на языке, специфическом для структурных признаков и/или методологических действий, следует понимать, что объект изобретения, определенный в прилагаемой формуле изобретения, не обязательно ограничен описанными признаками или действиями, описанными выше. Напротив, описанные признаки и действия раскрыты как иллюстративные формы реализации формулы изобретения.
[0040] Специалистам в данной области техники следует понимать, что настоящее изобретение может применяться на практике в сетевых вычислительных средах со многими типами конфигураций вычислительных систем, включающих в себя персональные компьютеры, настольные компьютеры, компактные портативные компьютеры, процессоры сообщений, ручные устройства, многопроцессорные системы, бытовую электронику на основе микропроцессоров или программируемую бытовую электронику, сетевые PC, миникомпьютеры, компьютеры-мэйнфреймы, мобильные телефоны, PDA, пейджеры, маршрутизаторы, коммутаторы, и т.п. Настоящее изобретение может также применяться на практике в распределенных системных средах, где выполняют задачи локальные и удаленные вычислительные системы, которые связаны (либо фиксированными каналами передачи данных, либо беспроводными каналами передачи данных, либо комбинацией фиксированных и беспроводных каналов передачи данных) через сеть. В распределенной системной среде, программные модули могут быть расположены как в локальных, так и в удаленных запоминающих устройствах.
[0041] Принципы, описанные здесь, функционируют с использованием последовательности преобразований. Последовательность преобразований является набором взаимосоединенных узлов, каждый из которых представляет собой источник данных или адресат данных. Существуют связи между узлами, причем каждая связь представляет преобразование. Для любой данной связи, соответствующее преобразование принимает копии значений одного или нескольких источников данных, расположенных на входном конце связи, и генерирует результирующие значения, обеспечиваемые у одного или нескольких адресатов данных, расположенных на выходном конце связи. Для любого данного преобразования, когда значение в одном или нескольких источниках данных на его входном конце изменяется, преобразование автоматически переоценивается, что потенциально приводит к изменениям в значении (значениях) одного или нескольких адресатов данных на выходном конце преобразования.
[0042] В одном варианте осуществления, независимо от того, насколько сложной является последовательность преобразований, преобразования могут быть созданы на основании декларативных операторов, выражающих уравнения, правила, ограничения, модели, или любой другой тип преобразования, который может принимать одно или несколько значений в качестве входных данных и обеспечивать результирующие одно или несколько значений в качестве выходных данных. Экземпляром последовательности преобразований является программа электронных таблиц, где любая из ячеек может быть источником данных или адресатом данных. Уравнение (т.е., преобразование) может быть связано с любой ячейкой для обеспечения того, чтобы эта ячейка была адресатом данных, в котором расположены результаты уравнения.
[0043] Только в качестве примера, фиг. 2 показывает простую последовательность 200 преобразований, в которой существует только единственная связь 200. В чертежном обозначении, используемом везде в этом описании, связь будет показана в виде стрелки с входным концом, представленным хвостовой частью стрелки, и выходным концом, представленным головной частью стрелки. В случаях, когда имеются множественные источники данных на входном конце связи, стрелка будет представлена множественными хвостовыми частями. Копии значений источника (источников) данных в хвостовой части (хвостовых частях) стрелки представляют входные данные для преобразования. В случаях, когда имеются множественные адресаты данных, на которые влияет результирующее значение (значения) преобразования, стрелка будет представлена множественными головными частями. Значения адресата (адресатов) данных на головной части (головных частях) стрелки представляют выходные данные преобразования.
[0044] Например, фиг. 2 показывает простую последовательность преобразований 200, которая включает в себя источник 201 данных, адресат 202 данных и единственную связь 220. Связь 220 представляет преобразование, выполняемое в отношении копии значения 211 в источнике 201 данных для генерации значения 212 в адресате 202 данных. При изменении значения 211, преобразование, представленное связью 220, переоценивается, что потенциально приводит к изменению в значении 212 в адресате 202 данных.
[0045] Фиг. 3 показывает другую простую иллюстративную последовательность 300 преобразований, которая включает в себя три источника 301, 302 и 303 данных; два адресата 304 и 305 данных, и единственную связь 320. Связь 320 представляет преобразование, выполняемое в отношении копий значений в источниках 301, 302 и 303 данных, для генерации значений в адресатах 304 и 305 данных. При изменении любого из значений в источниках 301, 302 и 303 данных, связь 320 преобразования переоценивается, что потенциально приводит к изменению в значениях в любом одном или нескольких из адресатов 304 и 305 данных.
[0046] Фиг. 4 показывает другую иллюстративную последовательность 400 преобразований, и показывает принцип, состоящий в том, что последовательности преобразований могут строиться друг на друге, причем источник данных для одной связи может быть адресатом данных в другой связи, для создания даже более сложных последовательностей преобразований. Например, последовательность 400 преобразований включает в себя экземпляр 401 последовательности 200 преобразований и экземпляр 402 последовательности 300 преобразований. В этом случае, адресат 202 данных связи 220 является также источником 301 данных связи 320. При изменении значения источника 201 данных, преобразование, представленное связью 220, переоценивается, что потенциально приводит к изменению в значении в адресате 202 данных, который также является источником 301 данных для следующей связи 320. Подобным образом, изменение в значении источника 301 данных может привести к переоценке связи 320 преобразования, что потенциально приводит к изменению в значениях в любом одном или нескольких из адресатов 304 и 305 данных. Адресаты 304 и 305 данных могут также представлять собой источники данных еще для других связей. Таким образом, в сложных последовательностях преобразований, изменение значения может вызвать распространенные изменения значений во множественных узлах в последовательности преобразований вследствие соответствующей автоматизированной переоценки преобразований в последовательности преобразований.
[0047] В то время как иллюстративная последовательность 400 преобразований включает в себя только две связи, последовательности преобразований могут быть достаточно сложными и могут включать в себя перечислимые узлы и соответствующие связи, соединяющие эти перечислимые узлы. Принципы, описанные здесь, могут функционировать независимо от сложности последовательностей преобразований.
[0048] Фиг. 5 показывает среду 500, в которой имеется шесть устройств 501-506. Многоточие 507 представляет гибкость в количестве устройств, которые представлены в среде 500. Фактически, могут существовать устройства, покидающие среду 500 и входящие в нее довольно динамично. Хотя это и не требуется, каждое из устройств 507 может быть структурировано, как описано для вычислительной системы 100 фиг. 1.
[0049] Среда 500 не обязательно должна быть физической средой, в которой все устройства расположены на одинаковом удалении, хотя часто это может быть так. Вместо этого, среда 500 может рассматриваться как любая среда, в которой имеется набор устройств, посредством которых один или несколько пользователей могут обеспечить входные данные, и имеются множественные устройства, посредством которых выходные данные могут быть обеспечены для множественных пользователей.
[0050] Некоторые из устройств (например, устройства 501-504) помогают формировать нечто большее, чем только взаимодействие устройств со взаимодействующими приложениями. Вместо этого, каждое из устройств 501-504 связано с компонентом составного приложения. Когда любое из устройств 501-504 покидает среду 500, составное приложение становится меньшим, что приводит к изменению функциональности этого приложения. С другой стороны, когда устройства (такие как устройства 501-504), которые имеют компоненты этого приложения, входят в среду 500, составное приложение, фактически, становится большим, что, фактически, изменяет функциональность и саму структуру составного приложения. Согласно принципам, описанным здесь, последовательность преобразований одного устройства может объединяться с последовательностью преобразований других устройств, что приводит к большей последовательности преобразований, которая может более эффективно использовать увеличенный набор устройств.
[0051] Устройство 505 представляет собой устройство вывода, которое может быть использовано в среде 500, но не обязательно вносит последовательность преобразований в большую последовательность преобразований составного приложения. Например, устройство 505 может быть устройством отображения с большим экраном. Устройство 506 представляет собой устройство ввода, которое может быть использовано в среде 500, но не обязательно вносит последовательность преобразований в большую последовательность преобразований составного приложения. Например, устройство 506 может быть микрофоном. Присутствие устройств 501-504 вызывает внесение участков соответствующих последовательностей преобразований в большую последовательность преобразований составного приложения. Однако, устройства 501-504 также могут иметь способность ввода данных и способность вывода данных, которые, в целом, могут быть использованы составным приложением. Среда 500 может, необязательно, включать в себя внешнюю систему 510, которая будет дополнительно описана ниже.
[0052] Фиг. 6A-6D показывают экземпляры иллюстративных последовательностей преобразований или классы 600A-600D. Экземпляры будут иметь такую же структуру, как классы, и, таким образом, показанные формы, как предполагается, представляют классы преобразований, а также экземпляры преобразований. Экземпляры будут, однако, иметь конкретное состояние экземпляра, связанное с каждым из одного или нескольких узлов последовательности преобразований. Таким образом, элементы 600A-600D могут называться классами последовательностей преобразований или экземплярами последовательностей преобразований. Термин «последовательность преобразований» будет использоваться для общего именования как классов последовательностей преобразований, так и соответствующих им экземпляров последовательностей преобразований. В качестве примера, экземпляры 600A-600D последовательностей преобразований могут быть связаны с соответствующими устройствами 501-504.
[0053] Иллюстративные последовательности 600A-600D преобразований являются относительно простыми, чтобы не затруднять понимание более широких принципов, описанных здесь, что было бы возможным при слишком сложном примере. С учетом вышесказанного, принципы, описанные здесь, применимы независимо от того, насколько сложной является последовательность преобразований, и независимо от количества последовательностей преобразований и соответствующих устройств, которые находятся в среде и формируют составное приложение.
[0054] В обозначении фиг. 6A-6D, узлы, которые относятся к классу 600N преобразований (где N находится в диапазоне от А до D), представлены с использованием суффикса N. Например, на фиг. 6А, последовательность 600А преобразований включает в себя узлы 601A, 602A, 603A, и 604A. Остальные элементы 601B, 601C и 601D не оканчиваются суффиксом "A", и, таким образом, не являются узлами в последовательности 600А преобразований. Вместо этого, элементы 601B, 601C и 601D представляют взаимосвязи с другими последовательностями преобразований.
[0055] Во всех фиг. 6A-6D, 7A-7D, 8A-8C, и 9, для выделения тех элементов, которые являются элементами взаимосвязей, а не узлами в самой последовательности преобразований, элементы взаимосвязей представлены пунктирными границами. Данные не передаются от узла к элементу взаимосвязи, если последовательность преобразований не объединена с другой последовательностью преобразований, которая включает в себя узел, представленный элементом взаимосвязи. Тот факт, что данные не могут передаваться вдоль конкретного преобразования, показано во всех фигурах с помощью связи, помеченной "X".
[0056] Например, элемент 601B в последовательности 600А преобразований представляет взаимосвязь с узлом 601В в последовательности 600В преобразований. Элемент 601В взаимосвязи ограничен пунктирными линиями, и все связи, ведущие к этому элементу 601В взаимосвязи и от него, помечены "X", поскольку на этом этапе последовательность 600А преобразований не объединена с последовательностью 600В преобразований. Элемент 601С в последовательности 600А преобразований представляет взаимосвязь с узлом 601С в последовательности 60°C преобразований. Элемент 601D в последовательности 600А преобразований представляет взаимосвязь с узлом 601D в классе 600D последовательностей преобразований.
[0057] Сам по себе, экземпляр 600А последовательности преобразований может функционировать в качестве приложения. Например, значение из источника 601А данных может быть использовано для формирования преобразованного результата в качестве значения адресата 604А данных. Кроме того, значения из источников 601A и 602A данных могут быть преобразованы для получения результирующего значения адресата 603А данных. Если экземпляр 600А последовательности преобразований функционирует сам по себе, то преобразования, ведущие к элементам 601B, 601C and 601D и от них, не оцениваются.
[0058] Последовательность 600В преобразований включает в себя три узла 601B, 602B и 603B. Однако, последовательность 600В преобразований также включает в себя элементы 601A, 602A, 601C и 603C взаимосвязей, которые являются ссылками на некоторые узлы в других последовательностях преобразований. Также и в этом случае, экземпляр 600В последовательности преобразований может функционировать независимо в качестве единственного приложения. Например, значение из источника 601В данных может быть обеспечено для преобразования для генерации результирующего значения для адресата 602В данных. Значение из источника 602В данных может быть обеспечено для преобразования для генерации результирующего значения для адресата 603В данных.
[0059] Хотя экземпляры 600A и 600B последовательностей преобразований могут функционировать независимо, фиг. 7А показывает объединенную последовательность 700А преобразований, которая включает в себя последовательность 600А преобразований, объединенную с последовательностью 600В преобразований. Элементы взаимосвязей в каждой из этих последовательностей преобразований заменены теперь фактическими узлами, на которые имелись ссылки. Например, элемент 601В взаимосвязи фиг. 6А является теперь узлом 601В, а элемент 601А взаимосвязи фиг. 6В является теперь узлом 601А. Все узлы, которые имеют суффикс А или В, являются узлами в последовательности 700А преобразований, и только те узлы, которые имеют суффиксы C или D, являются элементами взаимосвязей. Например, узлы 601A, 602A, 603A, 604A, 601B, 602B и 603B являются узлами в увеличенной последовательности 700А преобразований, и функциональность составного приложения становится несколько лучшей, чем сумма функциональностей отдельных последовательностей 600 A и 600B преобразований самих по себе.
[0060] Последовательность 60°C преобразований включает в себя три узла 601C, 602C и 603C. Однако, последовательность 60°C преобразований также включает в себя элементы 603A, 601B и 603B взаимосвязей, которые являются ссылками на узлы в других последовательностях преобразований. Также и в этом случае, экземпляр 60°C последовательности преобразований может функционировать независимо в качестве единственного приложения. Например, значение из источника 601С данных может быть обеспечено для преобразования для генерации результирующего значения для адресата 602С данных. Подобным образом, значение из источника 601С данных может быть также обеспечено для преобразования для генерации результирующего значения для адресата 603С данных.
[0061] Хотя экземпляры 600A и 60°C последовательностей преобразований могут функционировать независимо, фиг. 7В показывает объединенную последовательность 700В преобразований, которая включает в себя последовательность 600А преобразований, объединенную с последовательностью 60°C преобразований. Элементы взаимосвязей в каждой из последовательностей преобразований заменены теперь фактическими узлами, на которые имелись ссылки, в той мере, в какой элементы взаимосвязей являются ссылками на узлы в любой из последовательностей 600А или 60°C преобразований. Теперь все узлы, которые имеют суффикс А или С, являются узлами в этой последовательности преобразований, и только те узлы, которые имеют суффиксы В или D, являются элементами взаимосвязей. Например, узлы 601A, 602A, 603A, 604A, 601C, 602C и 603C являются узлами увеличенной последовательности 700В преобразований. Функциональность составного приложения становится лучшей, чем сумма функциональностей отдельных экземпляров 600A и 60°C последовательностей преобразований.
[0062] Фиг. 7С показывает объединенную последовательность 70°C преобразований, которая включает в себя класс 600В последовательностей преобразований, объединенный с классом 60°C последовательностей преобразований. Элементы взаимосвязей в каждой из последовательностей преобразований заменены фактическими узлами, на которые имелись ссылки, в той мере, в какой элементы взаимосвязей являются ссылками на узлы в любой из последовательностей 600В или 60°C преобразований. Теперь все узлы, которые имеют суффикс В или С, являются узлами в этой последовательности преобразований, и только те узлы, которые имеют суффиксы А или D, являются элементами взаимосвязей. Например, узлы 601B, 602B, 603B, 601C, 602C и 603C являются узлами в увеличенной последовательности 70°C преобразований, и функциональность составного приложения становится лучшей, чем сумма функциональностей отдельных экземпляров 600В и 60°C последовательностей преобразований.
[0063] Фиг. 8А показывает объединенную последовательность 800А преобразований, которая включает в себя последовательности 600A, 600B и 60°C преобразований, которые также объединены. Элементы взаимосвязей в каждой из последовательностей преобразований заменены фактическими узлами, на которые имелись ссылки, в той мере, в какой элементы взаимосвязей являются ссылками на узлы в любой из последовательностей 600А, 600В или 60°C преобразований. Следует отметить, что теперь все показанные узлы являются фактическими узлами в этой последовательности преобразований, за исключением элемента 601D взаимосвязи. Функциональность составного приложения становится лучшей, чем сумма функциональностей отдельных последовательностей 600А, 600В и 60°C преобразований.
[0064] Последовательность 600D преобразований включает в себя два узла 601D и 602D. Однако, последовательность 600D преобразований также включает в себя единственный элемент 603А взаимосвязи, который является ссылкой на узел в другом классе 600А последовательностей преобразований. Также и в этом случае, экземпляры класса 600D последовательностей преобразований могут функционировать независимо в качестве единственного приложения. Например, значение из источника 601D данных может быть обеспечено для преобразования для генерации результирующего значения для адресата 602D данных.
[0065] Хотя экземпляры 600A и 600D последовательностей преобразований могут функционировать независимо, фиг. 7D показывает объединенную последовательность 700D преобразований, которая включает в себя последовательность 600А преобразований, объединенную с последовательностью 600D преобразований. Элементы взаимосвязей в каждой из последовательностей преобразований заменены теперь фактическими узлами, на которые имелись ссылки, в той мере, в какой элементы взаимосвязей являются ссылками на узлы в любой из последовательностей 600А или 600D преобразований. Теперь все узлы, которые имеют суффикс А или D, являются узлами в этой последовательности преобразований, и только те узлы, которые имеют суффиксы В или C, являются элементами взаимосвязей. Например, узлы 601A, 602A, 603A, 604A, 601D и 602D являются узлами увеличенной последовательности 700D преобразований, и функциональность составного приложения становится несколько лучшей, чем сумма функциональностей отдельных последовательностей 600A и 600D преобразований.
[0066] Следует отметить, что фиг. 7А-7D показывают все возможные перестановки, включающие в себя две и только две из последовательностей 600A, 600B, 60°C и 600D преобразований. Последовательности 600B и 600D преобразований не объединяются прямо ни в одной комбинации двух последовательностей преобразований, поскольку ни одна из этих двух последовательностей преобразований не имеет элемента взаимосвязи, который является ссылкой на узел в другой последовательности преобразований. Кроме того, преобразования 60°C и 600D не объединяются прямо ни в одной комбинации двух последовательностей преобразований, поскольку ни одна из них не имеет ссылки на взаимосвязь с другой последовательностью преобразований.
[0067] Фиг. 8А показывает одну из трех возможных комбинаций трех и только трех из последовательностей 600A, 600B, 60°C и 600D преобразований. Конкретно, фиг. 8А показывает увеличенную последовательность 800А преобразований, которая объединяет последовательности 600A, 600B и 60°C преобразований. Фиг. 8В показывает увеличенную последовательность 800В преобразований, которая объединяет последовательности 600A, 600B и 600D преобразований (в которых все узлы являются частью этой последовательности преобразований, за исключением элементов 601С и 603С взаимосвязей). Фиг. 8С показывает увеличенную последовательность 80°C преобразований, которая объединяет последовательности 600A, 60°C и 600D преобразований (в которых все узлы являются частью этой последовательности преобразований, за исключением элементов 601В и 603В взаимосвязей). Следует отметить, что не существует комбинации последовательностей 600B, 600C, и 600D преобразований, поскольку последовательность 600D преобразований не включает в себя никаких ссылок взаимосвязей на последовательность 600В преобразований (или наоборот) и на последовательность 60°C преобразований (или наоборот). Фиг. 9 показывает объединенную последовательность 900 преобразований, которая включает в себя все объединенные последовательности 600A, 600B, 60°C и 600D преобразований.
[0068] Таким образом, для данных последовательностей 600A, 600B, 60°C и 600D преобразований, связанных с соответствующими устройствами 501-504 в среде, существует 8 возможных составных приложений, которые могут быть сформированы (в соответствии с последовательностями преобразований фиг. 7А-7D, 8А-8С, и фиг. 9). Таким образом, поскольку последовательности преобразований различных устройств объединены и отделены от среды, сама последовательность преобразований изменяется, и структура составного приложения, таким образом, изменяется. Например, изменение в значении источника 601А данных может иметь совсем другое влияние на последовательность преобразований, поскольку результаты этого изменения автоматически распространяются через одно или несколько преобразований, в зависимости от того, находится источник 601А данных только в последовательности 600А преобразований, или в последовательности 700А преобразований, или в последовательности 700В преобразований, или в последовательности 700D преобразований, или в последовательности 800А преобразований, или в последовательности 800В преобразований, или в последовательности 80°C преобразований, или в последовательности 900 преобразований.
[0069] В качестве примера, предположим, что сначала устройство 501 входит в среду, что приводит к использованию последовательности 600А преобразований. Затем, устройство 502 входит в среду, что приводит к объединению последовательности 600В преобразований и последовательности 600А преобразований, что приводит к последовательности 700А преобразований. Таким образом, функционирующая последовательность преобразований меняется с последовательности 600А преобразований на последовательность 700А преобразований. Теперь предположим, что третье устройство 503 входит в среду, что приводит к объединению последовательности 60°C преобразований и последовательности 700А преобразований, что приводит, таким образом, к последовательности 800А преобразований. Таким образом, функционирующая последовательность преобразований меняется с последовательности 700А преобразований на последовательность 800А преобразований. Теперь предположим, что устройство 500В покидает среду. Тогда последовательность 700В преобразований может стать функционирующей. Теперь предположим, что устройство 504 входит в среду, что приводит к объединению последовательности 600D преобразований и последовательности 700В преобразований, что приводит к тому, что последовательность 80°C преобразований становится функционирующей последовательностью преобразований. Теперь предположим, что устройство 50°C покидает среду, что приводит к тому, что последовательность 700D преобразований становится функционирующей. Теперь предположим, что устройство 501 покидает среду, что приводит к тому, что последовательность 600D преобразований становится функционирующей. Наконец, устройство 504 покидает среду, не оставляя никакой функционирующей последовательности преобразований в среде. В этом сценарии, функционирующее приложение изменяет структуру (и, таким образом, изменяет функциональность) семь раз следующим образом: 1) сначала последовательность 600А преобразований, 2) затем переход к последовательности 700А преобразований, 3) затем переход к последовательности 800А преобразований, 4) затем переход к последовательности 700В преобразований, 5) затем переход к последовательности 80°C преобразований, 6) затем переход к последовательности 700D преобразований, 7) затем завершение последовательностью 600D преобразований.
[0070] Фиг. 10 показывает блок-схему последовательности операций способа 1000 для подготовки к обеспечению функционирования составного приложения, представленного множественными объединенными экземплярами последовательностей преобразований. Способ 1000 может быть выполнен любым из устройств 501-507, которые находятся в пределах среды 500. Альтернативно или дополнительно, способ 1000 может быть выполнен за пределами устройств 501-507, например, внешней системой 510 фиг. 5. Например, внешняя система 510 может быть услугой, обеспеченной в среде облачных вычислений. Независимо от того, где выполняется способ 1000, фиг. 11 показывает систему 1100, которая может выполнить способ 1000. Таким образом, независимо от того, включена система 1100 в одно или несколько устройств 501-507, или система 1100 является внешней системой 510 фиг. 5, или при комбинации этих двух вариантов, способ 1000 будет теперь описан с частыми ссылками на систему 1100 фиг. 11.
[0071] Способ 1000 включает в себя два действия 1001 и 1002, которые не имеют никаких временных взаимосвязей. Например, способ включает в себя идентификацию взаимосвязей между разными классами последовательностей преобразований (действие 1001). Эти взаимосвязи являются, по существу, авторизациями, создаваемыми автором класса, который сгенерировал класс, для обеспечения возможности взаимодействия экземпляров разных классов последовательностей преобразований (при условии дополнительного подтверждения на основе экземпляров).
[0072] Например, система 1100 включает в себя логический компонент 1101 и библиотеку 1110 определений классов преобразований, которая, как показано, включает в себя шесть определений 1111-1116 классов последовательностей преобразований. Однако, многоточие 1117 указывает на то, что библиотека 1110 определений классов последовательностей преобразований может включать в себя любое количество определений классов последовательностей преобразований. В качестве примера, предположим, что определения 1111, 1112, 1113 и 1114 классов последовательностей преобразований, соответственно, определяют классы 600A, 600B, 60°C и 600D последовательностей преобразований фиг. 6A-6D. Поскольку каждый класс последовательностей преобразований определяет элементы взаимосвязей, система 1100 может использовать библиотеку 1110 для идентификации взаимосвязей между разными классами последовательностей преобразований.
[0073] Например, при обнаружении элемента 601В взаимосвязи последовательности 600А преобразований, и элемента 601А в последовательности 600В преобразований, логический компонент 1101 может идентифицировать взаимосвязь между узлами 601А и 601В, которая могла бы существовать, если бы классы 600А и 600В последовательностей преобразований были объединены, или если бы экземпляры классов были объединены. Логический компонент 1101 может получить, что авторы обеих последовательностей 600А и 600В преобразований разрешают авторизацию объединения (предположим, что пользователи также разрешают авторизацию на уровне экземпляров на этапе выполнения) в этих элементах взаимосвязей.
[0074] Способ 1000 также включает в себя идентификацию (действие 1002) устройств, которые связаны с экземплярами любого из классов последовательностей преобразований. Устройства могут сами идентифицировать себя в системе 100 с использованием, возможно, идентификатора устройства, а также могут потенциально идентифицировать любые классы последовательностей преобразований, которые устройства желают использовать. Альтернативно, система 1100 может иметь конкретный класс преобразований, принимаемый по умолчанию, связанный с каждым устройством, и, таким образом, возможно, может принимать только идентификатор устройства. Могут существовать некоторые классы последовательностей преобразований, на использование которых у устройства имеется лицензия, и другие классы последовательностей преобразований, на использование которых у устройства нет лицензии.
[0075] Например, система 1100 также включает в себя регистрации 1120 устройств, которые включают в себя регистрации устройств, связанных с различными классами последовательностей преобразований. Например, регистрации 1120 устройств включают в себя пять регистраций 1121-1125 устройств, хотя многоточие 1126 указывает на то, что регистрации 1120 устройств могут включать в себя любое количество регистраций устройств. Кроме того, регистрации 1120 устройств могут сохраняться долговременно и/или могут сохраняться только кратковременно. В любом случае, система 1100 идентифицирует множественные устройства и находит соответствующие последовательности преобразований для этих устройств. Только в качестве примера, предположим, что устройства 501-504 фиг. 5 связаны с регистрациями 1121-1124. При такой связи, система 1100 может детектировать, что экземпляры 600A, 600B, 600C, 600D последовательностей преобразований (соответственно, определяемые определениями 1111, 1112, 1113 и 1114 классов последовательностей преобразований) являются, соответственно, связанными с этими устройствами 501-504.
[0076] В некоторых вариантах осуществления, система 1100 сама выполняет представление экземпляра конкретного класса последовательностей преобразований для соответствующего устройства. Например, после идентификации того, что класс 600А последовательностей преобразований связан с устройством 501, система 1100 может управлять представлением экземпляра 600А последовательности преобразований для устройства 501. Таким образом, в качестве входных данных, принимаемых от устройства, система 1100 идентифицирует изменение, связанное с конкретным узлом в последовательности преобразований, и распространяет последовательности по всей последовательности преобразований. Это называется «операторским подходом». Этот операторский подход имеет некоторые преимущества, состоящие в том, что обработка может быть переброшена на устройства или системы или облачные среды, которые имеют большие возможности обработки, чем возможности обработки устройства, которое обеспечивает сами входные данные.
[0077] В другом подходе, называемом здесь «автоматическим» подходом, устройство, связанное с классом преобразований, само выполняет экземпляр этого класса. При обнаружении взаимосвязи с другой последовательностью преобразований, связанной с другим устройством, данные могут передаваться напрямую (например, через одноранговую сеть) к этому устройству, если это другое устройство также вовлечено в автоматический подход. Альтернативно, устройство может передавать данные к другому устройству непрямо (например, через внешнюю систему или облачную среду). Если внешняя система 510 выполняет представление экземпляра класса последовательностей преобразований для этого другого устройства, то это устройство может, вместо этого, передавать данные к внешней системе 510 для дальнейшего распространения в остальной части последовательности преобразований.
[0078] Фиг. 12 показывает блок-схему последовательности операций способа 1200 для объединения двух экземпляров классов преобразований. Сначала подтверждают, что классы последовательностей преобразований относятся к тем типам, которые могут быть объединены (действие 1201). Например, если классы последовательностей преобразований не имеют ссылок друг на друга, то тогда, возможно, не существует авторизации на основе классов для объединения экземпляров соответствующих классов. Например, класс 600D последовательностей преобразований не может быть объединен с классом 600В последовательностей преобразований или классом 60°C последовательностей преобразований, поскольку класс 600D последовательностей преобразований не имеет ссылок на элементы в классе 600В или 60°C последовательностей преобразований. Однако, класс 600D последовательностей преобразований может быть объединен с классом 600А последовательностей преобразований, поскольку они содержат взаимные ссылки взаимосвязей друг на друга.
[0079] В этом примере, однако, хотя класс 600D последовательностей преобразований не может быть прямо объединен с классами 600В и 60°C последовательностей преобразований, класс 600D последовательностей преобразований может быть объединен с последовательностями 700A, 700B, и 800A преобразований, даже несмотря на то, что эти последовательности 700A, 700B, и 800A преобразований включают в себя одну или две из последовательностей 600В и 60°C преобразований.
[0080] Однако, в альтернативном варианте осуществления, автор класса последовательностей преобразований может задавать дополнительные ограничения на объединение с другими классами последовательностей преобразований. Например, автор может указать общее ограничение, состоящее в том, что объединение с конкретным экземпляром класса преобразований не разрешено, если этот экземпляр класса преобразований уже является составной последовательностью преобразований и/или если составная последовательность преобразований имеет конкретную составляющую последовательность преобразований. Например, при объединении двух экземпляров последовательностей преобразований, система 1100 может отслеживать идентичности классов преобразований, которые использовались для создания составной последовательности преобразований вплоть до данного момента времени. Этот список может быть использован для подтверждения того, удовлетворяются ли условия для авторизации на основе классов.
[0081] Автор может также выразить ограничения в гранулярности единственной взаимосвязи. Например, в элементе 601В взаимосвязи класса 600А последовательностей преобразований, автор может выразить то, что объединение авторизовано на этом элементе взаимосвязи, только если последовательность преобразований, с которой он соединяется, не включает в себя идентифицированный класс последовательностей преобразований, автором которого является конкурент. Автор может также контролировать данные, которые передаются из последовательности преобразований к другой объединенной последовательности преобразований, посредством записи ограничений или условий в преобразование, которое может перекрывать саму взаимосвязь (например, между узлами 601А и элементом 601В взаимосвязи).
[0082] Однако, даже несмотря на то, что классы последовательностей преобразований могут взаимодействовать, это не означает, что пользователь желает объединения своего конкретного экземпляра данного класса последовательностей преобразований с другими экземплярами других классов последовательностей преобразований. Все-таки, сами данные (например, состояние экземпляра) могут быть важными для пользователя. Таким образом, способ 1200 также включает в себя определение того, что экземпляры разных классов последовательностей преобразований подлежат объединению (действие 1202).
[0083] Критерии объединения для авторизации объединения двух экземпляров разных классов последовательностей преобразований могут включать в себя одно или несколько из следующего: присутствует ли пользователь или нет в списке участников собрания, отношения (например, семья, дружба в социальной сети, и т.п.) пользователей различных устройств, возможность установления связи (например, ближнего действия) между устройствами, близость соответствующих устройств (например, в одном и том же конференц-зале), запрос пользователей, и т.п. Например, критерии объединения могут включать в себя некоторые бизнес-критерии, например, находятся ли соответствующие пользователи экземпляров в одной и той же команде. В качестве другого примера, одно устройство может быть информационным киоском в торговом помещении или гостинице, причем пользователь использует этот информационный киоск, и продавец или консьерж могут автоматически использовать свое устройство для объединения своей последовательности преобразований с последовательностью преобразований информационного киоска для взаимодействия, таким образом, с пользователем с использованием составного приложения. К критериям объединения могут быть применены условия. Например, устройство сотрудника гостиницы может быть способно объединиться с приложением пользователя, если консьержа нет рядом (может быть детектировано, что консьерж не использует активно образующее пару приложение, подходящее для объединения с приложением пользователей, или не находится в сети).
[0084] Если экземпляр класса последовательностей преобразований, связанный с устройством, подлежит запуску в состоянии, принимаемым по умолчанию, определяемым этим классом, то при операторском подходе устройство может загрузить данные экземпляра (например, значения в каждом из узлов последовательности преобразований, связанной с устройством) в систему 1100 (действие 1203). При автоматическом подходе, возможно, данные экземпляра загружаются в систему 1100 только в граничных узлах.
[0085] Экземпляр последовательности преобразований, затем, объединяется с остальной частью последовательности преобразований (действие 1204). Например, это может быть выполнено посредством осуществления поиска в исходном экземпляре последовательности преобразований элементов взаимосвязей, которые соответствуют узлам в целевом экземпляре последовательности преобразований. После нахождения такого элемента взаимосвязи, этот элемент взаимосвязи заменяется на фактический идентифицированный узел в целевом экземпляре последовательности преобразований, что создает, таким образом, фактическую связь между исходным и целевым экземплярами последовательностей преобразований. Это повторяется для всех таких найденных элементов взаимосвязей в исходном экземпляре последовательности преобразований, которые идентифицируют узлы в целевом экземпляре последовательности преобразований. Если существуют элементы взаимосвязей, найденные в исходном экземпляре последовательности преобразований, которые не соответствуют узлам в целевом экземпляре последовательности преобразований, то тогда эти элементы взаимосвязей остаются элементами взаимосвязей в объединенном экземпляре последовательности преобразований.
[0086] Следует отметить, что в примерах фиг. 6A-6D, никакие из классов 600A-600D последовательностей преобразований не включают в себя элементы взаимосвязей, которые являются ссылками на тот же самый класс. Однако, принципы, описанные здесь, могут функционировать, даже если экземпляр конкретного класса последовательностей преобразований может иметь элемент взаимосвязи, который является ссылкой на другой узел в другом экземпляре того же самого конкретного класса последовательностей преобразований. Кроме того, если разрешено объединение с конкретным узлом, то множественные узлы от одного или нескольких разных экземпляров последовательностей преобразований могут объединиться с этим конкретным узлом.
[0087] После объединения, последовательность преобразований увеличивается, и данные передаются в увеличенной последовательности преобразований (действие 1205), подобно тому, как если бы эта последовательность преобразований была исходно авторизована в увеличенном виде изначально. Например, после объединения экземпляра класса 600А последовательностей преобразований с экземпляром класса 600В последовательностей преобразований, результатом является единственный экземпляр класса 700А последовательностей преобразований. После объединения экземпляра класса 600А последовательностей преобразований с экземпляром класса 60°C последовательностей преобразований, результатом является единственный экземпляр класса 700В последовательностей преобразований. После объединения экземпляра класса 600В последовательностей преобразований с экземпляром класса 60°C последовательностей преобразований, результатом является единственный экземпляр класса 70°C последовательностей преобразований. После объединения экземпляра класса 600А последовательностей преобразований с экземпляром класса 600D последовательностей преобразований, результатом является единственный экземпляр класса 700D последовательностей преобразований.
[0088] Экземпляр класса 800А последовательностей преобразований может быть сформирован либо посредством объединения экземпляров классов 700A и 60°C последовательностей преобразований, либо посредством объединения экземпляров классов 600A и 70°C последовательностей преобразований. Экземпляр класса 800В последовательностей преобразований может быть сформирован посредством объединения экземпляров классов 700A и 600D последовательностей преобразований. Экземпляр класса 80°C последовательностей преобразований может быть сформирован посредством объединения экземпляров классов 700В и 600D последовательностей преобразований. Эта операция объединения может быть выполнена много раз для создания, таким образом, очень большой последовательности преобразований в ситуациях, когда существует много устройств, доступных для взаимодействия в данной среде.
[0089] Таким образом, после объединения (действие 1204), данные могут свободно передаваться (действие 1205) в увеличенной последовательности преобразований, даже через бывшие границы между составляющими последовательностями преобразований. Например, в последовательности 700А преобразований фиг. 7А, данные могут свободно передаваться (без участия пользователя интерфейса прикладных программ и без вызовов функций) от узла 601А к узлу 601В (через соответствующее преобразование (преобразования)), точно так же, как данные могут передаваться от узла 601А к узлу 604А (через соответствующее преобразование (преобразования)).
[0090] Таким образом, эта система может быть использована для объединения преобразований, связанных с большим разнообразием устройств, относительно автоматизированным и удобным способом, для увеличения, таким образом, последовательности преобразований составного приложения, которое совместно используется множественными устройствами. Это обеспечивает возможность большого разнообразия сценариев.
[0091] Например, предположим, что люди прибывают на собрание в конкретный конференц-зал. После того, как первый пользователь входит в конференц-зал с компактным портативным компьютером и смартфоном, экземпляр последовательности преобразований, связанный со смартфоном, объединяется с экземпляром последовательности преобразований компактного портативного компьютера таким образом, что единственное приложение эффективно выполняется на смартфоне и компактном портативном компьютере первого пользователя. Второй пользователь входит в конференц-зал немного позже. Второй пользователь также приглашен на собрание, и поэтому последовательность преобразований смартфона пользователя объединяется с существующей составной последовательностью преобразований для дальнейшего увеличения последовательности преобразований. Затем, телевизионный экран автоматически включается для вывода некоторых данных, связанных с собранием. Третий пользователь входит с планшетным компьютером, и он также является приглашенным на собрание. Таким образом, последовательность преобразований, связанная с планшетным компьютером, объединяется с составной последовательностью преобразований для дальнейшего увеличения последовательности преобразований. Таким образом, когда большее количество устройств объединяется в среде, подходящей для объединения последовательностей преобразований, приложение, выполняемое во всех устройствах, фактически, увеличивается, что изменяет, таким образом, функциональность самого приложения. Множественные пользователи могут совместно использовать эту среду таким образом, чтобы множественные пользователи обнаруживали каждое из по меньшей мере одного или нескольких устройств.
[0092] Фиг. 13 показывает блок-схему последовательности операций способа 1300 для отсоединения последовательностей преобразований. Точно так же, как существует способ для объединения последовательностей преобразований, когда устройства входят в среду, существует способ для отсоединения последовательностей преобразований, когда устройства выходят из среды. Сначала, система определяет, что экземпляр класса последовательностей преобразований подлежит отсоединению (действие 1301). В ответ, прерывается поток данных к этому экземпляру и от него (действие 1302). Критерии отсоединения, используемые для определения того, что экземпляр должен быть отсоединен, могут включать в себя любые критерии, и, в качестве примера, могут включать в себя одно или несколько из: близости устройства, связанного с экземпляром, к другим устройствам в среде, состояние окончания собрания, возможность установления связи между устройством, связанным с экземпляром, и другими устройствами в среде, запрос пользователя, и т.д. Таким образом, последовательности преобразований могут изменяться динамически, когда устройства входят в среду и выходят из нее.
[0093] В одном варианте осуществления, система 1100 включает в себя услугу 1150 представления. Один или несколько узлов экземпляра последовательности преобразований, который выполняется, может управлять воспроизведением на одном или нескольких окружающих устройствах. Подобным образом, одно или несколько устройств могут обеспечить входные данные для одного или нескольких узлов экземпляра последовательности преобразований. Например, предположим, что экземпляр последовательности 900 преобразований выполняется в среде 500 фиг. 5, и что устройства 501-504 связаны с экземплярами соответствующих классов 600A-600D последовательностей преобразований, что приводит, таким образом, к экземпляру увеличенного класса 900 преобразований. Со ссылкой на фиг. 9, предположим, что узлы 601A и 601C являются входными узлами, а узлы 604A, 603B, 602C и 602D являются выходными узлами. Услуга 1150 представления может выбрать, какие устройства могут обеспечить входные данные для узлов 601А и 601С, и, в таком случае, какие преобразования должны быть выполнены. В одном примере, устройства связаны с соответствующими им участками их последовательностей преобразований таким образом, что входные узлы в пределах этих соответствующих участков обеспечены соответствующими устройствами. Таким образом, по умолчанию, входной узел 601А, который исходно является частью последовательности 600А преобразований, может быть обеспечен входными данными от устройства 501 (после, потенциально, некоторого преобразования (преобразований)). Также, по умолчанию, входной узел 601С, который исходно является частью последовательности 60°C преобразований, может быть обеспечен входными данными от устройства 503 (после, потенциально, некоторого преобразования (преобразований)). Услуга 1150 представления может также выбрать, какие устройства должны воспроизвести выходные данные от узлов 604A, 603B, 602C и 602D, и какие преобразования (при наличии) должны быть выполнены.
[0094] Фиг. 14 показывает блок-схему последовательности операций способа 1400 для воспроизведения выходных данных последовательности преобразований в среде множественных устройств. Способ 1400 может быть выполнен системой 1100 фиг. 11, или, возможно, услугой 1150 представления фиг. 11. Логический компонент 1101 определяет (действие 1401), что некоторый конкретный узел (узел представления) экземпляра класса последовательностей преобразований изменился. Например, в этом примере, каждый из узлов 604A, 603B, 602C и 602D является выходным узлом, или «узлом представления».
[0095] Логический компонент также идентифицирует характеристики (действие 1402) множественных устройств-кандидатов, на которых может быть воспроизведена по меньшей мере версия этих измененных выходных данных. Например, логический компонент 1101 может сослаться на реестр 1120 устройств и/или опросить устройства напрямую, для определения возможностей воспроизведения каждого устройства. Характеристики каждого устройства могут также включать в себя расположение каждого пользователя рядом с устройством.
[0096] Затем, система выбирает (действие 1403) по меньшей мере одно из устройств-кандидатов, на котором следует воспроизвести по меньшей мере эту версию воспроизведения на основе идентифицированных характеристик. Система делает выбор для максимизации пригодности к использованию выходных данных. Например, если выходные данные предназначены для всех пользователей, и все пользователи физически присутствуют, то выходные данные могут быть воспроизведены на большем экране. Если выходные данные являются интерактивными и требуют входных данных от конкретного устройства, то это устройство может быть выбрано для вывода данных.
[0097] Система определяет, должны ли быть применены какие-либо преобразования (блок 1404 выбора) к воспроизведению перед фактическим выводом данных на устройство. Преобразования учитывают пригодность выбранного устройства (устройств), причем преобразования могут различаться в зависимости от выбранного для воспроизведения устройства (устройств). Экземпляры преобразований включают в себя изменение типа воспроизведения (например, замена текстового сообщения на речевое сообщение, замена речевого сообщения на текстовое сообщение, замена видеоинформации на текстовое сообщение, замена текстового сообщения на видеоинформацию, и т.д.). Преобразования может также включать в себя экранизацию выходных данных. Например, на основании входных данных может быть создана видеоинформация, в которой может быть обеспечен и, возможно, изменен соответствующим образом фон, и движущиеся элементы могут быть помещены в видеоинформацию или удалены из нее.
[0098] Если преобразования должны быть выполнены («Да» в блоке 1404 выбора), то тогда эти преобразования выполняются (действие 1405). Наконец, воспроизведение осуществляется на выбранном устройстве (действие 1406). Таким образом, составная последовательность преобразований может принимать входные данные от любого устройства в любой форме, и преобразовывать эти входные данные, при необходимости, в форму, которая распознается входным узлом составной последовательности преобразований. Таким образом, эти входные данные распространяются по последовательности преобразований. Если значения одного или нескольких узлов представления изменяются, то соответствующее устройство может быть выбрано для воспроизведения выходных данных. Таким образом, наиболее подходящее устройство для воспроизведения может быть выбрано независимо от того, какое устройство было связано с участком последовательности преобразований, который содержит узел представления. Например, изменения в значении узла 604A представления не обязательно должны воспроизводиться исключительно или даже полностью на устройстве 501, которое соответствует экземпляру 600А последовательности преобразований. В некоторых вариантах осуществления, воспроизведение может включать в себя преобразование информации в некоторое физическое действие, включающее в себя некоторый тип перемещения. Например, воспроизведение может включать в себя открывание или закрывание двери, открывание или закрывание клапана, отпирание или запирание двери, включение или выключение телевизора, и т.д.
[0099] Подробный сценарий (называемый здесь «сценарием устройств») будет теперь описан в отношении фиг. 15A-15M (называемых в совокупности «фиг. 15»). Этот сценарий обеспечен в качестве только одного из бесконечного множества сценариев, которые могут быть обеспечены в соответствии с более широкими принципами, описанными здесь. В этом сценарии, пользователь заказывает различные вычислительные устройства. Сценарий включает в себя четыре устройства 1501, 1502, 1503 и 1504, хотя сценарий начинается на фиг. 15А только с двумя видимыми устройствами 1501 и 1502. Каждое из четырех устройств 1501-1504 участвует в обеспечении входных данных для составного приложения и в приеме от него выходных данных.
[00100] Фиг. 15А вводит два устройства 1501 и 1502, которые являются компактными портативными компьютерами. Предположим, что эти два устройства 1501 и 1502 являются исходно единственными устройствами в операционной среде, и, таким образом, их соответствующие последовательности преобразований объединены. Последовательность преобразований, связанная с устройством 1501, обеспечивает возможность осуществления поиска и выбора производителя. Последовательность преобразований, связанная с устройством 1502, обеспечивает возможность осуществления поиска списка устройств, предлагаемых производителем, а также обеспечивает пользователю возможность изменения количества любых устройств в списке.
[00101] Более конкретно, устройство 1501 обеспечивает пользователю возможность горизонтальной прокрутки некоторого количества производителей и выбора некоторого производителя. На фиг. 15А, устройство 1501 показывает только три таких производителя, обозначенных «Продавец 7», «Продавец 8» и «Продавец 9», причем пользователь выбрал «Продавец 8». С другой стороны, устройство 1502 показывает горизонтально прокручиваемый список устройств, которые обеспечены продавцом, выбранным в устройстве 1501. На фиг. 15А, поскольку Продавец 8 выбран на устройстве 1501, устройство 1502 показывает список устройств, обеспеченных Продавцом 8. Каждый элемент в списке устройств включает в себя изображение 1505 устройства, наименование 1506 устройства, стоимость 1507 одного устройства, и количество 1508 заказываемых устройств. Количеством для каждого устройства можно управлять с использованием соответствующего средства управления прокруткой.
[00102] Фиг. 15В показывает состояние сценария, которое отличается от состояния фиг. 15А тем, что пользователь прокрутил список производителей влево и также выбрал «Продавец 4». Соответственно, выходные данные от устройства 1502 автоматически изменяются для отображения списка устройств, производимых Продавцом 4. Для выполнения этого, данные передаются автоматически (без использования интерфейса прикладных программ) от последовательности преобразований, связанной с устройством 1501, к последовательности преобразований, связанной с устройством 1502.
[00103] Фиг. 15С показывает состояние сценария, которое отличается от состояния фиг. 15В тем, что пользователь прокрутил список производителей влево и также выбрал «Продавец 2». Соответственно, выходные данные от устройства 1502 автоматически изменяются для отображения списка устройств, производимых Продавцом 2. Для выполнения этого, данные снова передаются автоматически от последовательности преобразований, связанной с устройством 1501, к последовательности преобразований, связанной с устройством 1502.
[00104] Фиг. 15D показывает состояние сценария, которое отличается от состояния фиг. 15С тем, что пользователь использовал средства 1511 и 1512 управления прокруткой, отображенные на устройстве 1502, для изменения заказываемого количества для двух устройств, предлагаемых Продавцом 2. Фиг. 15Е показывает состояние сценария, которое отличается от состояния фиг. 15D тем, что пользователь использовал устройство 1502 для прокрутки вправо по списку устройств, предлагаемых Продавцом 2, и дополнительно использовал средства 1513 и 1514 управления прокруткой, отображенные на устройстве 1502, для изменения заказываемого количества для двух дополнительных устройств, предлагаемых Продавцом 2. Соответственно, на этом этапе, пользователь ввел количества заказываемых устройств для четырех устройств, предлагаемых Продавцом 2.
[00105] Фиг. 15F показывает состояние сценария, которое отличается от состояния фиг. 15Е тем, что в среду введено третье устройство 1503. Например, третье устройство 1503 может быть связано с последовательностью преобразований, которая отображает максимальную стоимость единицы продукции и общую стоимость всего заказа. После введения устройства 1503 в среду, этот участок последовательности преобразований объединяется с существующей составной последовательностью преобразований, что изменяет, таким образом, функциональность составного приложения, для вывода теперь таких данных о стоимости на устройство 1503. После объединения с этим экземпляром последовательности преобразований, данные, представляющие количества, а также стоимости единиц продукции, передаются к этому участку последовательности преобразований, что вызывает непосредственное пополнение данных устройства 1503. Следует отметить, что передачи данных также происходят в противоположном направлении, поскольку устройство 1503 указывает максимальную цену единицы продукции и, таким образом, список устройств, показываемый на устройстве 1502, ограничивается любыми устройствами с ценами ниже максимальной цены единицы продукции. В этом случае, все ранее указанные в списке устройства попали в диапазон цен ниже максимальной цены единицы продукции и, таким образом, нет никакого изменения в воспроизведении на устройстве 1502.
[00106] Фиг. 15G показывает состояние сценария, которое отличается от состояния фиг. 15F тем, что пользователь использовал средство 1515 управления прокруткой на устройстве 1502 для ввода количества для еще одного устройства, предлагаемого Продавцом 2. Данные количества и данные о цене единицы продукции передаются в участок последовательности преобразований, соответствующий устройству 1503, что приводит к изменению в общей стоимости, отображаемой на устройстве 1503.
[00107] Фиг. 15Н показывает состояние сценария, которое отличается от состояния фиг. 15G тем, что пользователь настроил в направлении уменьшения максимальную цену единицы продукции до значения $987 с использованием средства 1506 управления прокруткой на устройстве 1503. Данные об этом изменении максимальной цены единицы продукции были переданы от участка последовательности преобразований, связанного с устройством 1503, к участку последовательности преобразований, связанному с устройством 1502, что вызвало удаление из списка нескольких устройств, предлагаемых Продавцом 2. Если пользователь повысит эту сумму, то эти удаленные элементы будут автоматически добавлены обратно в список, что, возможно, вернет устройство 1502 в состояние, показанное на фиг. 15G.
[00108] Фиг. 15I показывает состояние сценария, которое отличается от состояния фиг. 15G тем, что в среду введено четвертое устройство 1504. Например, четвертое устройство 1504 может быть связано с последовательностью преобразований, которая отображает максимальный вес устройства. После введения устройства 1504 в среду, этот участок последовательности преобразований объединяется с существующей составной последовательностью преобразований, что обеспечивает, таким образом, изменение функциональности составного приложения, для вывода теперь таких данных о стоимости. После объединения с этим экземпляром последовательности преобразований, данные, представляющие максимальный вес, передаются от участка последовательности преобразований, связанного с устройством 1504, к участку последовательности преобразований, связанному с устройством 1502. Устройство 1502 реагирует посредством отображения предупреждений 1518A, 1518B, 1518C и 1518D об избыточном весе, связанных с каждым устройством, которое имеет вес, больший максимального веса. В данный момент, на фиг. 151, этот вес составляет всего 606 г, и, таким образом, все устройства в списке имеют такие предупреждения.
[00109] Фиг. 15J показывает состояние сценария, которое отличается от состояния фиг. 15I тем, что пользователь использовал средство 1516 управления прокруткой на устройстве 1504 для увеличения максимального веса до веса свыше 2 килограмм. Данные об изменении максимального веса передаются из участка последовательности преобразований, связанного с устройством 1504, к участку последовательности преобразований, соответствующему устройству 1502, что приводит к удалению предупреждений 1518C и 1518D об избыточном весе (предупреждения 1518А и 1518В об избыточном весе остаются).
[00110] Это завершает сценарий с точки зрения пользователя. Фиг. 15K-15О показывают, что во время разработки, автор может декларативно изменить преобразования, чтобы таким образом изменить функциональность составного приложения. На фиг. 15К показано, что элемент 1520 пользовательского интерфейса включает в себя декларативное преобразование, которое отфильтровывает те устройства, которые имеют предлагаемую производителем розничную цену, которая является меньшей, чем значение, указанное ползунком 1516. Фиг. 15L показывает, что это ограничение теперь удалено, и, таким образом, отображенные устройства теперь не отфильтрованы по значению ползунка 1516.
[00111] На фиг. 15М показано, что элемент 1521 пользовательского интерфейса определяет цвет подсветки, используемый для предлагаемой производителем розничной цены. Фиг. 15М показывает, что цвет подсветки теперь зависит от того, выше или нет предлагаемая производителем розничная цена значения, указанного ползунковым средством 1516 управления. Если это так, то цвет подсветки изменяется, например, на зеленый цвет. Фиг. 15О показывает, что поскольку ползунковое средство 1516 управления в этой ситуации перемещено в сторону увеличения, поведение составного приложения изменилось с состояния, в котором устройства удаляются из списка, если их предлагаемая производителем розничная цена является большей, чем значение ползункового средства 1516 управления, на состояние, в котором предлагаемая производителем розничная цена (по сравнению со значением ползунка 1516) управляет подсветкой предлагаемой производителем розничной цены.
[00112] Таким образом, было описано представление выходных данных последовательности преобразований на устройствах таким образом, чтобы изменение в значении в узле представления вызывало событие воспроизведения. В ответ на изменение в значении узла представления, система представления идентифицирует характеристики различных устройств, которые могут быть использованы для воспроизведения соответствующих выходных данных. Система представления идентифицирует подходящее устройство на основе идентифицированных характеристик этого устройства. Система представления, затем, обеспечивает воспроизведение по меньшей мере одной версии выходных данных на выбранном устройстве, возможно, даже с преобразованием выходных данных способом, подходящим для выбранного устройства. В некоторых вариантах осуществления, последовательность преобразований может быть составной последовательностью преобразований, создаваемой посредством объединения множественных составляющих последовательностей преобразований.
[00113] Настоящее изобретение может быть осуществлено в других конкретных формах, не выходя за рамки своей сущности или существенных характеристик. Описанные варианты осуществления должны во всех отношениях рассматриваться как иллюстрации, а не как ограничения. Объем настоящего изобретения указан, таким образом, прилагаемой формулой изобретения, а не предшествующим описанием. Все изменения, которые попадают в пределы смысла и диапазона эквивалентности формулы изобретения, должны быть включены в пределы ее объема.