CN106067080A - 提供可配置工作流能力 - Google Patents
提供可配置工作流能力 Download PDFInfo
- Publication number
- CN106067080A CN106067080A CN201610346041.5A CN201610346041A CN106067080A CN 106067080 A CN106067080 A CN 106067080A CN 201610346041 A CN201610346041 A CN 201610346041A CN 106067080 A CN106067080 A CN 106067080A
- Authority
- CN
- China
- Prior art keywords
- workflow
- data
- client
- service
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0633—Workflow analysis
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Theoretical Computer Science (AREA)
- Economics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Software Systems (AREA)
- Development Economics (AREA)
- Game Theory and Decision Science (AREA)
- Educational Administration (AREA)
- Data Mining & Analysis (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Engineering & Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Transfer Between Computers (AREA)
- User Interface Of Digital Computer (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明描述了用于提供访问用于创建、配置和执行定义工作流的功能的客户端的技术,所述定义工作流以诸如在可通过一个或多个公共网络用于多个远程客户端的可配置工作流服务的控制下之类的定义方式操作源数据。客户端的定义工作流可以例如包括多个互连工作流组件,其由所述客户端指定且每个被配置来对指定类型的输入数据执行一个或多个类型的数据操作运算。所述可配置工作流服务还可以一次或多次且以一种或多种方式执行所述定义工作流,诸如在一些情况下通过供应由所述可配置工作流服务提供的多个计算节点以使每个计算节点实现所述定义工作流的工作流组件中的至少一个。
Description
本申请是2013年2月12日提交的中国专利申请No.201380009486.9的发明名称为“提供可配置工作流能力”的分案申请。
背景技术
随着由软件程序生成并使用的数据量的增长,在至少一些情况下也增加了管理并分析这些数据的复杂性。此外,随着软件程序逐渐在线和其它联网环境中执行,要管理并分析的数据逐渐变得可以不同位置和方式访问,这可能增加管理并分析这些数据的复杂性。因此,管理并分析由软件程序生成并使用的数据存在各种问题。
附图说明
图1示出了提供使远程客户端能够创建、配置并执行以定义方式操作源数据的定义工作流的功能的可配置工作流服务的示例实施例。
图2A至图2B示出了使用定义工作流以在特定情况下以特定方式操作源数据的示例。
图3是示出了被配置来提供管理针对所支持的客户端***的定义工作流的使用的可配置工作流服务的计算***的示例实施例的方框图。
图4示出了可配置工作流服务例程的流程图的示例实施例。
图5示出了工作流组件工作进程例程的流程图的示例实施例。
具体实现方式
本发明描述了用于提供访问用于创建、配置和执行定义工作流的功能的客户端的技术,所述定义工作流以诸如在可用于多个远程客户端的可配置工作流服务的控制下之类的定义方式操作源数据。在至少一些实施例中,远程客户端可以通过一个或多个公共网络与可配置工作流服务交互,以创建并配置由可配置工作流服务提供来由客户端使用的定义工作流--这样的定义工作流可以(例如)包括每个被配置来对指定类型的输入数据执行一个或多个指定类型的数据操作运算的多个互连工作流组件。在客户端配置这样的定义工作流之后,可配置工作流服务还可以一次或多次且以一种或多种方式执行定义工作流(诸如在一些情况下通过供应由可配置工作流服务提供的多个计算节点,以使每个计算节点实现定义工作流的工作流组件中的至少一个,和通过检索定义类型的源数据并以定义方式将其提供给工作流组件)。因此,在至少一些实施例中,一些或所有描述的技术由可配置工作流服务的实施例自动执行,诸如可以由在一个或多个已配置的计算***(如下文更详细描述)上执行的一个或多个软件模块实现。
如上文提及,定义工作流可以包括多个工作流组件,在至少一些实施例中其可以具有多种类型,包括具有对应于定义工作流的输入数据的一个或多个数据源工作流组件、对应于将对数据执行的定义数据变换或其它操作的一个或多个数据操作工作流组件,和对应于从定义工作流提供输出数据的一个或多个数据目标工作流组件。此外,可以定义工作流组件之间的与工作流组件之间的数据流相对应的互连,使得输出自第一组件的数据可以被提供为第二组件的输入,其中所述关系被表示为从第一组件到第二组件的连接。在至少一些实施例和情况中,可配置工作流服务可以提供客户端可以视情况在以一种或多种方式配置之后选择且在客户端的定义工作流中使用的一组预定义工作流组件。此外,在至少一些实施例和情况中,可配置工作流服务可以使客户端能够供应或以其它方式定义客户端的定义工作流中要使用的一些或所有工作流组件。
被定义用于工作流的每个数据源工作流组件可以对应于从所指示的数据源获得数据,且可以包括诸如数据的存储位置的信息,且视情况包括与存储位置有关的额外访问信息(例如,与客户端相关联的登录信息;用来识别要使用的数据(诸如与元数据和/或数据内容有关)的特定搜索或其它信息;等等)。在一些实施例中,可配置工作流服务可以提供由客户端用来存储其源数据的内部存储位置,其中特定数据源对应于这样的内部存储位置,而在其它实施例和情况中,特定数据源可以在可配置工作流服务的外部,诸如由客户端提供或以其它方式受控于客户端的一个或多个网络可访问的存储***、一个或多个在线存储服务、一个或多个在线数据生成服务等等。可以使用的在线存储服务的示例的非独占清单包括下列各项:存储各种类型的对象数据的亚马逊简易存储服务(S3);提供关系数据库功能的亚马逊关系数据库服务(RDS);提供存储键值对的功能的亚马逊SimpleDB;提供NoSQL数据库功能的亚马逊DynamoDB服务;提供对原始区块存储装置的访问的亚马逊弹性区块存储(EBS),包括使能在目标计算机***上安装虚拟本地区块存储装置;等等。在线数据生成服务的示例的非独占清单包括RSS订阅、提供用于执行应用程序和服务的监控功能并生成对应信息的亚马逊云监测服务等等。数据源因此可以具有各种形式,诸如视情况以分布式方式实现的关系或其它数据库(例如,HBase开源分布式数据库、BigTable分布式数据库、MongoDB数据库***、Apache Cassandra分布式数据库管理***等等)、哈希表、文件***、对象存储等等,且可以自数据源获得的数据组的示例的非独占清单包括文件(例如,网页服务器日志)、数据库行或其它记录、存储的数据对象、流式数据组等等。
因此,在一些情况和实施例中,特定的定义工作流可以从多个数据源获得数据并使用所述数据,其中一些或所有数据源视情况在可配置工作流服务的外部。此外,可配置工作流服务视情况可以预定义一个或多个类型的数据源工作流组件,诸如对应于可配置工作流服务的特定内部存储机构、对应于一个或多个特定在线存储服务(例如,与可配置工作流服务成一体或以其它方式附属于可配置工作流服务或不附属于可配置工作流服务的在线存储服务)等等。类似地,客户端视情况可以定义一个或多个数据源工作流组件,诸如对应于客户端专用存储位置、对应于无预定义的数据源工作流组件的在线存储服务等等。
被定义用于工作流的每个数据操作工作流组件可以对应于对输入到数据操作工作流组件的数据执行一次或多次定义的数据变换或其它操作。此外,来自数据操作工作流组件的输出可以被提供给要提供给客户端的数据目标工作流组件,或可以是中间数据,其诸如经由一个或多个电子消息通过将中间数据存储在可访问下一个数据操作工作流组件的存储位置中而提供给所述下一个数据操作工作流组件(例如,使用由可配置工作流服务提供的一个或多个存储位置)等等。定义的数据操作可以具有各种形式,包括对一组或多组输入数据执行定义类型的计算、以一种或多种方式聚集多组输入数据、选择一组或多组输入数据的子集、将数据从一个存储位置移动到另一存储位置等等。示例数据操作的非独占清单包括执行分布式数据拷贝、执行一次或多次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的细节。在这个示例中,可配置工作流服务已选择并供应第一计算节点E 140e以诸如通过确定是否满足定义的前提条件(诸如通过执行一次或多次交互257以确定来自在线存储服务205的对应于图2A的数据组207的特定源数据是否可用)来执行对应于定义工作流200的前提条件节点225a的工作流工作进程225b。当满足前提条件时,工作流工作进程225b诸如通过将对应指令(没有示出)提供给可配置工作流服务来启动下一个工作进程235b的执行。可配置工作流服务还选择并供应计算节点A 140a以执行在这个示例中对应于定义工作流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存储中间结果之后,在计算节点B 140b上执行的工作进程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。在这个示例中,可配置工作流服务还选择计算节点C 140c以执行对应于图2A的工作流200的节点270a的工作进程270b。因此,图2B的工作进程270b执行先前关于节点270a描述的一个或多个数据操作运算,包括执行与数据库210进行的交互255f以获得关于数据源节点220b定义的数据组212。在这个示例中,工作进程270b类似地经由一次或多次交互255g将其中间数据结果存储于在线存储服务205中,但是在其它实施例中可以其它方式存储这些中间结果。
在可从工作进程245b和270b获得中间数据结果之后,计算节点D 140d的工作进程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的组件的组件,包括CPU 351、I/O组件352(但是没有示出特定组件)、存储装置354和存储器357。其它***360、370和380也可以每个包括类似于关于计算机***300示出的一些或所有组件的组件,但是为简单起见这个示例中没有示出这些组件。客户端计算机***350每个包括在存储器357中执行的浏览器程序358(诸如使这样的客户端计算机***的用户能够与由可配置工作流服务***340提供的基于网页的GUI交互),且还视情况将关于客户端专用工作流组件的信息355存储在本地存储装置354上,但是在其它实施例中一些或所有客户端***上可以不存在这些组件中的一个或两个。此外,特定客户端计算机***350可以具有多于或少于已示出的组件的组件。
可配置工作流服务***340的实施例正在计算机***300的存储器330中执行,诸如包括当由CPU 305执行时编程或以其它方式配置计算机***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或简易通知服务)公开、经由电子通信(例如,电子邮件)发送(等等)的消息。流水线和个别活动可以定义警报用于失败和成功两者。
流水线是由对象组成,且对象由属性组成。属性具有形式标签:值。
对象具有名称:属性和类型:属性。除了名称和类型以外,对象还可以取决于对象的类型而具有任何数量的其它属性。在以下示例中,对象“***日志(Invoice Logs)”描述存储在示例性在线服务SSS(称作<online-storage-service-SSS>)中的数据对象且具有除了名称:和类型:以外的路径:属性
名称:***日志
类型:<online-storage-service-SSS>数据节点
路径:<online-storage-service-SSS>//my_data/xyz.cvs
对象内视情况可以重复属性。在以下示例中,重复输入:且每个输入:属性的值被视为有序清单:
名称:***处理
类型:CommandRunnerTransform
输入:***日志
输入:***规格
属性的值可以是下列各项中的一个:
对象参考
表达式
字符串字面量
这里是示出每种类型的属性值的简单示例:
名称:HourPeriod
类型:时间表
周期:“1小时”←--这是字符串字面量
名称:对象
类型:MyTransform
规格:HourPeriod←----这是对象参考
属性:#{interval.end}←--这是表达式
考虑将5分钟日志串接成每小时日志的示例。这里是基于循环于online-storage-service-SSS中将5分钟日志串接成每小时记录的简易流水线。这个流水线由下列各项组成:
输入数据源-<online-storage-service-SSS>中的5分钟点击日志
拷贝活动
输出数据源(例如,数据目标节点)-<online-storage-service-SSS>中的1小时点击日志
2个时间表对象
警报对象
名称:FiveMinPeriod
类型:时间表
周期:“5分钟”
名称:HourPeriod
类型:时间表
周期:“1小时”
名称:5分钟日志
类型:<online-storage-service-SSS>数据节点
规格:FiveMinPeriod
路径:″<online-storage-service-SSS>://prod/Clicks/#{interval.end}.csv″
名称:串接
类型:CopyTransform
规格:HourPeriod
输入:5分钟日志
输出:每小时的日志
失败(onFail):CopyFailedAlarm
名称:CopyFailedAlarm
类型:″EmailAlarm″
发送到:<客户端-电子邮件-地址>
主题:″点击5分钟->1小时失败!″
正文:
时间间隔#{node.interval.start}..#{node.interval.end}出现错误
名称:每小时日志
类型:<online-storage-service-SSS>数据节点
规格:HourPeriod
路径:
″<online-storage-service-SSS>://XXX-test/OutData/#{interval.end}.csv″
首先,以额外细节描述5分钟点击日志,其是流水线的输入。以下2个对象定义1)时间表(‘FiveMinPeriod’)和2)与‘FiveMinPeriod’相关联的数据源(5分钟日志):
名称:FiveMinPeriod
类型:时间表
周期:″5分钟″
名称:5分钟日志
类型:<online-storage-service-SSS>数据节点
规格:FiveMinPeriod
路径:
″<online-storage-service-SSS>://prod/Clicks/#{interval.end}.csv″
这具有描述诸如下列各项的一系列<online-storage-service-SSS>文件的效果:
...
<online-storage-service-SSS>://prod/Clicks/2011-11-14:10:05:00.csv
<online-storage-service-SSS>://prod/Clicks/2011-11-14:10:10:00.csv
<online-storage-service-SSS>://prod/Clicks/2011-11-14:10:15:00.csv
<online-storage-service-SSS>://prod/Clicks/2011-11-14:10:20:00.csv
<online-storage-service-SSS>://prod/Clicks/2011-11-14:10:25:00.csv
...
每个这样的online-storage-service-SSS文件可被认为是‘5分钟日志’的示例。基于其表示的时段和其包括的数据,每一个文件与其它文件不同。
还考虑下文示出的对象信息:
名称:5分钟日志
类型:<online-storage-service-SSS>数据节点
规格:FiveMinPeriod
路径:″<online-storage-service-SSS>://prod/Clicks/#{interval.end}.csv″
类型:属性识别这个作为<online-storage-service-SSS>数据节点源对象。名称:可能是任何事物,但是在这个示例实施例中可以专用于这样的流水线定义。诸如<online-storage-service-SSS>数据节点的数据源对象在这个示例实施例中还可以具有规格属性,其描述可将对象具体化为具体值的不同方式。规格的一个常见的示例是时段,其可被表达为分钟、小时、天、星期或月。规格的另一示例是基于地理区域的一个示例,诸如对应于数据源***的不同位置。
此外,时段在这个示例实施例中可以由时间表对象指定。具体地,如下定义指定5分钟周期的时间表对象:
名称:FiveMinPeriod
类型:时间表
周期:″5分钟″
注意‘5分钟日志的规格:属性是指时间表对象‘FiveMinPeriod’。现在观察路径:属性:
路径″<online-storage-service-SSS>://prod/Clicks/#{interval.end}.csv″
序列‘#{}’描述了表达式。在这种情况下,要估计的表达式是interval.end。因为‘5分钟日志’具有与其相关联的时间表,所以其包括称为‘时间间隔’的属性,属性本身具有‘开始’值和‘结束’值。以此方式,interval.start..interval.end描述时间表的具体时间间隔:
...
interval.start 2011-11-14:10:00:00 interval.end 2011-11-14:10:05:00
interval.start 2011-11-14:10:05:00 interval.end 2011-11-14:10:10:00
interval.start 2011-11-14:10:15:00 interval.end 2011-11-14:10:20:00
...
路径:属性在这种情况下使用每个时间表对象每个以5分钟时间间隔作为结束而估计为<online-storage-service-SSS>文件。
然后,描述读取5分钟点击的1小时的量并将其串接到每小时输出的文件中的活动。这样的3个对象定义1)时间表(‘HourPeriod’),2)与‘HourPeriod’相关联的CopyTransform(‘串接’),和3)将在失败时启动的警报(‘CopyFailedAlarm’):
名称:HourPeriod
类型:时间表
周期:″1小时″
名称:串接
类型:CopyTransform
规格:HourPeriod
输入:5分钟日志
输出:每小时日志
失败(onFail):CopyFailedAlarm
名称:CopyFailedAlarm
类型:″EmailAlarm″
发送到:<客户端-电子邮件-地址>
主题:″点击5分钟->1小时失败!″
正文:
时间间隔#{node.interval.start}..#{node.interval.end}出现错误
当1小时的量的输入:(‘5分钟日志’)可用时,CWS按安排进行并运行‘串接’。当给定的1个小时内所有的20个5-分钟文件均就绪时,每个将被拷贝到输出‘每小时日志’中。如果‘串接’过程面临失败状况,那么警报对象‘CopyFailedAlarm’将运行并发送电子邮件。
具体地,‘串接’是类型‘CopyTransform’的对象,在这个示例实施例中‘CopyTransform’是由CWS提供的内置活动。CopyTransform采用输入数据源和输出数据源。活动(CopyTransform是活动类型)可以具有与其相关联的时间表规格,正如数据源。在这种情况下,‘串接’与时间表对象‘Hour Period’相关联,‘Hour Period’描述每小时的时间间隔。这可被视为是下列各项:“‘串接’处理1个小时量的数据”。
输入的时间表:在这种情况下(‘5分钟日志’)描述5分钟时间间隔,而‘串接’的时间表是按小时计算。CWS推断配置到处理‘串接’的每小时时间间隔的20个5分钟输入文件映射。诸如‘CopyFailedAlarm’的警报对象可与任何数量的活动相关联。正文:属性在这种情况下包括以下表达式:时间间隔#{node.interval.start}..#{node.interval.end}出现错误。警报具有在运行时间对上面正报告警告的对象进行估计的节点:属性。在这种情况下,如果由于‘串接’失败而发出警报,那么‘节点’将会指对象‘串接’。
最后,这里是输出数据源:
名称:每小时日志
类型:<online-storage-service-SSS>数据节点
规格:HourPeriod
路径:
″<online-storage-service-SSS>://prod/concat-clicks/#{interval.end}.csv″
这具有描述诸如下列各项的一系列<online-storage-service-SSS>文件的效果:
<online-storage-service-SSS>//prod/concat-clicks/2011-11-14:00:0:00.csv
<online-storage-service-SSS>://prod/concat-clicks/2011-11-14:01:0:00.csv
<online-storage-service-SSS>://prod/concat-clicks/2011-11-14:02:0:00.csv
每个<online-storage-service-SSS>文件可以被认为是‘每小时日志’的示例。基于其表示的时段和其包括的数据,每一个文件不同于其它文件。
还考虑下列各项:
名称:串接
类型:CopyTransform
规格:HourPeriod
输入:5分钟日志
输出:每小时日志
名称:每小时日志
类型:<online-storage-service-SSS>数据节点
规格:HourPeriod
路径:
″<online-storage-service-SSS>://prod/concat-clicks/#{interval.end}.csv″
如同上文描述的‘5分钟’数据源,‘每小时日志’与时间表相关联,在这种情况下时间表是每小时的时间表。路径:属性在这种情况下使用每个时间表对象每个以每小时间隔作为结束而估计为<online-storage-service-SSS>文件。
‘串接’活动指定‘每小时日志’作为输出数据源。当CWS按安排进行并运行‘串接’时,其还将产生对应于当前运行的每小时时间表周期的结束时间范围的<online-storage-service-SSS>文件。
属性的值可以采用以下形式:
对象参考
表达式
字符串字面量
关于对象参考,属性可通过名称来指另一流水线对象。这有利于形成某些类型的表达式:
名称:object1
类型:样本
名称:object2
类型:样本
attrib1:object1<-------object1的引用
关于表达式,这种构造#{″expression″}内产生表达式。表达式可以是
内置函数:
attrib:#{day(currentTime())}
字符串值:
attrib:#{″这是字符串值″}
字符串项的串接:
attrib:#{″prefix-″+functionReturningString()}
整数或浮点值:
attrib:#{func(3.14,5)}
数字表达式:
attrib:#{func(3.14+5)}
另一属性的简单引用
名称:object1
类型:样本
attrib1:#{today()}
attrib2:#{attrib1}<-------attrib2将具有attrib1的值
另一属性的定量引用
名称:object1
类型:样本
attrib1:#{today()}
attrib2:attrib1
名称:object2
类型:样本
attrib3:object1<-------对象引用不会出现在′#{}′构造内部
attrib4:#{attrib3.attrib2}<-------这是定量属性引用(值是object1.attrib2)
关于字符串字面量,属性可具有字符串字面量,诸如″这是字符串字面量″。此外,字符串字面量可包括表达式,其被估计为以下字符串:
attrib1:″这包括#{attrib2}″
attrib2:″表达式″
注意上文attrib1具有经由表达式构造:′#{}′嵌入的表达式
字符串字面量还可为多行字符串字面量,每行缩进2个空格:
attrib3:
这是第一行
这是第二行
且这是最后一行
可就以下条款描述本公开的各个实施例:
1.一种计算机实现的方法,包括:
由可配置工作流服务的一个或多个已配置的计算***提供使可配置工作流服务的多个客户端能够配置要实现的工作流的一个或多个接口;
由一个或多个已配置的计算***从第一定义工作流的多个客户端的第一客户端接收配置信息,所述配置信息经由所提供的接口中的至少一个接收且通过一个或多个网络从第一客户端的远程位置发送,所述配置信息指定第一定义工作流的多个工作流组件和多个工作流组件中的至少一些之间的互连,所述多个工作流组件中的至少一些由客户端选自由可配置工作流服务提供的多个预定义工作流组件以供多个客户端使用;
由一个或多个已配置的计算***选择多个计算节点以用于实现第一定义工作流,多个计算节点中的至少一些是由可配置工作流服务提供以供多个客户端使用的多个计算节点的子集;
由一个或多个已配置的计算***供应选定计算节点,每个计算节点实现多个工作流组件中的至少一个;和
通过一个或多个已配置的计算***启动选定计算节点上与已实现的工作流组件相对应的定义活动的执行,实现客户端的第一定义工作流,所述定义活动包括:
一个或多个第一活动,包括从可配置工作流服务外部的一个或多个数据源获得输入数据;
一个或多个第二活动,包括通过执行至少部分基于已获得的输入数据的数据操作运算产生中间结果数据;和
一个或多个第三活动,包括至少部分基于第二活动的中间结果数据产生输出数据且包括将所产生的输出数据提供给第一客户端。
2.根据条款1所述的方法,其中所提供的一个或多个接口包括至少图形用户界面和应用程序设计接口,且所述方法还包括:
经由所提供的接口中的一个接收关于用于启动第一定义工作流的实现的一个或多个准则的信息,所述一个或多个准则是由客户端指定且对应于第一定义工作流多次的定期实现,所述定期实现基于改变在所述多次中可用的输入数据;且
在所述多次中的每次中,
由一个或多个已配置的计算***确定满足一个或多个准则;和
执行第一定义工作流的实现。
3.根据条款2所述的方法,其中可配置工作流服务是收费服务,且所述方法还包括从第一客户端获得用于执行第一定义工作流的实现的一种或多种费用。
4.一种计算机实现的方法,其包括:
由可配置工作流服务的一个或多个已配置的计算***接收可配置工作流服务的客户端的定义工作流的配置信息,所述配置信息指定定义工作流的多个工作流组件和多个工作流组件中的至少一些之间的互连;
由一个或多个已配置的计算***供应多个计算节点,以使每个计算节点实现多个工作流组件中的至少一个,所述多个工作流组件中的至少一个由可配置工作流服务提供以供可配置工作流服务的客户端使用;和
通过启动多个计算节点上与已实现的工作流组件相对应的定义活动的执行,实现客户端的定义工作流,所述定义活动包括:
一个或多个第一活动,包括从可配置工作流服务外部的一个或多个数据源获得输入数据;
一个或多个第二活动,包括通过执行至少部分基于已获得的输入数据的数据操作运算产生中间结果数据;和
一个或多个第三活动,包括至少部分基于第二活动的中间结果数据产生输出数据。
5.根据条款4所述的方法,其中客户端的定义工作流的实现还包括下列各项中的至少一个:将所产生的输出数据存储在由客户端指定的一个或多个存储位置中;和生成至少部分基于所产生的输出数据且提供给客户端的一个或多个报告。
6.根据条款4所述的方法,还包括:
接收用于启动定义工作流的实现的一个或多个准则的指示;和
在定义工作流的实现之前,由一个或多个已配置的计算***确定满足一个或多个准则。
7.根据条款6所述的方法,其中一个或多个准则对应于定义工作流多次的定期实现,所述定期实现基于改变在所述多次中可用的输入数据,且所述方法还包括在所述多次中的每次执行定义工作流的实现。
8.根据条款6所述的方法,其中一个或多个准则中的至少一个被定义为与多个工作流组件中的至少一个相关联的前提条件。
9.根据条款6所述的方法,还包括:接收关于与多个工作流组件中的一个工作流组件相关联的后置条件准则的信息,且定义工作流的实现还包括:确定在执行对应于所述一个工作流组件的定义活动中的一个或多个之后满足后置条件准则。
10.根据条款6所述的方法,其中满足一个或多个准则的确定在第一时间发生,且所述方法还包括:
由一个或多个已配置的计算***确定在第二时间不满足一个或多个准则;和
作为响应,为客户端生成指示不满足一个或多个准则的警报通知。
11.根据条款4所述的方法,还包括:
提供图形用户界面,其中客户端通过编辑逻辑上表示定义工作流的图形,经由图形用户界面由配置信息指定,由所述图形的多个节点中的至少一个指示位于所述图形内的多个工作流组件中的每个;和
其中定义工作流的实现包括物理地实例化所述图形的拷贝。
12.根据条款4所述的方法,还包括在多个不同时间实现客户端的定义工作流,且其中在多个不同时间之间保持多个计算节点中的一个或多个以使一个或多个计算节点的供应只能够发生一次。
13.根据条款4所述的方法,其中对于多个计算节点中的一个或多个,计算节点实现为以分布方式执行定义活动中的至少一个的多个计算机***的群集。
14.根据条款4所述的方法,其中对于多个计算节点中的每个,多个计算节点的供应包括在计算节点上加载软件程序和配置数据中的至少一个。
15.根据条款4所述的方法,其中多个计算节点中的一个或多个由可配置工作流服务外部的在线执行服务提供,且一个或多个计算节点的供应包括:由一个或多个已配置的计算***执行与所述一个或多个计算节点相对应的、与在线执行服务进行的一次或多次交互。
16.根据条款15所述的方法,其中通过在线执行服务,将所提供的一个或多个计算节点与具有在线执行服务的客户端的账号相关联,且与在线执行服务进行的一次或多次交互包括:将代表客户端的关于客户端的账号的信息提供给在线执行服务。
17.根据条款15所述的方法,其中所提供的一个或多个计算节点是通过在线执行服务以防止客户端获得对一个或多个计算节点的访问的方式与可配置工作流服务相关联。
18.根据条款4所述的方法,其中多个工作流组件包括一个或多个源组件和一个或多个数据操作组件以及一个或多个目标组件,所述一个或多个源组件中的每个具有相关数据源和用于访问来自所述相关数据源的输入数据中的至少一些的相关指令,所述一个或多个数据操作组件中的每个具有用于执行所述数据操作运算中的至少一个的相关指令,且所述一个或多个目标组件中的每个具有处理所产生的输出数据中的至少一些的相关指令。
19.根据条款18所述的方法,其中所述多个工作流组件还包括所述源组件中的多个源组件,且其中所述源组件中的至少一个由所述客户端供应给所述可配置工作流服务,以使能访问专用于所述客户端的数据源。
20.根据条款18所述的方法,其中所述多个工作流组件还包括所述数据操作组件中的多个数据操作组件,且所述数据操作组件中的至少一个具有相关数据操作运算,所述相关数据操作运算由所述客户端供应给所述可配置工作流服务,以使能执行专用于所述客户端的定义活动。
21.根据条款18所述的方法,其中所述多个工作流组件中的一个或多个由所述可配置工作流服务提供且由客户端选择以供定义工作流使用。
22.根据条款4所述的方法,对于所述可配置工作流服务的多个额外客户端中的每个,还包括:
接收用于所述额外客户端的额外定义工作流的配置信息;
将用于所述额外客户端的额外定义工作流的配置信息存储在所述可配置工作流服务的一个或多个存储机构上;和
在一个或多个计算节点上一次或多次实现代表额外客户端的额外定义工作流。
23.一种存储配置可配置工作流服务的计算***以执行以下操作的非瞬时性计算机可读介质:
由已配置的计算***基于由定义工作流的客户端供应的配置信息供应多个计算节点,所述供应包括配置多个计算节点以实现定义工作流的多个工作流组件,所述定义工作流包括多个工作流组件中的至少一些之间的互连;和
通过启动与已实现的工作流组件相对应的多个计算节点上的定义活动的执行,实现客户端的定义工作流,所述定义活动的执行包括:从一个或多个数据源获得输入数据、执行至少部分基于已获得的输入数据的数据操作运算和至少部分基于所述已执行的数据操作运算产生输出数据。
24.根据条款23所述的非瞬时性计算机可读介质,其中所述可配置工作流服务提供用于实现可配置工作流服务的多个客户端的工作流的多个计算节点,其中所述多个计算节点中的至少一些是所述多个计算节点的子集,且所存储的内容是在执行时编程已配置的计算***的软件指令。
25.根据条款23所述的非瞬时性计算机可读介质,其中所述计算***还被配置来在多个计算节点的供应之前:
提供由所述可配置网络服务的客户端用来指定信息的一个或多个接口;和
经由所提供的接口中的至少一个,从定义工作流的客户端接收配置信息,
且其中根据所接收的配置信息执行定义活动。
26.根据条款23所述的非瞬时性计算机可读介质,其中所述多个计算节点中的至少一些由可配置工作流服务外部的一个或多个程序执行服务提供,且所述计算***还被配置来与代表客户端的一个或多个程序执行服务交互,作为所述多个计算节点的供应的一部分。
27.根据条款23所述的非瞬时性计算机可读介质,其中所述多个计算节点中的至少一些由客户端经由在远离已配置的计算***的位置处的客户端的控制下的一个或多个计算机***提供,且所述计算***还被配置来与所述一个或多个计算机***交互,作为所述多个计算节点的供应的一部分。
28.一种***,包括:
一个或多个处理器;和
可配置工作流服务的一个或多个模块,被配置来在由所述一个或多个处理器中的至少一个执行时通过下列各项提供客户端的定义工作流的功能:
从所述客户端接收指定所述定义工作流的多个工作流组件和互连的配置信息;
至少部分基于所述已接收的配置信息,供应多个计算节点以实现所述多个工作流组件;和
通过启动与所述已实现的工作流组件相对应的所述多个计算节点上的定义活动的执行,实现所述客户端的所述定义工作流,所述定义活动的执行包括从一个或多个数据源获得输入数据、执行至少部分基于已获得的输入数据的数据操作运算和至少部分基于所述已执行的数据操作运算产生输出数据。
29.根据条款28所述的***,还包括用于实现可配置工作流服务的多个客户端的工作流的多个计算节点,其中所述多个计算节点中的至少一些是所述多个计算节点的子集,且所述一个或多个模块包括用于由所述一个或多个处理器中的至少一个执行的软件指令。
30.根据条款28所述的***,其中所述一个或多个模块由用于执行客户端的定义工作流的功能的提供的一个或多个装置组成。
如上文提及,这些示例实施例的这些细节是为了说明目的而提供且不旨在关于其它实施例限制所描述的技术的范围。
根据前文应明白,虽然本文出于说明目的描述了具体实施例,但是在不违背本发明的精神和范围的情况下可以做出各种修改。因此,除了受限于随附权利要求和本文叙述的元件以外,本发明并无任何限制。此外,虽然下文以某些权利要求形式展示了本发明的某些方面,但是发明者以任何可用权利要求形式预期本发明的各个方面。例如,虽然目前只有本发明的一些方面可以被叙述为具体实现于计算机可读介质中,但是同样地也可以这样具体实现其它方面。
Claims (24)
1.一种计算机实现的方法,包括:
由在线服务的一个或多个已配置的计算***经由在线服务所提供的接口从客户端接收配置信息,所述配置信息指定工作流的多个工作流组件和所述多个工作流组件中的至少一些之间的关联;
由所述一个或多个已配置的计算***供应由在线服务提供的多个计算节点,以使每个计算节点实现所述多个工作流组件中的至少一个;以及
通过所述一个或多个已配置的计算***启动所供应的多个计算节点上针对已实现的工作流组件的活动的执行,实现所述客户端的工作流,所述活动的执行包括:
从在线服务外部的一个或多个数据源获得输入数据;
执行数据操作运算,所述数据操作运算至少部分基于已获得的输入数据,并被指定用于已实现的工作流组件中的至少一个;以及
至少部分基于所执行的数据操作运算来产生输出数据。
2.根据权利要求1所述的计算机实现的方法,其中所述在线服务是可配置工作流服务,所述接口是由所述可配置工作流服务提供的应用编程接口API,以及所述方法还包括:
由一个或多个已配置的计算***经由所提供的API从客户端接收用于启动工作流的实现的一个或多个准则的指示;以及
在工作流的实现之前,由一个或多个已配置的计算***确定所述一个或多个准则被满足。
3.根据权利要求2所述的计算机实现的方法,其中所述一个或多个准则对应于工作流多次的定期实现,所述定期实现基于改变在所述多次中可用的输入数据,且所述方法还包括在所述多次中的每次执行工作流的实现。
4.根据权利要求2所述的计算机实现的方法,其中所述一个或多个准则中的至少一个被定义为与多个工作流组件中的至少一个相关联的前提条件。
5.根据权利要求2所述的计算机实现的方法,还包括:接收关于与多个工作流组件中的一个工作流组件相关联的后置条件准则的信息,且工作流的实现还包括:确定在执行与所述一个工作流组件相对应的一个或多个活动之后满足后置条件准则。
6.根据权利要求2所述的计算机实现的方法,其中一个或多个准则被满足的确定在第一时间发生,且所述方法还包括:
由一个或多个已配置的计算***在第二时间确定所述一个或多个准则未被满足;和
由一个或多个已配置的计算***响应于所述确定为客户端生成指示所述一个或多个准则未被满足的警报通知。
7.根据权利要求1所述的计算机实现的方法,其中所述接口是在线服务所提供的图形用户界面,所述方法还包括:由一个或多个已配置的计算***经由图形用户界面,在客户端编辑逻辑上表示工作流的图形的基础上,从客户端接收工作流的额外配置信息,其中由所述图形的多个节点中的至少一个指示位于所述图形内的多个工作流组件中的每个;以及工作流的实现包括实例化所述图形的拷贝。
8.根据权利要求1所述的计算机实现的方法,其中对于多个计算节点中的每个,多个计算节点的供应包括在计算节点上加载软件程序或配置数据中的至少一个。
9.根据权利要求1所述的计算机实现的方法,其中所述在线服务是可配置工作流服务,一个或多个额外计算节点由可配置工作流服务外部的在线执行服务提供,且实现所述客户端的工作流还包括:由一个或多个已配置的计算***执行与所述一个或多个额外计算节点相对应的、与在线执行服务进行的一次或多次交互,以使得所述多个工作流组件中的一个或多个在所述一个或多个额外计算节点上实现。
10.根据权利要求9所述的计算机实现的方法,其中通过在线执行服务,将所述一个或多个额外计算节点与具有在线执行服务的客户端的账号相关联,且与在线执行服务进行的一次或多次交互包括:将关于客户端的账号的信息提供给在线执行服务。
11.根据权利要求1所述的计算机实现的方法,其中多个工作流组件包括一个或多个源组件和一个或多个数据操作组件以及一个或多个目标组件,所述一个或多个源组件中的每个具有相关数据源和用于访问来自所述相关数据源的输入数据中的至少一些的相关指令,所述一个或多个数据操作组件中的每个具有用于执行所述数据操作运算中的至少一个的相关指令,且所述一个或多个目标组件中的每个具有用于处理所产生的输出数据中的至少一些的相关指令。
12.根据权利要求11所述的计算机实现的方法,其中所述多个工作流组件还包括所述源组件中的多个源组件,且其中所述源组件中的至少一个由所述客户端供应给所述在线服务,以使能访问专用于所述客户端的数据源。
13.根据权利要求11所述的计算机实现的方法,其中所述多个工作流组件还包括所述数据操作组件中的多个数据操作组件,且所述数据操作组件中的至少一个具有相关数据操作运算,所述相关数据操作运算由所述客户端供应给所述在线服务,以使得执行由所述客户端指定的定义活动。
14.根据权利要求1所述的计算机实现的方法,还包括:对于所述在线服务的多个额外客户端中的每个,
接收用于所述额外客户端的额外定义工作流的额外配置信息;
将用于所述额外客户端的额外定义工作流的额外配置信息存储在所述在线服务的一个或多个存储机构上;和
使用所存储的额外配置信息,在所述在线服务的一个或多个计算节点上一次或多次实现代表额外客户端的额外定义工作流。
15.一种***,包括:
一个或多个计算***的一个或多个处理器;以及
在线服务的一个或多个模块,当由所述一个或多个处理器中的至少一个处理器执行时,将所述至少一个处理器配置为:
经由在线服务所提供的接口从客户端接收配置信息,所述配置信息指定工作流的多个工作流组件和所述多个工作流组件中的至少一些之间的关联;
供应在线服务的多个计算节点,以实现所述多个工作流组件;以及
通过启动所供应的多个计算节点上针对已实现的工作流组件的活动的执行,实现所述客户端的工作流,所述活动的执行包括:
从一个或多个数据源获得输入数据;
执行数据操作运算,所述数据操作运算至少部分基于已获得的输入数据,并被指定用于已实现的工作流组件中的至少一个;以及
至少部分基于所执行的数据操作运算来产生输出数据。
16.根据权利要求15所述的***,其中所述在线服务是可配置工作流服务,所述可配置工作流服务提供许多计算节点用于实现工作流,所述多个计算节点是所述许多计算节点的子集,以及所述一个或多个模块包括软件指令,所述软件指令在被执行时对所述一个或多个计算机***进行编程。
17.根据权利要求15所述的***,其中所提供的接口是由在线的客户端使用的应用编程接口API,以及所接收的配置信息从代表客户端的客户端计算设备上运行的执行程序发送。
18.根据权利要求15所述的***,其中一个或多个额外计算节点由客户端经由所述客户端控制的一个或多个额外计算机***设置在远离所述一个或多个计算机***的位置处,以及实现所述客户端的工作流还包括:与所述一个或多个额外计算机***交互,以使得所述多个工作流组件中的至少一个在所述一个或多个额外计算节点上实现。
19.根据权利要求15所述的***,其中来自客户端的配置信息标识一个或多个数据源,并指示在线服务外部的、要从中获得输入数据的一个或多个位置;以及从一个或多个数据源获得输入数据包括:从在线服务外部的一个或多个位置获得输入数据。
20.根据权利要求15所述的***,其中来自客户端的配置信息标识位于在线服务外部且与一个或多个数据源相分离的一个或多个指定存储位置;以及产生输出数据包括:在一个或多个指定存储位置中存储输出数据。
21.根据权利要求15所述的***,其中来自客户端的配置信息还指定在满足一个或多个指定准则的情况下要从一个或多个数据源获取输入数据,其中所述一个或多个模块还配置所述至少一个处理器用于:针对多次中的每次,确定该次满足一个或多个指定准则;以及针对多次中的每次,至少部分基于该次的确定来执行所供应的多个计算节点上针对所实现的工作流组件的活动。
22.根据权利要求21所述的***,其中所述一个或多个指定准则包括定义工作流的前一使用起的时间量,以及在多次中的一次或多次确定满足一个或多个准则包括:识别针对所述一次或多次自前一使用起的所述时间量的出现。
23.根据权利要求21所述的***,其中所述一个或多个指定准则包括指定时间,以及在多次中的一次或多次确定满足一个或多个准则包括:识别针对所述一次或多次的所述指定时间的出现。
24.根据权利要求21所述的***,其中所述一个或多个指定准则包括输入数据可用,以及在多次中的一次或多次确定满足一个或多个准则包括:在所述一次或多次与一个或多个数据源交互,以识别所述输入数据可用。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/396,479 US8856291B2 (en) | 2012-02-14 | 2012-02-14 | Providing configurable workflow capabilities |
US13/396,479 | 2012-02-14 | ||
CN201380009486.9A CN104115139B (zh) | 2012-02-14 | 2013-02-12 | 提供可配置工作流能力 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380009486.9A Division CN104115139B (zh) | 2012-02-14 | 2013-02-12 | 提供可配置工作流能力 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106067080A true CN106067080A (zh) | 2016-11-02 |
CN106067080B CN106067080B (zh) | 2019-11-15 |
Family
ID=48946589
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610346041.5A Active CN106067080B (zh) | 2012-02-14 | 2013-02-12 | 提供可配置工作流能力 |
CN201380009486.9A Active CN104115139B (zh) | 2012-02-14 | 2013-02-12 | 提供可配置工作流能力 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380009486.9A Active CN104115139B (zh) | 2012-02-14 | 2013-02-12 | 提供可配置工作流能力 |
Country Status (10)
Country | Link |
---|---|
US (4) | US8856291B2 (zh) |
EP (2) | EP3327643A1 (zh) |
JP (1) | JP5885859B2 (zh) |
CN (2) | CN106067080B (zh) |
AU (1) | AU2013221760B2 (zh) |
BR (1) | BR112014020197A8 (zh) |
CA (1) | CA2864113C (zh) |
RU (2) | RU2550520C1 (zh) |
SG (2) | SG10201502362RA (zh) |
WO (1) | WO2013122964A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229723A (zh) * | 2017-06-05 | 2017-10-03 | 腾讯科技(深圳)有限公司 | 指令处理方法及指令处理装置 |
CN108874487A (zh) * | 2018-06-13 | 2018-11-23 | 北京九章云极科技有限公司 | 基于工作流的数据分析处理方法及*** |
Families Citing this family (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021144656A1 (en) | 2020-01-15 | 2021-07-22 | Monday.Com | Digital processing systems and methods for graphical dynamic table gauges in collaborative work systems |
WO2021161104A1 (en) | 2020-02-12 | 2021-08-19 | Monday.Com | Enhanced display features in collaborative network systems, methods, and devices |
US11455287B1 (en) * | 2012-08-01 | 2022-09-27 | Tibco Software Inc. | Systems and methods for analysis of data at disparate data sources |
KR101516055B1 (ko) * | 2012-11-30 | 2015-05-04 | 주식회사 엘지씨엔에스 | 맵리듀스 워크플로우 처리 장치와 방법 및 이를 저장한 기록 매체 |
US9448927B1 (en) | 2012-12-19 | 2016-09-20 | Springpath, Inc. | System and methods for removing obsolete data in a distributed system of hybrid storage and compute nodes |
KR20150033453A (ko) * | 2013-09-24 | 2015-04-01 | 주식회사 엘지씨엔에스 | 빅데이터 처리 방법, 이를 수행하는 빅데이터 처리 장치 및 이를 저장하는 기록매체 |
US9336020B1 (en) * | 2013-11-18 | 2016-05-10 | Amazon Technologies, Inc. | Workflows with API idiosyncrasy translation layers |
CN103577941A (zh) * | 2013-11-25 | 2014-02-12 | 方正国际软件有限公司 | 可配置的医疗信息管理平台和医疗信息管理方法 |
US9450955B2 (en) * | 2014-01-13 | 2016-09-20 | Oracle International Corporation | Authenticator for user state management |
US10705877B2 (en) * | 2014-05-29 | 2020-07-07 | Ab Initio Technology Llc | Workload automation and data lineage analysis |
US9311134B1 (en) * | 2014-09-29 | 2016-04-12 | International Business Machines Corporation | Automated creation of executable workflow |
CN105630589A (zh) * | 2014-11-24 | 2016-06-01 | 航天恒星科技有限公司 | 分布式流程调度***及流程调度、执行方法 |
US9430290B1 (en) | 2015-03-31 | 2016-08-30 | International Business Machines Corporation | Determining storage tiers for placement of data sets during execution of tasks in a workflow |
US9946983B1 (en) * | 2015-06-10 | 2018-04-17 | Amazon Technologies, Inc. | Rule-based electronic workflow processing |
US9934026B2 (en) | 2015-06-23 | 2018-04-03 | Microsoft Technology Licensing, Llc | Workflow generation and editing |
US9910654B1 (en) | 2015-09-29 | 2018-03-06 | Amazon Technologies, Inc. | Extensible software release management automation service |
US9934016B1 (en) | 2015-09-29 | 2018-04-03 | Amazon Technologies, Inc. | Extensible software release management automation service |
US9904585B1 (en) * | 2015-10-06 | 2018-02-27 | Amazon Technologies, Inc. | Error handling in executing workflow state machines |
US9766927B1 (en) * | 2015-10-06 | 2017-09-19 | Amazon Technologies, Inc. | Data flow management in processing workflows |
EP3369054A4 (en) | 2015-10-30 | 2019-04-03 | Intuit Inc. | SOLUTION THAT CAN BE DEVELOPED GLOBALLY |
KR102028496B1 (ko) * | 2016-03-03 | 2019-10-04 | 한국전자통신연구원 | 스트림 분석 장치 및 방법 |
US10516791B2 (en) | 2016-03-04 | 2019-12-24 | Ricoh Company, Ltd. | Information processing system, information processing apparatus, and information processing method for executing an iteration of one or more processes |
US10122788B2 (en) * | 2016-03-29 | 2018-11-06 | Amazon Technologies, Inc. | Managed function execution for processing data streams in real time |
DE102016004264A1 (de) * | 2016-04-08 | 2017-10-12 | Liebherr-Werk Nenzing Gmbh | System zur digitalen Unterstützung eines Arbeitsprozesses |
CN107679817B (zh) * | 2016-08-02 | 2022-02-08 | 阿里巴巴集团控股有限公司 | 工作流执行方法及相关设备 |
US10672156B2 (en) | 2016-08-19 | 2020-06-02 | Seven Bridges Genomics Inc. | Systems and methods for processing computational workflows |
US10545792B2 (en) | 2016-09-12 | 2020-01-28 | Seven Bridges Genomics Inc. | Hashing data-processing steps in workflow environments |
CN108009017B (zh) | 2016-11-01 | 2022-02-18 | 阿里巴巴集团控股有限公司 | 一种应用链路的扩容方法、装置和*** |
US10885057B2 (en) | 2016-11-07 | 2021-01-05 | Tableau Software, Inc. | Correlated incremental loading of multiple data sets for an interactive data prep application |
US11853529B2 (en) | 2016-11-07 | 2023-12-26 | Tableau Software, Inc. | User interface to prepare and curate data for subsequent analysis |
US10182156B2 (en) | 2017-03-24 | 2019-01-15 | Microsoft Technology Licensing, Llc | Insight based routing for help desk service |
US10135981B2 (en) | 2017-03-24 | 2018-11-20 | Microsoft Technology Licensing, Llc | Routing during communication of help desk service |
US11256743B2 (en) | 2017-03-30 | 2022-02-22 | Microsoft Technology Licensing, Llc | Intermixing literal text and formulas in workflow steps |
US10536348B2 (en) * | 2017-04-28 | 2020-01-14 | At&T Intellectual Property I, L.P. | Operational micro-services design, development, deployment |
US11055135B2 (en) | 2017-06-02 | 2021-07-06 | Seven Bridges Genomics, Inc. | Systems and methods for scheduling jobs from computational workflows |
CN107369005A (zh) * | 2017-07-18 | 2017-11-21 | 合肥云数安存数据科技有限公司 | 一种工作流模型生成、业务处理方法及装置 |
US10678613B2 (en) | 2017-10-31 | 2020-06-09 | Seven Bridges Genomics Inc. | System and method for dynamic control of workflow execution |
EP3746884A4 (en) * | 2018-01-29 | 2021-11-03 | Rubikloud Technologies Inc. | PROCESS AND SYSTEM FOR GENERATING A FLEXIBLE PIPELINE ARCHITECTURE |
US11120158B2 (en) | 2018-04-13 | 2021-09-14 | Plaid Inc. | Secure permissioning of access to user accounts, including secure distribution of aggregated user account data |
US11106492B2 (en) * | 2018-04-27 | 2021-08-31 | EMC IP Holding Company LLC | Workflow service for a cloud foundry platform |
US11698890B2 (en) | 2018-07-04 | 2023-07-11 | Monday.com Ltd. | System and method for generating a column-oriented data structure repository for columns of single data types |
CN109345202B (zh) * | 2018-09-27 | 2020-09-29 | 中国银行股份有限公司 | 一种多产品多层级的流程定制方法及*** |
US10691304B1 (en) * | 2018-10-22 | 2020-06-23 | Tableau Software, Inc. | Data preparation user interface with conglomerate heterogeneous process flow elements |
US11250032B1 (en) | 2018-10-22 | 2022-02-15 | Tableau Software, Inc. | Data preparation user interface with conditional remapping of data values |
FR3091106B1 (fr) * | 2018-12-20 | 2021-02-12 | Commissariat Energie Atomique | Système de supervision formelle de communications |
US11281364B2 (en) * | 2018-12-20 | 2022-03-22 | Citrix Systems, Inc. | Flowchart-style diagramming tool to build automated workflows |
US11467858B2 (en) * | 2019-03-27 | 2022-10-11 | Amazon Technologies, Inc. | Techniques for performing continuation workflows |
US11366681B2 (en) | 2019-03-27 | 2022-06-21 | Amazon Technologies, Inc. | Chaining virtual machines |
US11176149B2 (en) * | 2019-08-13 | 2021-11-16 | International Business Machines Corporation | Predicted data provisioning for analytic workflows |
WO2021055618A1 (en) | 2019-09-17 | 2021-03-25 | Plaid Inc. | System and method linking to accounts using credential-less authentication |
US11580206B2 (en) * | 2019-10-08 | 2023-02-14 | Palantir Technologies Inc. | Project-based permission system |
US11216270B2 (en) * | 2019-10-24 | 2022-01-04 | Dell Products L.P. | Metadata driven workflow semantics for management operations |
US11816713B2 (en) * | 2019-10-24 | 2023-11-14 | Shopify Inc. | Systems and methods for automating tasks across multiple online stores |
US20210150135A1 (en) | 2019-11-18 | 2021-05-20 | Monday.Com | Digital processing systems and methods for integrated graphs in cells of collaborative work system tables |
WO2021127240A1 (en) | 2019-12-17 | 2021-06-24 | Plaid Inc. | System and method for assessing a digital interaction with a digital third party account service |
CN111090790B (zh) * | 2019-12-20 | 2024-03-29 | 联想(北京)有限公司 | 一种数据处理方法、装置及电子设备 |
CN111401849B (zh) * | 2020-03-18 | 2023-04-18 | 浩云科技股份有限公司 | 一种流程工具自定义节点配置方法 |
CN111461531B (zh) * | 2020-03-30 | 2022-02-01 | 拉扎斯网络科技(上海)有限公司 | 业务处理***、业务编排方法、装置、设备及存储介质 |
EP4143732A1 (en) | 2020-05-01 | 2023-03-08 | Monday.com Ltd. | Digital processing systems and methods for enhanced collaborative workflow and networking systems, methods, and devices |
US20240184989A1 (en) | 2020-05-01 | 2024-06-06 | Monday.com Ltd. | Digital processing systems and methods for virtualfile-based electronic white board in collaborative work systems systems |
WO2022040283A1 (en) * | 2020-08-18 | 2022-02-24 | Plaid Inc. | System and method for managing user interaction flows within third party applications |
US11755543B2 (en) * | 2020-12-29 | 2023-09-12 | International Business Machines Corporation | Optimization of workflows with dynamic file caching |
US11397847B1 (en) | 2021-01-14 | 2022-07-26 | Monday.com Ltd. | Digital processing systems and methods for display pane scroll locking during collaborative document editing in collaborative work systems |
US11461297B1 (en) | 2021-06-09 | 2022-10-04 | T-Mobile Usa, Inc. | Ensuring database integrity using a data flow in a graph, such as for use by a wireless telecommunications service provider |
US12032994B1 (en) | 2021-10-18 | 2024-07-09 | Tableau Software, LLC | Linking outputs for automatic execution of tasks |
WO2023096887A1 (en) * | 2021-11-23 | 2023-06-01 | Kebotix, Inc. | Techniques for combined data and execution driven pipeline |
US11741071B1 (en) | 2022-12-28 | 2023-08-29 | Monday.com Ltd. | Digital processing systems and methods for navigating and viewing displayed content |
US11886683B1 (en) | 2022-12-30 | 2024-01-30 | Monday.com Ltd | Digital processing systems and methods for presenting board graphics |
US11893381B1 (en) | 2023-02-21 | 2024-02-06 | Monday.com Ltd | Digital processing systems and methods for reducing file bundle sizes |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101410863A (zh) * | 2006-04-07 | 2009-04-15 | 国际商业机器公司 | 客户可配置的工作流*** |
CN101599145A (zh) * | 2009-06-30 | 2009-12-09 | 中兴通讯股份有限公司 | 一种工作流管理方法和*** |
US8099480B1 (en) * | 2008-11-25 | 2012-01-17 | Google Inc. | Scalable workflow design for automated service management |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030200168A1 (en) * | 2002-04-10 | 2003-10-23 | Cullen Andrew A. | Computer system and method for facilitating and managing the project bid and requisition process |
US20070245013A1 (en) * | 2006-04-13 | 2007-10-18 | Fischer International Identity Llc | Cross domain provisioning methodology and apparatus |
US8655939B2 (en) * | 2007-01-05 | 2014-02-18 | Digital Doors, Inc. | Electromagnetic pulse (EMP) hardened information infrastructure with extractor, cloud dispersal, secure storage, content analysis and classification and method therefor |
US8301480B2 (en) * | 2007-11-01 | 2012-10-30 | International Business Machines Corporation | Automatically evolving processes in workflow automation |
WO2009096519A1 (ja) * | 2008-01-31 | 2009-08-06 | Nec Corporation | フィードフォーワード制御方法、サービス提供品質制御装置、システム、プログラム及びその記録媒体 |
TW201009688A (en) * | 2008-08-20 | 2010-03-01 | Clevest Solutions Inc | Method and system of editing workflow logic and screens with a GUI tool |
US20100057826A1 (en) * | 2008-08-29 | 2010-03-04 | Weihsiung William Chow | Distributed Workflow Process Over a Network |
JP2010092260A (ja) * | 2008-10-08 | 2010-04-22 | Fujitsu Microelectronics Ltd | 思考的品質改善システム |
US20100192053A1 (en) * | 2009-01-26 | 2010-07-29 | Kabushiki Kaisha Toshiba | Workflow system and method of designing entry form used for workflow |
US8880436B2 (en) * | 2009-02-23 | 2014-11-04 | The Hong Kong and Shanghai Banking Corporation Limited | Automation system and method for a web-based implementation portal |
US8250520B2 (en) * | 2009-03-17 | 2012-08-21 | Microsoft Corporation | Implementing custom activities in a workflow |
CA2667036A1 (en) | 2009-05-27 | 2010-11-27 | Clevest Solutions Inc. | A system and method for workflow management with configurable states and extensibility |
CN101794226B (zh) * | 2010-03-08 | 2012-11-07 | 山东大学 | 一种适应多业务抽象层次的服务化软件构造方法和*** |
US8806346B2 (en) * | 2010-03-30 | 2014-08-12 | Itxc Ip Holdings S.A.R.L. | Configurable workflow editor for multimedia editing systems and methods therefor |
US9020831B2 (en) * | 2010-04-29 | 2015-04-28 | Hewlett-Packard Development Company, L.P. | Information tracking system and method |
US9128768B2 (en) * | 2011-01-27 | 2015-09-08 | Microsoft Technology Licensing, LCC | Cloud based master data management |
US20120254173A1 (en) * | 2011-03-31 | 2012-10-04 | Goetz Graefe | Grouping data |
US9361323B2 (en) * | 2011-10-04 | 2016-06-07 | International Business Machines Corporation | Declarative specification of data integration workflows for execution on parallel processing platforms |
-
2012
- 2012-02-14 US US13/396,479 patent/US8856291B2/en active Active
-
2013
- 2013-02-12 CN CN201610346041.5A patent/CN106067080B/zh active Active
- 2013-02-12 RU RU2014137132/08A patent/RU2550520C1/ru active
- 2013-02-12 CA CA2864113A patent/CA2864113C/en active Active
- 2013-02-12 BR BR112014020197A patent/BR112014020197A8/pt not_active Application Discontinuation
- 2013-02-12 SG SG10201502362RA patent/SG10201502362RA/en unknown
- 2013-02-12 CN CN201380009486.9A patent/CN104115139B/zh active Active
- 2013-02-12 SG SG11201404849SA patent/SG11201404849SA/en unknown
- 2013-02-12 AU AU2013221760A patent/AU2013221760B2/en active Active
- 2013-02-12 EP EP17206818.1A patent/EP3327643A1/en not_active Withdrawn
- 2013-02-12 EP EP13748640.3A patent/EP2815327A4/en not_active Withdrawn
- 2013-02-12 WO PCT/US2013/025790 patent/WO2013122964A1/en active Application Filing
- 2013-02-12 JP JP2014557727A patent/JP5885859B2/ja active Active
- 2013-02-12 RU RU2015109290A patent/RU2610288C2/ru active
-
2014
- 2014-09-09 US US14/481,553 patent/US9184988B2/en active Active
-
2015
- 2015-10-20 US US14/918,418 patent/US10324761B2/en active Active
-
2019
- 2019-04-30 US US16/399,608 patent/US10901791B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101410863A (zh) * | 2006-04-07 | 2009-04-15 | 国际商业机器公司 | 客户可配置的工作流*** |
US8099480B1 (en) * | 2008-11-25 | 2012-01-17 | Google Inc. | Scalable workflow design for automated service management |
CN101599145A (zh) * | 2009-06-30 | 2009-12-09 | 中兴通讯股份有限公司 | 一种工作流管理方法和*** |
Non-Patent Citations (1)
Title |
---|
RONNI T. MARSHAK: "《IBM FlowMark2.2:Expanding the Capabilities of Obejct-Oriented Workflow》", 《WORKGROUP COMPUTING REPORT》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229723A (zh) * | 2017-06-05 | 2017-10-03 | 腾讯科技(深圳)有限公司 | 指令处理方法及指令处理装置 |
CN107229723B (zh) * | 2017-06-05 | 2022-05-03 | 腾讯科技(深圳)有限公司 | 指令处理方法及指令处理装置 |
CN108874487A (zh) * | 2018-06-13 | 2018-11-23 | 北京九章云极科技有限公司 | 基于工作流的数据分析处理方法及*** |
Also Published As
Publication number | Publication date |
---|---|
JP2015512099A (ja) | 2015-04-23 |
EP2815327A1 (en) | 2014-12-24 |
RU2550520C1 (ru) | 2015-05-10 |
CA2864113A1 (en) | 2013-08-22 |
SG11201404849SA (en) | 2014-09-26 |
US10324761B2 (en) | 2019-06-18 |
EP2815327A4 (en) | 2015-08-19 |
CA2864113C (en) | 2015-11-24 |
SG10201502362RA (en) | 2015-05-28 |
US8856291B2 (en) | 2014-10-07 |
US9184988B2 (en) | 2015-11-10 |
BR112014020197A2 (zh) | 2017-06-20 |
US20160041846A1 (en) | 2016-02-11 |
AU2013221760A1 (en) | 2014-09-25 |
RU2015109290A (ru) | 2015-06-20 |
RU2610288C2 (ru) | 2017-02-08 |
US20130212234A1 (en) | 2013-08-15 |
JP5885859B2 (ja) | 2016-03-16 |
CN106067080B (zh) | 2019-11-15 |
EP3327643A1 (en) | 2018-05-30 |
US10901791B2 (en) | 2021-01-26 |
CN104115139A (zh) | 2014-10-22 |
US20140379879A1 (en) | 2014-12-25 |
US20190258524A1 (en) | 2019-08-22 |
AU2013221760B2 (en) | 2015-12-24 |
BR112014020197A8 (pt) | 2017-07-11 |
CN104115139B (zh) | 2016-06-01 |
WO2013122964A1 (en) | 2013-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106067080A (zh) | 提供可配置工作流能力 | |
US20210334301A1 (en) | Design-time information based on run-time artifacts in transient cloud-based distributed computing clusters | |
US20140040791A1 (en) | Development platform for software as a service (saas) in a multi-tenant environment | |
CN107102848A (zh) | 规定用户界面元素 | |
CN104077137A (zh) | 集成设计应用 | |
US20170068905A1 (en) | Automated intelligent data navigation and prediction tool | |
CN104572062A (zh) | 地理空间信息工作流服务功能流程模板的构建方法 | |
Bocciarelli et al. | A model-driven method for building distributed simulation systems from business process models | |
Kritikos et al. | Multi-cloud provisioning of business processes | |
Postina et al. | An ea-approach to develop soa viewpoints | |
KR101414795B1 (ko) | 인스턴트 웹 앱 생성 장치 및 방법 | |
Hiller et al. | Earth system grid federation: Federated and integrated climate data from multiple sources | |
US20140129965A1 (en) | Guided activity with user's defined steps | |
CN102594617A (zh) | 用于对云计算服务进行评测的***及评测方法 | |
Ionescu et al. | An architecture and methods for big data analysis | |
EP4020217A1 (en) | Performance monitoring for osgi application with bundles | |
Genovese | Data Mesh: the newest paradigm shift for a distributed architecture in the data world and its application | |
Volk et al. | Towards an Automatized Way for Modeling Big Data System Architectures | |
CN112988695A (zh) | 一种超融合混合架构计算材料平台 | |
Roehl | Cloud Based IoT Architecture | |
Zykov et al. | Agile Services | |
CN105786553B (zh) | 一种资源管理方法及装置 | |
CN117875858A (zh) | 作业任务的团队协作服务方法、***、介质及电子设备 | |
Thant | Multi-Objective Resource Optimization of Big Data Applications in Cloud Computing Infrastructure | |
Do | Introduction of cloud provider-specific knowledge and further evaluation of the cloud decision support framework |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |