提供可配置工作流能力的制作方法与工艺

文档序号:12968361阅读:230来源:国知局
本申请是2013年2月12日提交的中国专利申请No.201380009486.9的发明名称为“提供可配置工作流能力”的分案申请。

背景技术:
随着由软件程序生成并使用的数据量的增长,在至少一些情况下也增加了管理并分析这些数据的复杂性。此外,随着软件程序逐渐在线和其它联网环境中执行,要管理并分析的数据逐渐变得可以不同位置和方式访问,这可能增加管理并分析这些数据的复杂性。因此,管理并分析由软件程序生成并使用的数据存在各种问题。附图说明图1示出了提供使远程客户端能够创建、配置并执行以定义方式操作源数据的定义工作流的功能的可配置工作流服务的示例实施例。图2A至图2B示出了使用定义工作流以在特定情况下以特定方式操作源数据的示例。图3是示出了被配置来提供管理针对所支持的客户端系统的定义工作流的使用的可配置工作流服务的计算系统的示例实施例的方框图。图4示出了可配置工作流服务例程的流程图的示例实施例。图5示出了工作流组件工作进程例程的流程图的示例实施例。具体实现方式本发明描述了用于提供访问用于创建、配置和执行定义工作流的功能的客户端的技术,所述定义工作流以诸如在可用于多个远程客户端的可配置工作流服务的控制下之类的定义方式操作源数据。在至少一些实施例中,远程客户端可以通过一个或多个公共网络与可配置工作流服务交互,以创建并配置由可配置工作流服务提供来由客户端使用的定义工作流--这样的定义工作流可以(例如)包括每个被配置来对指定类型的输入数据执行一个或多个指定类型的数据操作运算的多个互连工作流组件。在客户端配置这样的定义工作流之后,可配置工作流服务还可以一次或多次且以一种或多种方式执行定义工作流(诸如在一些情况下通过供应由可配置工作流服务提供的多个计算节点,以使每个计算节点实现定义工作流的工作流组件中的至少一个,和通过检索定义类型的源数据并以定义方式将其提供给工作流组件)。因此,在至少一些实施例中,一些或所有描述的技术由可配置工作流服务的实施例自动执行,诸如可以由在一个或多个已配置的计算系统(如下文更详细描述)上执行的一个或多个软件模块实现。如上文提及,定义工作流可以包括多个工作流组件,在至少一些实施例中其可以具有多种类型,包括具有对应于定义工作流的输入数据的一个或多个数据源工作流组件、对应于将对数据执行的定义数据变换或其它操作的一个或多个数据操作工作流组件,和对应于从定义工作流提供输出数据的一个或多个数据目标工作流组件。此外,可以定义工作流组件之间的与工作流组件之间的数据流相对应的互连,使得输出自第一组件的数据可以被提供为第二组件的输入,其中所述关系被表示为从第一组件到第二组件的连接。在至少一些实施例和情况中,可配置工作流服务可以提供客户端可以视情况在以一种或多种方式配置之后选择且在客户端的定义工作流中使用的一组预定义工作流组件。此外,在至少一些实施例和情况中,可配置工作流服务可以使客户端能够供应或以其它方式定义客户端的定义工作流中要使用的一些或所有工作流组件。被定义用于工作流的每个数据源工作流组件可以对应于从所指示的数据源获得数据,且可以包括诸如数据的存储位置的信息,且视情况包括与存储位置有关的额外访问信息(例如,与客户端相关联的登录信息;用来识别要使用的数据(诸如与元数据和/或数据内容有关)的特定搜索或其它信息;等等)。在一些实施例中,可配置工作流服务可以提供由客户端用来存储其源数据的内部存储位置,其中特定数据源对应于这样的内部存储位置,而在其它实施例和情况中,特定数据源可以在可配置工作流服务的外部,诸如由客户端提供或以其它方式受控于客户端的一个或多个网络可访问的存储系统、一个或多个在线存储服务、一个或多个在线数据生成服务等等。可以使用的在线存储服务的示例的非独占清单包括下列各项:存储各种类型的对象数据的亚马逊简易存储服务(S3);提供关系数据库功能的亚马逊关系数据库服务(RDS);提供存储键值对的功能的亚马逊SimpleDB;提供NoSQL数据库功能的亚马逊DynamoDB服务;提供对原始区块存储装置的访问的亚马逊弹性区块存储(EBS),包括使能在目标计算机系统上安装虚拟本地区块存储装置;等等。在线数据生成服务的示例的非独占清单包括RSS订阅、提供用于执行应用程序和服务的监控功能并生成对应信息的亚马逊云监测服务等等。数据源因此可以具有各种形式,诸如视情况以分布式方式实现的关系或其它数据库(例如,HBase开源分布式数据库、BigTable分布式数据库、MongoDB数据库系统、ApacheCassandra分布式数据库管理系统等等)、哈希表、文件系统、对象存储等等,且可以自数据源获得的数据组的示例的非独占清单包括文件(例如,网页服务器日志)、数据库行或其它记录、存储的数据对象、流式数据组等等。因此,在一些情况和实施例中,特定的定义工作流可以从多个数据源获得数据并使用所述数据,其中一些或所有数据源视情况在可配置工作流服务的外部。此外,可配置工作流服务视情况可以预定义一个或多个类型的数据源工作流组件,诸如对应于可配置工作流服务的特定内部存储机构、对应于一个或多个特定在线存储服务(例如,与可配置工作流服务成一体或以其它方式附属于可配置工作流服务或不附属于可配置工作流服务的在线存储服务)等等。类似地,客户端视情况可以定义一个或多个数据源工作流组件,诸如对应于客户端专用存储位置、对应于无预定义的数据源工作流组件的在线存储服务等等。被定义用于工作流的每个数据操作工作流组件可以对应于对输入到数据操作工作流组件的数据执行一次或多次定义的数据变换或其它操作。此外,来自数据操作工作流组件的输出可以被提供给要提供给客户端的数据目标工作流组件,或可以是中间数据,其诸如经由一个或多个电子消息通过将中间数据存储在可访问下一个数据操作工作流组件的存储位置中而提供给所述下一个数据操作工作流组件(例如,使用由可配置工作流服务提供的一个或多个存储位置)等等。定义的数据操作可以具有各种形式,包括对一组或多组输入数据执行定义类型的计算、以一种或多种方式聚集多组输入数据、选择一组或多组输入数据的子集、将数据从一个存储位置移动到另一存储位置等等。示例数据操作的非独占清单包括执行分布式数据拷贝、执行一次或多次SQL(结构化查询语言)变换、在映射归约架构内执行一个或多个映射和/或归约功能(例如,在亚马逊弹性MapReduce服务内使用)、使用科学或数学数据包(例如,MatLab、Mathematica等等)、执行客户端供应的脚本或其它程序等等。因此,在一些情况和实施例中,特定的定义工作流可以经由多个定义的数据操作工作流组件使用预定义和/或客户端定义的数据操作工作流组件执行多个数据操作运算。被定义用于工作流的每个数据目标工作流组件可以对应于将输出数据从定义工作流提供给一个或多个存储位置和/或以一种或多种方式从定义工作流提供输出数据。在至少一些实施例中,由数据目标工作流组件使用的存储位置的类型(和存储用于这样的数据目标工作流组件的对应信息)可以类似于或相同于数据源工作流组件,包括使用可配置工作流服务内部和/或外部的存储位置。此外,在至少一些实施例和情况中,特定的数据目标工作流组件可以包括以特定方式制作并提供输出数据,诸如生成特定类型的报告、经由一个或多个类型的定义的电子通信发送输出数据等等。因此,在一些情况和实施例中,特定的定义工作流可以多种方式经由多个定义的数据目标工作流组件使用预定义和/或客户端定义的数据目标工作流组件提供多种类型的输出数据。此外,在各个实施例中客户端可以各种方式定义工作流。例如,可配置工作流服务的实施例可以提供由客户端使用的一个或多个界面,诸如定义的GUI(“图形用户界面”)、定义的API(“应用程序设计接口”)和/或定义的CLI(“命令行接口”)。当使用提供的GUI时,客户端的用户代表可以(例如)使用可视编辑器以指定所定义的工作流的特定工作流组件,且还可以指定特定工作流组件之间的对应于数据流的互连-在至少一些这样的实施例中,可配置工作流服务可以将定义工作流表示为逻辑地表示工作流的图形,其中各个图形节点对应于特定的工作流组件。图2A提供关于这样的工作流图形的示例的额外说明细节。可配置工作流服务还可以各种方式且在各个时间实现用于客户端的定义工作流。在一些实施例中,每当使用预定义工作流时,可配置工作流服务诸如通过使用各自实现定义工作流的至少一个工作流组件的多个计算节点来实例化表示定义工作流的逻辑图形的物理拷贝。具体地,在至少一些实施例中,一些或所有计算节点由可配置工作流服务供应以配置所述计算节点以实现特定工作流组件(例如,在所述计算节点上加载对应软件和/或数据),诸如每个计算节点执行对应于每个这样已实现的工作流组件的工作负载工作进程。在至少一些实施例中,计算节点可以具有各种形式,包括每个是独立物理计算机系统、独立虚拟机(例如,托管在物理计算机系统上的多个虚拟机中的一个)、以分布式方式操作的一组多个物理计算机系统等等。在一些实施例中,用于定义工作流的一些或所有这样的计算节点可以选自由客户端使用的可配置工作流服务提供的多个计算节点。此外,一些或所有这样的计算节点可以由客户端提供或以其它方式受控于客户端和/或可以由一个或多个在线执行服务提供(无论是代替由可配置工作流服务提供的计算节点或除了所述计算节点以外还提供一些或所有这样的计算节点)。可以使用的示例在线执行服务的非独占清单包括:亚马逊弹性计算云(“EC2”)程序执行服务、用于执行分布式映射归约运算的亚马逊弹性MapReduce服务(例如,通过使用来自服务的计算系统的群集以表示或实现用于可配置工作流服务的计算节点)等等。此外,当多次实现特定的定义工作流时,在一些实施例中可配置工作流服务可以保持用于实现定义工作流的两个或更多个这样的时间之间的定义工作流的一些或所有计算节点的供应和可用性(例如,根据来自客户端的指令、基于由可配置工作流服务做出的自动确定等等),而在其它实施例中可以在实现之后释放可用的一些或所有这样的计算节点并提供相同类型的计算节点供应(视情况不同的计算节点)以用于下一次实现。在至少一些实施例和情况中,定义工作流还可以具有额外类型的相关信息。例如,客户端可以指定指示何时实现定义工作流的信息(诸如基于立即实现的客户端指令、通过在一个或多个定义的未来时间安排未来的实现、通过在满足一个或多个定义准则时安排一个或多个未来的实现(例如,至少部分基于特定源数据的可用性)等等)。定义的准则可以各种方式指定,诸如与特定的工作流组件相关联或和定义工作流一起作为整体。例如,特定工作流组件可以估计定义的前提条件准则以确定何时执行工作流组件,和/或可以具有定义的后置条件准则以估计何时完成执行和/或提供所产生的数据(例如,提供给下一个工作流组件、中间存储位置等等)。在一些实施例和情况中,定义工作流还可以具有可以用来在满足或不满足一个或多个指定准则时(例如,如果没有在特定时间实现定义工作流,诸如如果特定源数据不可用)给客户端提供通知(或执行其它活动)的一个或多个相关警报。在至少一些实施例中,可配置工作流服务还可以是收费服务,使得可配置工作流服务的客户端是向可配置工作流服务为了由可配置工作流服务提供的功能中的至少一些而支付费用的顾客。此外,当一个或多个在线存储服务和/或在线执行服务由可配置工作流服务用作实现特定客户端的特定定义工作流的部分时,这些其它服务还可以视情况对这样的使用收费(无论是经由可配置工作流服务收费或是直接向客户端收费)。因此,在各个实施例和情况中,可配置工作流服务的使用可以提供各种好处,包括使客户端能够在特定时间或当以其它方式满足特定准则时安排从多个源收集数据、对源数据执行定义类型的数据操作运算和以各种方式提供由定义工作流产生的输出数据。本文别处讨论且本领域一般技术人员将以其它方式明白额外的好处。出于说明目的,下文描述一些实施例,其中以具体方式提供定义和实现工作流的具体实例,包括关于具体类型的数据、具体类型的数据操作运算和具体类型的存储服务和执行服务。这些示例是出于说明目的提供且为了简单起见而简化,且发明技术可在多种其它情况中使用(发明技术中的一些在下文讨论),且技术不限于搭配特定类型的数据、存储装置或其它装置、计算系统或计算系统配置使用。图1是示出了管理可配置工作流服务的各个客户端的定义工作流的创建和执行的可配置工作流服务110的示例实施例的网络图。作为实现定义工作流的部分,可配置工作流服务110还供应特定的计算节点,以使每个计算节点执行对应于定义工作流的指定活动。在一些实施例中,可配置工作流服务110视情况提供上面可以执行客户端的定义工作流的一组计算节点140。在其它实施例中,由可配置工作流服务使用的一些或所有计算节点可以诸如由实现代表其的定义工作流的客户端、由一个或多个在线执行服务等等在外部提供给可配置工作流服务。此外,在一些实施例中,可配置工作流服务110视情况包括上面可以存储数据以促进定义工作流的执行的一个或多个存储节点150。例如,存储节点150(如果存在)可以用来存储定义工作流的执行期间产生的中间数据结果,且在一些实施例中还可以用来存储提供给定义工作流的源数据和/或由定义工作流产生的最终输出数据。虽然图1中没有示出,但是如关于图3和别处更详细地描述,可以使用一个或多个已配置的计算系统实现可配置工作流服务。图1还示出了一个或多个网络190和各个客户端计算系统160,经由客户端计算系统160,可配置工作流服务110的客户端可以与服务110交互以定义并执行工作流。图1的网络190可以包括任何适合的网络或网络组合,这些网络包括内联网、互联网、访问互联网和/或从互联网访问的一个或多个专用网络、蜂窝网络、局域网或任何其它这样的网络或其组合。通过网络进行的通信可以由有线或无线连接或其组合实现。在一些实施例中,可配置工作流服务110可以提供GUI(没有示出)和/或API(没有示出)中的一个或两个,诸如使客户端能够执行与服务110进行的各种交互。例如,特定客户端的用户代表(没有示出)可以与客户端计算系统160中的一个本地交互,以导致可配置工作流服务110通过网络190发生其它交互。用户可以例如与可配置工作流服务的工作流编辑器模块120交互,经由工作流编辑器模块120,用户可以定义客户端所关注的一个或多个工作流。作为与用户进行的交互的一部分,可配置工作流服务110可以存储关于客户端和视情况而定的用户代表的各种客户端信息112,且可以存储用户客户端的最新定义工作流的特定定义作为信息114的一部分。在一些实施例中,特定工作流的定义可以包括由用户诸如通过使用一个或多个预定义系统提供的工作流组件定义116选择一个或多个定义工作流组件和指定所述工作流组件之间的交互的动作--在其它实施例中,可配置工作流服务110无法提供任何这样的系统提供的预定义工作流组件。作为定义新工作流的一部分,用户还可以指定工作流定义检索并使用源数据的一个或多个位置和将被提供由定义工作流产生的数据的一个或多个目标位置。由可配置工作流服务110使用的各种信息112、114和116还可以存储在支持或提供可配置工作流服务110的一个或多个系统上,诸如可配置工作流服务的数据库,但是图1没有示出这样的系统。此外,在一些实施例中,客户端的用户代表可以视情况定义一个或多个新工作流组件作为定义新工作流的一部分,且如果这样,那么在至少一些实施例中这样的客户端定义的工作流组件还可以在信息116中存储定义信息。虽然除非客户端另有指定(例如,除非另有指定,否则只可访问所述客户端或以其它方式只对所述客户端可见),否则客户端定义的工作流和任何客户端定义的工作流组件在一些实施例中可以被视为专用,但是在其它实施例和情况中,至少一些这样的客户端专用信息可以在指定情境下用于其它客户端,诸如使其它客户端能够使用一些或所有客户端的定义工作流组件和/或工作流(例如,如果定义这些信息的客户端同意其它人使用,那么给定义这些信息的客户端提供费用或其它好处等等)。以类似方式,在至少一些实施例中,除非另有指定,否则由客户端的定义工作流使用的源数据和由客户端的定义工作流产生的最终输出数据可以被视为专用于所述客户端,但是在其它实施例中,一些或所有这些源数据和/或最终输出数据在指定情境下可以用于其它客户端(例如,如果与这些信息相关联的客户端同意其它人使用,那么对与所述数据相关联的客户端提供费用或其它好处等等)。当客户端指示可以从其中获得源数据和/或可以被提供用于定义工作流的最终输出数据的一个或多个存储位置时,如别处更详细地讨论,在各个实施例中这些存储位置可以具有各种形式。作为一个示例,在至少一些实施例中,可配置工作流服务可以与一个或多个特定选用在线存储服务145成一体或以其它方式附属于在线存储服务145,诸如形成单一系统105(例如,由单一实体操作的单一系统)。如果是,那么可以执行与这些选用在线存储服务145进行的交互147以检索源数据和/或存储最终输出数据。此外,在至少一些实施例中,工作流的执行期间生成的中间数据结果类似地可以存储在这些在线存储服务145中,诸如由定义工作流的第一部分产生且随后由工作流的第二定义部分访问和使用(无论是除了一个或多个选用存储节点150以外或代替一个或多个选用存储节点150)。此外,在至少一些实施例和情况中,一个或多个在线存储服务170可通过网络190而用于客户端计算系统160和可配置工作流服务110,且可以类似方式通过网络190使用(无论是除了一些或所有选用在线存储服务145以外或代替一些或所有选用在线存储服务145)。此外,在至少一些实施例和情况中,特定客户端可以使用一个或多个其它计算系统185提供一个或多个客户端专用存储系统或其它存储位置,其可以类似地通过网络190使用。在客户端与可配置工作流服务交互以定义工作流之后,客户端还可以与可配置工作流服务的工作流引擎模块130交互以启动定义工作流的执行。可以各种方式启动特定工作流的执行,诸如针对来自客户端的对应指令立即执行、在指定的未来时间发生或当满足将启动工作流的执行的其它指定准则(诸如一个或多个定义的前提条件)时发生,等等。正如利用工作流编辑器模块120,工作流引擎模块130在一些实施例中可以提供GUI界面和/或API接口以供客户端使用。当启动定义工作流的执行时,工作流引擎模块130在示例实施例中从信息114检索用于所述定义工作流的工作流定义信息,且在一个或多个计算节点上启动定义工作流的执行。具体地,可以用每个对应于定义的运算且以各种方式互连的各个逻辑节点构造工作流定义,且工作流引擎模块130可以选择使用特定计算节点来执行特定的这些运算,以及还执行活动以供应并启动每个这样的选定计算节点上的对应工作流工作进程的执行。作为供应这样的计算节点和/或在计算节点上执行工作流工作进程的一部分,可以执行与一个或多个存储位置进行的额外交互以获得要使用的输入数据和/或存储所产生的结果数据,包括由定义工作流的其它工作流工作进程使用的中间结果数据。用来实现定义工作流的一些或所有计算节点可以(例如)选自由可配置工作流服务110(如果存在)提供的选用计算节点140,且可以在所述计算节点上执行工作流工作进程142以实现定义运算。在其它实施例中,工作流引擎模块130可以使用并非由可配置工作流表面110提供的计算节点(无论代替选用计算节点140或除了选用计算节点140以外)。例如,在一些实施例和情况中,特定客户端可以提供或以其它方式控制一个或多个其它计算系统185,且工作流引擎130可以将这些其它计算系统185配置并使用为用于执行所述客户端的定义工作流的计算节点。此外,在一些实施例中,一个或多个在线程序执行服务148和/或175可用于以各种方式执行程序,且如果是,那么可以用来提供计算节点(没有示出)以执行一些或所有特定客户端的定义工作流--例如,工作流引擎模块130可以供应并启动由这些在线程序执行服务提供的特定计算节点上的特定工作流工作进程的执行。作为一个示例,在至少一些实施例中,可配置工作流服务可以与一个或多个特定选用在线程序执行服务148成一体或以其它方式附属于一个或多个特定选用在线程序执行服务148(无论除了一个或多个选用存储服务145以外或代替一个或多个选用存储服务145),诸如如上文描述的单一系统105。如果是,那么可以执行与这些选用在线程序执行服务148进行的交互149以供应计算节点、启动特定工作流组件的执行、接收由特定工作流组件产生的输出数据等等。在其它实施例中,可配置工作流服务110可以执行额外技术,诸如生成并提供用于定义工作流的特定类型的源数据、执行关于管理由客户端的定义工作流产生的最终输出数据的额外活动等等。此外,在一些实施例中,可以基于软件指令实现可配置工作流服务110,软件指令在一个或多个服务器计算系统上执行以编程或以其它方式配置服务器计算系统以执行一些或所有描述的技术,诸如编程服务器计算系统的一个或多个硬件CPU处理器(没有示出)--这些软件指令可以(例如)用来实现模块120和/或130,或可使用其它类型的模块提供可配置工作流服务的功能。以此方式,可配置工作流服务110给各个外部客户端提供各种好处,包括使客户端能够定义可以部分或全部使用可配置工作流服务110的计算和存储资源执行的工作流、与各种类型的在线数据源互动以获得将操作的数据,和提供所产生的输出数据以供存储或其它使用。与可配置工作流服务110的特定运算有关的额外细节包括在本文别处。虽然已关于结合每个可以具有一个或多个相关用户的一个或多个客户端系统提供各种类型的功能的可配置工作流服务110描述了图1的前文示例实施例,但是应明白可以存在各种其它实施例。例如,在至少一些实施例和情况中,客户端可以表示组织或其它团体(例如,具有多个人而不是一个人的公司)。因此,客户端实体在各个实施例中可以具有各种形式。在一些实施例中,可配置工作流服务110和视情况所使用的任何在线存储服务和/或在线程序执行服务可以每个根据一个或多个收费结构或协议来操作。例如,在一些实施例中,可以收费或其它支付方式对可配置工作流服务110的供应商或运营商和/或对使用可配置工作流服务110的所描述的技术的至少一些客户端系统提供对来自可配置工作流服务110的一些或所有描述的技术的访问。作为一个示例,可配置工作流服务110的客户端可以按次付费、定期(例如,按月)付费和/或一个或多个类型的按使用量付费来使用由可配置工作流服务110提供的功能。这样的费用可以基于诸如以下非独占清单中指示的一个或多个因素和活动:基于被执行来定义特定工作流的交互的数量和/或类型;定义工作流和/或一些或所有其定义工作流组件的大小和/或类型;基于定义工作流的使用量,诸如用于执行定义工作流的计算资源的衡量(例如,所使用的计算节点的数量)、所使用的处理器能力的衡量(例如,CPU循环)、定义工作流的执行期间发生的时间量、供应定义工作流的计算节点的活动、期间每个被供应用于定义工作流的计算节点不可用作其它之用的时间量(诸如当所述计算节点等待源数据可用或满足其它前提条件时)、基于存储和/或传送的数据数量(诸如基于数据大小、存储的时间量等等);基于存储、操作和/或产生的特定数据组的内容或其它特性;等等。图2A至图2B示出了在特定情况下以特定方式定义并执行用于客户端的工作流的示例。具体地,在图2A至图2B的示例中,客户端访问网络日志数据(诸如来自由客户端操作的网站或以其它方式访问网络日志数据),且希望分析所述数据以确定所关注的信息。具体地,在这个示例中,客户端希望执行网络日志数据的定期(例如,每三个小时)分析以识别网站的特定用户的点击流数据,且以一种或多个方式聚集点击流数据(例如,确定网站的特定定义的年龄组用户的聚集信息)。在以定义方式聚集点击流数据之后,其还可以各种方式使用,包括存储在客户端的数据库中以供后续使用以及用来生成经由一个或多个电子通信提供给客户端的一个或多个报告。具体地,关于图2A,可配置工作流服务的特定客户端(此示例中称作“顾客C”)诸如基于与可配置工作流服务的工作流编辑器模块进行的各种交互或通过执行与可配置工作流服务的定义API进行的一次或多次编程交互以按定义方式(例如,通过上传文件或以其它方式指定表示定义工作流的一个或多个数据结构)提供关于定义工作流的信息来定义包括各个节点和互连的新工作流。在这个示例中,用包括各个节点的逻辑图形200表示定义工作流。在图2A中,顾客C定义两个数据源节点220以表示定义工作流的两个类型的数据源。第一数据源220a对应于变得可定期使用的网络日志数据,在这个示例中网络日志数据是由在线存储服务205存储。具体地,在这个示例中,在线存储服务205存储各个数据组206和207(例如文件),且对应于网络日志数据源的节点220a包括用来从在线存储服务选择表示用于客户端的网络日志数据的一个或多个特定数据组207。节点220a可以包括用来识别特定数据组207的各个准则,诸如文件名称或与特定数据组相关联的其它元数据、关于数据组207的内容的一个或多个指定准则(例如,对应于用来从数据库提取对应于所关注的时段的记录的网络日志数据的时间帧),等等。节点220a还可以包括用来从在线存储服务205获得数据组207的各种访问信息,诸如在线存储服务处用于顾客C的与数据组207相关联的账号信息或其它访问信息。此外,在这个示例中,顾客C定义一个或多个前提条件作为节点225a的一部分,前提条件与数据源节点220a相关联(诸如)以指示节点220a的执行且然后工作流的剩余部分开始于满足节点220a的指定准则的数据组207可用之时。在其它实施例中,用于执行定义工作流的前提条件225a或其它配置信息可以具有其它形式,诸如指示在特定时间或在从定义工作流的最后一次执行以来经过特定时间量之后执行工作流。因此,前提条件225a可以(例如)实现于工作进程中,工作进程与在线存储服务205交互以确定数据组207何时可用,且然后启动对应于节点220a的工作进程的执行--在至少一些实施例中,可配置工作流服务可以等待实现除了前提条件节点225a以外的工作流200的一些或所有节点直到满足所述前提条件为止,诸如供应计算节点以在满足前提条件之后执行对应于节点220a的工作进程。除了网络日志数据源节点220a以外,顾客C还定义数据源节点220b,其对应于客户端的数据库(诸如可以存储于在客户端的控制下或经由在线数据库存储服务(没有示出)可用的一个或多个存储系统(没有示出)上)。在这个示例中,顾客C的数据库210包括各个数据组211和212(例如,数据库记录),其中数据组212存储先前生成用于客户端的网站的点击流数据(无论通过这个或类似工作流的先前执行或以其它方式生成)。在这个示例中,节点220b不包括任何定义的前提条件,诸如基于已知存在的数据库数据或基于被选用来执行定义工作流的数据库数据(例如,使得当前的网络日志数据将新增到任何先前存储的点击流数据或和所述点击流数据聚集在一起,但是即使这些现有的点击流数据不存在,仍将生成要存储的新的点击流数据)。除了数据源节点220以外,顾客C还定义各个数据操作节点235a至280a,其是定义工作流的一部分。工作流的定义节点235a至280a每个指定对指定源数据执行一个或多个数据操作运算,且用所述定义的数据操作运算的结果执行特定活动。具体地,在这个示例中,顾客C定义与数据源节点220a互连的第一节点235a,其中节点235a被配置来执行数据操作运算,包括从由数据源节点220a提供的网络日志数据提取各个用户的点击流数据。如别处更详细地讨论,可以各种方式执行数据操作运算,各种方式包括执行特定程序代码、执行数据库运算(例如,以SQL或以另一定义的数据库操作格式指定)、经由定义的数学或科学库或函数的使用等等。此外,在其它实施例中可以其它方式指定特定数据操作运算,诸如组合极少个节点(例如,一个)中的一些或所有定义节点235a至280a和/或将节点235a的数据变换运算分离到多个不同节点中。在这个示例中,在数据操作节点235a执行其数据操作运算之后,所述数据操作运算的中间结果被配置提供给下一个数据操作节点240a,在这个示例中数据操作节点240a被配置来使由节点235a提取的每组点击流数据与特定用户相关联。例如,由节点235a提供的点击流数据可以与每个用户的唯一识别符成一组且相关联,但是可能缺少关于对应用户的其它识别信息。节点240a的数据操作运算可以包括识别特定用户和确定所述用户的对应信息。例如,节点240a中可以获得并使用每个用户的年龄,其与方框235a中提取的用户的对应点击流数据相关联。因此,来自方框240a的中间结果输出数据包括对应于由年龄识别的特定用户的一组点击流数据,且在这个示例实施例中被配置来提供给被定义用于工作流的下一个数据操作节点245a。虽然这个示例中没有示出,但是在一些实施例中,数据操作节点240a还可以从另一数据源节点(没有示出)获得用户相关数据以实现其运算,诸如从已示出的源位置205或210中的一个或从不同源位置(没有示出)获得用户相关数据。在这个示例实施例中,数据操作节点245a被定义来通过定义的年龄组聚集来自节点240a的各种点击流数据和相关用户,诸如聚集年龄组18至25、26至50、51至65和66+的用户的点击流数据。因此,来自节点245a的数据操作运算的中间结果可以包括每个定义的年龄组的一个或多个点击流测量的总结信息,诸如查看的页数、每页或每个网站花费的时间量、所执行的活动的特定类型等等。由节点245a产生的这些中间数据结果在已示出的示例中被配置来提供给组合这些新的点击流数据和其它预存的点击流数据(如果可用)的数据操作节点275a。此外,虽然图2A的示例中以按抽象方式示出节点之间的互连的逻辑方式示出定义工作流的节点,但是在一些实施例中,定义工作流还可以包括关于执行期间如何发生定义工作流的实现的额外细节。例如,定义工作流的一些或所有节点可以包括关于从其中获得节点要使用的数据的特定存储位置和/或其中存储节点的结果的特定存储位置的细节。因此,关于数据操作节点245a,所述节点还可以被定义来视情况存储其产生于特定指定的存储位置(在图2A中示为选用中间存储装置250)中的中间数据结果。这样的中间存储装置250可以(例如)对应于以下一个或多个:图1的选用存储节点150、图1的选用在线存储服务145、图1的在线存储服务170等等。作为一个具体示例,中间存储装置250可以是在线存储服务205,且节点245a可以被配置来诸如通过指定其中将存储来自节点245a的中间结果的在线存储服务的特定数据组名称或其它存储位置来将节点245a的结果作为一个或多个特定数据组208(没有示出)存储于在线存储服务上。以类似方式,如果这样的中间存储位置被指定用于节点245a,那么节点图形中的下一个节点275a可以包括定义的输入存储位置,所述输入存储位置是从其中获得由节点245a产生的所述中间数据结果的相同的存储位置。关于图2B的示例进一步详细地描述这样的中间存储位置的用户的额外细节。在其它实施例中,可配置工作流服务可以无论通过使用由可配置工作流服务自动选择的一个或多个中间存储位置或通过执行消息传递等等来管理工作流组件之间的数据的传送。此外,如先前提及,顾客C在这个示例中先前已在数据库210上生成对应于用于客户端的先前存在的点击流数据的数据组212。例如,这些点击流数据可以包括关于节点245a聚集的一些或所有类型的点击流数据,且还可以包括不对应于节点245a的各种其它类型的点击流数据(诸如关于数据库210的其它数据组211)。此外,数据源节点220b先前被定义来提取对应于这样的定义工作流的所关注的点击流数据的所述数据组212。因此,顾客C还定义数据操作节点270a,其被配置来从点击流数据源节点220b接收所述数据组212,且检索对应于节点245a的点击流数据的定义年龄组和类型的所关注的特定点击流数据。节点270a的数据操作运算可以包括(例如)从数据库210提取特定数据记录,或可以包括额外类型的运算(例如,执行一个或多个数据库联合运算以组合来自数据库的多个数据库表的数据、执行一个或多个数据库选择运算以从数据库表选择数据子集等等)。因此,由节点270a的数据操作提供的中间数据结果包括与先前关于节点245a提及的点击流数据类型和定义年龄组相同类型的点击流数据和定义年龄组。在其它实施例中,节点235a至245a中的一个或多个可以操作新的点击流数据以匹配数据组212的数据库记录结构。因此,数据操作节点275a被配置来接收由节点245a产生的中间数据结果,且还被配置来接收由节点270a产生的中间数据结果。当两种类型的数据均可用时,节点275a被配置来由定义年龄组组合定义类型的点击流数据。由节点275a产生的中间数据结果然后被配置来在这个示例中以两种不同方式使用。具体地,顾客C还定义对应于将被提供由定义工作流产生的数据的两个定义目标的两个数据目标节点230。具体地,第一数据目标节点230a被定义来对应于顾客C的数据库210,且具体地对应于与数据源节点220b相同的数据组212的集合。因此,当产生节点275a的中间数据结果且所述中间数据结果可用于数据目标节点230a时,所述数据结果被配置来发送到数据库210作为定义工作流的最终输出,且存储作为数据组212的部分(诸如通过新增额外数据记录到数据库以补充由节点220b检索的先前存在的数据或用还包括来自网络日志数据的最近集合的信息的新的更新数据取代一些或所有先前检索的数据)。除了将更新的点击流数据存储在数据库210中以外,顾客C还定义数据目标节点230b,其对应于经由发送到顾客C的邮箱290的一个或多个电子通信将所生成的报告传达到顾客C。因此,定义工作流200还包括数据操作节点280a,其被定义来从节点275a取得中间结果且执行包括以定义方式生成包括来自节点275a的一些或所有点击流数据(例如,视情况而定,只有由节点245a输出的新的点击流数据)的报告的数据操作运算。由节点280a生成的中间数据结果(在这个示例中被配置来包括以结构化方式展示信息的一个或多个定义报告)被提供给数据目标节点230b,其被配置来经由一个或多个电子通信将定义工作流200的所述最终输出提供给顾客C的邮箱290。因此,在图2A的已示出的示例中,可配置工作流服务的顾客C定义工作流200,其在实现时组合来自不同源的不同类型的数据以对客户端产生所关注的多种类型的输出数据,输出数据可自动地以多种指定方式用于客户端。图2B继续图2A的示例,且具体地提供与图2A的定义工作流200的示例性实现方式有关的额外细节。具体地,图2B示出了已被配置来执行对应于定义工作流图形200的逻辑节点225a至238a的各个工作流工作进程225b至280b的各个计算节点140。如别处更详细地讨论,计算节点140可以源自于一个或多个源(包括通过使用由可配置工作流服务提供的一个或多个计算节点、通过使用可由顾客C客户端使用的一个或多个计算节点和/或通过使用由一个或多个外部在线执行服务中的每个提供的一个或多个计算节点)。当访问顾客C客户端可用的计算节点时,可配置工作流服务可以视情况使用由顾客C客户端供应的访问信息以使能够与所述计算节点进行交互(例如,供应计算节点、在计算节点上执行软件等等)。当访问来自外部在线执行服务的代表客户端之用的计算节点时,可配置工作流服务在一些实施例和情况中可以使用客户端的信息作为与在线执行服务进行的交互的部分(诸如具有在线执行服务的客户端的现有账号的信息)--如果是,那么来自在线执行服务的由可配置工作流服务使用的计算节点在至少一些这样的情况下还可以经由客户端与可配置工作流服务之间的交互访问客户端。替代地,当访问来自外部在线执行服务的代表客户端之用的计算节点时,可配置工作流服务在一些实施例和情况中可以使用具有在线执行服务的可配置工作流服务的账号,使得在线执行服务考虑所述计算节点与可配置工作流服务而非客户端相关联-如果是,那么来自在线执行服务的由可配置工作流服务使用的代表客户端的所述计算节点在至少一些这样的情况下无法访问客户端(或甚至对客户端不可见),包括基于客户端与可配置工作流服务之间的任何交互。图2B包括图2A的在线存储服务205,但是其没有示出关于由在线存储服务205存储的特定数据组206和207的细节。在这个示例中,可配置工作流服务已选择并供应第一计算节点E140e以诸如通过确定是否满足定义的前提条件(诸如通过执行一次或多次交互257以确定来自在线存储服务205的对应于图2A的数据组207的特定源数据是否可用)来执行对应于定义工作流200的前提条件节点225a的工作流工作进程225b。当满足前提条件时,工作流工作进程225b诸如通过将对应指令(没有示出)提供给可配置工作流服务来启动下一个工作进程235b的执行。可配置工作流服务还选择并供应计算节点A140a以执行在这个示例中对应于定义工作流200的节点235a的工作流工作进程235b。具体地,图2B的工作进程235b执行一次或多次交互255a以诸如通过使用关于图2A的源节点220a定义的信息且根据满足定义工作流200的节点225a的前提条件从在线存储服务205获得对应于图2A的数据组207的源数据。在一些实施例和情况中,工作进程225b和235b以不同方式等等(例如,工作进程225b在提供计算节点E的单一物理计算系统上执行,且工作进程235b以分布式方式在提供计算节点A的多个物理计算系统上执行)在不同时间在不同类型的计算节点(例如,如果计算节点E是由可配置工作流服务提供,且计算节点A被提供到可配置工作流服务外部)上执行。因此,虽然诸如工作进程235b的特定工作进程被示为图2B的示例中的单一进程,但是应明白在各个实施例中可以各种方式(包括通过使用表示执行工作进程(无论由可配置工作流服务提供或由在可配置工作流服务外部的一个或多个在线程序执行服务提供)的计算节点的一个或多个物理计算系统)实现实际工作进程。在已示出的示例中,在工作进程235b经由交互255a接收源数据且执行关于图2A的节点235a描述的数据操作运算之后,工作进程235b生成经由与在线存储服务205进行的一次或多次交互225b存储在在线存储服务中的中间数据结果。虽然图2B的示例中没有示出特定的中间结果,但是如关于图2A的中间存储装置250描述,可以各种方式存储所述结果(包括存储在被配置作为节点235a和/或工作进程235b的部分的特定存储位置中)。在经由交互225b存储中间结果之后,在计算节点B140b上执行的工作进程240b执行与在线存储服务205进行的多次交互255c以视情况基于使用当所述中间数据结果可用时满足的一个或多个前提条件(没有示出)获得所述中间数据结果以供使用。具体地,在这个示例中,可配置工作流服务选择计算节点B以执行分别对应于图2A的节点240a和245a的工作进程240b和245b。因此,关于工作进程240b,所述进程执行先前关于图2A的节点240a描述的一个或多个数据操作运算。在这个示例中,因为计算节点B正在执行多个工作进程,所以由工作进程240b产生的中间数据结果没有存储于在线存储服务205中,且作为替代经由交互255d(诸如经由存储器中访问或经由一个或多个其它类型的电子通信)直接传递到工作245b。在其它实施例中,即使数据流中的下一个工作进程245b将随后检索并使用所述相同的中间数据结果,工作进程240b仍然可以用在线存储服务存储这些中间数据结果。在这个示例中,正在执行的工作进程245b然后执行先前关于图2A的节点245a描述的数据操作运算,包括使用由工作进程240b产生的中间数据结果且生成其自身的中间数据结果(在这个示例中,中间数据结果经由一次或多次交互255e存储于在线存储服务205中)。虽然在线存储服务205在这个示例中用来存储多个不同工作进程的中间数据结果,但是在其它实施例中可以其它方式存储各个工作进程的中间数据结果,包括将不同工作进程的中间数据结果存储在不同在线存储服务中或以其它方式存储中间数据结果。除了图2A的在线存储服务205以外,图2B还示出了顾客C客户端的数据库210,但是图2B中没有示出图2A的示例性数据组211和212。在这个示例中,可配置工作流服务还选择计算节点C140c以执行对应于图2A的工作流200的节点270a的工作进程270b。因此,图2B的工作进程270b执行先前关于节点270a描述的一个或多个数据操作运算,包括执行与数据库210进行的交互255f以获得关于数据源节点220b定义的数据组212。在这个示例中,工作进程270b类似地经由一次或多次交互255g将其中间数据结果存储于在线存储服务205中,但是在其它实施例中可以其它方式存储这些中间结果。在可从工作进程245b和270b获得中间数据结果之后,计算节点D140d的工作进程275b执行与在线存储服务205进行的一次或多次交互255h以获得中间数据结果的集合中的两个,且通过执行先前关于图2A的节点275a描述的一个或多个数据操作运算来生成对应组合数据。具体地,在这个示例中,可配置工作流服务选择计算节点D以执行工作进程275b以及对应于图2A的节点280a的工作进程280b。因此,在工作进程275b产生其结果之后,所述进程以诸如关于图2A的目标节点230a指定的方式执行一次或多次交互255j以将所述结果存储在数据库210中。此外,在这个示例中,工作进程280b经由一次或多次交互255i从工作进程275b获得所述中间数据结果,且以关于图1的节点280a计算的方式生成一个或多个报告。工作进程280b还以诸如关于图2A的目标节点230b指定的方式执行一次或多次交互255k以将所述报告发送到顾客C的邮箱290。因此,以此方式,经由所述定义工作流的物理实例化使用关于图2B示出的计算节点140以及使用中间存储装置实现图2A的逻辑定义工作流图形200以管理工作流工作进程之前的一些或所有中间数据结果的传送。应明白,图2A和图2B的示例是出于说明目的而提供,且本发明不限于关于所述示例讨论的细节。图3是示出了适用于执行技术以管理支持的客户端系统的工作流的定义和实现的计算机系统的示例实施例的方框图。具体地,图3示出了服务器计算机系统300,其适用于执行提供可配置工作流服务的系统340以及各个客户端计算机系统350、选用在线存储服务系统360、选用在线程序执行服务系统370和其它计算系统380的实施例。在已示出的实施例中,计算机系统300具有包括一个或多个硬件CPU处理器305的组件、各个I/O组件310、存储装置320和存储器330,其中已示出的I/O组件包括显示器311、网络连接312、计算机可读介质驱动器313和其它I/O装置315(例如,键盘、鼠标、扬声器等等)。在其它实施例中,计算机系统300可以具有多于或少于已示出的组件的组件,且本地存储装置320可以视情况由包括在计算机系统300内或以其它方式本地附接到计算机系统300的一个或多个非易失性存储装置提供。此外,已示出的客户端计算机系统350具有类似于计算机系统300的组件的组件,包括CPU351、I/O组件352(但是没有示出特定组件)、存储装置354和存储器357。其它系统360、370和380也可以每个包括类似于关于计算机系统300示出的一些或所有组件的组件,但是为简单起见这个示例中没有示出这些组件。客户端计算机系统350每个包括在存储器357中执行的浏览器程序358(诸如使这样的客户端计算机系统的用户能够与由可配置工作流服务系统340提供的基于网页的GUI交互),且还视情况将关于客户端专用工作流组件的信息355存储在本地存储装置354上,但是在其它实施例中一些或所有客户端系统上可以不存在这些组件中的一个或两个。此外,特定客户端计算机系统350可以具有多于或少于已示出的组件的组件。可配置工作流服务系统340的实施例正在计算机系统300的存储器330中执行,诸如包括当由CPU305执行时编程或以其它方式配置计算机系统300以执行自动运算以提供一些或所有描述的技术的软件指令。虽然图3中没有示出,但是系统340可以包括一个或多个模块,视情况对应于图1的模块120和/或130。此外,服务器计算机系统还可以视情况在存储器330中执行一个或多个在线存储服务335和/或一个或多个在线程序执行服务337,诸如对应于其中可配置工作流服务系统340与这些服务335和/或337成一体或以其它方式结合这些服务335和/或337操作的情况,但是在一些实施例中系统340可以独立于任何这样的其它系统操作。在其它实施例中,可以通过网络390诸如对选用系统360和/或370访问由可配置工作流服务系统340使用的任何这样的在线存储服务和/或在线程序执行服务。在这个示例实施例中,可配置工作流服务系统340包括与管理用于支持的客户端系统的工作流相关功能有关的功能,且还视情况被配置来通过网络390(例如,经由互联网和/或万维网、经由专用蜂窝网络等等)与客户端计算机系统350和/或其它系统和装置交互。其它系统350、360、370和/或380还可以每个执行各个软件作为与系统340进行的交互的部分。与可配置工作流服务系统340(和视情况服务335和/或337)的操作有关的各种信息可以诸如类似于图1或如本文别处描述的系统112至116的方式存储在存储装置320中或远程存储,各种信息诸如关于特定客户端系统和/或用户的信息322、关于用于客户端的一个或多个特定定义工作流的信息324和关于任何定义工作流组件的信息326。在特定实施例中,在别处更加详细地描述关于系统340的操作的额外细节。应明白,系统300、350、360、370和380只是说明性的且不旨在限制本公开的实施例的范围。例如,系统340可以由多次交互计算系统或装置执行,且计算系统300可以通过(包括)诸如互联网的一个或多个网络、经由万维网(“网页”)或其它电子通信网络(例如,基于蜂窝的网络、公共切换电话网络)连接到没有示出的其它装置。更一般来说,计算机系统或计算系统或计算节点可以包括视情况当由特定对应软件指令编程或以其它方式配置时可使所描述类型的功能交互并执行所述功能的硬件的任何组合,所述硬件包括(但不限于)台式计算机或其它位置固定的计算机、膝上型计算机和平板电脑以及其它移动计算机、数据库服务器、网络存储装置和其它网络装置、PDA、智能电话和其它手机、无线电话、寻呼机、电子记事本、互联网电器、基于电视的系统(例如,使用机顶盒和/或个人/数字视频录像机的系统)和包括适当的通信能力的各种其它消费者产品。此外,在一些实施例中,由已示出的系统340提供的功能可以分布在各个模块中。还应明白,虽然各项在使用时被示为存储在存储器中或存储装置上,但是这些项或其部分还可以在存储器与其它存储装置之间传送以用于存储器管理和数据完整目的。替代地,在其它实施例中,一些或所有软件模块和/或系统可以在另一装置上的存储器中执行且经由计算机间通信与已示出的计算机系统通信,因此,在一些实施例中,一些或所有描述的技术可以由硬件构件执行,硬件构件在由一个或多个软件程序(例如,系统340)和/或数据结构(例如,定义工作流信息324和/或定义工作流组件信息326)配置时包括一个或多个处理器和/或存储器和/或存储装置(诸如通过执行一个或多个软件程序的软件指令和/或存储这些软件指令和/或数据结构进行所述配置)。此外,在一些实施例中,可以其它方式(诸如通过使用至少部分或完全实现于固件和/或硬件(包括(但不限于)一个或多个专用集成电路(ASIC)、标准集成电路、控制器(例如,通过执行适当的指令进行控制,且包括微控制器和/或嵌入式控制器)、现场可编程门阵列(FPGA)、复杂可编程逻辑装置(CPLD)等等)中的构件(例如,特制电子器件)实现或提供一些或所有系统和/或模块。一些或所有模块、系统和数据结构还可以(例如,作为软件指令或结构化数据)存储在非瞬时性计算机可读存储介质上,非瞬时性计算机可读存储介质诸如硬盘或随身碟或其它非易失性存储装置、易失性或非易失性存储器(例如,RAM)、网络存储装置或由适当的驱动器(例如,DVD驱动器、CD驱动器、光碟等等)或经由适当的连接读取的便携式介质物件。在一些实施例中,系统、模块和数据结构还可以作为生成的数据信号(例如,作为载波或其它模拟或数字传播信号的部分)在多种计算机可读传输介质(包括基于无线和/或基于有线/电缆的介质)上传输,且可以采用多种形式(例如,作为单一或多路模拟信号的部分或作为多个离散数字数据包或帧)。在其它实施例中,这些计算机程序产品还可以采用其它形式。因此,可以用其它计算机系统配置来实践本发明。图4是可配置工作流服务例程400的示例实施例的流程图。例程可以通过(例如)执行图1的可配置工作流服务110和/或图3的可配置工作负载服务系统340而提供,诸如管理可配置工作流服务的各个远程客户端的工作流的定义和实现。在这个示例实施例中,例程可以管理访问来自一个或多个数据存储系统或数据存储服务(无论是在可配置工作流服务例程外部或与可配置工作流服务例程成一体或以其它方式附属于可配置工作流服务例程)的信息和/或提供信息给一个或多个数据存储系统或数据存储服务,但是在其它实施例中可以其它方式使用所描述的技术。在已示出的实施例中,例程开始于方框405,其中接收与管理工作流相关功能有关的指令。例程继续进行到方框410以确定方框405中接收的指令是否将定义代表可配置工作流服务的客户端的新工作流。如果是,那么例程继续进行到方框415至425以获得并存储关于客户端的定义工作流的信息。如别处更详细描述,在一些实施例和情况中,可配置工作流服务可以提供用户界面(客户端的用户代表经由用户界面交互地指定用于被定义的新工作流的信息),而在其它实施例中,用来定义新工作流的信息可以经由一次或多次编程交互接收自表示客户端的一个或多个执行程序。在已示出的实施例中,方框415中的例程视情况将关于用于定义新工作流(包括可由客户端选择并使用的系统定义工作流组件)的选项的信息提供给客户端-这些信息可以通过经由(例如)可配置工作流服务的GUI向用户显示对应信息和功能而提供。在方框415之后,例程继续进行到方框420以接收配置信息以定义用于客户端的工作流。在一些实施例中,可以经由与可配置工作流服务的API进行的编程交互接收这些配置信息,而在其它实施例和情况中,可以经由客户端的用户代表经由可配置工作流服务的用户界面提供方框420中接收的信息。应明白,经由可配置工作流服务的用户界面定义工作流可能涉及由客户端的用户代表进行的多次连续交互,其中可配置工作流服务视情况经由用户界面基于已做出的先前选择来更新并提供额外或替代信息给用户。因此,在一些实施例和情况中,方框415和420的功能可以包括由可配置工作流服务进行的多个反复活动。在方框420之后,当完成新工作流的定义时,例程继续进行到方框425以诸如通过使用可配置工作流服务内部的数据库或其它存储位置来存储用于客户端的工作流定义信息以供后续使用。在一些实施例中,客户端这个时候还可以提供指令以启动工作流的执行,所述指令诸如可以关于例程400的方框435至450进行处理。如果作为替代在方框410中确定方框405中接收的指令并非要定义新工作流,那么例程作为替代继续进行到方框435以确定所接收的指令(诸如接收自客户端以启动当前执行的指令(例如,关于最新定义的工作流,如关于方框415至425讨论)、已达到先前指定用于这样的执行的安排时间的指示等等)是否执行现有工作流。如果是,那么例程继续进行到方框440以诸如从与可配置工作流服务相关联的内部数据库或其它存储位置检索用于客户端的存储的工作流定义信息。在方框440之后,例程继续进行到方框445以选择用来执行工作流的工作进程的计算节点且给所述工作进程供应所述选定计算节点。如别处更详细讨论,被选择来使用的计算节点在各个实施例中可以具有各种形式,包括由可配置工作流服务提供以供可配置工作流服务的各个客户端使用的计算节点、由一个或多个外部(视情况附属的)程序执行服务提供的计算节点、由客户端提供或以其它方式在客户端的控制下的计算节点,等等。此外,选定计算节点的供应可以包括(例如)下载被执行用于一个或多个特定工作进程的软件到每个选定计算节点上,视情况下载由这些工作进程使用的数据到每个计算节点上,等等。在方框445之后,例程继续进行到方框450以对在选定计算节点上执行的工作流启动工作进程的执行。图5示出了在选定计算节点上供应并执行工作进程的一个示例实施例的额外细节。如果方框435中作为替代确定方框405中接收的指令并非要执行定义工作流,那么例程作为替代继续进行到方框460以确定所接收的指令是否要核对一个或多个定义工作流(诸如被配置来在满足其前提条件时执行的工作流)的前提条件。如果是,那么例程继续进行到方框465以检索关于任何这样的定义工作流的前提条件的信息,且确定当前是否满足所述检索的前提条件。例程然后继续进行到方框470以确定是否满足足够多的前提条件以使任何定义工作流启动其实现,且如果是,那么例程返回到方框440以启动每个这样的定义工作流的执行。在各个实施例中响应于已发生的事件(例如,新到达的数据或数据的可用性)的指示等等可以各种方式在特定时间(诸如定期)核对前提条件的指令。如果方框460中作为替代确定方框405中接收的执行并非要当前核对任何定义工作流的工作流前提条件,那么例程作为替代继续进行到方框490以酌情执行一个或多个其它指示的操作。关于方框490执行的操作在各个实施例中且在各个时间具有各种形式,包括修改或移除用于客户端的定义工作流、停止或以其它方式修改用于客户端的定义工作流的当前或已安排的执行、关于任何定义工作流核对警报状况和酌情采取对应动作等等。在方框425、450或490之后或如果方框470中作为替代确定定义工作流均不具有当前满足的前提条件,那么例程继续进行到方框495以确定是否继续,诸如直到接收到终止的明确指示为止。如果确定继续,那么例程继续进行到方框405,否则继续进行到方框499并结束。图5是工作流组件工作进程例程500的示例实施例的工作流图。例程可以(例如)通过在所供应的计算节点(诸如关于图1的计算节点140和工作流工作进程142和图2B的计算节点140和工作进程235b至280b、关于由其它外部程序执行服务提供的计算节点和由所述计算节点执行的对应工作进程,和/或关于由客户端提供或以其它方式受控于由客户端的计算节点和由所述计算节点执行的对应工作进程)上执行定义工作流的已配置的工作进程而提供。在例程的这个示例实施例中,关于单一工作进程示出例程的动作,但是应明白特定计算节点在特定实施例和情况中可以执行多个工作进程,且特定工作进程在一些实施例和情况中可以在多个计算节点或其它计算系统上执行(例如,以分布式方式,诸如同时和/或连续地在所述计算系统上执行)。此外,应明白,特定工作流组件工作进程可以执行与其对应工作流组件的特定配置相关联的不同操作(例如,多于或少于示出的操作)。例程的已示出的实施例开始于方框505,其中接收到配置信息用于将执行的定义工作负载的工作进程,且启动工作进程的执行。在一些实施例和情况中,基于与可配置工作流服务的实施例的例程400的一次或多次交互(诸如关于图4的方框445和450)接收配置信号和执行启动。如别处更详细讨论,每个工作进程可以具有各种相关信息,包括具有定义类型、具有被执行来实现工作进程的定义软件代码、具有工作进程将从其接收输入的一个或多个定义的数据源、具有将被提供由工作进程产生的数据结果的一个或多个定义的数据目标、视情况具有与工作进程相关联的其它数据(例如,与工作进程将如何执行一个或多个指定数据操作运算有关的配置信息)、视情况具有一个或多个前提条件和/或后置条件、视情况具有一个或多个相关警报,等等。因此,虽然没有关于例程500的示例实施例示出,但是在其它实施例中,例程还可以在方框505中或在其它时间接收额外信息,包括将由工作进程使用的配置数据。在方框505之后,例程继续进行到方框510,其中例程视情况执行用于工作进程的任何预处理活动,诸如制作工作进程以执行其指定的数据操作运算或其它运算。在方框510之后,例程继续进行到方框535,其中例程从一个或多个指定的源位置获得将由工作进程使用的源数据。例如,在一些实施例和情况中,可以使用至少部分基于确定这些源数据的可用性的前提条件。在方框525之后,例程继续进行到方框540以对所获得的源数据执行用于工作进程的一个或多个指定的数据操作活动。如别处更详细讨论,在各个实施例和情况中,这些指定的数据操作活动可以具有各种形式,包括将数据从一个位置移动到另一位置、以各种方式修改或变换数据,等等。在方框540之后,例程继续进行到方框570以将来自方框540的指定的数据操作活动的结果提供给一个或多个指定的目标位置。如别处更详细讨论,这些活动在提供结果数据时可以包括将一些或所有结果数据存储在指定的存储位置中、发送包括一些或所有指定的结果数据的一个或多个电子通信、生成包括一些或所有结果数据的特定报告或其它格式以进行呈现,等等。在方框570之后,例程继续进行到方框595以确定是否继续,诸如直到接收到终止的明确指示为止。如果确定继续,那么例程返回到方框520,否则继续进行到方框599并结束。在已示出的实施例中,给定的工作进程可以因此多次执行方框520至570的活动(如果这样配置),诸如在不同时间对不同组的源数据执行一个或多个指定的数据操作活动,包括其中执行工作进程的计算节点被操作持续延长的时段(诸如被操作用于定义工作流的多次实现)的情况。在其它实施例中,工作进程还可以有时候接收修改工作进程的未来执行的额外配置信息和/或可以有时候执行其它预处理活动,且因此在这些情况下可以酌情从方框595返回到方框505和/或510。应明白,在一些实施例中,可以替代方式(诸如划分在更多例程中或合并到更少例程中)提供由上文讨论的例程提供的功能。类似地,在一些实施例中,诸如当更改所提供的功能的量时,已示出的例程可以提供多于或少于所描述的功能的功能。此外,虽然各种操作可以被示为以特定方式(例如,串行或并行)和/或以特定次序执行,但是在其它实施例中,也可以其它次序和其它方式执行操作。类似地,在其它实施例中,上文讨论的数据结构可以不同方式(诸如通过将单一数据结构划分为多个数据结构或通过将多个数据结构合并成单一数据结构)结构化,且可以存储多于或少于所描述的信息的信息(例如,当其它已示出的数据结构作为替代分别缺失或包括这些信息时或当更改所存储的信息量或类型时)。下文包括与可配置工作流服务的特定示例实施例有关的额外细节,但是应明白所描述的技术不限于这些细节。在这个示例实施例中,可配置工作流服务(“CWS”)工作流(在这个示例实施例中也称作“流水线”)是经由使能够描述形成流水线的节点(在这个示例实施例中也称作“对象”)的配置语言而定义。在这个示例实施例中,CWS流水线中存在配置语言可描述的5个一般类型的对象,所述对象如下:-数据源-数据操作工作流组件的输入或来自数据操作工作流组件的的输出(在这个示例实施例中也称作“活动”)。-活动-将运行的操作,诸如数据处理变换和数据拷贝。活动可被设置来对某些状态发出警报且在失败时进行多次重试。预定义活动包括Copy(拷贝)、SQLTransform、HiveQLTransform、ElasticMapReduceTransform、和CommandLineTransform。-前提条件和后置条件-与数据源相关联的动作,其在数据源被视为可用和/或完整时评估为真。成功地完成的前提条件使能够运行消耗数据源作为输入的以下活动。成功地完成的后置条件使创建数据源的活动能够被视为成功地完成。-时间表-描述数据的周期的数据源的属性或定义数据源运行的周期的活动的属性,周期可能是一个或多个分钟、每小时、每天、每星期、每月等等的粒度。-警报-描述向通知服务(例如,亚马逊的SNS或简易通知服务)公开、经由电子通信(例如,电子邮件)发送(等等)的消息。流水线和个别活动可以定义警报用于失败和成功两者。流水线是由对象组成,且对象由属性组成。属性具有形式标签:值。对象具有名称:属性和类型:属性。除了名称和类型以外,对象还可以取决于对象的类型而具有任何数量的其它属性。在以下示例中,对象“发票日志(InvoiceLogs)”描述存储在示例性在线服务SSS(称作<online-storage-service-SSS>)中的数据对象且具有除了名称:和类型:以外的路径:属性名称:发票日志类型:<online-storage-service-SSS>数据节点路径:<online-storage-service-SSS>//my_data/xyz.cvs对象内视情况可以重复属性。在以下示例中,重复输入:且每个输入:属性的值被视为有序清单:名称:发票处理类型:CommandRunnerTransform输入:发票日志输入:发票规格属性的值可以是下列各项中的一个:对象参考表达式字符串字面量这里是示出每种类型的属性值的简单示例:名称:HourPeriod类型:时间表周期:“1小时”←--这是字符串字面量名称:对象类型:MyTransform规格:HourPeriod←----这是对象参考属性:#{interval.end
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1