跨多个设备的复合应用演示的制作方法

文档序号:12287767阅读:168来源:国知局
跨多个设备的复合应用演示的制作方法与工艺

计算技术已经变革了我们工作、游戏以及通信的方式。随着计算技术进步,实现这样的计算系统或显示来自计算系统的内容的各种设备也进步。例如,计算系统可以采取服务器机架、台式计算机、膝上型计算机、平板、智能电话、游戏控制台、手表、冰箱、智能住宅等的形式。

与计算系统的多样性一起,可被用来向计算机渲染计算输出和输入信息的各类型的设备同样多样化。例如,输出设备可包括诸如投影仪、电视机监视器、三维显示器、膝上型计算机、平板计算机、电话等显示器。输出设备可包括声音的输出,诸如扬声器。输出设备还可包括致动器、灯、阀,等等。输入设备可包括键盘、定点设备(诸如鼠标)、触摸屏、话筒、摄像机、静止相机、三维位置检测器、全球定位系统监视器、光传感器、加速度计、温度计、指南针,等等。

计算系统和相关联的输入和输出设备已变得相当丰富且通常是移动的。通常,在任何给定位置,可存在大量且各种各样的设备。例如,在满员的平均会议室中,可存在在头顶上的投影仪、电视机屏幕、膝上型计算机、平板、智能电话、话筒、相机、灯光,等等。常规范例是每一设备运行其自己的应用,或者显示来自单个应用的内容。在各应用交互时,它们通常作为分开的应用来交互,通过应用程序接口进行交互。

本文要求保护的主题不限于解决任何缺点或仅在诸如上述环境这样的环境中操作的各实施例。相反,提供该背景仅用于例示其中可实施所述一些实施例的一个示例性技术领域。

简要概述

本文描述的至少一些实施例涉及促进变换链输出在各设备上的演示。变换链包括驱动输出的渲染的一个或多个演示节点,使得演示节点中的值的变化引起渲染发生。响应于演示节点的值的变化,演示系统标识可被用来渲染对应输出的特性或各设备。演示系统基于设备的所标识的特性来标识适当的设备。演示系统随后促进输出的至少一个版本在所选设备上的渲染,可能甚至按适于所选设备的方式变换该输出。在一些实施例中,变换链可以是通过联合多个组成变换链来构造的复合变换链。

本概述并非旨在标识出要求保护的主题的关键特征或必要特征,亦非旨在用作辅助确定要求保护的主题的范围。

附图简述

为了描述能够获得上述和其它优点和特征的方式,各实施例的更具体的描述将通过参考各附图来呈现。可以理解,这些附图只描绘了示例实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释各实施例,在附图中:

图1抽象地示出了其中可采用本文中所描述的一些实施例的计算系统;

图2抽象地解说简单变换链,其中仅存在耦合单个数据源和单个数据目标的单个链,并且其中由该链表示的变换是使用数据源中的值作为输入来自动执行的以生成数据目标中的值;

图3抽象地解说另一简单示例变换链,其中变换是使用来自三个数据源的输入值来执行的以生成两个数据目标中的输出值;

图4解说图2的变换链和图3的变换链的组合的形式的变换链;

图5解说本文描述的原理可在其中操作并且包括与复合应用的各组成变换链相关联的多个设备且还包括输入设备和输出设备的示例环境;

图6A到6D各自解说可以与图5中的相应设备相关联的示例变换链(不与另一变换链联合的、数据不在其上流动的箭被示为带有“X”,并且并非变换链本身的节点的依存关系元素被示为带有虚线边界);

图7A解说了表示图6A和6B的变换链的联合的经扩充变换链;

图7B解说了表示图6A和6C的变换链的联合的经扩充变换链;

图7C解说了表示图6B和6C的变换链的联合的经扩充变换链;

图7D解说了表示图6A和6D的变换链的联合的经扩充变换链;

图8A解说了表示图6A、6B和6C的变换链的联合的经扩充变换链;

图8B解说了表示图6A、6B和6D的变换链的联合的经扩充变换链;

图8C解说了表示图6A、6C和6D的变换链的联合的经扩充变换链;

图9解说了表示图6A、6B、6C和6D的变换链的联合的经扩充变换链;

图10解说了用于准备促进复合应用的方法的流程图;

图11抽象地解说了可被用来执行图10、12、13以及14的方法且包括变换链类定义和设备注册的库以及演示服务的系统;

图12解说了用于联合变换链类的两个实例的方法的流程图;

图13解说了用于将变换链从较大变换链解耦的方法的流程图;

图14解说了用于将变换链的一个或多个演示节点中的变化渲染在适当的设备上的方法的流程图;

图15A到15J解说了可在本文中称为“设备场景”的场景中体验到的各种用户界面,在该场景中用户要定购数个设备;以及

图15K到15O解说了改变在图15A到15J的设备场景中使用的复合应用可遇到的各种用户界面。

详细描述

本文描述的至少一些实施例涉及促进各设备上输出的变换链的演示。变换链包括驱动输出的渲染的一个或多个演示节点,使得演示节点中的值的变化引起渲染发生。响应于演示节点的值的变化,演示系统标识可被用来渲染对应输出的特性或各设备。演示系统基于设备的所标识的特性来标识适当的设备。演示系统随后促进输出的至少一个版本在所选设备上的渲染,可能甚至按适于所选设备的方式变换该输出。在一些实施例中,变换链可以是通过联合多个组成变换链来构造的复合变换链。

将参考图1描述对计算系统的一些介绍性讨论。然后,将参考后续附图来描述复合设备应用技术。

计算系统现在越来越多地采取多种多样的形式。例如,计算系统可以是手持式设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统或甚至常规上不被认为是计算系统的设备。在本说明书以及权利要求书中,术语“计算系统”被广义地定义为包括任何设备或系统(或其组合),该设备或系统包含至少一个物理且有形的处理器以及其上能具有可由处理器执行的计算机可执行指令的物理且有形的存储器。存储器可以采取任何形式,并可取决于计算系统的性质和形式。计算系统可以分布在网络环境中,并可以包括多个组分计算系统。

如图1所例示,在其最基本的配置中,计算系统100通常包括至少一个硬件处理单元102和存储器104。存储器104可以是物理系统存储器,该物理系统存储器可以是易失性的、非易失性的、或两者的某种组合。术语“存储器”也可在此用来指示诸如物理存储介质这样的非易失性大容量存储器。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。如本文中所使用的,术语“可执行模块”或“可执行组件”可以指可以在计算系统上执行的软件对象、例程或方法。此处所描述的不同组件、模块、引擎以及服务可以实现为在计算系统上执行的对象或进程(例如,作为分开的线程)。

在随后的描述中,参考由一个或多个计算系统执行的动作描述了各实施例。如果这样的动作是以软件实现的,则执行动作的相关联计算系统的一个或多个处理器响应于已经执行了计算机可执行指令来引导计算系统的操作。例如,这样的计算机可执行指令可以在形成计算机程序产品的一个或多个计算机可读介质上实现。这样的操作的示例涉及对数据的操纵。计算机可执行指令(以及被操纵的数据)可以存储在计算系统100的存储器104中。计算系统100还可包含允许计算系统100例如通过网络110与其他消息处理器通信的通信信道108。

计算系统100还可潜在地包括输出渲染组件,诸如显示器、扬声器、灯、致动器,等等。计算系统100还可包括输入组件,诸如键盘、定点设备(诸如鼠标或跟踪垫)、语音识别设备、以及还能还有物理传感器(例如,温度计、全球定位系统、光检测器、指南针、加速度计,等等)。

在此描述的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如例如一个或多个处理器和系统存储器等计算机硬件,如以下更详细讨论的。本文中描述的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种显著不同的计算机可读介质:计算机存储介质和传输介质。

计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他存储介质。

“网络”被定义为使得电子数据能够在计算机系统和/或模块和/或其他电子设备之间传输的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可以包括可以用来携带所需要的以计算机可执行的指令或数据结构的形式存在的程序代码装置并可以被通用或专用计算机访问的网络和/或数据链路。上述的组合应当也被包括在计算机可读介质的范围内。

此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码资料可从传输介质自动传输到计算机存储介质(或反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可以在网络接口模块(例如,“NIC”)内的RAM中被缓冲,然后最终被传输至计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质。因而,应当理解,计算机存储介质可被包括在还利用(或甚至主要利用)传输介质的计算机系统组件中。

计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可例如是二进制或甚至是在被处理器直接执行之前经受某种转换(诸如编译)的指令,诸如中间格式指令(诸如汇编语言或甚至是源代码)。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。

本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备二者中。

本文描述的原理使用变换链来操作。变换链是各自可表示数据源或数据目标的互连节点集合。各节点之间存在链,每一链表示一变换。对于任何给定链,相关联的变换接收位于该链的输入端处的一个或多个数据源的值的副本,并且生成在位于该链的输出端处的一个或多个数据目标处提供的所得值。对于任何给定变换,在其输入端处的数据源中的一者或多者处的值改变时,该变换被自动重估,可能得到该变换的输出端处的一个或多个数据目标的值的变化。

在一个实施例中,不管变换链有多复杂,可以从表达方程、规则、约束、模拟或可接收一个或多个值作为输入并提供所得的一个或多个值作为输出的任何其他变换类型的声明性语句中来构造变换。变换链的示例是电子表格程序,其中单元格中的任一者可以是数据源或数据目标。方程(即,变换)可以与任何单元格相关联以使得该单元格是该方程的结果可被置于其中的数据目标。

仅作为示例,图2解说了简单变换链200,其中仅存在单个链200。在本说明书中通篇使用的附图符号中,链将被示为箭,其中输入端被表示为箭尾,而输出端被表示为箭头。在其中在该链的输入端处存在多个数据源的情形下,箭将被表示为具有多个箭尾。箭尾处的数据源的值的副本表示变换的输入。在其中存在受该变换的所得值影响的多个数据目标的情形下,箭将被表示为具有多个箭头。箭头处的数据目标的值表示来自该变换的输出。

例如,图2解说了包括数据源201、数据目标202以及单个链220的简单变换链200。链220表示对数据源201处的值211的副本执行以生成数据目标202处的值212的变换。只要值211改变,由链220表示的变换就被重估,可能得到数据目标202中的值212中的变化。

图3解说了包括三个数据源301、302和303、两个数据目标304和305以及单个链330的另一简单示例变换链300。链320表示对数据源301、302以及303内的值的副本执行以生成数据目标304和305中的值的变换。只要数据源301、302和303内的值中的任一者变化,变换链320就被重估,可能得到数据目标304和305中的任何一者或多者内的值的变化。

图4解说另一示例变换链400,并且解说了变换链可在彼此之上构建以创建更复杂的变换链的原理,其中一个链的数据源可以是另一链中的数据目标。例如,变换链400包括变换链200的实例401以及变换链300的实例402。在这种情形下,链220的数据目标202也是链320的数据源301。只要数据源201的值变化,由链220表示的变换就被重估,可能得到数据目标202中的值的变化,这同样是下一链320的数据源301。同样,数据源301的值的变化将导致变换链320被重估,可能得到数据目标304和305中的任何一者或多者内的值的变化。数据目标304和305可同样表示又一些其他链的数据源。相应地,在复杂变换链中,值变化可能使得所传播的值变化经由变换链内的各变换的正确地自动化重估来通过变换链中的多个节点。

尽管示例变换链400只包括两个链,但变换链可相当复杂且涉及可枚举节点和连接这些可枚举节点的相关联的链。本文描述的原理可以操作而不管变换链的复杂度如何。

图5解说了其中存在六个设备501到506的环境500。省略号507表示环境500内存在的设备数目的灵活性。实际上,可能有设备相当动态地离开和进入环境500。尽管并非必须,但设备507中的每一者可以如针对图1的计算系统100所述地被结构化。

环境500不必是所有设备位于同一邻域内的物理环境,虽然情况可能通常如此。环境500可改为被认为是其中存在一个或多个用户可通过其提供输入的设备集合以及可通过其向多个用户提供输出的多个设备的任何环境。

设备中的一些(例如,设备501到504)辅助形成比使用协作应用的协作设备更多的事物。相反,设备501到504各自与复合应用的组件相关联。在设备501到504中的任一者离开环境500时,复合应用变得更小,从而导致该应用的经改变的功能性。另一方面,在具有该应用的组件的设备(诸如设备501到504)进入环境500时,复合应用实际上变得更大,从而实际上改变复合应用的功能性和结构。根据本文描述的原理,一个设备的变换链可与其他设备的变换链联合,从而得到可更高效地利用经扩充的设备集合的更大变换链。

设备505表示可以用于环境500中的输出设备,但不一定向复合应用的较大变换链贡献变换链。例如,设备505可能是大型屏幕显示器。设备506表示可以在环境500中使用的输入设备,但不一定向复合应用的较大变换链贡献变换链。例如,设备506可能是话筒。设备501到504的存在使得相应相关联的变换链的各部分被贡献给复合应用的较大变换链。然而,设备501到504还可具有可由复合应用作为整体使用的输入能力和输出能力。环境500可任选地包括外部系统510,这将在下文进一步描述。

图6A到6D解说了示例变换链实例或类600A到600D。各实例将具有与类相同的结构,并且因此所解说的形式可被认为表示变换类以及变换实例。然而,各实例将具有与变换链的各节点中的一者或多者中的每一节点相关联的特定实例状态。因此,元素600A到600D可被称为变换链类或变换链实例。术语“变换链”一般将被用来指变换链类或它们相关联的变换链实例两者。作为示例,变换链实例600A到600D可与相应设备501到504相关联。

示例变换链600A到600D可相对简单以避免使用过度复杂的示例模糊本文描述的更广泛原理。换言之,本文描述的原理适用而不管变换链有多复杂并且不管环境内的并且形成复合应用的变换链以及相关联的设备的数目。

在图6A到6D的符号中,属于变换类600N(其中N的范围从A到D)的节点是使用后缀N来表示的。例如,在图6A中,变换链600A包括节点601A、602A、603A以及604A。其余元素601B、601C以及601D没有以“A”后缀结束,并且因而不是变换链600A内的节点。相反,元素601B、601C以及601D表示与其他变换链的依赖关系。

贯穿图6A到6D、7A到7D、8A到8C以及9,为强调作为依赖关系元素的那些元素,而非变换链本身中的节点,依赖关系元素是使用虚线边界来表示的。除非变换链与包括由依赖关系元素表示的节点的另一变换链联合,数据不从节点流向该依赖关系元素。贯穿各附图,数据不沿特定变换流传输的事实由标记了“X”的链来表示。

例如,变换链600A中的元素610B表示与变换链600B中的节点601B的依赖关系。依赖关系元素601B是以虚线定界的,并且去往或来自该依赖关系元素601B的所有链被使用“X”标记,因为在这一阶段,变换链600A没有与变换链600B联合。变换链600A中的元素601C表示与变换链600C中的节点601C的依赖关系。变换链600A中的元素601D表示与变换链类600D中的节点601D的依赖关系。

变换链实例600A可以独自充当应用。例如,来自数据源601A的值可被用来形成作为数据目标604A的值的经变换结果。此外,来自数据源601A和602A的值可被变换以得到数据目标603A的值。如果变换链实例600A是独自的,去往或来自元素601B、601C以及601D的变换不被评估。

变换链600B包括三个节点601B、602B以及603B。然而,变换链600B还包括引用不同变换链中的节点的依赖关系元素601A、602A、601C和603C。同样,变换链实例600B可以作为单个应用来独立地操作。例如,来自数据源601B的值可被提供通过变换以生成数据目标602B的所得值。来自数据源602B的值可被提供通过变换以生成数据目标603B的所得值。

虽然变换链实例600A和600B可独立地操作,但图7A解说了包括与变换链600B联合的变换链600A的联合变换链700A。现在用所引用的实际节点来替换变换链中的每一者中的依赖关系元素。例如,图6A的依赖关系元素601B现在是节点601B,且图6B的依赖关系元素601A现在是节点601A。具有后缀A或B的所有节点是变换链700A内的节点,且只有具有后缀C或D的那些节点是依赖关系元素。例如,节点601A、602A、603A、604A、601B、602B以及603B是经扩充变换链700A内的节点,且复合应用的功能性变得有点优于各单独变换链600A和600B的独自功能性的总和。

变换链600C包括三个节点601C、602C以及603C。然而,变换链600C还包括引用不同变换链中的节点的依赖关系元素603A、601B和603B。同样,变换链实例600C可以作为单个应用来独立地操作。例如,来自数据源601C的值可被提供通过变换以生成数据目标602C的所得值。同样,来自数据源601C的值也可被提供通过变换以生成数据目标603C的所得值。

虽然变换链实例600A和600C可独立地操作,但图7B解说了包括与变换链600C联合的变换链600A的联合变换链700B。现在用所引用的实际节点(在依赖关系元素引用变换链600A或600C中的任一者内的节点的程度上)来替换变换链中的每一者中的依赖关系元素。现在,具有后缀A或C的所有节点是变换链内的节点,且只有具有后缀B或D的那些节点是依赖关系元素。例如,节点601A、602A、603A、604A、601C、602C以及603C是经扩充变换链700B内的节点。复合应用的功能性变得优于各单独变换链实例600A和600C的功能性的总和。

图7C解说了包括与变换链类600C联合的变换链类600B的联合变换链700C。用所引用的实际节点(在依赖关系元素引用变换链600B或600C中的任一者内的节点的程度上)来替换变换链中的每一者中的依赖关系元素。现在,具有后缀B或C的所有节点是变换链内的节点,且只有具有后缀A或D的那些节点是依赖关系元素。例如,节点601B、602B、603B、601C、602C以及603C是经扩充变换链700C内的节点,且复合应用的功能性变得有点优于各单独变换链实例600B和600C的功能性的总和。

图8A解说了包括也被联合的变换链600A、600B和600C的联合变换链800A。用所引用的实际节点(在依赖关系元素引用变换链600A、600B或600C中的任一者内的节点的程度上)来替换变换链中的每一者中的依赖关系元素。注意,所有所示节点实际上是变换链中的节点,除了依赖关系元素601D之外。复合应用的功能性变得优于各单独变换链实例600A、600B和600C的功能性的总和。

变换链600D包括两个节点601D和602D。然而,变换链600D还包括引用不同变换链类600A中的节点的单个依赖关系元素603A。同样,变换链类600D的实例可以作为单个应用来独立地操作。例如,来自数据源601D的值可被提供通过变换以生成数据目标602D的所得值。

虽然变换链实例600A和600D可独立地操作,但图7D解说了包括与变换链600D联合的变换链600A的联合变换链700D。现在用所引用的实际节点(在依赖关系元素引用变换链600A或600D中的任一者内的节点的程度上)来替换变换链中的每一者中的依赖关系元素。现在,具有后缀A或D的所有节点是变换链内的节点,且只有具有后缀B或C的那些节点是依赖关系元素。例如,节点601A、602A、603A、604A、601D以及602D是经扩充变换链700D内的节点,且复合应用的功能性变得有点优于各单独变换链600A和600D的功能性的总和。

注意,图7A到7D解说了涉及变换链600A、600B、600C以及600D中的两者且仅有两者的所有可能的排列。变换链600B和600D没有在两变换链组合中直接联合,因为任一变换链都不具有引用另一变换链中的节点的依赖关系元素。此外,变换链600C和600D没有在两变换链组合中直接联合,因为任一者都不具有到另一者的依赖关系引用。

图8A解说了三个且仅有三个变换链600A、600B、600C以及600D的三个可能组合之一。具体而言,图8A解说了将变换链600A、600B以及600C相组合的经扩充变换链800A。图8B解说了将变换链600A、600B以及600D相组合的经扩充变换链800B(其中所有节点是变换链的一部分,除了依赖关系元素601C和603C之外)。图8C解说了将变换链600A、600C以及600D相组合的经扩充变换链800C(其中所有节点是变换链的一部分,除了依赖关系元素601B和603B之外)。注意,没有示出变换链600B、600C以及600D的组合,因为变换链600D不包括对变换链600B的依赖关系引用(或反向依赖关系引用)或到变换链600C的依赖关系引用(或反向依赖关系引用)。图9解说了包括经组合的全部变换链600A、600B、600C以及600D的组合变换链900。

相应地,给定变换链600A、600B、600C以及600D与环境中的相应设备501到504相关联,存在可被形成的八个可能的复合应用(对应于图7A到7D、图8A到8C以及图9的变换链)。因而,随着各设备的变换链联合到环境以及从环境解耦,变换链本身改变,并且复合应用的结构因而改变。例如,数据源601A的值的变化在该变化的效果通过一个或多个变换自动传播时可对变换链具有非常不同的影响,取决于数据源601A只在变换链600A内、在变换链700A内、在变换链700B内、在变换链700D内、在变换链800A内、在变换链800B内、在变换链800C内、还是在变换链900内。

作为示例,假定设备501首先进入环境,使得变换链600A被使用。设备502随后进入环境,使得变换链600B与变换链600A联合,得到变换链700A。因而,正在操作的变换链从变换链600A改变成变换链700A。现在假定第三设备503进入环境,使得变换链600C与变换链700A联合,从而得到变换链800A。因而,正在操作的变换链从变换链700A改变成变换链800A。现在假定设备500B离开。变换链700B随后将变得起作用。现在假定设备504进入环境,使得变换链600D与变换链700B联合,使得变换链800C变成正在操作的变换链。现在假定设备500C离开,使得变换链700D正在操作。现在假定设备501离开,使得变换链600D正在操作。最后,设备504离开,从而环境中没有正在操作的变换链。在这一场景中,正在操作的应用如下七次改变了结构(并且因而改变了功能性):1)以变换链600A开始,2)随后移至变换链700A,3)然后移至变换链800A,4)然后移至变换链700B,5)然后移至变换链800C,6)然后移至变换链700D,7)然后以变换链600D完成。

图10解说了用于准备促进多个联合变换链实例所表示的复合应用的方法1000的流程图。方法1000可由环境500内的设备501到507中的任一者执行。作为替换或补充,方法1000可以在设备501到507外部执行,诸如例如由图5的外部系统510执行。例如,外部系统510可以是在云计算环境中提供的服务。不管方法1000在何处执行,图11解说了可执行方法1000的系统1100。相应地,不管系统1100是否被合并到设备501到507中的一者或多者或者系统1100是否是图5的外部系统510或它们的组合,现在将频繁参考图11的系统1100描述方法1000。

方法1000包括不具有时间依赖关系的两个动作1001和1002。例如,该方法包括标识不同变换链类之间的依赖关系(动作1001)。这些依赖关系基本上是由生成该类的类作者创建的授权,以允许不同变换链类的实例互操作(经受进一步的基于实例的批准)。

例如,系统1100包括逻辑组件1101和被示为包括六个变换链类定义1111到1116的变换链类定义库1110。然而,省略号1117表示变换链类定义库1110可包括任何数目的变换链类定义。作为示例,假定变换链类定义1111、1112、1113以及1114分别定义图6A到6D的变换链类600A、600B、600C以及600D。因为每一变换链类定义依赖关系元素,所以系统1100可以使用库1110来标识不同变换链类之间的依赖关系。

例如,通过观察变换链600A的依赖关系元素601B以及变换链600B中的依赖关系元素601A,逻辑组件1101可以标识节点601A和601B之间的依赖关系,如果变换链类600A和600B被联合或者如果该类的实例被联合则该依赖关系将存在。逻辑组件1101可以推断变换链600A和600B两者的作者都同意授权在这些依赖关系元素处联合(假定用户也在运行时在实例级授权)。

方法1000还包括标识(动作1002)与变换链类中的任一者的实例相关联的设备。这些设备本身可能使用设备标识符以及该设备希望使用的可能的任何变换链类来向系统1100标识。另选地,系统1100可具有与每一设备相关联的特定默认变换类,并且因而可能只接收设备标识符。可能存在设备被许可使用的一些变换链类以及该设备未被许可使用的其他变换链类。

例如,系统1100还包括设备注册1120,设备注册1120包括设备与各变换链类相关联的注册。例如,设备注册1120包括五个设备注册1121到1125,但省略号1126表示设备注册1120可包括任何数目的设备注册。此外,设备注册1120可被长期持久存储和/或可能只被短时保持。无论如何,系统1100标识多个设备并找出这些设备的相关联的变换链。仅作为示例,可能图5的设备501到504与注册1121到1124相关联。通过这样的关联,系统1100能够检测变换链实例600A、600B、600C、600D(分别由变换链类定义1111、1112、1113以及1114定义)分别与设备501到504相关联。

在一些实施例中,系统1100自身代表相应设备运行特定变换链类的实例的表示。例如,在标识变换链类600A与设备501相关联之后,系统1100可为设备501操作变换链实例600A的表示。相应地,在接收到来自该设备的输入时,系统1100标识变换链中的特定节点的改变,并将该改变传播贯穿该变换链。这将称为“需动手”办法。这一需动手办法具有一些优点,在于处理可被卸载到具有比提供输入的设备本身更大的处理能力的设备或系统或云。

在本文称为“无需插手”办法的另一办法中,设备通过自身运行变换类的实例来与该类相关联。在遇到与关联于另一设备的另一变换链的依赖关系时,数据可直接流向该设备(例如,经由对等联网),如果该另一设备也参与该无需插手办法的话。另选地,设备可将数据间接地流传输到另一设备(例如,经由外部系统或云)。如果外部系统510正在运行该另一设备的变换链类的实例的表示,则该设备可改为将数据流传输到外部系统510以供进一步传播到变换链的其余部分。

图12解说了用于联合变换类的两个实例的方法1200的流程图。首先,变换链类被确认是能被联合的类型(动作1201)。例如,如果变换链类没有彼此引用,则可能没有用于联合相应类的各实例的基于类的授权。例如,变换链类600D不能与变换链类600B或变换链类600C联合,因为变换链类600D没有引用变换链类600B或600C中的元素。然而,变换链类600D可以与变换链类600A联合,因为它们相互包含对彼此的依赖关系引用。

在这一示例中,然而,虽然变换链类600D不能与变换链类600B和600C直接联合,但变换链类600D可与变换链700A、700B和800A相联合,即使这些变换链700A、700B和800A包括变换链600B和600C中的一者或两者。

然而,在替换实施例中,变换链类的作者可以指定与联合其他变换链类有关的进一步约束。例如,作者可以指示以下通用约束:如果变换类实例已经是复合变换链和/或如果复合变换链具有特定组成变换链,则联合特定变换类实例不被准许。例如,在联合两个变换链实例时,系统1100可跟踪在此之前被用来构造复合变换链的变换类身份。该列表可被用来确认用于基于类的授权的条件是否已被满足。

作者还可按单个依赖关系的粒度来表达约束。例如,在变换链类600A的依赖关系元素601B中,作者可能表达只有在所联合到的变换链不包括所标识的由竞争者创作的变换链类的情形下联合才被授权在该依赖关系元素上。作者还可通过将约束或条件写入将本身桥接该依赖关系的变换(例如,在假定601A和依赖关系元素601B之间)来控制流出该变换链到另一所联合的变换链的数据。

然而,即使变换链类可以互操作,这并不意味着用户想要他们的该变换链类的特定实例与其他变换链类的其他实例相联合。毕竟,对用户而言,数据本身(例如,实例状态)可能是敏感的。因此,方法1200还包括确定不同变换链类的实例要被联合(动作1202)。

用于授权联合不同变换链类的两个实例的联合准则可包括以下中的一者或多者:用户是否在会议与会人员列表上、各设备的用户的关系(例如,家人、社交网络朋友等)、设备之间的通信能力(例如,近场)、相应设备的邻近度(例如,在同一会议室中)、用户的请求,等等。例如,联合准则可包括一些业务准则,诸如实例的相关联用户在同一团队中。作为另一示例,一个设备可以是零售空间或宾馆中的自助服务终端,其中顾客使用该自助服务终端并且店员或门卫可自动使用他们的设备来将他们的变换链与自助服务终端的变换链相联合,以从而使用复合应用与顾客交互。条件可被应用于联合准则。例如,如果门卫不在附近的话(可能由于门卫没有主动使用可配对应用来与顾客的应用联合或者离线而被检测到),则旅馆服务员的设备可能够联合顾客的应用。

除非与该设备相关联的变换链类的实例要以该类所定义的默认状态开始,在需动手办法中,该设备随后可将实例数据(例如,与该设备相关联的变换链的各节点中的每一者处的值)上传到系统1100(动作1203)。在无需插手办法中,可能只有边界节点处的实例数据被上传到系统1100。

变换链实例随后与变换链的其余部分联合(动作1204)。例如,这可通过搜索源变换链实例以寻找与目标变换链实例中的节点相对应的依赖关系元素来实现。一旦找到这样的依赖关系元素,就用目标变换链实例中的实际所标识的节点替换该依赖关系元素,从而创建源和目标变换链实例之间的实际链。这针对标识目标变换链实例中的节点的源变换链实例中所有所这样的发现的依赖关系元素重复。如果在源变换链实例中存在所发现的不与目标变换链实例中的节点相对应的依赖关系元素,则这些依赖关系元素保持是经归并变换链实例中的依赖关系链元素。

注意,在图6A到6D的示例中,变换链类600A到600D中没有一者包括引用相同类的依赖关系元素。然而,本文描述的原理可以操作,即使特定变换链类的实例可具有引用相同特定变换链类的另一实例中的另一节点的依赖关系元素。此外,如果被联合到的特定节点准许,则来自一个或多个不同变换链实例的多个节点可联合该特定节点。

一旦联合,变换链就扩充,并且数据在经扩充变换链内流传输(动作1205),如同变换链当初以经扩充方式被初始创作一样。例如,一旦变换链类600A的实例联合变换链类600B的实例,结果就是变换链类700A的单个实例。一旦变换链类600A的实例联合变换链类600C的实例,结果就是变换链类700B的单个实例。一旦变换链类600B的实例联合变换链类600C的实例,结果就是变换链类700C的单个实例。一旦变换链类600A的实例联合变换链类600D的实例,结果就是变换链类700D的单个实例。

变换链类800A的实例可通过联合变换链类700A和600C的实例或通过联合变换链类600A和700C的实例来形成。变换链类800B的实例可通过联合变换链类700A和600D的实例来形成。变换链类800C的实例可通过联合变换链类700B和600D的实例来形成。在其中在给定环境中存在许多设备可供协作的情形下,这一联合操作可被执行多次以从而创建非常大的变换链。

相应地,一旦联合(动作1204),数据可在经扩充变换链内自由流传输(动作1205),甚至跨被用作各组成变换链之间的边界的事物。例如,在图7A的变换链700A中,数据可(经由适当的变换)从节点601A自由流传输至节点601B(而无需应用程序接口的用户并且无需函数调用),如同数据可(经由适当的变换)从节点601A流向节点604A。

相应地,该系统可被用来以相对自动化和方便的方式联合与各种各样的设备相关联的变换,以从而扩充跨多个设备共享的复合应用的变换链。这允许各种各样的场景。

例如,考虑到达特定会议室中的会议的各个人。在第一用户使用膝上型计算机和智能电话进入会议室之际,与智能电话相关联的变换链实例与膝上型计算机的变换链实例联合,使得单个应用跨第一用户智能电话和膝上型计算机来高效地运行。第二用户稍后进入会议室。第二用户也在会议邀请人员上,且因此该用户的智能电话变换链被联合到现有复合变换链以进一步扩充该变换链。电视机屏幕随后自动打开以输出与会议相关联的数据中的一些。第三用户使用平板计算机进入并且也是会议邀请人员。因而,与平板计算机相关联的变换链联合复合变换链以进一步扩充该变换链。因而,随着更多设备加入适于联合变换链的环境,跨所有设备运行的应用被实际上扩充,从而改变应用本身的功能性。多个用户可各自在该环境中共享,使得多个用户观察这些设备中的至少一个或一些中的每一者。

图13解说了用于解耦变换链的方法1300的流程图。如同存在用于当设备进入环境时联合变换链的方法一样,存在用于当设备退出环境时解耦变换链的方法。首先,该系统确定变换链类的实例要被解耦(动作1301)。作为响应,去往和来自该实例的数据流被中断(动作1302)。用于确定实例应被解耦的解耦准则可包括任何准则,但作为示例可包括以下中的一者或多者:与该实例相关联的设备同该环境中的其他设备的邻近度、会议结束状态、与该实例相关联的设备同该环境中的其他设备之间的通信能力、用户的请求,等等。因而,变换链可在设备进入和退出环境时动态地改变。

在一个实施例中,系统1100包括演示服务1150。正在运行的变换链实例的一个或多个节点可以驱动一个或多个周围设备上的渲染。同样,一个或多个设备可以提供对变换链实例的一个或多个节点的输入。例如,假定变换链900的实例正在图5的环境500中运行,且设备501到504与相应变换链类600A到600D的实例相关联,从而得到经扩充变换类900的实例。参考图9,假定节点601A和601C是输入节点且节点604A、603B、602C以及602D是输出节点。演示服务1150可选择哪些设备可向节点601A和601C提供输入,并且如果是,要执行什么变换。在一个示例中,各设备与它们的变换链的相应部分相关联,使得该相应部分内的输入节点由该相应设备提供。因而,默认地,可以向作为变换链600A的初始部分的输入节点601A提供来自设备501的输入(在可能某些变换后)。因而,在默认情况下,可以向作为变换链600C的初始部分的输入节点601C提供来自设备503的输入(在可能某些变换后)。演示服务1150还可选择哪些设备要渲染来自节点604A、603B、602C以及602D的输出以及要执行什么变换(如果有的话)。

图14解说了用于在多设备环境中渲染变换链的输出的方法1400的流程图。方法1400可由图11的系统1100执行,或者可能由图11的演示服务1150执行。逻辑组件1101确定(动作1401)变换链类的实例的特定节点(演示节点)已改变。例如,在该示例中,节点604A、603B、602C以及602D各自是输出节点,即“演示节点”。

逻辑组件还标识经改变输出的至少一版本可在其上渲染的多个候选设备的特性(动作1402)。例如,逻辑组件1101可以参考设备注册1120和/或直接询问设备以确定每一设备的渲染能力。每一设备的特性还可包括每一用户相对于该设备的并置。

该系统随后基于所标识的特性选择(动作1403)这些候选设备中要在其上渲染该渲染的至少该版本的至少一个候选设备。该系统作出该选择以使输出的可使用性最大化。例如,如果输出旨在送给所有用户,并且所有用户物理上是在场的,则该输出可被渲染在较大屏幕上。如果输出是交互式的且需要来自特定设备的输入,则该设备可被选择用于该输出。

该系统确定是否要在实际输出给设备之前向渲染应用任何变换(决策框1404)。变换将所选设备的合适性纳入考虑,其中变换可取决于用于渲染的所选设备而不同。变换的示例包括改变渲染的类型(例如,文本到语音、语音到文本、视频到文本、文本到视频,等等)。变换还可包括该输出的电影化。例如,可根据输入来创建视频,其中背景幕布被提供并且可能在适当时改变,并且移动元素可移入和移出该视频。

如果要执行变换(决策框1404中的“是”),则执行这些变换(动作1405)。最后,在所选择的设备上促进渲染(动作1406)。相应地,复合变换链可以按任何形式从任何设备取得输入,并在需要时将该输入变换成由复合变换链的输入节点识别的形式。因而,这一输入被传播遍及该变换链。如果一个或多个演示节点的值改变,则适当的设备可被选择用于渲染该输出。相应地,用于渲染的最合适设备可被选择,而不管哪一设备与变换链的包含演示节点的那一部分相关联。例如,演示节点604A的值的变化不必排他地或甚至根本不在与变换链实例600A相对应的设备501上渲染。在一些实施例中,渲染可涉及将信息转换成包括某种类型的移动的某种物理刺激。例如,渲染可包括开门或关门、打开或关闭阀、解锁或锁住门、打开或关闭电视机,等等。

现在将参考图15A到15M(统称为“图15”)描述详细场景(此后称为“设备场景”)。这一场景只是作为可由本文描述的更广泛原理启用的无限种场景之一来提供的。在这一场景中,用户正在定购各种计算设备。该场景涉及四个设备1501、1502、1503以及1504,但该场景在图15A中以只有两个设备1501和1502可见来开始。四个设备1501到1504中的每一者参与向复合应用提供输入并从中接收输出。

图15A介绍作为膝上型计算机的两个设备1501和1502。假定这两个设备1501和1502是操作环境中最初的仅有设备,并且因而它们的相应变换链已被联合。与设备1501相关联的变换链允许导航和选择制造商。与设备1502相关联的变换链允许导航由制造商提供的设备列表,并且还允许用户改变列表中的设备中的任一者的计数。

更具体而言,设备1501允许用户水平滚动通过多个制造商,并选择一制造商。在图15A中,设备1501只示出三个这样的制造商,标记为“供应商7”、“供应商8”以及“供应商9”,其中用户选择了“供应商8“。另一方面,设备1502示出了由在设备1501中选择的供应商提供的可水平滚动的设备列表。在图15A中,因为供应商8在设备1501被选择,所以设备1502示出了由供应商8提供的设备列表。设备列表中的每一项包括该设备的照片1505、该设备的名称1506、该设备的单价1507、以及该设备被定购的计数1508。每一设备的计数可以使用对应的滚动控件来控制。

图15B示出了从图15A的状态进展的场景状态,其中用户已经向左滚动了制造商的列表并且还选择了“供应商4”。相应地,来自设备1502的输出自动改变成显示由供应商4制造的设备的列表。为这样做,数据从与设备1501相关联的变换链自动流传输至与设备1502相关联的变换链(无需使用应用程序接口)。

图15C示出了从图15B的状态进展的场景状态,其中用户已经向左滚动了制造商的列表并且还选择了“供应商2”。相应地,来自设备1502的输出自动改变成显示由供应商2制造的设备的列表。为这样做,数据再次从与设备1501相关联的变换链自动流传输至与设备1502相关联的变换链。

图15D示出了已从图15C的状态进展的场景状态,其中用户已使用显示在设备1502上的滚动控件1511和1512来改变由供应商2提供的两个设备的订单计数。图15E示出已从图15D的状态进展的场景状态,其中用户使用设备1502向右滚动通过由供应商2提供的设备的列表并且进一步使用显示在设备1502上的滚动控件1513和1514来改变由供应商2提供的两个进一步设备的订单计数。因此,在这一阶段,用户已录入由供应商2提供的四个设备的订单计数。

图15F示出了以从图15E的状态进展的场景状态,其中第三设备1503被引入环境中。例如,第三设备1503可与显示最大单价和整个订单的总价的变换链相关联。一旦设备1503被引入环境,变换链的该部分就与现有复合变换链相联合,从而改变复合应用的功能性,以现在向设备1503输出这样的价钱数据。一旦变换链实例被联合,表示计数以及单价的数据被流传输到变换链的该部分,从而使得设备1503被立即增加。注意,在设备1503指示最大单价时,流还发生在相对的方向上,并且因此,设备1502中示出的设备列表被限于低于最大单价的任何设备。在这种情况下,所有先前列出的设备都落在最大单价之下并且因而设备1502上的可视化没有变化。

图15G示出以从图15F的状态进展的场景状态,其中用户已使用设备1502上的滚动控件1515来录入由供应商2提供的又一设备的计数。计数数据和单价数据被流传输到变换链的与设备1503相对应的部分,从而造成显示在设备1503上的总价的变化。

图15H示出了已从图15G的状态进展的场景状态,其中用户已使用设备1503上的滚动控件1516将最大单价下调至$987。该最大单价变化已从与设备1503相关联的变换链部分流传输至与设备1502相关联的变换链部分,从而使得由供应商2提供的若干设备被从列表丢弃。如果用户将金额返回得更高,那些丢弃的项将被自动添加回列表上,从而可能将设备1502返回至图15G中解说的状态。

图15I示出了以从图15G的状态进展的场景状态,其中第四设备1504被引入环境中。例如,第四设备1504可与显示设备的最大重量的变换链相关联。一旦设备1504被引入环境,变换链的该部分就与现有复合变换链相联合,从而改变复合应用的功能性,以现在输出这样的价格数据。一旦变换链实例被联合,表示最大重量的数据就从变换链的与设备1504相关联的部分流传输至该变换链与设备1502相关联的部分。设备1502通过显示与重于最大重量的每一设备相关联的超重警告1518A、1518B、1518C以及1518D来作出响应。当前,在图15I中,该重量只是606克,并且因而所有设备被列出了这样的警告。

图15J示出已从图15I的状态进展的场景状态,其中用户已使用设备1504上的滚动控件1516将最大重量增加至超过2千克。最大重量变化从该变换链与设备1504相关联的部分流传输至该变换链与设备1502相对应的部分,从而造成超重警报1518C和1518D的移除(超重警报1518A和1518B保留)。

这从用户观点来看结束了该场景。图15K到15O解说了在创作时,作者可声明性地改变变换以从而改变复合应用的功能性。在图15K中,用户界面元素1520被示为包括滤除具有低于滑块1516所指示的值的制造商建议零售价的那些设备的声明性变换。图15L解说了这一约束现在被移除,并且因而所显示的设备现在没有依据滑块1516的值而被滤除。

在图15M中,用户界面元素1521被示为定义用于制造商建议零售价的突出显示的颜色。图15N解说了突出显示颜色现在依赖于制造商的建议零售价是否高于滑块控件1516所指示的值。如果是,则突出显示颜色改变成例如绿色。图15O解说了在滑块控件1516在这种情形下被增加时,复合应用的行为从其中设备被从列表移除(如果它们的建议制造商零售价大于滑块控件1516的值)的状态改变成其中制造商建议零售价(与滑块1516的值相比)驱动突出显示制造商建议零售价的状态。

因此,描述了变换链输出在各设备上的演示,使得演示节点的值的变化造成发生渲染。响应于演示节点的值的变化,演示系统标识可被用来渲染对应输出的特性或各设备。演示系统基于该设备的所标识的特性来标识适当的设备。演示系统随后促进输出的至少一个版本在所选设备上的渲染,可能甚至按适于所选设备的方式变换该输出。在一些实施例中,变换链可以是通过联合多个组成变换链来构造的复合变换链。

本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书的范围所涵盖。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1