掌桥专利:专业的专利平台
掌桥专利
首页

受协调设备环境的工作流配置

文献发布时间:2023-06-19 11:55:48


受协调设备环境的工作流配置

背景技术

一般而言,计算设备利用一个通信网络或一系列通信网络来交换数据。公司和组织操作计算机网络,该计算机网络互连多个计算设备以支持操作或向第三方提供服务。计算系统可以位于单个地理位置或位于多个不同的地理位置(例如,通过专用或公共通信网络互连)。具体地说,数据中心或数据处理中心(本文通常称为“数据中心”)可以包括多个互连的计算系统以向数据中心的用户提供计算资源。数据中心可以是代表组织运营的私有数据中心,或可以是代表公众或为公众利益运营的公共数据中心。

为了便于提高对数据中心资源的利用,虚拟化技术允许单个物理计算设备托管对数据中心的用户表现和操作为独立计算设备的虚拟机的一个或多个实例。通过虚拟化,单个物理计算设备可以以动态方式创建、维护、删除或以其他方式管理虚拟机。进而,用户可以从数据中心请求计算机资源,包括单个计算设备或联网计算设备的配置,并为用户提供不同数量的虚拟机资源。

在一些环境中,经由通信网络通信的计算设备可对应于具有作为计算设备的主要功能的设备,诸如台式个人计算机。在其他环境中,至少某一部分经由通信网络通信的计算设备可以对应于具有至少一个可选主要功能的嵌入式设备或瘦设备,诸如具有单独的主要用途(例如,恒温器或冰箱)同时还提供至少有限的计算功能的家用电器。在一些情况下,这些嵌入式设备或瘦设备的本地用户接口受到限制,因此可能需要远程管理来实现这些设备的一些功能。

附图说明

在所有附图中,附图标记可重复使用以指示所指代元件之间的对应关系。提供了附图以示出本文所述的示例实施方案且附图不旨在限制本公开的范围。

图1是示出说明性环境的框图,在该环境中,协调器可操作以本地化管理和协调受协调环境内的受协调设备的操作,并且其中协调器可与客户端设备和服务提供者环境通信以实现工作流;

图2示出了提供图1的协调器的计算设备的一般架构;

图3A和图3B示出了由图1的协调器管理的受协调设备的一般架构;

图4示出了可用于生成和提交受协调环境的工作流定义的客户端设备的一般架构;

图5是图1的环境的框图,示出了用于实现本申请的一个或多个方面的受协调设备部件的实施方案;

图6是示出工作流定义的形成的框图;

图7是图1的说明性环境的框图,其示出了受协调环境中的工作流的规范和实现;和

图8是示出根据本申请的各方面的协调网络管理例程的说明性交互的流程图。

具体实施方式

一般而言,本公开的各方面涉及在受协调环境内存在的协调器,以控制受协调环境内的受协调设备的操作和功能。在一些情况下,受协调设备可以对应于具有至少一个可选主要功能的嵌入式设备或瘦设备,诸如具有单独主要用途的家用电器。在一些情况下,此类设备可被称为“物联网”设备或“IoT”设备。受协调设备可以包括对计算设备资源的访问,并且因此可以受益于远程管理。例如,受协调设备可以配置有图形处理单元,或GPU,其可以在由受协调设备执行可执行代码期间作为计算设备资源被访问。本文公开的协调器能够在包括协调器和受协调设备的环境(诸如局域网或“LAN”环境)内本地化地实现对受协调设备的这种远程管理。

因此,协调器的使用能够在不需要本地环境以外的通信的情况下实现受协调设备的管理,从而与使用外部或公共通信网络相比,可以降低隐私风险并提高通信速度。具体地,本公开的各方面涉及将协调器用作本地化按需代码执行系统,从而使得能够在协调器上快速执行可移植的代码段以实现功能。这些可移植的代码段在本文中可以称为“任务”。在一些情况下,可以利用任务来诸如通过改变设备的状态来协调受协调设备的功能。例如,在受协调设备是支持网络的灯的情况下,任务可以根据协调器的输入(诸如当前时间、用户输入或另一受协调设备的状态)来改变灯的状态(例如,打开或关闭)。协调器还可以根据多个不同的协议启用通信受协调设备和任务,并且在一些情况下提供这些协议之间的转换功能。更进一步,在一些情况下,协调器可以管理任务的执行位置,使得任务可以根据候选设备的功能以及任务执行的要求在协调器上、在受协调设备上或在远程环境(例如,远程网络计算环境)的设备上执行。在一些情况下,这些任务可以是用户定义的,使得用户能够根据对应于任务的用户提交的代码在协调器或受协调设备上实现各种功能。因此,协调器可以对受协调设备进行快速可重新配置的本地化管理。

一般来说,任务或其他用于受协调设备的按需可执行代码的典型部署周期包括可执行代码的生成、可执行代码向协调器的传输、协调器对接收到的代码的处理、经处理的代码(例如,任务)到选定的受协调设备的部署以供执行。在可执行代码的开发和测试期间,在部署任务之后,还要在执行已部署任务的过程中对受协调设备进行测试。但是,一般来说,实现用于受协调设备网络的工作流或应用需要详细的知识和经验。

为了解决与具有渲染源的网络相关联的潜在低效率问题,提供了一种受受协调网络服务,该服务促进了IoT设备的受协调设备网络的设计和实现。说明性地,受协调网络服务为各个IoT设备或受协调设备定义模块或模型,这些模块或模型指定设备的必要输入、设备的输出和通信协议。通过接口,用户设备可以选择一组IoT设备,并指定它们的连接方式以及与通信流关联的决策逻辑。然后,受协调网络服务可以自动识别实现决策逻辑的映射信息,并为指定设备之间的通信提供必要的数据变换。所选模块和映射形成了受协调设备网络的工作流。受协调网络服务然后可以生成可执行代码以在受协调设备环境中实现所形成的工作流,诸如经由协调器或作为独立可执行代码。

将针对特定工作流或说明性示例(诸如用于收集用户输入或生成结果的图形用户接口)的实现来描述本申请的一个或多个方面。但是,这些示例本质上是说明性的,并且不应当被解释为限制性的。

如本领域的技术人员根据本公开将认识到的,本文公开的实施方案提高了计算系统(且特别是具有受限的本地化用户接口的计算系统)由外部设备进行协调和管理的能力。具体地,本公开提供了高度可配置的协调器,以便在减少或消除对经由外部或公共通信网络进行通信的需求的同时,以可靠的方式协调和管理受协调环境内的设备。因此,本文公开的实施方案提供了对受协调设备的更迅速的反应控制(例如,由于减少通信等待时间),以及增加了受协调设备的安全性。因此,本公开总体上代表对现有数据处理系统和计算系统的改进。

结合附图参考以下详细描述,本公开的前述方面和许多附带优点将变得更容易领会并且变得更好理解。

图1是说明性操作环境100的框图,其包括一个或多个受协调环境110,其中协调器114可以操作以控制受协调设备112,可以与该受协调环境110进行交互(例如,请求受协调设备112的状态变更)的客户端设备102,以及可协助与多种受协调环境110中的协调器114进行通信或协助协调器的配置的服务提供者环境120。

受协调环境110、客户端设备和服务提供者环境120可以经由网络104通信,该网络可以包括任何有线网络、无线网络或其组合。例如,网络104可以是个域网、局域网、广域网、空中广播网络(例如,用于收音机或电视)、电缆网络、卫星网络、蜂窝电话网络或其组合。作为另一个示例,网络104可以是可能由各个不同方操作的链接网络的可公开访问网络,诸如互联网。在一些实施方案中,网络104可以是专用或半专用网络,诸如公司或大学内联网。网络104可以包括一个或多个无线网络,诸如全球移动通信系统(GSM)网络、码分多址(CDMA)网络、长期演进(LTE)网络或任何其他类型的无线网络。网络104可以使用经由互联网或其他前述类型的网络中的任一种进行通信的协议和部件。例如,网络104使用的协议可以包括超文本传输协议(HTTP)、HTTP安全(HTTPS)、MQTT、约束应用协议(CoAP)等。经由互联网或其他前述类型的通信网络中的任一种进行通信的协议和部件是本领域的技术人员所公知的,且因此未在本文进行更详细的描述。

尽管本文公开的一些实施方案可以利用诸如MQTT的已知协议,根据此类协议的标准实现,但是其他实施方案可以改变此类协议的实现。例如,标准化的MQTT可以利用“保活”功能,由此客户端和代理必须在阈值时间段内(“保活”阈值)交换标准数据或专用保活消息(例如MQTT ping),否则认为连接已断开。但是,由专用保活消息创建的开销在受协调环境112中可能是不可取的。因此,本申请的一些实施方案可以实现可变保活阈值,由此当发送保活消息时,保活阈值增加,直到通信中发生错误。说明性地,在第一保活阈值期满,导致客户端传输保活消息,并且客户端从代理获取保活响应的情况下,客户端可以将用于后续传输的保活阈值增加某一量(例如,50%、n ms等),可能会达到最大量。在第一保活阈值期满,导致客户端传输保活消息,并且客户端没有从代理获取保活响应的情况下,客户端可以将用于后续传输的保活阈值减小某一量(例如,50%、n ms等)或者减小到默认最小值。因此,当传输和确认保活消息时,可以增加用于后续传输的保活阈值,从而减少用于支持这种传输的带宽。MQTT的这些变化在具有低带宽或高拥塞的环境110中可能特别有益。

每个受协调环境110可以包括经由执行环境110的网络(该网络在图1中未示出)进行通信的协调器114和任何数量的受协调设备112。由于它们在受协调环境110内的关联,因此就通信网络而言,给定环境110内的受协调设备112和协调器114可以被认为是彼此“本地”的。例如,给定环境110内的受协调设备112和协调器114可以经由LAN或其他本地化通信网络连接。根据本文所述的实施方案,受协调设备112和协调器114可以通过这种本地化通信网络彼此通信。在一些情况下,可以诸如经由传输层安全性加密协议来加密受协调设备112与协调器114之间的通信。说明性地,可以向协调器114提供验证协调器的数字身份的安全证书。安全证书可由公共证书颁发机构或私有证书颁发机构(例如,由服务提供者环境120建立)签名。

每个受协调设备112可以对应于配置为与协调器114通信以管理受协调设备112的功能的计算设备。在一些情况下,受协调设备112可以对应于具有稳健的本地化用户接口能力的全功能计算设备,诸如笔记本电脑、台式电脑、独立媒体播放器等。在其他情况下,受协调设备112可以对应于瘦设备或与另一种主要功能关联的嵌入式设备,诸如嵌入在家用电器或设备(诸如冰箱、洗衣机、热水加热器、炉子、门锁、灯泡、电源插座、电气开关等)内或作为附件附接于家用电器或设备的设备。在一些情况下,此类电器或设备称为“智能”设备、IoT设备或“连接”设备。这样,受协调设备112可以包括有限的本地用户接口,并且被配置用于远程管理。在一些情况下,受协调设备112可以是有状态的,并且响应于指令而操作以改变其状态(例如,通过从“关”变为“开”等)。

如下面更详细描述的(例如,参考图2),协调器114可以对应于执行指令以协调、管理或控制受协调设备112的操作而不要求传送到受协调设备112的指令行进到受协调环境110之外(因此增加了这种指令的安全性并增加了它们的传输速度)的计算设备。具体地,协调器114可以包括处理器和存储器,其被共同配置为管理任何组合的受协调设备112、客户端设备102和服务提供者网络120的设备之间的通信。协调器可以进一步配置为以类似于服务提供者环境120的按需代码执行环境120的方式来启用任务的执行。这些任务可以实现各种用户定义的或非用户定义的功能,包括与受协调设备112、客户端设备102和服务提供者网络120的设备进行通信。这样,协调器114可以配置为允许对受协调设备112进行手动、自动或半自动控制。例如,协调器114可以使客户端设备102能够发送改变受协调设备112的状态的请求,并使这种状态变化发生。作为另一示例,协调器114可以使用户能够指定应当改变受协调设备112的状态的标准,然后在满足该标准时自动地操作以改变受协调设备112的状态。

如下面将讨论的,可以通过任务建立协调器114的许多功能,从而能够根据用户的需要快速改变这些功能。在一些情况下,此类任务(或此类任务的依赖关系,诸如库、驱动程序等)可由协调器的用户提供。在其他情况下,此类任务可以通过服务提供环境120提供给协调器114。例如,服务提供者环境150可以维护协调器114可用的任务库,以及此类任务可以应用的受协调设备112的类型(例如,所有设备、特定设备型号、特定制造商、类型或功能的设备等)。然后,服务提供者环境150可以向协调器114提供适合于协调器114的受协调环境110中的受协调设备112的所有或一些任务,或者向用户通知此类任务的可用性。在一个实施方案中,用户可以将受协调环境110中的受协调设备112通知服务提供者环境150或协调器114。在另一个实施方案中,协调器114可以配置为基于受协调环境110内的受协调设备112的传输来确定那些设备的特性。说明性地,在接收到来自受协调设备112的通信时(例如,响应于用户发起的配对、基于自动传输等),协调器114可以将传输的内容或格式与映射格式或内容到不同设备时间的信息进行比较。这样的映射可以由服务提供者环境150维护,并且可以基于从各种协调器114收集的数据来更新。在一些情况下,不管设备112的类型是否已知,协调器114可以将传输映射到适合于设备112的任务,而不是将传输映射到设备类型。例如,对于具有一个或多个受协调设备112的已建立环境110,服务提供者环境150可以收集识别此类设备112的传输的内容或格式的数据以及用于管理此类设备112的操作的任务。此后,可以针对相同或相似的传输监视新创建的受协调环境110,并且可以呈现在已建立的环境110中使用的任务以供在新创建的环境110中潜在使用。在其他实施方案中,协调器114可以利用诸如通用即插即用(UPnP)协议集之类的标准化发现协议来发现受协调环境110内的设备112。

客户端设备102可以包括使用户能够与受协调环境110、服务提供者环境120或两者进行通信的多种计算设备。通常,客户端设备102可以是任何计算设备,诸如台式计算机、笔记本计算机或平板计算机、个人计算机、可穿戴计算机、服务器、个人数字助理(PDA)、混合PDA/移动手机、移动手机、电子书阅读器、机顶盒、语音命令设备、相机、数字媒体播放器等。服务提供者环境120可以向客户端设备102提供一个或多个用户接口、命令行接口(CLI)、应用编程接口(API)和/或用于与服务提供者环境120进行交互的其他编程接口,诸如以便提交协调器114的配置、并控制该配置的部署、提交与要在协调器114或服务提供者环境120的按需代码执行环境150上执行的任务相对应的代码、查看与协调器114相关的日志记录或监视信息等。类似地,协调器114可以向客户端设备102提供一个或多个用户接口、命令行接口(CLI)、应用编程接口(API)或用于与协调器114交互的其他编程接口,诸如以便读取受协调设备112的状态、请求改变受协调设备112的状态、请求协调器114执行任务等。尽管本文中可将一个或多个实施方案描述为使用用户接口,但是应当理解,这些实施方案可以附加地或可替代地使用任何CLI、API或其他编程接口。

服务提供者环境120可以包括多个元件,以实现对协调器114的配置、管理以及与协调器114的通信。具体地,服务提供者环境120包括:管理和部署服务130,其使得能够向服务提供者环境120注册协调器114并对此类协调器114进行配置;设备影子服务140,其使得能够稳健地改变协调器114和受协调设备112的状态;以及按需代码执行环境150,其提供任务的按需动态执行,以及任务在协调器114上的部署和供应。

如图1所示,管理和部署服务130包括客户端和数据接口132以及配置数据存储区134,其可以共同操作以使得能够向管理和部署服务130注册协调器114、为协调器114生成配置以及将配置数据传输给协调器114。说明性地,客户端和数据接口132可以提供一个或多个用户接口(例如,API、CLI、GUI等),通过所述用户接口,用户可以经由客户端设备102生成或提交用于存储在配置数据存储区134中的协调器114的配置。客户端和数据接口132可以进一步提供一个或多个接口,通过所述接口,协调器114可以获取配置,从而根据所获取的配置来重新配置协调器114。配置数据存储区134可以对应于任何持久性或基本持久性数据存储区,诸如硬盘驱动器(HDD)、固态驱动器(SDD)、网络附加存储(NAS)、磁带驱动器或其任何组合。

设备影子服务140可以包括使得能够创建、维护、读取、更改或删除诸如协调器114或受协调设备112之类的设备的“影子状态”的元件。如上所述,影子状态可以对应于表示对应设备所需状态的数据,所述状态可以镜像或可以不镜像设备的当前状态。例如,针对协调器114,影子状态可以包括协调器114所需的配置版本。针对受协调设备112,影子状态可以包括受协调设备112所需的状态(例如,开关或灯泡的接通或断开、锁的锁定或解锁、恒温器所需温度等)。设备影子服务140可以使用户能够经由客户端设备102或其他实体从设备来读取或修改设备的影子状态,并且可以进一步与该设备交互以将设备同步到影子状态。说明性地,设备影子服务140可以包括接口142(其可以包括例如API、CLI、GUI等),通过该接口可以接收对影子状态的读取、写入、创建或删除的请求,以及配置为存储影子状态的影子数据存储区144。影子数据存储区134可以对应于任何持久性或基本持久性数据存储区,诸如硬盘驱动器(HDD)、固态驱动器(SDD)、网络附加存储(NAS)、磁带驱动器或其任何组合。关于设备影子服务140的更多细节可以在申请'700中找到,上文以引用方式并入。设备影子服务140可以是任选的,并且可以从服务提供者环境120中省略。

按需代码执行环境150可以包括提供任务(例如,可移植代码段)的按需执行的多个设备。具体地,按需代码执行环境150可以包括前端152,通过前端152,用户可以经由客户端设备102将任务提交到按需代码执行环境150,并要求在按需代码执行环境150上执行任务。这样的任务可以存储在例如任务数据存储区154中,任务数据存储区154可以对应于任何持久性或基本持久性数据存储区,诸如硬盘驱动器(HDD)、固态驱动器(SDD)、网络附加存储(NAS)、磁带驱动器或其任何组合。虽然在图1中未示出,但是按需代码执行系统150可以包括各种附加部件从而能够执行任务,诸如多个执行环境(例如,在按需代码执行环境150的物理主机设备上执行的容器或虚拟机)、工作者管理器以管理这样的执行环境、以及暖池管理器来帮助使执行环境快速地(例如,在10毫秒内)可用于工作者管理器。关于按需代码执行环境的更多细节可以在专利′556中找到,上文以引用方式并入。

如上所述,在按需代码执行环境150和协调器114均可使用任务。如上所述,任务对应于用户代码的各个集合(例如,以实现特定功能)。本文所使用的对用户代码的引用可以指代以特定程序语言编写的任何程序代码(例如,程序、例程、子例程、线程等)。在本公开中,术语“代码”、“用户代码”和“程序代码”可以互换使用。例如,可以结合用户开发的特定Web应用或移动应用执行此类用户代码以实现特定功能。该代码的特定执行在本文中称为“任务执行”或简称为“执行”。可以通过非限制性示例的方式以JavaScript(例如,node.js)、Java、Python和/或Ruby(和/或另一种编程语言)来编写任务。可以各种方式“触发”任务以在按需代码执行系统150或协调器114上执行。在一个实施方案中,客户端设备102或其他计算设备可以发送执行任务的请求,该请求通常可以被称为执行该任务的“调用”。此类调用可以包括将要执行的用户代码(或其位置)以及要用于执行用户代码的一个或多个自变量。例如,调用可以提供任务的用户代码以及执行任务的请求。在另一个示例中,调用可以通过先前上传的任务名称或识别符来识别先前上传的任务。在又一示例中,与任务相对应的代码可以被包括在任务的调用中,以及在协调器114或按需代码执行系统150接收到请求之前被上传在单独的位置(例如,协调器114的存储设备,网络可访问的存储服务或任务数据存储区154)。协调器114或按需代码执行系统150的请求接口可以接收来自用户的调用以执行作为超文本传输协议安全(HTTPS)请求的任务。而且,在执行任务时,也可以处理和利用HTTPS请求中包含的任何信息(例如,报头和参数)。如上所述,可以使用任何其他协议(包括例如HTTP、MQTT和CoAP)将包含任务调用的消息传送到请求接口122。

执行任务的调用可以指定一个或多个第三方库(包括本机库)与对应于任务的用户代码一起使用。在一个实施方案中,该调用可以向协调器114或按需代码执行系统150提供ZIP文件,该ZIP文件包含用户代码以及与被请求执行的任务相对应的任何库(和/或其存储位置的识别)。在一些实施方案中,调用包括元数据,元数据指示要执行的任务的程序代码、编写该程序代码所用的语言、与该调用相关联的用户、或要为执行程序代码而保留的计算资源(例如,存储器等)。例如,任务的程序代码可以与先前由用户上传的、由协调器114或按需代码执行系统150(例如,标准例程)提供和/或由第三方提供的调用一起提供。在一些实施方案中,这样的资源级约束针对特定任务指定(例如,要分配多少存储器用于执行特定用户代码),并且在每次任务执行时都不会改变。在这样的情况下,协调器140或按需代码执行系统150可以在接收到每个个别调用之前访问这样的资源级约束,并且个别调用可以不指定这样的资源级约束。在一些实施方案中,该调用可以指定其他约束,诸如指示调用叫用以执行任务的许可或授权的种类的许可数据。这样的许可数据可以由按需代码执行系统110使用以访问专用资源(例如,在专用网络上的)。

在一些实施方案中,调用可以指定应当为处理该调用而采取的行为。在这样的实施方案中,该调用可以包括用于启用执行调用中引用的任务的一个或多个执行模式的指示符。例如,该调用可以包括用于指示是否应在调试模式下执行任务的标志或报头,在调试模式下,将可与任务的执行相关地生成的调试和/或日志记录输出提供回给用户(例如,通过控制台用户接口)。在这样的示例中,协调器114或按需代码执行系统150可以检查该调用并寻找标志或报头,且如果存在,则协调器114或按需代码执行系统150可以修改执行任务的执行环境的行为(例如,日志记录设施),并将输出数据提供回给用户。在一些实施方案中,通过由协调器114或按需代码执行系统150提供给用户的用户接口将行为/模式指示符添加到调用中。也可以基于调用中提供的指示来启用或禁用其他功能,诸如源代码分析、远程调试等。更进一步如上所述,在某些实施方案中,该调用可以指定文件位置以及来自文件位置的预期输入/输出,该输入/输出与将执行任务的特定受协调设备112本地的资源的访问相对应。

图1示出服务提供者环境120在分布式计算环境中操作,该分布式计算环境包括使用一个或多个计算机网络(图1中未示出)互连的若干计算机系统。服务提供者环境120也可以在具有比图1所示的更少或更多数量的设备的计算环境中操作。因此,应将图1中的服务提供者环境120的描述视为说明性的而非限制本公开。例如,服务提供者环境120或其各种组成部分可以实现各种Web服务部件、托管的或“云”计算环境和/或点对点网络配置,以实现本文所述过程的至少一部分。

此外,服务提供者环境120可以直接在硬件或由硬件设备执行的软件中实现,且可以例如包括在配置为执行计算机可执行指令以用于执行本文所述的各种特征的物理计算机硬件上实现的一个或多个物理或虚拟服务器。一个或多个服务器可以是地理位置分散的或在地理上共同位于例如一个或多个数据中心中。在一些情况下,一个或多个服务器可以作为快速供应和释放的计算资源的系统(通常称为“云计算环境”)的一部分来操作。

图2示出了管理给定受协调环境110内的受协调设备112的计算系统(被称为协调器114)的一般架构。图2中示出的工作者管理器140的一般架构包括可以用于实现本公开的各方面的计算机硬件和软件模块的布置。硬件模块可以用物理电子设备来实现,下文将更详细地讨论。协调器114可以包括比图2所示的更多(或更少)的元件。然而,不必示出所有这些通常常规的元件以提供可行的公开。另外,图2中所说明的一般架构可用于实施图1中所说明的其它部件中的一者或多者。如图所示,协调器114包括处理单元204、网络接口206、计算机可读介质驱动器207和输入/输出设备接口208,所有这些都可以通过通信总线相互通信。网络接口206可以提供到一个或多个网络或计算系统的连接。处理单元204因此可以经由网络104接收来自其他计算系统或服务的信息和指令。处理单元204还可以与存储器250通信,并且还经由输入/输出设备接口208提供用于附加资源的输出信息。输入/输出设备接口208还可以接受来自附加资源的输入。

存储器250可以包含处理单元204执行以便实现本公开的一个或多个方面的计算机程序指令(在一些实施方案中分组为模块)。存储器250通常包括随机存取存储器(RAM)、只读存储器(ROM)和/或其他持久性、辅助性或非暂时性计算机可读介质。存储器250可以存储操作系统252,该操作系统252提供由处理单元204在协调器114的一般管理和操作中使用的计算机程序指令。存储器250还可以包括用于实现本公开的各方面的计算机程序指令和其他信息。例如,在一个实施方案中,存储器250包括进程管理器254、调度器256、部署代理258和通信管理器260。

调度器256和部署代理258可由处理单元204执行,以选择由处理单元204执行的任务,并管理这些任务执行。具体地,调度器256可包括指令以选择用于在给定时间点执行的任务以及暂停任务的执行(例如,在协调器114处的资源受限的情况下)。部署代理258可以包括以下指令:选择合适的执行环境270,在该执行环境中执行任务;为该执行环境270提供对在任务执行期间所需资源的适当访问权;以及促使执行环境270内的任务执行。本文所使用的执行环境270是指存储器250的逻辑部分,在该逻辑部分中执行任务。在一个实施方案中,执行环境270在程序上是分开的,使得第一执行环境270中的代码的执行被禁止修改与另一执行环境270相关联的存储器。说明性地,执行环境270可以对应于“容器”、操作系统级虚拟化环境或“沙盒”环境,诸如“chrootjail”或Python虚拟环境“virtualenv”。在其他情况下,执行环境270可以对应于虚拟机环境(例如,JAVA虚拟机、具有不同操作系统的虚拟化硬件设备等)。同样在其他情况下,执行环境270可以是分配给任务执行的存储器空间,而不必利用虚拟化。

通信管理器260可以促进在协调器上执行的任务之间以及协调器114与其他设备(例如,客户端设备102和受协调设备112)之间的通信。具体地,通信管理器260可以配置为获取定向到协调器114的消息,并将该消息转发到适当的目的地。例如,通信管理器260可以在任何组合的任务、受协调设备112、客户端设备102和服务提供者执行环境120的设备之间路由消息。

为了能够收集关于协调器114的操作的信息,存储器250还包括度量和日志记录代理259,其对应于可由协调器114执行以监视协调器114的操作(诸如如何在协调器114处执行任务)并报告有关此操作的信息的代码。该信息可以包括例如协调器114上的任务的执行时间,以及有关此执行的信息(例如,所使用的计算资源、该执行是否导致错误等)。在一些情况下,度量和日志记录代理259可以在本地存储该信息,诸如在存储器250中,以使用户能够获取该信息。在其他情况下,度量和日志记录代理259代理可以远程存储信息,诸如在服务提供者环境150处。度量和日志记录代理259还可以实现有关监视协调器114的操作的附加功能,诸如从协调器114向服务提供者环境150传输健康检查数据。

由协调器114执行的任务被示为在任务存储器空间280内逻辑分组,任务存储器空间可以对应于存储器250的逻辑单元,存储器250的逻辑单元配置为存储对应于每个任务的代码。如图2所示,任务存储器空间280可以包括可由处理单元204执行以实现协调器114的功能的多个任务,包括路由器任务282、一个或多个通信管理器任务286、影子服务任务288以及一个或多个客户端提供的任务290。

路由器任务282可以对应于一部分代码,可执行该代码以辅助在协调器114内、到协调器114以及从协调器114路由消息。在一个实施方案中,路由器任务282实现“事件流表”,以确定用于消息或在协调器114处接收到的事件的其他指示的适当目的地。例如,通信管理器260可以将在协调器114处获取的消息(例如,由于在输入/输出接口208处的任务执行或接收而产生的消息)转发到路由器任务282,其可以利用事件流表来确定寻址到某个识别符的消息应路由到给定任务、给定客户端设备102或给定受协调设备102。在一些情况下,事件流表可以进一步用于指定处理给定类型的消息的方式。例如,事件流表可以指定源自某个任务或受协调设备112的消息或事件数据应被发送到另一个任务或受协调设备112、在协调器114处日志记录、被驳回、导致任务的新执行等。事件流表可以进一步指示应当将满足指定标准(例如,寻址到给定识别符,包括特定标志等)的消息发送到服务提供者环境120(例如,设备影子服务140或按需代码执行系统150)。在一个实施方案中,事件流表可以利用“主题”作为识别符,使得与特定主题相关联的消息根据为该主题指定的路由来发送。事件流表可以进一步包括关于如何基于消息的源来路由那些消息的信息。例如,基于是从第一任务还是从第二任务、第一受协调设备112等接收到寻址到给定主题的消息,可以按照不同的方式路由该消息。通过使用事件流表,路由器任务282可以使得能够以不同的方式处理消息,而不改变该消息的发送者的操作(例如,无需重写用于生成消息的任务的代码、无需修改生成消息的受协调设备112的软件等)。

通信管理器任务286可以根据协调器114与多个不同的外部设备(例如,受协调设备102)之间的通信的协议来实现这种通信。例如,第一通信管理器任务286可以配置为使用BLUETOOTH

影子服务任务288可便于管理在协调器114处维护的设备影子和与之交互。说明性地,影子服务任务288可以实现与设备影子服务140在本地提供给协调器114的功能类似的功能。因此,影子服务任务288可以维持受协调设备112的影子状态(表示所需状态的数据),并允许对这些数据进行读或写。影子服务任务288还可以使受协调设备112与该设备的设备影子同步。因此,通过修改受协调设备112的设备影子,可以改变受协调设备112的状态。通过读取受协调设备112的设备影子,可以确定受协调设备112的状态。在一些情况下,影子服务任务288可以进一步与给定设备的另一设备影子协调,诸如由设备影子服务140维护的设备影子。例如,影子服务任务288可以将本地设备影子与存储在设备影子服务140处的设备影子同步,解决本地设备影子与存储在设备影子服务140处的设备影子之间的冲突,等等。

除了上述任务(每个任务可以由与服务提供者环境120相关联的实体说明性地提供)之外,任务存储器空间280可以包括任意数量的客户端提供的任务290,这些任务可以对应于由客户端设备102生成并提交给服务提供者环境120以部署到协调器114的可执行代码。同样的,由客户端提供的任务290提供的功能可以根据提交用户的需要而变化。在一些情况下,客户端提供的任务290可以用编码语言来编写,对于此存储器250包括语言运行时。例如,在协调器114支持诸如node.js、Go、JAVA和Python的语言的情况下,客户端提供的任务290可包括以任何这些语言编写的可执行代码。

另外,存储器250包括配置数据部分272,其代表存储器250的逻辑部分,在该逻辑部分中存储了协调器114的配置数据。配置数据可以包括例如协调器114的当前部署版本、由任务存储器空间280的任务存储的数据或在协调器114的操作中使用的其他数据。

为了启用协调器114的配置(和重新配置),存储器250还包括部署代理258。部署代理258可以对应于代码,可执行代码以向服务提供者环境120注册协调器,确定协调器114所需配置,并且在协调器114的当前配置与所需配置不匹配的情况下,获取用于协调器114的配置数据并修改存储器250以实现所需配置。

图3A示出了根据本申请的说明性受协调设备112A的架构的一个实施方案。图3A示出的受协调设备112A的一般架构包括可以用于实现本公开的各方面的计算机硬件和软件部件的布置。如图所示,受协调设备112A包括处理单元304、网络接口306、计算机可读介质驱动器307、输入/输出设备接口320、任选的显示器302和输入设备324,所有这些可以经由通信总线相互通信。说明性地,作为嵌入式设备,受协调设备112A可以具有更有限的功能和部件,诸如输入或输出。更进一步,在一些实施方案中,计算设备可以实现与协调器114和受协调设备112相关联的功能。

网络接口306可向诸如图1的网络104的一个或多个网络或计算系统提供连接。处理单元304因此可以经由网络从其他计算系统或服务接收信息和指令。如将在下面更详细地描述的,各个受协调设备112可以配置为接收一组输入,诸如实现一个或多个功能所需的特定类型的数据。例如,对应于标记阅读器的受协调设备112将配置为接收编码为条形码的标记编号。类似地,各个受协调设备112可以配置为生成一组输出,诸如由一个或多个功能的实现所产生的特定类型的数据。例如,对应于温度传感器的受协调设备可以配置为生成指示测量温度的数据或是否已经超过温度阈值的二进制指示。更进一步,各个受协调设备可以配置有一组接口或通信协议,其建立接收或发送通信的格式和特定协议。例如,受协调设备112可以配置为根据先前识别的任何协议(诸如MQTT)以及识别数据的顺序和格式的特定API来接收通信。另外,还可以针对附加安全协议来配置受协调设备112,附加安全协议诸如加密、压缩协议或与受协调设备112(或其他部件)之间的信息交换有关的其他协议。

处理单元304还可以与存储器310通信,并且还经由输入/输出设备接口320提供用于任选显示器302的输出信息。输入/输出设备接口320还可以接受来自本地资源324的输入,本地资源324诸如专用处理器(例如,图形处理单元)、存储器、优化芯片组等。在一些实施方案中,受协调设备112A可以包括比图3A所示的更多(或更少)的部件。例如,受协调设备112的一些实施方案可以省略显示器302和输入设备324,同时通过一个或多个可选通信信道(例如,经由网络接口306)提供输入/输出能力。

存储器310可以包括计算机程序指令,其由处理单元204执行以实现一个或多个实施方案。存储器310一般包括RAM、ROM或其他持久性或非暂时性存储器。存储器310可以存储操作系统314,操作系统314提供由处理单元304在受协调设备112A的一般管理和操作中使用的计算机程序指令。存储器310还可以包括用于实现本公开的各方面的计算机程序指令和其他信息。例如,在一个实施方案中,存储器310包括用于访问内容的浏览器应用316。说明性地,浏览器应用316可以包含完整的软件浏览器应用、浏览器应用的部分或者仅仅是提供数据连接的接口软件应用(或可执行指令)。在一些实施方案中,存储器310可以进一步包括用于与服务提供者环境310建立通信信道以促进与本地资源324的交互的代理软件应用318。代理软件应用318可以与浏览器软件应用316结合实现、代替浏览器软件应用316或单独实现。在一些测试环境中,如上所述,可以省略代理软件应用318。

图3B示出了根据本申请的说明性受协调设备112B的可选架构的一个实施方案。图3B示出的受协调设备112B的一般架构包括可以用于实现本公开的各方面的计算机硬件和软件部件的布置。然而,受协调设备112B可以与更少可以限制受协调设备112B的计算功能和操作的部件关联。如图所示,受协调设备112B包括与通信总线通信的处理单元350和网络接口352。与图3A的受协调设备112B不同,该受协调设备112B可以不具有计算机可读介质驱动器、任选显示器或输入设备。然而,出于本申请的目的,受协调设备112B将可能具有在任务执行期间可以被访问的某一本地资源。

网络接口352可向诸如图1的网络104的一个或多个网络或计算系统提供连接。处理单元350因此可以经由网络从其他计算系统或服务接收信息和指令。如将在下面更详细地描述的,各个受协调设备112可以配置为接收一组输入,诸如实现一个或多个功能所需的特定类型的数据。例如,对应于恒温器的受协调设备112可以配置为接收用于调整环境控制的温度设置或时间设置。类似地,各个受协调设备112可以配置为生成一组输出,诸如由一个或多个功能的实现所产生的特定类型的数据。例如,对应于运动传感器的受协调设备可以配置为生成指示是否已经检测到运动的阈值量的二进制指示的数据。更进一步,各个受协调设备可以配置有一组接口或通信协议,其建立接收或发送通信的格式和特定协议。诸如,受协调设备112可以配置为根据先前识别的任何协议(诸如TCP)以及识别数据的顺序和格式的特定API来接收通信。另外,还可以针对附加安全协议来配置受协调设备112,附加安全协议诸如加密、压缩协议或与受协调设备112(或其他部件)之间的信息交换有关的其他协议。

存储器354可以包括处理单元350执行以实现一个或多个实施方案的计算机程序指令。存储器354一般包括RAM、ROM或其他持久性或非暂时性存储器。在该实施方案中,存储器354可以存储必须存储的完整操作系统,该完整操作系统提供由处理单元350在受协调设备112B的一般管理和操作中使用的计算机程序指令。而是,在一个实施方案中,存储器354包括用于访问接收和处理指令的接口软件部件356。在一些实施方案中,存储器310可以进一步包括用于与服务提供者环境310建立通信信道以促进与本地资源324的交互的代理软件应用358。代理软件应用358可以与接口软件应用356结合实现、代替浏览器软件应用316或单独实现。在一些测试环境中,如上所述,可以省略代理软件应用318。

图4示出了根据本申请的说明性客户端设备102的架构的一个实施方案。图4示出的客户端设备102的一般架构包括可以用于实现本公开的各方面的计算机硬件和软件部件的布置。如图所示,客户端设备102包括处理单元404、网络接口406、计算机可读介质驱动器407、输入/输出设备接口420、任选显示器402和输入设备424,所有这些可以经由通信总线相互通信。

网络接口406可向诸如图1的网络104的一个或多个网络或计算系统提供连接。处理单元404因此可以经由网络从其他计算系统或服务接收信息和指令。处理单元404还可以与存储器410通信,并且还经由输入/输出设备接口420提供用于任选显示器402的输出信息。输入/输出设备接口420还可以接受来自任选输入设备424的输入,任选输入设备诸如键盘、鼠标、数字笔等。在一些实施方案中,客户端设备102可以包括比图4所示的更多(或更少)的部件。例如,受协调设备112的一些实施方案可以省略显示器402和输入设备424,同时通过一个或多个可选通信信道(例如,通过网络接口406)提供输入/输出能力。另外,客户端设备102也可以完全省略输入和输出接口420。

存储器410可以包括处理单元204执行以实现一个或多个实施方案的计算机程序指令。存储器410一般包括RAM、ROM或其他持久性或非暂时性存储器。存储器410可以存储操作系统414,操作系统414提供由处理单元404在客户端设备102的一般管理和操作中使用的计算机程序指令。存储器410还可以包括用于实现本公开的各方面的计算机程序指令和其他信息。例如,在一个实施方案中,存储器410包括用于访问内容的浏览器应用416。说明性地,浏览器应用416可以包含完整的软件浏览器应用、浏览器应用的部分或者仅仅是提供数据连接的软件应用(或可执行指令)。

图5示出了根据本申请的各方面的用于实现渲染资源管理部件108的各个方面的说明性计算设备的架构的一个实施方案。渲染资源管理部件108可以是与渲染资源106(例如,渲染资源池)相关联的虚拟机实例的实例化的一部分。可替代地,计算设备可以是独立于渲染资源106的独立设备。

图5中示出的计算设备108的一般架构包括可以用于实现本公开的各方面的计算机硬件和软件部件的布置。如图所示,计算设备500包括处理单元504、网络接口506、计算机可读介质驱动器508、输入/输出设备接口509,所有这些可以经由通信总线相互通信。计算设备500的部件可以是物理硬件部件或在虚拟化环境中实现。

网络接口506可提供到诸如图1的网络的一个或多个网络或计算系统的连接。处理单元504因此可以经由网络从其他计算系统或服务接收信息和指令。处理单元504还可以与存储器510通信并且进一步提供输出信息。在一些实施方案中,计算设备500可以包括比图5所示的更多(或更少)的部件。

存储器510可以包括处理单元504执行以实现一个或多个实施方案的计算机程序指令。存储器510一般包括RAM、ROM或其他持久性或非暂时性存储器。存储器510可以存储操作系统514,其提供由处理单元504在计算设备108的一般管理和操作中使用的计算机程序指令。存储器510还可以包括用于实现本公开的各方面的计算机程序指令和其他信息。例如,在一个实施方案中,存储器510包括用于接收和处理来自用户设备102的请求或发送处理的结果的接口软件512。存储器510包括用于处理工作流定义信息并基于如本文所述的工作流定义生成映射的工作流定义部件516。存储器510还包括工作流验证部件518,用于诸如经由仿真来测试所生成的工作流,如本文所述。

如上所指定,在一个实施方案中,图5中示出的计算设备116可被实现为计算网络中的物理计算设备或虚拟化计算设备。在另一个实施方案中,计算设备116可被实现为虚拟计算网络中的逻辑部件,其中,计算设备116的功能由物理计算设备的基础衬底网络来实现。因此,除非特别指明,本申请的各方面不应限于需要物理、虚拟或逻辑实施方案的解释。

现在参考图6,将描述说明性工作流定义600。说明性地,用户设备102可以生成一个或多个用户接口,诸如图形用户接口,其允许用户指定工作流定义。例如,图形用户接口可以允许用户选择多个受协调设备,诸如经由下拉菜单或库。图形用户接口然后可以允许用户选择受协调设备之间的通信路径,诸如通过经由输入设备绘制通信线路/路径。更进一步,图形用户接口然后可以允许用户选择或指定通信决策逻辑。通信决策逻辑可包括用于确定何时应发生通信的标准,诸如阈值。通信决策逻辑还可包括分支信息和用于为通信路径指定两个或更多个分支的相关联标准。说明性地,通信决策逻辑可以被指定为二进制逻辑(例如,是或否)、基于阈值或范围被指定为分支逻辑,并且可以包括在评估过程中使用的附加或补充标准。可以根据用户设备102或系统管理员提供的偏好/要求来定制图形接口的实际实现。可以通过接口将所得到的规范发送到受协调设备管理服务116。因此,图6的框图可用于说明图形接口如何示出工作流定义。

为了说明的目的,工作流定义600包括针对受协调设备网络112中的四个受协调设备112的规范。每个受协调设备112由代表工作流中受协调设备的实现的模块或模型表示,即模型A 602、模型B 604、模型C 606和模型D 608。说明性地,受协调设备管理服务116可以维护模型或模块的库,其为各个受协调设备定义用于受协调设备的一组输入、用于受协调设备的一组输出以及通信中所使用的对应的一组接口或一组协议。说明性地,该组输入可以对应于各种数据类型、值范围、强制性数据字段、任选数据字段,并且可以随受协调设备112要实现的功能而变化,包括设置要执行的功能。该组输出可以对应于各种数据类型和值范围,并且可以基于各个受协调设备实现的功能而进一步变化。该组接口或通信协议建立接收或传输通信的格式和特定协议,以及将为其指定输入/输出的API或其他格式。该模块可以是特定的单个受协调设备112,或者可替代地受协调设备112的分组。可以基于由系统管理员的手动定义、受协调设备工作流的先前实现或经由第三方提供者(诸如制造商或模块市场提供者)来获取先前存储的模块。如果模块不可用于指定的受协调设备,则受协调设备管理服务116获取模块的手动定义。例如,受协调设备管理服务116可以使用户设备102生成一个或多个菜单或图形菜单,其允许用户或系统管理员指定一组输入、一组输出或通信协议/接口。用户菜单还可以基于制造商、设备类型、交互类型或一般设置提供建议或默认设置。

工作流定义还包括所选模型/模块之间的通信路径的规范。通信路径可以指定一对一或一对多的通信流和通信决策逻辑,该通信决策逻辑识别用于允许从受协调设备生成通信的标准,以允许生成的通信在受协调设备112之间传递,或者识别附加或补充信息是否将被包括在通信中(例如,安全密钥、个人识别符等)。如图6所示,存在五个通信路径606、610、612和618。通信路径610和614表示分支路径,并且受协调设备管理服务116将获取通信决策逻辑以确定路由通信的路径。工作流定义600还包括停止或终止指示符616。

说明性地,受协调设备管理服务116基于指定的通信路径自动识别映射。说明性地,映射表示两个(或更多个)受协调设备之间的每个通信连接之间的通信的单独变换。每个单独的映射都基于来自第一受协调设备的指定输出到第二受协调设备的输入,并且还根据针对第一受协调设备和第二受协调设备的指定通信协议。如上所述,映射可以包括允许两个受协调设备之间进行通信所需的或者基于通信决策逻辑的附加信息的规范(例如,基于独立于受协调设备的标准的评估的优先级字段或重要性字段的具体说明)。映射和通信决策逻辑的组合说明性地形成将导致生成如本文所述的可执行代码的工作流定义。例如,图6中所示的工作流可以对应于安全工作流,其中受协调设备112配置为便于物理结构中的访问控制。在另一个示例中,图6中所示的工作流可以对应于气候控制工作流,其中受协调设备112配置为便于物理结构的一个或多个区域中的气候管理。在又一个示例中,图6中所示的工作流可以对应于数据流工作流,其中受协调设备112配置为收集、处理和传输不同类型的数据。然而,相关领域的技术人员将理解,这些示例本质上是说明性的,并不对应于所有可能的工作流或其变体的识别。

现在转到图7,将描述用于受协调设备环境110的工作流的规范处理的说明性实施方案。在(1)处,受协调设备管理服务116从用户设备102接收在受协调设备环境119中实现工作流的请求。如上所述,用户设备102可以生成一个或多个用户接口,诸如图形用户接口,其允许用户指定工作流定义。例如,图形用户接口可以允许用户选择多个受协调设备,诸如经由下拉菜单或库。图形用户接口然后可以允许用户选择受协调设备之间的通信路径,诸如通过经由输入设备绘制通信线路/路径。更进一步,图形用户接口然后可以允许用户选择或指定通信决策逻辑。通信决策逻辑可包括用于确定何时应发生通信的标准,诸如阈值。通信决策逻辑还可包括分支信息和用于为通信路径指定两个或更多个分支的相关联标准。可以根据用户设备102或系统管理员提供的偏好/要求来定制图形接口的实际实现。可以通过接口将所得到的规范发送到受协调设备管理服务116。

在(2)处,受协调设备管理服务116处理工作流定义并验证工作流定义。在一个方面,受协调设备管理服务116确定用于指定的一组受协调设备的模型定义是否可用。如上所述,受协调设备管理服务116可以维护模型库,其为各个受协调设备定义用于受协调设备的一组输入、用于受协调设备的一组输出以及通信中所使用的对应的一组协议或接口(通常称为一组协议)。该模块可以是特定的单独设备,或可替代地是受协调设备的组合。可以基于由系统管理员的手动定义、受协调设备网络的先前实现或经由第三方提供者(诸如制造商或模块市场提供者)来获取先前存储的模块。如果模块不可用于指定的受协调设备,则受协调设备管理服务116获取模块的手动定义。例如,受协调设备管理服务116可以使用户设备102生成一个或多个菜单或图形菜单,其允许用户或系统管理员指定一组输入、一组输出或通信协议。用户菜单还可以基于制造商、设备类型、交互类型或一般设置提供建议或默认设置。

在另一方面,受协调设备管理服务116识别工作流属性,即受协调设备112的通信路径、通信决策逻辑和实现工作流所需的任何附加信息。在一些实施方案中,受协调设备管理服务116可以确定指定的一组受协调设备是相同或相似的设备,或者共享公共模块。因此,受协调设备管理服务116可以重用所识别信息的至少一部分。受协调设备管理服务116基于针对工作流的指定通信路径自动识别或收集映射。如上所述,映射表示两个(或更多个)受协调设备之间的每个通信连接之间的通信的单独变换。每个单独的映射都基于来自第一受协调设备的指定输出到第二受协调设备的输入,并且还根据针对第一受协调设备和第二受协调设备的指定通信协议。映射可以包括允许两个受协调设备之间进行通信所需的或者基于通信决策逻辑的附加信息的规范(例如,基于独立于受协调设备的标准的评估的优先级字段或重要性字段的具体说明)。映射和通信决策逻辑的组合说明性地形成了工作流定义。

在另一方面,受协调设备管理服务116可以运行对指定工作流的仿真。例如,受协调设备管理服务116可以促使通信流的图形仿真,或者为一个或多个受协调设备指定值(例如,温度设置、安全标记读数等),以确定指定的通信决策逻辑是否正确或者需要附加输入/修改。受协调设备管理服务116可以生成指示处理结果的输出,诸如指示成功特性的颜色定义。另外,受协调设备管理服务116可以生成附加信息输出,诸如允许附加故障排除的日志文件或数据文件。

在(3)处,受协调设备管理服务116生成(或促使生成)用于部署到受协调设备网络110的可执行代码。可执行代码可以被说明性地实现为由协调器114解释的可执行代码或命令,或者实现为受协调设备网络110中的单独部件,诸如由一个或多个受协调设备112或协调器114可执行的运行时间。可执行代码促进了通信流程和通信变换。在一个实施方案中,可执行代码可以不必实现对通信决策逻辑或变换的所有评估,而是可以协调可由诸如受协调环境110或服务提供者环境120上的按需代码执行服务等外部服务执行的诸如任务等的调用。在另一个实施方案中,受协调设备管理服务116可以包括可执行代码,该可执行代码至少部分地实现对通信决策逻辑和变换的评估而不需要进行额外的调用(或限制进行额外调用的需要)。可执行代码可以手动或自动部署,以在一个或多个受协调设备环境110上实施。

现在参考图8,将描述受协调设备管理服务116针对工作流定义的受协调环境配置例程800。在框802,受协调设备管理服务116接收在受协调环境中实现工作流的请求。如上所述,用户设备102可以生成一个或多个用户接口,诸如图形用户接口,其允许用户指定工作流定义。例如,图形用户接口可以允许用户选择多个受协调设备,诸如经由下拉菜单或库。图形用户接口然后可以允许用户选择受协调设备之间的通信路径,诸如通过经由输入设备绘制通信线路/路径。更进一步,图形用户接口然后可以允许用户选择或指定通信决策逻辑。通信决策逻辑可包括用于确定何时应发生通信的标准,诸如阈值。通信决策逻辑还可包括分支信息和用于为通信路径指定两个或更多个分支的相关联标准。可以根据用户设备102或系统管理员提供的偏好/要求来定制图形接口的实际实现。可以通过接口将所得到的规范发送到受协调设备管理服务116。

在框804,受协调设备管理服务116首先确定指定组的受协调设备的模型定义是否可用。如上所述,受协调设备管理服务116可以维护模型或模块的库,其为各个受协调设备定义用于受协调设备的一组输入、用于受协调设备的一组输出以及通信中所使用的一组协议/接口。该模块可以是特定的单独设备,或可替代地是受协调设备的组合。可以基于由系统管理员的手动定义、例程800的先前实现或经由第三方提供者(诸如制造商或模块市场提供者)来获取先前存储的模块。在框804,如果模块不可用于指定的受协调设备,则受协调设备管理服务116获取模块的手动定义。例如,受协调设备管理服务116可以使用户设备102生成一个或多个菜单或图形菜单,其允许用户或系统管理员指定一组输入、一组输出或通信协议。用户菜单还可以基于制造商、设备类型、交互类型或一般设置提供建议或默认设置。说明性地,决策框804可以针对指定的每个指定的受协调设备(例如,用于第一受协调设备的第一模块、用于第二受协调设备的第二模块、用于第三受协调设备的第三模块等)来实现。

在框806,受协调设备管理服务116识别工作流属性,即受协调设备112的通信路径、通信决策逻辑和实现工作流所需的任何附加信息。在一些实施方案中,受协调设备管理服务116可以确定指定的一组受协调设备是相同或相似的设备,或者共享公共模块。因此,受协调设备管理服务116可以重用所识别信息的至少一部分。在框808,受协调设备管理服务116基于指定的通信路径自动识别、收集或生成映射。说明性地,映射表示两个(或更多个)受协调设备之间的每个通信连接之间的通信的单独变换。每个单独的映射都基于来自第一受协调设备的指定输出到第二受协调设备的输入,并且还根据针对第一受协调设备和第二受协调设备的指定通信协议。映射可以包括允许两个受协调设备之间进行通信所需的或者基于通信决策逻辑的附加信息的规范(例如,基于独立于受协调设备的标准的评估的优先级字段或重要性字段的具体说明)。映射和通信决策逻辑的组合说明性地形成了工作流定义。

在决策框812,进行测试以确定是否要输入附加输入。说明性地,经由图形用户接口与用户的交互本质上可以是迭代的,使得用户可以向受协调设备管理服务116提供多个输入。如果指示了附加输入/编辑,则例程800返回到框802以接收附加输入。可替代地,一旦已经处理了所有输入,则在框814,受协调设备管理服务116处理工作流定义。在一个方面,受协调设备管理服务116可以运行指定工作流的仿真。例如,受协调设备管理服务116可以促使通信流的图形仿真,或者为一个或多个受协调设备指定值(例如,温度设置、安全标记读数等),以确定指定的通信决策逻辑是否正确或者需要附加输入/修改。受协调设备管理服务116可以生成指示处理结果的输出,诸如指示成功特性的颜色定义。另外,受协调设备管理服务116可以生成附加信息输出,诸如允许附加故障排除的日志文件或数据文件。

在决策框816,受协调设备管理服务116生成(或促使生成)用于部署到受协调设备网络110的可执行代码。可执行代码可以说明性地由协调器114来实现或实现为受协调设备网络110中的单独部件。可执行代码促进了通信流程和通信变换。在一个实施方案中,可执行代码可以不必实现对通信决策逻辑或变换的所有评估,而是可以协调可由诸如受协调环境110或服务提供者环境120上的按需代码执行服务等外部服务执行的诸如任务等的调用。在另一个实施方案中,受协调设备管理服务116可以包括可执行代码,该可执行代码至少部分地实现对通信决策逻辑和变换的评估而不需要进行额外的调用(或限制进行额外调用的需要)。可执行代码可以手动或自动部署,以在一个或多个受协调设备环境110上实施。在框818,例程800终止。

本文描述的所有方法和任务可由计算机系统执行并完全自动化。在一些情况下,计算机系统可以包括多个不同的计算机或计算设备(例如,物理服务器、工作站、存储阵列、云计算资源等),其通过网络进行通信和互操作以执行所述的功能。每个这样的计算设备通常包括执行存储在存储器或其他非暂时性计算机可读存储介质或设备(例如,固态存储设备、磁盘驱动器等)中的程序指令或模块的处理器(或多个处理器)。本文所公开的各种功能可以在这样的程序指令中具体化,或可以在计算机系统的专用电路(例如,ASIC或FPGA)中实现。在计算机系统包括多个计算设备的情况下,这些设备可以但不必是位置相同的。所公开的方法和任务的结果可以通过将诸如固态存储器芯片或磁盘的物理存储设备变换为不同的状态来持久地存储。在一些实施方案中,计算机系统可以是基于云的计算系统,其处理资源由多个不同的商业实体或其他用户共享。

取决于实施方案,本文描述的任何过程或算法的某些动作、事件或功能可以按不同的顺序执行,可以添加、合并或完全省略(例如,并非所有描述的操作或事件都是实践算法所必需的)。此外,在某些实施方案中,操作或事件可通过例如多线程处理、中断处理或多个处理器或处理器核心或在其它并行架构上同时而非顺序地执行。

结合本文所公开的实施方案而描述的各种说明性逻辑块、模型、例程和算法步骤可实施为电子硬件(例如,ASIC或FPGA设备)、在计算机硬件上运行的计算机软件或两者的组合。此外,结合本文所公开的实施方案而描述的各种说明性逻辑框和模块可以由机器诸如处理器设备、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑设备、分立的门或晶体管逻辑、分立的硬件部件或其中设计以执行本文所述的功能的任何组合实现或执行。处理器设备可以是微处理器,但在替代方案中,处理器设备可以是控制器、微控制器或状态机、其组合等。处理器设备可以包括电子电路,其配置为处理计算机可执行指令。在另一个实施方案中,处理器设备包括FPGA或其它可编程设备,其执行逻辑操作,而不处理计算机可执行指令。处理器设备还可以被实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、一个或多个微处理器连同DSP核或任何其它这种配置。虽然本文主要是关于数字技术进行描述的,但是处理器设备也可以主要包括模拟部件。例如,本文所述的渲染技术中的一些或所有可以在模拟电路或混合的模拟和数字电路中实现。计算环境可以包括任何类型的计算机系统,举几个例子来说,其包括但不限于基于微处理器的计算机系统、大型计算机、数字信号处理器、便携式计算设备、设备控制器或电器内的计算引擎。

结合本文所公开的实施方案描述的方法、过程、例程或算法的元件可以直接在硬件、由处理器设备执行的软件模块或这两者的组合中体现。软件模块可以驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或任何其他形式的非暂时性计算机可读存储介质中。示例存储介质可以耦合到处理器设备,使得处理器设备可以从存储介质读取信息以及将信息写入存储介质。在替代方案中,存储介质可与处理器设备集成。处理器设备和存储介质可以驻留在ASIC中。ASIC可驻留在用户终端中。在替代方案中,处理器设备和存储介质可以作为分立部件驻留在用户终端中。

除非另有特别说明,或者在所使用的上下文中另外理解,否则本文使用的条件语言诸如“能够”、“可以”、“可能”、“可”、“例如”等通常旨在表达某些实施方案包括,而其它实施方案不包括某些特征、元件或步骤。因此,这种条件语言通常不旨在暗示无论如何特征、元件或步骤都是一个或多个实施方案必需的,或者一个或多个实施方案必然包括用于在有或没有其它输入或提示的情况下,判定这些特征、元件或步骤是否包括在或将要在任何特定实施方案中执行的逻辑。术语“包括(comprising)”、“包括(including)”、“具有”等是同义的,并且以开放形式作为包括性使用,且不排除附加元件、特征、动作、操作等。此外,术语“或”以其包括性意义(而非排他性意义)使用,使得当用于例如连接元件列表时,术语“或”意指列表中的一个、一些或所有要素。

除非另有特别说明,否则分离性语言诸如短语“X、Y或Z中的至少一个”在上下文中应理解为通常使用的情况以表示项目、项等可以是X、Y或Z或其任何组合(例如,X、Y或Z)。因此,这样的分离性语言通常不旨在并且不应该暗示某些实施方案要求X中的至少一个、Y中的至少一个和Z中的至少一个各自存在。

尽管以上详细说明已展示、描述并指出应用于各种实施方案的新颖特征,但是可以理解的是可以在不脱离本公开的精神的情况下作出所说明的设备或算法的形式和细节上的各种省略、替代和改变。如可以认识到的,本文所述的某些实施方案可以在不提供本文阐述的所有特征和益处的形式内实施,这是因为一些特征可以与其他特征分开使用或实践。本文公开的某些实施方案的范围是由所附权利要求而不是由前面的描述来指示的。在所述权利要求的等效物的含义和范围内的所有变化都将包含在所述权利要求的范围内。

在本文中描述的和/或在附图中示出的流程图中的任何例程描述、元件或块应当被理解为潜在地表示代码的模块、段或部分,所述代码包括用于实现例程中的特定逻辑功能或元件的一个或多个可执行指令。替代实现方式包括在本文中所述实施方案的范围内,其中如本领域中的技术人员所理解的那样,根据所涉及的功能,元素或功能可删除、或不按照所示出或讨论的顺序执行,包括基本上同步执行或逆序执行。

鉴于以下组的条款可以更好地理解上文:

条款.1一种用于部署受协调设备网络应用的系统,所述系统包括:

多个计算设备,其对应于用户设备并且配置为提供关于受协调设备网络的属性的规范的一个或多个输入;和

一个或多个计算设备,其与受协调设备管理服务相关联,其中所述受协调设备管理服务配置为:

接收来自用户设备的对第一受协调设备的选择;

确定与所选择的第一受协调设备相关联的第一模块,并为所述选择的第一受协调设备识别一组输入、一组输出和一组接口;

接收来自用户设备的对第二受协调设备的选择,以及接收所述第一和第二受协调设备之间的工作流定义,其中所述工作流定义至少包括所述第一和第二受协调设备之间的通信路径和通信决策逻辑;

确定与所选择的第二受协调设备相关联的第二模块,并为所述选择的第二受协调设备定义一组输入、一组输出和一组接口;

基于所述通信路径自动生成所述第一受协调设备与所述第二受协调设备之间的映射,其中所述映射基于所述第一模块和所述第二模块定义通信的变换,其中所述通信决策逻辑和所述映射形成工作流;和

促使生成与所形成的工作流相对应的可执行代码。

条款.2根据条款1所述的系统,其中所述受协调设备管理服务还能操作用于:

接收来自用户设备的对第三受协调设备的选择,以及接收所述第三受协调设备与至少所述第一或第二受协调设备之间的工作流定义,其中更新的工作流定义至少包括所述第一、第二和第三受协调设备之间的通信路径和通信决策逻辑;

确定与所选择的第三受协调设备相关联的第三模块,并为所述选择的第三受协调设备定义一组输入、一组输出和一组接口;

基于所述通信路径自动生成所述第一、第二和第三受协调设备之间的更新的映射,其中所述映射基于所述第一、第二和第三模块定义通信的变换,其中所述通信决策逻辑和所述映射形成更新的工作流。

条款.3根据条款1所述的系统,其中所述受协调设备管理服务还能操作用于测试所形成的工作流的仿真。

条款.4根据条款1所述的系统,其中所述用户设备还配置为生成一个或多个用户接口用于选择所述第一受协调设备和所述第二受协调设备以及所述工作流定义。

条款.5根据条款1所述的系统,其中所述受协调设备管理服务基于先前为一组受协调设备定义的模块来确定用于至少所述第一或第二受协调设备的模块。

条款.6根据条款1所述的系统,其中所述受协调设备管理服务还能操作用于:

确定先前尚未为所述第一受协调设备定义所述第一模块;和

从所述用户设备获取与所述第一受协调设备关联的所述第一模块的手动定义。

条款.7一种用于管理受协调设备网络的部署的计算机实现的方法,所述方法包括:

获取来自用户设备的对多个受协调设备的选择以及所述多个受协调设备之间的工作流定义;

确定与所选择的多个受协调设备相关联的一组模块,其中各个模块为受协调设备定义一组输入、一组输出和一组通信协议;

自动识别所述多个受协调设备之间的映射,其中所述映射基于所述一组模块定义通信的变换,其中所述工作流定义和所述映射形成工作流;和

促使生成与所形成的工作流相对应的可执行代码。

条款.8根据条款7所述的计算机实现的方法,其中所述工作流定义至少包括所述多个受协调设备之间的通信路径。

条款.9根据条款7所述的计算机实现的方法,其中所述工作流定义包括通信决策逻辑,进一步包括接收渲染资源配置信息。

条款.10根据条款9所述的计算机实现的方法,其中所述通信决策逻辑包括用于允许两个受协调设备之间进行通信的标准的规范。

条款.11根据条款9所述的计算机实现的方法,其中所述通信决策逻辑包括用于选择多个受协调设备之间的通信路径的标准的规范。

条款.12根据条款7所述的计算机实现的方法,其中获取来自用户设备的对多个受协调设备的选择以及所述多个受协调设备之间的工作流定义包括:获取来自用于选择所述多个受协调设备的一个或多个用户接口的选择和所述工作流定义。

条款.13根据条款7所述的计算机实现的方法,其中确定与所选择的多个受协调设备相关联的所述一组模块包括:基于先前为一组受协调设备定义的模块识别一个或多个模块。

条款.14根据条款7所述的计算机实现的方法,其中确定与所选择的多个受协调设备相关联的所述一组模块包括:获取先前未为一组受协调设备定义的一个或多个模块的手动定义。

条款.15根据条款7所述的计算机实现的方法,其还包括在生成所述可执行代码之前测试所形成的工作流的仿真。

条款.16一种用于管理受协调设备网络的部署的计算机实现的方法,所述方法包括:

获取来自用户设备的对多个受协调设备的选择以及所述多个受协调设备之间的工作流定义;

确定与指定的多个受协调设备相关联的一组模块,其中各个模块为受协调设备定义一组输入、一组输出和一组接口;

自动生成与所确定的一组模块相关联的映射,其中所述映射根据所定义的工作流定义基于所述一组模块来定义通信的变换,其中所述工作流定义和所述映射形成工作流;和

促使生成与所形成的工作流相对应的可执行代码。

条款.17根据条款16所述的计算机实现的方法,其中所述工作流定义至少包括所述多个受协调设备之间的通信路径。

条款.18根据条款16所述的计算机实现的方法,其中所述工作流定义包括通信决策逻辑,进一步包括接收渲染资源配置信息。

条款.19根据条款16所述的计算机实现的方法,其中获取来自用户设备的对多个受协调设备的选择以及所述多个受协调设备之间的工作流定义包括:获取来自用于选择所述多个受协调设备的一个或多个用户接口的选择和所述工作流定义。

条款.20根据条款16所述的计算机实现的方法,其中确定与所选择的多个受协调设备相关联的所述一组模块包括:基于先前为一组受协调设备定义的模块识别一个或多个模块。

条款.21根据条款16所述的计算机实现的方法,其中确定与所选择的多个受协调设备相关联的所述一组模块包括:获取先前未为一组受协调设备定义的模块的一个或多个模块的手动定义。

应当强调的是,可以对上述实施方案做出许多变化和修改,这些变化和修改的元件应当被理解为是在其他可接受的示例之中。所有这些修改和变化都旨在包括在本公开的范围内并且受以下权利要求的保护。

相关技术
  • 受协调设备环境的工作流配置
  • 一种基于内外层工作流的计算环境配置方法
技术分类

06120113106646