转换链兼容类的自动生成的制作方法

文档序号:13985178
转换链兼容类的自动生成的制作方法

计算技术已经彻底改变了我们的工作、娱乐和交流方式。计算功能由执行软件或固件的设备或系统获得。针对应用准备的典型范例是,应用在其使用之前被编写,并且专利申请的功能也是相对预先确定的。

预定功能有一些例外。例如,可以对软件应用进行修补,以便提供对软件中以前未知的错误的修复。此外,可以提供对软件应用的更新以便向软件应用添加新的功能。在某些情况下,可以为特定用户配置和定制软件。但是,应用本身定义了其可以被定制的程度。用户还可以通过提供关于软件性能的商业反馈来影响应用。但是,在用户反馈被正确地合并到应用中之前可能需要数年。

本文中要求保护的主题不限于解决任何缺点或仅在诸如上述环境的环境中操作的实施例。相反,仅提供本

背景技术:
以说明可以实践本文中描述的一些实施例的一个示例性技术领域。



技术实现要素:

本文中描述的至少一些实施例涉及用于自动生成与转换链类库兼容的软件类的机制。其可以用于使用最初并不是作为转换链生成的附加软件类来进一步填充转换链类库。

响应于接收到软件表示,在软件表示中标识一个或多个依赖关系。对于一个或多个依赖关系中的至少一个依赖关系中的每个,然后确定依赖关系对应于转换类库的至少一个转换链类的至少一个依赖关系元素。然后,生成对应于软件表示并且包括依赖关系元素的软件类,依赖关系元素对应于所标识的依赖关系并且由合并模块识别。换言之,依赖关系元素被构造为由合并模块可解释为与转换链类库的至少一个转换链类的至少一个对应依赖关系元素兼容。然后可以将软件类添加到转换链类库。

本发明内容并非旨在确定所要求保护的主题的关键特征或必要特征,也不旨在用作确定所要求保护的主题的范围的辅助手段。

附图说明

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

图1抽象地示出了简单的转换链,其中耦合单个数据源和单个数据目标的链接仅有一个,并且其中由链接表示的转换使用数据源中的值作为输入来自动执行以生成数据目标中的值;

图2抽象地示出了另一简单示例转换链,其中转换使用来自三个数据源的输入值来执行以便在两个数据目标中生成输出值;

图3示出了图1的转换链和图2的转换链的组合形式的转换链;

图4A至4D每个示出了示例转换链(数据没有流动通过、不存在与另一转换链的联接的箭头用“X”示出,并且不是转换链本身中的节点的依赖关系元素用虚线边界示出);

图5A示出了表示图4A和4B的转换链的联接的增强转换链;

图5B示出了表示图4A和4C的转换链的联接的增强转换链;

图5C示出了表示图4B和4C的转换链的联接的增强转换链;

图5D示出了表示图4A和图4D的转换链的联接的增强转换链;

图6A示出了表示图4A、4B和4C的转换链的联接的增强转换链;

图6B示出了表示图4A、4B和4D的转换链的联接的增强转换链;

图6C示出了表示图4A、4C和4D的转换链的联接的增强转换链;

图7示出了表示图4A、4B、4C和4D的转换链的联接的增强转换链;

图8示出了转换链的节点以及多个相关联的输入端点和输出端点;

图9示出了其中可以实现转换链并且包括本文中被称为宇宙画布的画布的运行时架构;

图10示出了响应于检测到环境中的事件来制定应用的方法的流程图,其表示其中在图9的宇宙画布内创建和操作转换链的实例的简单情况;

图11示出了通过组合转换链实例来响应于检测到环境中的事件的方法的流程图;

图12A示出了用于通过首先实例化每个类的实例并且然后联接实例来制定两个转换链类的整合实例的方法的流程图;

图12B示出了用于通过首先组合两个转换链类并且然后从组合的转换链类实例化来制定两个转换链类的整合实例的方法的流程图;

图13A示出了准备被拆分的转换链实例;

图13B示出了从图13A的转换链实例拆分的转换链实例;

图14示出了用于制定拆分应用的方法的流程图;

图15A至图15D示出了图13B的拆分转换链实例的各种可能的配置;

图16示出了其中被分配给第一端点接口的较大转换链实例经由代理服务与被分配给第二端点接口的部分转换链实例安全地对接的架构;

图17A至图17C示出了与应用的拆分和用于执行该拆分的编辑相关联的用户界面的序列;

图18示出了用于响应于在第一端点接口实体处检测到一个或多个事件来共享应用的方法的流程图;

图19示出了用于跨越多个硬件实体与应用分布式对接的方法的流程图;

图20示出了用于应用的第一部分以准备从同步转变到异步的方式与应用的第二部分通信的方法的流程图;

图21示出了用于在记录同步通信的上下文中转变到异步通信的方法的流程图;

图22示出了用于将应用的拆分部分重新分配给另一端点接口实体的方法的流程图;

图23示出了其中可以进行图22的重新分配的环境;

图24示出了用于支持从在使用期间重新定义的应用接收输出的显示器上的布局的方法的流程图;

图25示出了用于生成与接收软件表示的转换链类库兼容的软件类的方法的流程图;

图26示出了其中可以执行图25的方法以自动生成与转换链类库兼容的软件类的环境;以及

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

具体实施方式

本文中描述的至少一些实施例涉及用于自动生成与转换链类库兼容的软件类的机制。其可以用于使用最初并不是作为转换链生成的附加软件类来进一步填充转换链类库。

响应于接收到软件表示,在软件表示中标识一个或多个依赖关系。对于一个或多个依赖关系中的至少一个依赖关系中的每个,然后确定依赖关系对应于转换类库的至少一个转换链类的至少一个依赖关系元素。然后,生成对应于软件表示并且包括依赖关系元素的软件类,依赖关系元素对应于所标识的依赖关系并且由合并模块识别。换言之,依赖关系元素被构造为由合并模块可解释为与转换链类库的至少一个转换链类的至少一个对应依赖关系元素兼容。然后可以将软件类添加到转换链类库。

首先,将参考图1至图8描述转换链的概念。然后,将参考图9描述用于支持转换链宇宙(universe)及转换链的操作的架构。之后,将参考图10到24描述转换链的示例操作。因为基于转换链的应用表示范例转变,所以本描述将对基于转换链的应用的潜在操作的重要细节进行详细描述。然后将参考图25和图26来描述用于添加到转换链类的库的新的类的自动生成。此后,将参考图27来描述可以支持本文中描述的各方面的示例计算系统。

转换链应用

本文中描述的原理使用转换链进行操作。转换链是互连的一组节点,每个节点可以表示数据源和/或数据目标。节点之间存在链接,每个链接表示转换。对于任何给定的链接,相关联的转换接收位于到链接的输入端的一个或多个数据源的值的副本,并且在位于链接的输出端的一个或多个数据目标处生成和提供结果值。对于任何给定的转换,当其输入端处的数据源中的一个或多个数据源处的值改变时,将自动重新评估转换,可能导致转换的输出端处的一个或多个数据目标的一个或多个值改变。

在一个实施例中,无论转换链有多复杂,转换都可以从表示等式、规则、约束、模拟或可以接收一个或多个值作为输入并且提供得到的一个或多个值作为输出的任何其他转换类型的声明性语句构建。转换链的示例是电子表格程序,其中任何单元可以是数据源或数据目标。等式(即,转换)可以与任何单元相关联,以使该单元成为其中放置有等式的结果的数据目标。

仅作为示例,图1示出了简单的转换链100,其中仅存在单个链接120。在贯穿本说明书使用的附图标记中,链接将被示出为箭头,其中输入端被表示作为箭头的尾部,并且输出端被表示为箭头的头部。在其中在链接的输入端处有多个数据源的情况下,箭头将用多个尾部表示。箭头的一个或多个尾部处的一个或多个数据源的值的副本表示到转换的输入。在其中有多个数据目标受到转换的结果值的影响的情况下,箭头将用多个头部表示。箭头的一个或多个头部处的数据目标的值表示来自转换的输出。

例如,图1示出了简单的转换链100,其包括数据源101、数据目标102和单个链接120。链接120表示对在数据源101处的值111的副本执行的以便在数据目标102处生成值112的转换。如果值111改变,则由链接120表示的转换被自动重新评估,潜在地导致数据目标102中的值112的变化。

图2示出了另一简单的示例转换链200,其包括三个数据源201、202和203;两个数据目标204和205;以及单个链接220。链接220表示对数据源201、202和203内的值的副本执行的以便生成数据目标204和205中的值的转换。如果数据源201、202或203内的任何值改变,则转换链接220被自动重新评估,潜在地导致数据目标204和205中的任何一个或多个数据目标内的值的变化。

图3示出了另一示例转换链300,并且示出了转换链可以彼此构建(其中到一个链接的数据源可以是其他链接中的数据目标)以便创建更复杂的转换链的原理。例如,转换链300包括转换链100的实例301和转换链200的实例302。在这种情况下,链接120的数据目标102也是链接220的数据源201。如果数据源101的值改变,则由链接120表示的转换被重新评估,潜在地导致数据目标102中的值的变化,该数据目标102同样是下一链接220的数据源201。同样地,数据源201的值的变化将导致转换链接220被重新评估,潜在地导致数据目标204和205中的任何一个或多个数据目标内的值的变化。因此,数据源101处的值的变化具有通过转换重新评估来影响节点102(201)和节点204和205处的值的可能性。数据目标204和205同样可以表示另外其他链接的数据源。因此,在复杂的转换链中,值变化可能会通过对转换链内的转换进行适当的自动重新评估,来引起通过转换链中的多个节点的传播的值变化。

尽管示例转换链300仅包括两个链接,但是转换链可能相当复杂并且涉及可枚举节点和连接那些可枚举节点的相关联的链接。本文中描述的原理可以操作而不管转换链的复杂性如何。

图4A到4D示出了示例转换链实例或类400A到400D。实例将具有与类相同的结构,并且因此所示出的形式可以被认为表示转换类以及转换实例。然而,实例将具有与转换链的节点中的一个或多个节点中的每个相关联的特定实例状态。相应地,元素400A到400D可以被称为转换链类或转换链实例。术语“转换链”将被用于泛指转换链类及其相关联的转换链实例。

示例转换链400A至400D相对简单,以避免使用过于复杂的示例模糊本文中描述的更宽泛的原理。也就是说,无论转换链有多复杂,也不管在环境内的并且形成复合应用的转换链和相关联的设备的数目为何,本文中描述的原理都适用。

在图4A到4D的标记中,属于转换类400N(其中N的范围从A到D)的节点使用后缀N来表示。例如,在图4A中,转换链400A包括节点401A、402A、403A和404A。剩余的元素401B、401C和401D不以“A”后缀结束,并且因此不是转换链400A内的节点。相反,元素401B、401C和401D表示与其他转换链的依赖关系。

在整个图4A至4D、5A至5D、6A至6C和7中,为了强调作为依赖关系元素的那些元素,而不是转换链本身中的节点,依赖关系元素用虚线边界来表示。除非转换链与包括由依赖关系元素表示的节点的另一转换链联接,否则数据不会从节点流向依赖关系元素。数据无法沿着特定转换流动的事实在整个图中由标有“X”的链接来表示。

例如,转换链400A中的元素401B表示与转换链400B中的节点401B的依赖关系。依赖关系元素401B以虚线为边界,并且去往或来自该依赖关系元素401B的所有链接被标记为“X”,因为在这个阶段,转换链400A不与转换链400B联接。转换链400A中的元素401C表示与转换链400C中的节点401C的依赖关系。转换链400A中的元素401D表示与转换链类400D中的节点401D的依赖关系。

转换链实例400A本身可以用作应用。例如,可以使用来自数据源401A的一个或多个值的一个或多个副本来形成作为数据目标404A的一个或多个值的转换结果。此外,来自数据源401A和402A的一个或多个值的一个或多个副本可以被转换以产生数据目标403A的一个或多个值。如果转换链实例400A是独立的,则不对去往和来自元素401B、401C和401D的转换进行评估。

转换链400B包括三个节点401B、402B和403B。然而,转换链400B还包括引用不同转换链中的节点的依赖关系元素401A、402A、401C和403C。同样,转换链实例400B可以作为单个应用独立操作。例如,可以通过转换来提供来自数据源401B的一个或多个值的一个或多个副本,以生成用于数据目标402B的一个或多个结果值。可以通过转换来提供来自数据源402B的一个或多个值的一个或多个副本,以生成用于数据目标403B的一个或多个结果值。

尽管转换链实例400A和400B可以独立操作,但是图5A示出了包括与转换链400B联接的转换链400A的联接的转换链500A。在适当的情况下,每个转换链中的依赖关系元素现在被替换为所引用的实际节点。例如,图4A的依赖关系元素401B现在是图5A中的节点401B,并且图4B的依赖关系元素401A和402A现在分别是图5A中的节点401A和402A。因此,具有后缀A或B的所有节点都是转换链500A内的节点,并且只有具有后缀C或D的那些节点才是依赖关系元素。例如,节点401A、402A、403A、404A、401B、402B和403B是增强的转换链500A内的节点,并且复合应用的功能变得比个体转换链400A和400B本身的功能的总和更好、更完整或至少不同。

转换链400C包括三个节点401C、402C和403C。然而,转换链400C还包括引用不同转换链中的节点的依赖关系元素403A、401B和403B。同样,转换链实例400C可以作为单个应用独立操作。例如,可以通过转换来提供来自数据源401C的一个或多个值的一个或多个副本,以生成用于数据目标402C的一个或多个结果值。同样地,也可以通过转换来提供来自数据源401C的一个或多个值的一个或多个副本,以生成用于数据目标403C的一个或多个结果值。

尽管转换链实例400A和400C可以独立操作,但是图5B示出了包括与转换链400C联接的转换链400A的联接的转换链500B。每个转换链中的依赖关系元素现在被替换为所引用的实际节点,到依赖关系元素引用转换链400A或400C中的任一个内的节点的程度。现在,具有后缀A或C的所有节点都是转换链内的节点,并且只有具有后缀B或D的那些节点才是依赖关系元素。例如,节点401A、402A、403A、404A、401C、402C和403C是增强的转换链500B内的节点。复合应用的功能变得比个体转换链实例400A和400C的功能的总和更好、更复杂或至少不同。

图5C示出了包括与转换链类400C联接的转换链类400B的联接的转换链500C。每个转换链中的依赖关系元素被替换为所引用的实际节点,到依赖关系元素引用转换链400B或400C中的任一个内的节点的程度。现在,具有后缀B或C的所有节点都是转换链内的节点,并且只有具有后缀A或D的那些节点才是依赖关系元素。例如,节点401B、402B、403B、401C、402C和403C是增强的转换链500C内的节点,并且复合应用的功能变得比个体转换链实例400B和400C的功能的总和更好、更复杂或至少不同。

图6A示出了包括也被联接的转换链400A、400B和400C的联接的转换链600A。每个转换链中的依赖关系元素被替换为所引用的实际节点,到依赖关系元素引用转换链400A、400B或400C中的任一个内的节点的程度。注意,所有示出的节点实际上是转换链中的节点,除了依赖关系元素401D之外。复合应用的功能变得比个体转换链400A、400B和400C的功能的总和;个体转换链500A和400C的功能的总和;或个体转换链400A和500B的功能的总和更好、更复杂或至少不同。

转换链400D包括两个节点401D和402D。然而,转换链400D还包括引用不同转换链类400A中的节点的单个依赖关系元素403A。同样,转换链类400D的实例可以作为单个应用独立地操作。例如,可以通过转换来提供来自数据源401D的一个或多个值的一个或多个副本,以生成用于数据目标402D的一个或多个结果值。

尽管转换链实例400A和400D可以独立地操作,但是图5D示出了包括与转换链400D联接的转换链400A的联接的转换链500D。每个转换链中的依赖关系元素现在被替换为所引用的实际节点,到依赖关系元素引用转换链400A或400D中的任一个内的节点的程度。现在,具有后缀A或D的所有节点都是转换链内的节点,并且只有具有后缀B或C的节点才是依赖关系元素。例如,节点401A、402A、403A、404A、401D和402D是增强的转换链500D内的节点,并且复合应用的功能变得比个体转换链400A和400D的功能的总和更好。

注意,图5A至5D示出了涉及转换链400A、400B、400C和400D中的两个且仅两个的所有可能的置换。转换链400B和400D不是直接联接在两个转换链组合中,因为转换链都不具有引用另一转换链中的节点的依赖关系元素。此外,转换400C和400D不是直接联接在两个转换链组合中,因为两者都不依赖于彼此。

图6A示出了三个且仅三个转换链400A、400B、400C和400D的三种可能组合中的一种。具体地,图6A示出了组合转换链400A、400B和400C的增强的转换链600A。图6B示出了组合转换链400A、400B和400D的增强的转换链600B(其中所有节点是转换链的部分,除了依赖关系元素401C和403C之外)。图6C示出了组合转换链400A、400C和400D的增强的转换链600C(其中所有节点是转换链的部分,除了依赖关系元素401B和403B之外)。注意,由于转换链400D不包括对转换链400B的依赖关系引用(或反之亦然),或者对转换链400C的依赖关系引用(或反之亦然),所以没有示出转换链400B、400C和400D的组合。图7示出了包括组合的所有转换链400A、400B、400C和400D的组合的转换链700。

因此,给定环境中的转换链400A、400B、400C和400D,可以形成8种可能的复合应用(对应于图5A至5D、图6A至6C和图7的转换链)。因此,随着各种设备的转换链被联接到环境中和从环境解耦,转换链本身也改变,并且复合应用的结构由此改变。例如,数据源401A的值的变化可能对转换链具有非常不同的影响,因为该变化的影响通过一个或多个转换自动传播,这取决于数据源401A是在仅转换链400A内,在转换链500A内,在转换链500B内,在转换链500D内,在转换链600A内,在转换链600B内,在转换链600C内,还是在转换链700内。

转换链的任何节点可以具有其中输入从端点接口实体被接收的零个或多个输入端点、以及其中输出被提供给端点接口实体的零个或多个输出端点。在本说明书和权利要求书中,“端点接口实体”被定义为硬件实体以及零个或多个环境标准。在有与端点接口实体相关联的零个环境标准情况下,端点接口仅仅是硬件实体(诸如设备或计算系统)。在本说明书和权利要求书中,“硬件实体”是指具有潜在地与端点对接的能力的任何单个物理项目或任何物理项目组合,例如,提供输入或接收输入的硬件实体可能是数据存储库、或数据存储库中的位置、用户设备、麦克风或麦克风阵列、相机或相机阵列、三维传感器、图像识别器等。如果硬件实体和对应的一个或多个环境标准一起定义了端点接口实体,则硬件实体实际上是端点接口实体,只要满足环境标准即可。但是如果环境标准不能满足,则硬件实体将失去作为端点接口实体的地位。

在本说明书中,术语“端点接口实体”和“硬件实体”可以在端点接口实体确实具有环境标准并且在这种情况下仍然满足这些标准的假定下可交换地频繁使用。此外,当关于硬件实体或端点接口实体提及术语“环境标准”时,用于成为端点接口实体的硬件实体的环境标准可以与用于不再是端点接口实体的硬件实体的环境标准不同。因此,可以在环境标准中构建一些迟滞,以避免特定硬件实体是否具有作为特定端点接口实体的资格的快速变化。

现在将提供环境标准的示例,但是本文中描述的原理不限于任何特定的环境标准。一个环境标准可以是硬件实体具有相关联的已标识的用户或已标识的一组用户。例如,如果给定的用户或一组用户正在使用硬件实体,则硬件实体可以成为端点接口实体。如果另一用户或一组用户正在使用硬件实体,则硬件实体可能不作为端点接口实体。环境标准的其他示例可以包括用于任何可想象的环境标准的环境内和/或关于硬件实体的用户或一组用户的位置、有利点或定向、环境中音频源的位置、背景噪声水平、是否存在音频签名、是否侵犯了围绕环境的安全区域、个人是否已经落入环境、环境温度、环境中的可用网络连接、照明级别和/或配置、一天或一周或一个月或一年中的时间等。

作为示例,具有被定向为能够看到平板显示器的多个查看者的安装的平板显示器可以是适当的端点接口设备,但是如果只有单个查看者,并且节点具有输入端点,则单个查看者手中的触摸屏设备可能是针对给定端点的更好的端点接口设备。作为第二示例,假定在电视上显示输出,并且激活了安全系统,则安全系统的激活可能是导致电视上显示的一些或全部信息被遮蔽的环境标准,或者甚至可能是导致电视停止成为端点接口实体并且从而与应用断开的环境标准。

图8示出了包括输入端点810和输出端点820的转换链的节点800。输入端点810被示出为包括被表示为三角形的端点811至814,其中椭圆815表示节点800可以具有任何数目的输入端点。输出端点820被示出为包括被表示为正方形的端点821至823,其中椭圆824表示节点800可以具有任何数目的输出端点。输入和输出端点的数目和类型可以由包括节点的一个或多个转换链类来定义,或者类可以提供在那些一个或多个转换链类的节点800的相应实例中的节点800的每个实例包括多少个输入和/或输出端点的灵活性。端点本身可以被认为是转换类的不重要节点,因为他们所做的只是向相应的端点接口实体提供输出或从相应的端点接口实体接收输入。图1至图7中通常没有示出端点。然而,端点是转换链使用其来通过存储、显示、输入、致动、音频、文本等与物理世界交互的机制。

已经关于具有特定节点和特定依赖关系元素的转换链的具体示例关于图1至图8描述了转换链的一般概念。然而,本文中描述的原理适用于具有任何数目的节点和任何数目的依赖关系元素的任何转换链,而不管节点的功能和依赖关系元素的身份如何。因此,本文中描述的原理可以适用于执行无限多种功能的无限多种转换链。一个或多个端点接口实体具有用于与转换链实例的端点或其部分对接的凭证。这样的凭证可以包括用于向转换链实例的一个或多个或所有节点的一些或全部端点提供输入的凭证、用于从转换链实例的一个或多个或所有节点的一些或全部端点接收输出的凭证、或者甚至是将凭证权力委托给一个或多个委托端点接口实体的权力。

转换链支持架构

根据本文中描述的原理,描述了一种架构,其中转换链可以在运行时递增地组合以形成动态变化的功能,由此改变应用是什么的概念。通过阅读这些描述,转换链就像在环境中漂浮的分子一样,在适当的推动下,这样的分子结合以产生与其组成部分不同地操作的化合物。例如,如果有正确的推动,两个氢分子可以与氧原子结合以形成水分子。尽管液态氢和液态氧不能被人类消耗,但是液态水能够并且必须被人类消耗。因此,本文中描述的原理允许转换链的分子动态地且递增地联接以制定提供适合于所经历的推动的定制功能的定制应用。这样的应用可以如此定制以使得可能有时候特定应用只被构建一次。

本文中描述的原理还允许委托方端点接口实体将权力委托给另一委托端点接口实体以与特定端点对接,而委托方端点接口实体不放弃对委托端点接口如何影响转换链实例的控制。相应地,本文中描述的原理也允许转换链被安全地拆分。

通过原子和分子组成,形成了看似无限多种有生命和无生命的物体、以及整个世界。目前,元素周期表中只有115个已知元素,其组成宇宙中无限多种有生命和无生命的物体。仅使用可以以某些方式进行组合的有限数目的转换链,可以存在具有可以在可能的应用的宇宙中生成的基本上无限多种功能的基本上无限多种应用。因此,本文中描述的原理描述了递增构建应用和共享拆分应用以适应当前情况的新的有机范例。此外,本文中描述的原理允许仔细跟踪哪个端点接口实体可以与哪个转换链的哪些节点的哪个端点进行交互的凭证,并且允许将这样的凭证临时或甚至永久地委托给其他端点接口实体。因此,在这样的有机应用环境中可以实现各种各样的协作场景。

图9示出了其中可以实现应用中的这种新范例的运行时架构900。运行时架构900包括宇宙画布910。宇宙画布910表示转换链实例在其中形成、组合、操作和消灭的宇宙。作为示例,宇宙画布910被示出为操作复杂度变化的八个转换链911至918。然而,椭圆919表示宇宙画布910可以运行很多转换链实例。给定足够的资源,宇宙画布910甚至可以运行数百或数十亿的应用链实例。

运行时架构还包括支持架构920,支持架构920包括在可观察的宇宙画布910外部操作以确保转换链实例的适当形成、组合、共享、操作和消灭的模块和组件。支持架构920本身可以接收输入并且提供输出,如由双向箭头921表示的。支持架构920还可以提供对服务的访问,如由双向箭头922表示的。支持架构920还与宇宙画布910交互,如由双向箭头923表示的,以实例化转换链,组合转换链实例,变更转换链实例,通过适当的端点接口实体实施对转换链实例的凭证使用,消灭转换链实例,等等。

宇宙画布910在其上运行的精确物理平台不是关键的。实际上,在宇宙画布910在其上操作的物理平台可以有很大的灵活性和动态变化。一些转换链的一些节点可以由一个物理平台操作(该物理平台诸如设备、端点接口实体、系统、或云,而其他节点操作另一物理平台)。在一个实施例中,宇宙画布910在云计算环境(诸如私有云、混合云或公共云)中操作。作为示例,宇宙画布可以在本地网络内,在对等计算网络中,在云计算环境中,在任何其他网络配置中,或者在以上的任何组合中。即使如此,如前所述,宇宙画布通过转换链实例的各个节点的端点与物理世界对接。

类似地,支持架构920可以在任何计算环境中,在对等计算网络中,在本地网络中,在任何其他网络配置中,或者在这些的任何组合中操作。在宇宙画布910内的转换链实例完全或主要地操作的情况下,或者甚至在云计算环境中,它可以是操作支持架构的相同的云计算环境。

在本说明书和以下权利要求书中,“云计算”被定义为用于实现对共享可配置计算资源池(例如,网络、服务器、存储装置、应用和服务)的按需网络访问的模型。“云计算”的定义不限于在适当部署时可以从这样的模型获得的其他很多优点中的任何一个。

例如,当前在市场中采用云计算,以便提供对共享可配置计算资源池的无处不在且便利的按需访问。而且,可配置计算资源的共享池可以经由虚拟化来快速地提供,并且以较低的管理工作量或服务提供商交互被释放,并且然后被相应地缩放。

云计算模型可以由各种特性组成,诸如按需自助服务、广泛的网络访问、资源池化、快速弹性、测量的服务等。云计算模型还可以以各种服务模型的形式来出现,诸如例如软件即服务(SaaS)、平台即服务(PaaS)和基础设施即服务(“IaaS”)。云计算模型也可以使用不同的部署模型来部署,诸如私有云、社区云、公共云、混合云等。在本说明书和权利要求书中,“云计算环境”是采用云计算的环境。

支持环境920包括多个模块930。模块930之一是解释输入并且作为响应确定转换链的类将被实例化的召唤(summon)模块931。例如,输入可以直接从到支持环境920的输入(从箭头921)来接收,或者经由在宇宙画布910自身中运行的转换链实例的输入来接收。可以从任一来源接收的输入在本文中将被称为“通用输入”。召唤标准用于识别某个通用输入将导致创建转换链实例。召唤标准也可以是任何环境标准。例如,召唤标准可以不仅考虑口头对话或针对硬件实体的明确的用户输入,还可以考虑其他环境因素。例如,特定用户是否坐下、离开、看某处、靠近具有触摸屏的设备等,也可以是用作用于召唤转换链类的实例在宇宙画布910内创建的召唤标准的环境标准。

模块930还包括响应于由召唤模块931做出的确定和/或响应于一般输入来实例化转换链实例的链类模块932。

模块930还包括维持每个转换链类的副本的链类维持模块933。链类维持模块933可以响应于由召唤模块931做出的确定和/或响应于一般输入来被添加到可用的转换链类的库。因此,链类维持模块可以维持转换链类的注册表。例如,链类维持模块933可以沿着类的适当的依赖关系点合并类,或者可以创建表示预先存在的转换链类的编辑版本或截短版本的转换链类。一些转换链类可以临时创建,而其他转换链可以具有更持久的持久性。此外,可以施加认证和授权以限制哪些实体可以实例化某些类的转换链。

给定转换链的依赖关系,合并模块934以适当的方式合并要在宇宙画布910中操作的转换链的实例。这样的合并响应于由召唤模块931做出的确定和/或响应于其他一般输入来发生。合并标准也可以是任何一般环境标准。同样,合并标准不仅可以考虑口头对话或针对硬件实体的明确的用户输入,也可以考虑被认为适合于合并发生的其他环境因素。

端点接口实体注册表模块935维持所有可能的端点接口实体(硬件实体和潜在相关联的用户标准)的注册表,并且在给定在宇宙画布910内操作的特定的实例化的转换链的情况下,维持哪些端点接口实体当前是活动的并且可用的。

环境模块936检测端点接口实体何时变成对于在宇宙画布910内操作的给定的实例化的转换链是活动的还是非活动的。例如,环境模块936可以检测特定端点接口实体的硬件实体的发起的一组环境标准何时开始满足,导致端点接口实体可用于应用(用于与应用的端点交互)。类似地,环境模块936可以检测特定实体的硬件实体的终止的一组一个或多个环境标准何时满足,导致端点接口实体不再可用于应用。

端点匹配模块937确定实例化的转换链的哪些活动的端点接口实体能够并且被提供凭证以向能够接收来自物理世界的输入并且在给定端点接口实体的情况下确定输入的正确形式的该转换链的每个输入端点提供输入。端点匹配模块937还确定实例化的转换链的哪些活动端点接口实体能够并且被提供凭证以接收能够向物理世界呈现输出的转换链的每个输出端点的输出。

模块930包括呈现模块938,当存在能够向输入端点提供输入的多个合格的端点接口实体时,呈现模块938决定哪个端点接口实体将提供该输入,并且潜在地决定多个端点接口实体能够向该输入端点提供输入。此外,当存在能够绘制来自输出端点的输出的多个合格端点接口实体时,呈现模块938决定哪个端点接口实体将提供该输入,并且潜在地决定多个端点接口实体中的哪些将呈现从输出端点接收的输出。

呈现模块938还决定当特定端点接口模块向转换链的输入端点提供输入时是否要施加任何限制。呈现模块938还可以决定当特定端点接口模块绘制来自转换链的输出端点的输出时是否存在要施加的任何限制。当输出是可视化时,呈现模块938可以决定如何将可视化信息格式化和/或布置在端点接口实体的显示器上。

模块930还包括委托模块939,委托模块939允许并且支持被提供凭证的端点接口实体关于从转换链实例的特定端点接收输出或向其提供输入来将权力委托给代理端点接口实体。这样,委托模块939支持转换链应用的拆分,从而允许动态移动进出协作场景。模块930内可以有其他模块,如椭圆940所示。

模块930包括兼容性模块940,兼容性模块940用于自动生成与转换链类库兼容的软件类,如将在下面关于图25和图26所描述的。模块930内可以有其他模块,如椭圆941所示。

转换链操作

现在已经关于图1至图9描述了转换链应用以及支持转换链应用的操作的架构,现在将关于图10至图24来描述转换链和支持架构的示例操作。首先,将描述转换链实例的动态构建。

现在将描述转换链实例的动态构建。根据本文中描述的原理,转换链可以递增地组合,并且易于在运行时形成动态变化的功能。转换链就像漂浮在环境内的分子一样,并且在适当的推动下,这样的分子结合以产生与其组成部分不同地操作的化合物。因此,本文中描述的原理允许动态地并且递增地联接转换链的实例,以制定提供适合于所经历的推动的定制功能的定制应用。

作为具体示例,假定存在从数据库中提取接收到的订单的转换链。销售代表的“给我看我的订单”的口头命令可以实例化该转换链类,由说明口头命令的用户过滤,并且可视化经过滤的列表或命令。随后的联接指令可以是“给我取我的客户”,其然后可能会导致另一转换链与先前的转换链自动联接以将订单与客户相匹配,并且可视化客户的订单。然后,用户可以声明“为客户添加订单例外”,可能导致另一转换链联接现有的转换链聚合,和/或导致对当前转换链聚合的现有节点进行输入。在每个阶段,用户可以基于聚合的转换链的当前状态来确定缺失什么,并且声明或输入另外的联接指令,据此,其他转换链可以联接在增长的定制应用链中。本质上,应用随着用户思考而被构建并且直观地表达他或她想要的内容,并且应用是以对环境敏感的方式构建的。

图10示出了用于响应于检测到一个或多个环境事件来制定应用的方法1000的流程图,其表示其中在宇宙画布910内创建和操作转换链的实例的简单情况。首先,检测一组一个或多个环境事件(例如,用户的存在)(动作1001)。例如,召唤模块931可以检测将触发特定转换链类的实例化的一个或多个环境事件。

响应于检测到的一个或多个环境事件,选择与输入相对应的转换类(动作1002)。例如,召唤模块931或链类模块932可以选择(由链类维持模块923维持的)可用转换链类中的哪个对应于检测到的一个或多个环境事件。

然后创建转换链类的实例(动作1003)。例如,链类模块932可以实例化所标识的转换链类的实例。当实例化转换链类时,端点接口实体匹配模块937可以向一个或多个适当的端点接口实体提供适当的凭证,使得这样的实体被提供凭证以从转换链实例的一个或多个端点接收输出和/或向其提供输入。

可选地,然后可以操作实例(动作1004)。例如,在图9中,可以在宇宙画布910内部署和操作转换链类的实例。

作为该操作(动作1004)的部分,环境模块936检测注册的端点接口实体中的哪些对于给定的实例化的转换链是活动的。此外,端点接口实体匹配模块937确定实例化的转换链的哪些活动的端点接口实体端点应当为能够接收来自物理世界的输入的转换链的每个节点的每个端点提供输入、以及什么形式的输入是可接受的。此外,端点接口实体匹配模块937确定用于实例化的转换链的哪些活动端点接口实体应当接收能够实现(例如,可视化、绘制、探测、存储、致动等)到物理世界中的输出的转换链的每个节点的每个输出端点的输出、以及什么形式的输出是可接受的。

在某个时刻,检测指示另一转换链类的实例将与现有的转换链实例组合的一个或多个另外的环境事件(诸如用户输入)。相应地,图11示出了用于响应于一个或多个另外的检测到的环境事件从而组合转换链实例的方法1100的流程图。方法1100通过检测由转换类的两个实例的组合组成的一个或多个另外的环境事件(动作1101)来发起。

作为示例,转换链实例可以与在方法1000中创建的实例组合,或者可以与由图11的方法1100的先前执行创建的转换链的实例组合。尽管不是需要的,但是转换链实例要联接的实例先前可能已经作为应用操作。因此,可以重复执行方法1100以响应于各种检测到的环境事件来构建复杂的和定制的转换链。

动作1101的检测到的环境事件可以是用于联接的表达的指令。例如,用户可能具有允许实例化所期望的应用链类的显式选择的用户界面。备选地,动作1101的检测到的环境事件可以简单地是应当联接两个转换链实例的隐式指示。例如,检测到的环境事件可以是与联接不同转换链类的两个实例相一致的任何活动,诸如特定语音。这样的输入可以包括手势、请求等。例如,如前所述,销售代表可能会在代表的对应订单已经被可视化的上下文中声明“给我取我的客户”。系统甚至可以基于历史和当前上下文猜测用户可能想要的转换链。在这种情况下,建立当前上下文的用户可能是导致系统猜测可能在某个未来时间点是期望的新的转换链被实例化的一个或多个环境事件。例如,系统可能知道,当在特定对话中用户不断讨论特定订单时,系统可能联接用于获取该订单的转换链实例,以期示出该订单。无论一个或多个联接环境事件的形式如何,图9的召唤模块931检测与转换链类的实例化(如关于图10所描述的)或两个转换实例的联接(如将参考图11所描述的)相对应的一个或多个适当的环境事件。

方法1100然后包括从一个或多个另外的检测到的环境事件确定一个转换链类的实例将与另一转换链类的实例联接(动作1102)。例如,如上所述,存在类级别限制,其中至少在一些条件下,转换链类编写者明确地使得可以联接两个转换链类的实例。例如,图4A至6C的依赖关系元素是这样的类级别的限制和授权的示例。

然而,也可以存在实例级别的授权。作为示例,动作1002可以涉及咨询定义用于联接第一转换链类和第二转换链类的实例的一个或多个条件的一组一个或多个规则。这组规则可以是动态的,并且随时间改变。例如,联接逻辑可以随时间获知某些手势或其他用户活动指示或不指示组合这样的实例的用户意图或预期的未来用户意图。因此,支持架构可以观察与多个用户中的每个相关联的历史,以便随着时间的推移,根据特定用户或一组用户的历史来更精确地预测用户意图,从而制定适当的一组召唤和合并标准。动作1102可以通过例如链类模块932参考类维持模块933已知的转换链类来执行。端点接口实体匹配模块937可以重新评估哪些端点接口实体具有用于与复合聚合转换链实例的哪些端点对接的凭证。

转换链类的编写者也可以在单个依赖关系的粒度上表达限制。例如,在转换链类400A的依赖关系元素401B中,编写者可以表达仅在依赖关系元素所联接到的转换链不包括由竞争者创作的标识的转换链类的情况下对该依赖关系元素授权联接。编写者还可以通过将限制或条件写入将桥接依赖关系本身(例如,在节点401A和依赖关系元素401B之间)的转换中来控制从转换链流出到另一联接的转换链的数据。

然而,即使转换链类可以互操作,但这并不表示用户希望该转换链类的他们的特定实例与其他转换链类的其他实例联接。毕竟,数据本身(例如,实例状态)可能对用户敏感。相应地,该方法还可以包括确定不同转换链类的实例将被联接。

用于授权不同转换链类的两个实例联接的联接标准可以包括以下中的一个或多个:用户是否在会议参与者列表上,各种设备的用户之间的关系(例如,家庭、社交网络朋友等)、设备之间的通信能力(例如,近场)、相应设备的接近度(例如,在同一会议室中)、用户的请求等。例如,联接标准可以包括一些业务标准,诸如实例的关联用户在同一团队中。作为另一示例,一个设备可以是零售空间或旅馆中的售货亭,其中顾客使用售货亭,并且售货员或礼宾人员可以自动使用他们的设备将他们的转换链与售货亭的转换链联接,从而使用复合应用与顾客交互。条件可以适用于联接标准。例如,如果礼宾人员不在(可能通过礼宾人员没有活动地使用可配对应用以联接客户的应用,或者被断开网络来检测),则侍者的设备可以能够联接客户的应用。

在一些实施例中,用于实例化要联接的两个实例中的第一实例的第一转换链类可以从现有的转换链类中得出。例如,第一转换链类可以与第一转换链类相同,除了转换链的一个或多个节点被移除。

响应于确定要联接两个实例的动作(动作1102),联接两个实例(动作1103),以跨实例的一个或多个流依赖关系建立连接,由此创建数据流的新途径和新的应用功能。例如,这种联接可以由合并模块934来完成。之后可以操作联接的实例(动作1104)。

在一个实施例中,实例本身被定向联接而不定义任何新的组合的转换链类。例如,图12A示出了用于联接两个实例的方法1200A的流程图,并且表示了图11的动作1103的示例。实例化第一转换链类的第一实例(动作1201A)并且可能操作第一转换链类的第一实例(动作1211)。此外,实例化第二转换链类的第二实例(动作1202A)并且可能操作第二转换链类的第二实例(动作1221)。此后,联接这两个实例(动作1203A)。

在其他实施例中,转换链类自身被聚合以定义新的组合类,并且该聚合类的实例被实例化,从而实现动作1103。组合的实例可以临时存在,可以针对有限数目的一个或多个用户的益处被保留,或甚至可以被添加到可用于更广泛使用的转换链类库。例如,图12B示出了表示图11的动作1103的另一示例的方法1200B的流程图。访问第一转换链类(动作1201B)并且访问第二转换链类(动作1202B)。然后组合两个类(动作1203B)。然后从组合的转换链类创建实例(动作1204)。

仅作为示例,可能采用方法1000或方法1200A的动作1201A来创建图4A的转换链的实例。现在假定检测到表明图4A和4B的转换链的实例的组合的一个或多个环境事件。然后可以执行方法1100以创建图5A的转换链的实例。在这种情况下,方法1200的动作1201A将从图4A的转换链类来实例化,并且方法1200的动作1202A将从图4B的转换链类来实例化。结果可以被认为是图4A和4B的类的聚合类的实例化(其在图5A中表示)。

现在假定检测到表明图5A和图4C的转换链的实例的组合的一个或多个环境事件。然后可以执行方法1100以创建图5A的转换链的实例。在该情况下,方法1200A的动作1201A将被用于实例化(其中来自创建图5A的转换链实例的方法的先前执行的结果可以被视为从图4A和4B的聚合类来实例化)图5A的实例。此外,方法1200的动作1201B将被用于从图4C的转换链类来实例化。结果可以被认为是图5A和4C的类的聚合类的实例化(在图6A中表示)。

现在假定检测到表明图6A和图4D的转换链的实例的组合的环境事件。然后可以执行方法1100以创建图6A的转换链的实例。在该情况下,方法1200A的动作1201A将被用于实例化图6A的实例。此外,方法1200的动作1201B将被用于从图4D的转换链类来实例化。结果可以被认为是图6A和4D的类的聚合类的实例化(其在图7中表示)。

现在已经描述了转换链的一般原理、它们可以操作的环境以及它们的聚合原理,本说明书现在将解决具有转换链实例上的凭证的委托方端点接口实体如何将权力委托给被委托方端点接口实体以接收来自一个或多个特定端点的输出和/或向一个或多个特定端点提供输入。因此,应用的拆分和共享在转换链实例的这种有机宇宙画布中成为可能。

图13A示出了在其中示例转换链1300将要被拆分的状态1300A中的示例转换链1300。图14示出了用于制定拆分的应用的方法1400的流程图。因为方法1400可以分别在图13A和13B的示例转换链1300A和1300B的上下文中执行,所以将频繁参考示例转换链1300A和1300B来描述图14的方法1400。

如图13A所示,示例转换链1300A包括六个节点1301至1306。每个节点可以具有零个或多个输入端点以及零个或多个输出端点。然而,为了保持图更清洁,图13A的示例转换链1300A未示出端点。类似地,图13B中的示例转换链1300B未示出端点。

在图13A的初始状态1300A,特定端点接口实体(在本文中被称为“第一端点接口实体”)被提供凭证以向转换链1300A的端点提供输入并且从其接收输出。该凭证的范围由虚线边界1310表示。

现在假定由转换链1300A表示的应用将被拆分。也就是说,假定第一端点接口实体提供交互或输入,该交互或输入建议创建表示更大的转换链实例1300A的部分的转换链实例。进行这样的拆分可能有几个原因。原因之一可能仅仅是因为第一端点接口实体将使用较大转换链类的那个部分的另一实例。另一原因可能是将与作为该部分的一部分的那些节点的一个、一些或全部端点相关联的输入和/或输出权限委托给另一端点接口实体。换言之,第一端点接口实体至少暂时地将转换链的部分分配给第二端点接口实体。编辑和共享手势可以用来表达这个委托的意图。例如,用户可能在用户界面的某个部分上打叉(指示目标端点界面实体不具有查看或向那些字段中输入的能力),并且然后指示共享手势。

在任何情况下,检测表示将较小类的实例从较大的转换链类拆分的交互和/或一个或多个环境事件(动作1401),由此发起图14的方法1400。基于一个或多个检测到的环境事件,系统确定要创建表示较大的转换链类的部分的部分转换链类(动作1402)。例如,该确定可以由图9的委托模块939进行。例如,参考图13A,假定要创建仅由节点1305和1306表示的部分转换链类。作为响应,实例化部分转换链类的实例(动作1403)并且操作部分转换链类的实例(动作1404)。例如,可以(由第一端点接口实体和/或由委托模块939)指示第二端点接口实体与实例化的部分转换链类的端点进行交互。实例化的部分转换链类可以被发送到第二端点接口实体。

图13B表示仅包括节点1305和节点1306的部分结果转换链1300B。虚线边界1320被示出为表示特定端点接口实体可以具有与节点1305和1306的一些或全部端点对接的凭证。在一个实施例中,不是为了委托的目的而进行拆分,并且第一端点接口实体也具有与新的部分转换链1300B中的节点1305和1306的端点对接的凭证。然而,非常有用的情况是第一端点接口实体已经向第二端点接口实体委托了与部分转换链1300B的节点1305和1306的至少一些端点对接的权限。

图15A至图15D示出了从部分转换链1300B的角度来看这样的委托可能如何发生的若干可能的实施例。在图15A至图15D的符号中,由虚线边界表示的节点表示仅有原始节点的一些端点可用于与第二端点接口实体对接的节点。

在图15A的实施例1500A中,节点1305被示出为实心圆,表示节点1305的所有端点已经被实例化并且可用于第二端点接口实体。同时,节点1306用虚线圆圈示出,表示节点1306的端点的仅部分已经被实例化并且可用于第二端点接口实体。

在图15B的实施例1500B中,节点1306被示出为实心圆圈,表示节点1306的所有端点已经被实例化并且可用于第二端点接口实体。同时,节点1305用虚线圆圈示出,表示节点1305的端点的仅部分已经被实例化并且可用于第二端点接口实体。

在图15C的实施例1500C中,节点1305和1306均用虚线圆圈示出,表示节点1305和1306中的每个的仅部分端点已经被实例化并且可用于第二端点接口实体。

在图15D的实施例1500D中,节点1305和1306都被示出为固体电路,表示节点1305和1306中的每个的所有端点已经被实例化并且可用于第二端点接口实体。

注意,从第一端点接口实体的角度来看,不需要改变处于状态1300A的转换链1300的实例。在这种情况下,针对第二端点接口实体的节点1305和1306创建的无论什么端点可以简单地是被克隆的端点。在操作期间,如果克隆的输入端点从第一端点接口实体和第二接口实体接收到不一致的输入,则合并标准可以解决不一致性。例如,可能的不一致性被解决,有利于委托端点接口实体。合并操作可以由例如图9的委托模块939提供。

在替代实施例中,当从较大实例1300A中减去部分实例1300B时,可以创建表示逻辑剩余的剩余实例,并且因此完全不克隆端点。例如,在其中第二端点接口实体被赋予对节点1305和1305的所有端点的访问的图15D的情况下,可以仅利用节点1301至1304来创建剩余实例。在图15A的情况下,剩余实例可以包括节点1301至1304以及有限形式的节点1306,其中只有未被包括在剩余实例的节点1306中的端点被包括在部分实例1500A中。在图15B的情况下,剩余实例可以包括节点1301至1304以及有限形式的节点1305,其中只有未被包括在剩余实例的节点1305中的端点被包括在部分实例1500B内。在图15C的情况下,剩余实例可以包括节点1301至1304以及有限形式的节点1305和1306,其中只有未被包括在剩余实例的节点1305和1306中的端点被包括在部分实例1500B内。

在操作中,委托模块939可以允许第一端点接口实体在与转换链1300A的部分1300B交互中保持对第二端点接口实体的动作的控制或监督。例如,第二端点接口实体可以关于部分1300B通过第一端点接口被提供凭证,使得去往和来自部分转换类1300B的实例的数据流由第一端点接口实体批准和/或通过由第一端点接口实体控制的转换链1300A的剩余部分引导。此外,第二端点接口实体对数据(诸如数据服务)的访问也受到严格控制。不在部分转换链类内的节点的数据经由第一端点接口实体的批准来提供。

图16示出了架构1600,其中被分配给第一端点接口1621A的较大转换链实例1601A经由代理服务1610与被分配给第二端点接口1621B的分派转换链实例1601B安全地对接。

较大的转换链实例1601A类似于图13A的转换链1300A,除了第一端点接口实体1621A仅可以访问节点1305(现在称为节点1305A,因为它现在具有与第一端点接口实体1621A更有限的对接能力)和节点1306(现在称为节点1306A,因为它现在具有与第一端点接口实体1621A的更有限的对接能力)的部分端点。第一端点接口实体1621A与较大转换链实例1601A对接的能力用双向箭头1622A表示。

部分转换链实例1601B类似于图13B的部分转换链1300B,除了(类似于图15C的情况)第二端点接口实体1621B仅可以访问节点1305的(现在被称为节点1305B,因为其现在具有与第二端点接口实体1621B更有限的对接能力)和节点1306(现在被称为节点1306B,因为其现在具有与第二端点接口实体1621B的更有限的对接能力)的部分端点。第二端点接口实体1621B与部分转换链实例1601B对接的能力由双向箭头1622B表示。

代理服务1610提供了抽象点,由此第二端点接口实体1621B不能看到较大转换链实例1601A的节点1301到1304或与其交互,第二端点接口实体1621B也不能与被分配给第一端点接口实体1621A的节点1305和1306的任何端点对接。作为示例,代理服务1610可以由图9的委托模块939在转换链的部分被分配给另一端点接口实例时建立。

代理服务1610跟踪节点1305上的哪些端点被分配给每个节点1305A和1305B、以及节点1306上的哪些端点被分配给每个节点1306A和1306B。当代理服务1610接收来自较大转换链(例如,节点1301)的输入转换时,代理服务1610根据哪些值受到输入转换的影响,适当地将转换引导至节点1305A和1305B中的每个。此外,当由节点1305A和1305B向节点1301提供输出转换时,代理服务1610合并输出并且将合并的转换提供给节点1301。从节点1301的角度来看,好像节点1301正在与节点1305交互,正如节点1301在应用拆分之前所做的一样。因此,通过维持第一和第二端点接口实体1621A和1621B之间的适当的信息拆分,性能和功能被保留,同时实现了安全的应用拆分。这种输出转换的合并和输入转换的拆分由代理服务1610的组件1611执行。

代理服务1610还可以包括记录模块1620,记录模块1620评估对节点1305A、1305B、1306A和1306B中的每个中的端点做出的输入和输出,并且记录这样的输入和输出。记录模块1612还可以记录在节点之间进行的结果转换。这样的记录被制作成存储库1613。重放模块1613允许重放动作。这在部分转换链稍后被分配给另一(即,第三)端点接口实体并且该第三端点接口实体的用户想要查看完成了什么的情况下特别有用。该第三端点接口可以加速在第二端点接口实体与部分转换链的任期(tenure)期间发生的事情。重放的另一原因可能是检查、和批准、提交或认可某些操作。例如,想象订单编辑场景,其中多个用户试图推迟或退回一些交付。第一用户可能要求第二用户帮忙。然而,第一用户不希望第二用户以导致永久副作用的方式编辑订单(例如,由于服务呼叫,一些运送槽被释放,并且一些现在的槽被预订)。第一用户可能想要重放第二用户所做的事情,并且如果第一用户喜欢她所看到的,则接受并且提交所采取的操作。这里,重放机制另外模拟第二用户的副作用服务调用。然后,在重放时,第一用户可以使那些服务调用被绑定到实际服务。代理服务1610进一步确保执行第二端点接口实体的有限凭证。例如,节点1305B和1306B上的端点可以不接收来自服务的第一端点接口实体拥有的专有数据,并且同样可以不改变这种专有数据,至少不在没有第一端点接口实体的同意的情况下。

如本文所述的转换链实例的拆分允许各种各样的情况。例如,通过仅允许在被提供给第二端点接口实体的部分转换链中克隆输出端点,并且保留具有第一端点接口实体的输入和输出端点,第二端点接口实体可以具有关于第一端点接口实体正在做什么的共享视图。当然,第一端点接口实体可以限制在部分转换链中提供哪些输出端点,并且因此甚至可以限制这样的视图共享。此外,通过在第一和第二端点接口实体之间划分输入端点来实现协作和共同使用场景。部分转换链的若干实例和版本可以从主转换链拆分,以允许跨两个以上的端点接口实体的这种情况。每个拆分可以具有维持转换链的正确的信息拆分和功能的相关联的代理服务。

图17A至图17C分别通过相应的状态1700A至1700C示出了用户界面1700的进展的具体示例,并且示出了可以如何在由本文中描述的更宽泛的原则实现的无限多种情况中的一种情况下发生应用拆分、委托和编辑。用户界面状态1700A示出了正在显示的对象1710。对象是“订单对象”,并且仅表示底层应用(例如,转换链)能够提供的整个用户界面的部分。订单对象1710包括四个订单字段1711至1714的枚举。每个订单字段包括订单的名称、订购的项目的图片和采购订单号。用户可以通过选择订单之一来与对象1710交互(并且是环境事件的示例),使得订单的属性出现在细节字段1715中。在图17A中,选择字段1711(如由认为垂直的条1716所示),表示细节字段1715包括关于该订单的细节。在该示例中,订单对象可以对应于转换链中的节点,订单对象的可视化是该节点的输出端点,并且输入能力点是该节点的输入端点。

现在假定用户提供关于用户界面1700的选择用户交互,或者更具体地提供关于订单对象1710的选择用户交互。这种选择用户交互可以包括手势。例如,在状态1700A,用户已经(用手势1720)圈定订单对象1710。这导致选择订单对象。

在图17B中,示出了后续状态1700B,其中用户已经提供了关于用户界面的或者更具体地关于所选择的部分的子部分的编辑用户交互。在该示例中,用户已经通过关于与该子部分相对应的用户界面输入划掉手势(即,通过划掉字段1712)来编辑了字段1712。

在图17C中,示出了后续状态1700C,其中用户已经选择了用于共享选择部分(减去编辑的子部分)的目标,并且已经发起与该目标部分的共享。特别地,用户已经与元素1740交互,导致在字段1712被编辑的情况下发生订单对象1710的共享。这是可以使用本文中描述的原理实现的可枚举的各种共享之一的示例。

图18示出了用于响应于第一端点接口实体处的用户输入或一个或多个其他环境事件来共享应用的方法1800的流程图。该方法在有多个应用操作(动作1801)的上下文中执行。例如,在图9中,以在宇宙画布910内操作的转换链的形式存在多个应用。此外,保存多个端点接口实体的注册表(动作1802)。在图9中,例如,该注册表可以由端点接口实体注册表模块935维持。回想一下,端点接口实体可以是硬件实体,并且可能包括定义关于该硬件实体的用户状态的相关联的用户标准。单个用户可能可以关于多个注册的端点接口实体满足用户标准。

对于每个应用,执行框1810的内容。具体地,标识从端点接口注册表中选择的至少一个端点接口实体(动作811)以与应用(或其部分)对接。该选择可以包括确定所标识的端点接口实体被提供凭证以与应用(或其部分)对接(或对应)。作为该标识的部分,确定关于端点接口实体、一个或多个环境事件(如果有的话)满足(动作2021)。例如,在图9中,该标识可以由端点匹配模块937进行。

然后允许所标识的端点接口实体(动作1812)与应用(或其部分)对接。换言之,在本申请(或其部分)的范围内,所标识的端点接口实体被允许与该范围内的对应应用端点对接。在其中不同端点接口实体与应用的不同部分对接的拆分应用的情况下,委托模块939如上所述进行操作。

在存在对于给定应用可用的多个端点接口实体的情况下,对适当的端点接口实体的标识(动作1811)还可以包括确定1)用于在所标识的端点接口实体的硬件实体处绘制的输出端点对于满足所标识的端点接口实体的用户标准的至少一个(多个)用户是有效地感知的,或者具有对于响应于环境中的一些隐含事件来完成用户任务意图的部分或传递适当动作有帮助或需要的一些特定特征,以及2)不与在硬件实体处绘制的至少一个其他输出端点冲突,从而不利地影响满足用户标准的至少一个用户的感知。类似地,适当的端点接口实体的标识(动作1811)还可以包括确定1)用于在所标识的端点接口实体的硬件实体处输入的输入端点能够接收来自至少一个(多个)活动端点接口实体的输入,或者具有对于响应于环境中的一些隐含事件来完成用户任务意图的部分或传递适当动作有帮助或需要的一些特定特性;以及2)用于在所标识的端点接口实体的硬件实体处输入的输入端点不与在硬件实体处绘制的至少一个其他输入端点冲突,从而不利地影响与另一端点接口实体对接的至少一个用户的输入的能力。通过关于应用的所有输入和输出端点的这些确定,可以确定适当的对接分布。

图19示出了用于跨多个硬件实体与应用分布式对接的方法1900的流程图。方法1900是在存在与特定应用对接的多个端点接口实体的上下文中的图18的动作1812的示例。该方法包括标识多个硬件实体可用于与具有多个端点的应用对接(动作1901)。方法1900然后包括执行硬件实体的分配的分布(动作1902)以与端点进行交互。该分配包括分配每个硬件实体可以与哪些应用端点对接。该分配可以是基于规则的。

当此后操作应用(动作1903)时,在端点处执行各种交互。呈现模块938通过针对每个端点根据硬件实体的输入和输出硬件能力限制端点的交互能力来定制硬件实体与端点的交互(动作1904)。例如,如果要在没有触摸输入的大型显示器上显示对象,则可以去除“触摸此处”以执行某个功能的提示,而如果对象正在触摸屏上显示,则可以存在该提示。如果在高保真度显示器上经由特定输出端点显示信息,则与例如具有较小显示器的手表相比,可能可以在高保真度显示器上显示更多细节。因此,端点的交互能力可以受到限制。换言之,可以根据硬件实体的能力来限制到端点的输入,并且可以根据硬件实体的能力来限制来自端点的输出。

此外,取决于检测到与硬件实体相关联的一个或多个环境事件,可以进行限制。例如,如果大多数用户远离显示器,则可能显示较少的细节以有利于可视化的放大。用于确定如何限制端点的规则可以至少部分地基于1)硬件实体的交互能力,2)硬件实体的能力中的预期干扰,3)一个或多个用户关于硬件实体中的至少一个或多个的位置;以及4)一个或多个用户关于硬件实体中的一个或多个的控制。

关于图16描述的拆分应用配置的一个益处是记录了被分配给被委托方端点接口实体的应用的部分的数据流和交互。因此,到该部分的本质上同步的数据流可以通过记录其内容来转换成异步通信。这允许记录重放或传送到另一硬件实体。因此,本文中描述的原理允许通信从同步平滑转变到异步。

图20示出了用于应用的第一部分以准备从同步到异步的这种转变的方式与应用的第二部分进行通信的方法2000的流程图。在所描述的上下文中,应用可以是转换链。在整个方法中,监测应用的各个部分之间的数据流(动作2001)。该监测还可以包括监测第二部分内的节点之间的数据流、和/或第二端点接口实体与第二应用部分的端点节点的交互。例如,在图16的上下文中,记录模块1612可以在应用的第一部分是部分1601A并且应用的第二部分是部分1611B的上下文中执行监测。

如果在该监测(动作2001)期间检测到数据流(判定框2010为“是”),则记录数据流(动作2011),并且该方法返回以继续监测(动作2001)。如果在该监测(动作2001)期间检测到第二硬件实体与应用的第二部分之间的交互(判定框2020为“是”),则记录交互(动作2021),并且方法返回以继续监测(动作2001)。在没有检测到数据流(判定框2010为“否”)并且没有检测到交互(判定框2020为“否”)的时候,只要应用被拆分,监测就简单地继续。

记录以可以重放(例如,通过被分配给应用的第二部分的第二硬件实体)或者重新分配(例如,从第二硬件实体到第三硬件实体)的方式进行。图21示出了在记录同步通信的上下文中用于转变到异步通信的方法2100的流程图。首先,接收重放所记录的通信的请求(或者检测表明其将有帮助的一个或多个适当的环境事件)(动作2101),之后执行所请求的重放(动作2102)。例如,如果第二端点接口实体没有准备好来自第一端点接口实体的同步通信,则第二端点接口实体可以简单地重放通信以加快速度。

在另一场景中,第一端点接口实体可以将应用的拆分部分从第二端点接口实体重新分配给第三端点接口实体,而第一端点接口实体不必重新进行通信,并且能够采取第二端点接口实体能够提供什么输入的优势。图22示出了用于将应用的拆分部分重新分配给另一端点接口实体的方法2200的流程图。具体地,检测移动应用的拆分部分的请求(或者检测表明其将有帮助的一个或多个适当的环境事件)(动作2201)。例如,图23示出了可以在其中进行这种移动请求的环境2300。应用的第一部分2311已经与应用的第二部分2321进行通信(如箭头2331所示)。第一硬件实体2310与应用的第一部分2311的端点进行交互(如箭头2312所示)。第二硬件实体2320至少具有与应用的第二部分2321的端点交互(如箭头2322所示)的能力。在这些通信期间,记录的信息2323(即,由箭头2331表示的记录的数据流、以及由箭头2322表示的记录的交互)也被维持。

响应于移动请求(动作2201),允许第三端点接口实体2330与应用的第二部分2321交互(动作2202),并且将记录的信息2323提供给第三端点接口实体2330(动作2203)。从第二端点接口实体到第三端点接口实体的关于应用的第二部分的这种控制和记录信息的传送由图23中的箭头2340表示。此后,应用的第一部分可以与现在已经被重新分配给第三端点接口实体2330的应用的第二部分通信(如箭头2332所示)。

由于可能影响信息如何格式化和布局的很多自由度,在这种环境中显示的信息的格式化变得具有挑战性。例如,如前所述,应用本身可能增长和拆分,因此应用本身可能甚至在短时间内动态地改变。这影响导致可视化的输出端点的数目和性质。此外,可能有多个硬件实体绘制应用的可视化,每个具有不同的显示能力。另外,改变环境条件可以改变硬件实体绘制信息的可用性。例如,由于执行用户标准,变化的条件可能导致端点接口实体动态变为可用和不可用。

图24示出了用于支持接收来自在使用期间重新定义的应用的输出的显示器上的布局的方法2400的流程图。方法2400可以关于绘制来自应用的输出端点的信息的每个可用显示器来执行。首先,呈现信息的布局(动作2401)。然后,然而,由于之前提到的任何一个自由度,检测用于改变布局的触发(动作2402)。作为响应,改变针对该显示器的布局(动作2403),并且呈现改变后的布局(动作2401)。每个检测到的触发重复该过程,从而改变布局。信息的改变后的布局可以表示所呈现的信息的变化。例如,可能显示更多或更少的细节,或者可能先前没有显示的主题变为显示,或者主题从显示器移开。也可以对可视化进行计算。例如,信息可以被合并在显示器中。

可能改变布局的触发的示例包括但不限于:1)由于应用的增长或拆分,第一应用变为第二应用,2)多个显示器之间的输出分配的变化,3)显示器的用户的变化,4)一个或多个用户关于显示器的位置的变化,5)一个或多个用户关于显示器的控制的变化,6)一个或多个用户关于显示器或所显示的信息的授权的变化。

不是简单地应用于布局,图24的方法2400可以应用于所有形式的输出和所有形式的输入。例如,对于输出,可以说出输出的一些部分。一些端点接口实体可以点亮或振动,或者更多地传达信息(例如,屏幕旋转一点点以提示紧迫性,或伴随的嗡嗡声以某种明显的方式操纵)。输出的不同部分可以被排序,而不是并列,可能是通过在相同或多个端点接口实体上创建动画。例如,对于输入,特定的输入菜单可以在一个显示器而不是另一显示器上点亮。一个麦克风而不是另一麦克风可以打开(其中麦克风上的灯指示哪个麦克风是活动的)。当然,这些只是示例。

类库的自动填充

因此,转换链类表示应用中的新范例,特别是当考虑可以如何将这些类和/或其实例自动组合以制定定制应用时几乎与用户想象用户希望应用做什么一样快。这样的应用可以基于转换链类库的可用类来构造。这样的库可以由直接编写转换链类的应用编写者填充。然而,还有大量的传统软件没有以转换链类的形式来编写。根据本文中描述的原理,可以基于传统软件自动生成与转换链类兼容(并且因此可以被添加到转换链类库)的软件类。

图25示出了用于生成与接收软件表示的转换链类库兼容的软件类的方法2500的流程图。方法2500可以由例如图9的兼容性模块940执行。图26示出了可以在其中执行方法2500的环境2600。因此,现在将频繁参考图26的环境2600来描述图25的方法2500。

该方法通过访问(例如,接收)软件表示开始(动作2501)。软件表示可以是要被转换成与转换链类库兼容的形式的传统软件。例如,如上所述,链类维持模块933可以访问并且维持转换链类的库。软件表示可以是希望生成可以被添加到转换链类的库的类的传统软件。软件表示可以是例如对象类、应用类、功能、模块、或可以分析其依赖关系的任何其他软件。

参考图26,可以由转换模块2611经由输入接口2610来访问软件表示2601。作为示例,输入接口2610可以是应用程序接口(API)。图25的方法2500的剩余部分可以由转换模块2611执行。

然后标识软件表示的一个或多个以及潜在地为多个的依赖关系(动作2502)。例如,在图26中,这样的标识可以由转换模块2611执行。在该示例中,软件表示2601、两个依赖关系2621A和2621B被示出为在软件表示2601内。然而,椭圆2621C表示可以存在在软件表示中标识的任何数目的依赖关系。标识可以在软件表示内的标记的帮助下执行。例如,这样的标记可以明确地标识依赖关系和依赖关系的性质。依赖关系及其性质也可以通过软件表示的静态和/或动态分析来标识。标记也可能标识软件的可共享性的各方面。例如,标记可以指示哪些部分可以被读取或写入以及在什么情况下以及由谁进行。

还确定依赖关系元素对应于转换链类库的至少一个转换链类的至少一个依赖关系元素(动作2503)。再次参考图26,这可以由转换模块2611执行。作为示例,假定转换链类2630是转换链类库的转换链类之一。转换模块2611可以确定软件表示2601的依赖关系2621B对应于(如虚线2641所示)转换链类2630的依赖关系元素2631。由转换模块2611来支持标识依赖关系以及其特性的对应关系(动作2502)。可以执行动作2503以标识软件表示的依赖关系与转换链类库中的一个或多个转换链类的依赖关系元素之间的多个这种对应关系。

方法2500然后包括生成对应于软件表示并且包括与所标识的对应依赖关系相对应的依赖关系元素的软件类(动作2504)。如果存在多个标识的对应依赖关系,则在所生成的软件类中可以存在多个对应的依赖关系元素。所生成的软件类的依赖关系元素被构造为由合并模块可解释为与转换链类库的转换链类的依赖关系元素兼容。

例如,在图26中,转换模块2611生成包括依赖关系元素2622的新的软件类2602。依赖关系元素2622被构造为由合并模块解释为与转换链类2630的依赖关系元素2631兼容(如由虚线2642所示)。所引用的合并模块可以是图9的合并模块934,并且虚线2642的兼容性可以表示合并模块934可以可能以与以上针对图5A至图7所描述的方式类似的方式潜在地将新的类2602的实例与依赖关系元素2622和2631处的转换链类的实例联接。

所生成的类2602可以是例如含有具有端点的至少一个节点的转换链类。在转换模块2611找到足够的信息来确定软件表示2601的内部数据和转换的情况下,所生成的类2602也可以是具有多个节点的转换链类。转换模块2611可以经由输出接口2612(其也可以是API)提供新的类。

然后可以将该软件类添加到转换链类库(动作2505)。例如,在图26中,软件类2602可以被添加到由图9的链类维持模块933维持的转换链库。因此,软件类2602可以由其自身或经过合并、共享等的其实例有益于宇宙画布910的生态系统,如上面详细描述的。

因此,已经基于转换链描述了健壮的和有机的应用模型。首先关于图1至8描述了转换链的概念。然后参考图9描述了示例支持架构。此后,关于图10至24描述了转换链的各种操作(包括联接、拆分、委托、端点限制、格式化等)。然后,关于图25和图26描述了用于添加到转换链类库的新的类的自动生成。当然,所有这些功能都由计算技术支持。相应地,为了完整性,现在将关于图27描述通用计算系统。

计算系统描述

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

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

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

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

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

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

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

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

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

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

因此,本文中描述的原理提供了新的应用范例,其中可以基于来自用户的输入或一个或多个其他检测到的环境事件根据用户自身出现的需要动态地构建复合和定制应用。而且,这些应用可以被安全地共享。而且,如本文所述,可以基于传统软件自动生成新的类并且将其添加到转换链类库。

在不脱离本发明的精神或本质特征的情况下,可以以其他具体形式来实施本发明。所描述的实施例在所有方面仅被认为是说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是由前面的描述来指示。在权利要求的等同的含义和范围内的所有变化都将被包括在其范围内。

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