CN109074537B - 电子系统、计算设备和计算设备中的方法 - Google Patents

电子系统、计算设备和计算设备中的方法 Download PDF

Info

Publication number
CN109074537B
CN109074537B CN201780025654.1A CN201780025654A CN109074537B CN 109074537 B CN109074537 B CN 109074537B CN 201780025654 A CN201780025654 A CN 201780025654A CN 109074537 B CN109074537 B CN 109074537B
Authority
CN
China
Prior art keywords
workflow
template
library
steps
templates
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.)
Active
Application number
CN201780025654.1A
Other languages
English (en)
Other versions
CN109074537A (zh
Inventor
P·K·什雷斯塔
K·R·波勒帕里
A·S·拉格胡纳坦
S·西西利亚诺
A·乔杜里
C·拉曼纳
M·V·哈德
S·韦什纳弗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN109074537A publication Critical patent/CN109074537A/zh
Application granted granted Critical
Publication of CN109074537B publication Critical patent/CN109074537B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/067Enterprise or organisation modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/123Storage facilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/186Templates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06316Sequencing of tasks or work
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0633Workflow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus

Abstract

本文中描述了生成并且辅助管理模板(预先生成的用户可定制的自动化工作流)的方法、系统、装置和计算机程序产品,这些模板可以用于在自动化工作流开发系统中容易且有效地开发自动化工作流。确定工作流步骤库中的多个工作流步骤。自动生成一个或多个工作流模板。每个自动生成的工作流模板包括库中的工作流步骤中的至少两个工作流步骤的组合。将一个或多个工作流模板存储在模板库中。此外,可以确定与工作流步骤兼容的一个或多个工作流步骤。可以与第一工作流步骤相关联地显示所确定的一个或多个工作流步骤以供选择。

Description

电子系统、计算设备和计算设备中的方法
背景技术
商业或企业应用是一种商业用户用来执行各种商业功能的计算机程序。当可用的现成软件没有完全解决期望功能时,经常开发商业应用。很多商业应用是交互式的,具有图形用户界面(GUI),用户可以经由该用户界面输入数据,提交数据查询,执行操作和查看结果。消费者应用不太注重商业,而是专注于消费者的需求。
由于应用复杂性和所需要的编程专业知识,商业和消费者用户倾向于依赖于信息技术(IT)人员来编码其应用。仅设计应用以从远程源(例如,云服务)拉取数据是困难的,通常需要有经验的软件开发者。
发明内容
提供本“发明内容”是为了以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”中进一步描述。本“发明内容”不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
本文中描述了生成并且辅助管理模板(预先生成的用户可定制的自动化工作流)的方法、系统、装置和计算机程序产品,这些模板可以用于在自动化工作流开发系统中容易且有效地开发自动化工作流。
具体地,本文中描述了用于自动生成模板(预先生成的用户可定制的自动化工作流)的方法、系统、装置和计算机程序产品,这些模板可以呈现给自动化工作流开发应用的用户并且因此可以用于轻松有效地开发自动化工作流。
本文中还描述了用于自动生成使用自动化工作流开发应用生成的自动化工作流(包括模板)的人类可读名称和描述的方法、系统、装置和计算机程序产品。
本文中进一步描述了使得能够基于所选择的工作流步骤自动建议兼容的工作流步骤的方法、系统、装置和计算机程序产品。可以组合所选择的工作流步骤以及一个或多个兼容的工作流步骤以形成工作流模板。
本文中进一步描述了自动匿名工作流模板中包括的至少一部分参数以生成匿名的自动化工作流模板的方法、系统、装置和计算机程序产品。然后可以发布匿名的自动化工作流模板。
下面参考附图详细描述本发明的其他特征和优点以及本发明的各种实施例的结构和操作。应当注意,本发明不限于本文中描述的具体实施例。这样的实施例仅出于说明性目的而在本文中呈现。基于本文中包含的教导,其他实施例对于(一个或多个)相关领域的技术人员将是很清楚的。
附图说明
并入本文中并且形成说明书的一部分的附图示出了本申请的实施例,并且与说明书一起进一步用于解释实施例的原理并且使得相关领域的技术人员能够制造和使用实施例的技术。
图1示出了根据一个示例实施例的工作流开发系统。
图2示出了根据一个示例实施例的提供用于开发工作流的过程的流程图。
图3示出了根据一个示例实施例的工作流设计器应用的框图。
图4示出了根据一个示例实施例的示出显示示例性工作流的浏览器窗口的显示屏的框图。
图5-8示出了根据一个示例实施例的使用开发GUI的各种开发阶段中的示例工作流的视图。
图9示出了根据一个示例实施例的用于操作工作流的系统的框图。
图10示出了根据一个示例实施例的提供用于执行包括一个或多个工作流的用户应用的过程的流程图。
图11描绘了根据一个实施例的可以经由其向用户呈现一个或多个手动生成的或自动生成的模板的自动化工作流开发系统的示例交互式显示屏。
图12示出了根据一个示例实施例的被配置为自动生成工作流模板的工作流设计器的框图。
图13示出了根据一个示例实施例的提供用于自动生成工作流模板的过程的流程图。
图14示出了根据一个示例实施例的提供用于将触发步骤与一个或多个动作步骤组合以生成工作流模板的过程的流程图。
图15示出了根据一个示例实施例的用于基于一组工作流步骤自动生成工作流模板的所有组合的过程。
图16示出了根据一个示例实施例的用于减少自动生成的工作流模板的数目的过程。
图17示出了根据一个示例实施例的提供用于基于使用统计数据自动生成工作流模板的过程的流程图。
图18示出了根据一个示例实施例的包含被配置为确定在工作流模板中使用的兼容工作流步骤的模板生成逻辑的工作流设计器的框图。
图19示出了根据一个示例实施例的提供用于自动确定在工作流模板中使用的兼容工作流步骤的过程的流程图。
图20示出了根据一个示例实施例的其中显示有与第一工作流步骤兼容的一组工作流步骤的用于开发工作流的图形用户界面的视图。
图21示出了根据一个示例实施例的提供用于选择确定彼此兼容的触发步骤和动作步骤的过程的流程图。
图22示出了根据一个示例实施例的提供用于选择包括在工作流模板中的兼容工作流步骤的过程的流程图。
图23描绘了根据一个示例实施例的使得用户能够将完成的工作流应用作为模板进行发布的自动化工作流开发应用的示例交互式显示屏。
图24是根据一个实施例的被配置为选择性地匿名用于公共和私人共享的模板的工作流设计器的框图。
图25示出了根据一个示例实施例的提供用于匿名工作流模板中的参数的过程的流程图。
图26示出了根据一个示例实施例的用于开发其中工作流步骤包括要匿名的参数的工作流的图形用户界面的视图。
图27是根据一个实施例的被配置为选择性地匿名工作流模板的选择性匿名器的框图。
图28示出了根据一个实施例的用于使得开发者能够选择用于匿名的参数的过程。
图29示出了根据一个实施例的用于部分地匿名参数的过程。
图30是可以用于实现各种实施例的示例移动设备的框图。
图31是可以用于实现各种实施例的示例性的基于处理器的计算机系统的框图。
通过下面结合附图给出的详细描述,本文中描述的实施例的特征和优点将变得更加明显,其中相同的附图标记始终表示相应的元件。在附图中,相同的附图标记通常表示相同的、功能上相似的和/或结构上相似的元件。元素首次出现的绘图由相应附图标记中最左边的数字表示。
具体实施方式
I.导言
以下详细描述公开了很多示例实施例。本专利申请的范围不限于所公开的实施例,而是还包括所公开的实施例的组合以及对所公开的实施例的修改。
说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例可以包括特定的特征、结构或特性,但是每个实施例可能不一定包括特定的特征、结构或特性。而且,这样的短语不一定指的是同一实施例。此外,当结合实施例描述特定的特征、结构或特性时,提出,与其他实施例(不管是否明确描述)相结合来实现这样的特征、结构或特性在相关领域的技术人员的知识范围内。
在讨论中,除非另有说明,否则诸如“基本上”和“约”等修饰本公开的实施例的特征的条件或关系特性的形容词被理解为表示条件或特性被定义为在预期应用的实施例的操作可接受的公差范围内。
如下描述了很多示例性实施例。应当注意,本文中提供的任何部分/子部分标题不旨在是限制性的。贯穿本文档描述了实施例,并且任何类型的实施例可以被包括在任何部分/子部分下面。此外,在任何部分/子部分中公开的实施例可以以任何方式与在相同部分/子部分和/或不同部分/子部分中描述的任何其他实施例组合。II.示例自动化工作流开发系统
当可用的现成软件不能完全解决期望功能时,通常会创建商业应用和消费者应用。很多商业和消费者应用是交互式的,具有图形用界面(GUI),用户可以向GUI中输入数据,使用GUI提交数据查询,使用GUI执行操作,和/或使用GUI查看结果。
由于应用复杂性和所需要的编程专业知识,用户倾向于依赖信息技术(IT)人员来编码其应用。例如,配置应用以从企业或消费者感兴趣的源(例如,从SQL(结构化查询语言)数据库拉取数据、从加利福尼亚州旧金山的Salesforce.com拉取客户关系信息、从由加利福尼亚州帕洛阿尔托的Facebook公司运营或由加利福尼亚州旧金山的Twitter公司运营的/>拉取社交网络信息)拉取数据是一个艰难的过程。
实施例使得能够更容易地开发用户应用,包括商业应用和消费者应用。使得开发者能够以工作流的形式开发用户应用,而不必是专家程序员。
在以下部分中描述了用于用户应用工作流的开发的示例实施例。在以下描述中,使用本文中描述的技术开发用户应用的人被称为“开发者”,以与在运行时使用用户应用的人(“用户”或
“最终用户”)区分开。然而,注意,本文中提到的“开发者”
不需要具有计算机编程方面的专业知识。本文中描述的实施例使得能够在没有特殊编程技术的情况下实现应用开发。
A.示例工作流开发实施例
在实施例中可以以各种方式实现工作流的开发。例如,图1示出了根据一个示例实施例的工作流开发系统100。如图1所示,系统100包括计算设备102、存储装置104、第一基于网络的应用124A、第二基于网络的应用124B和服务器134。服务器134包括工作流设计器106和工作流库118(例如,存储)。工作流设计器106包括UI生成器110和工作流逻辑生成器112。计算设备102包括显示屏108和浏览器136。存储装置104存储本地应用122。
系统100描述如下。
计算设备102可以是任何类型的固定或移动计算设备,包括移动计算机或移动计算设备(例如,设备、膝上型计算机、笔记本计算机、诸如AppleiPadTM等平板计算机、上网本等)、可穿戴计算设备(例如,头戴式设备,包括诸如/>
GlassTM等智能眼镜)或诸如台式计算机或PC(个人计算机)等固定计算设备。服务器134可以包括一个或多个服务器设备和/或其他计算设备。
存储装置104中的本地应用122是计算设备102在无需通过网络进行通信的可访问的应用的示例。本地应用122可以被配置为当由计算设备102的处理器执行时执行数据处理和/或数据托管操作,并且可以在这些工作流的运行时期间向由工作流设计器106创建的工作流提供数据132。本地应用122可以是任何类型的本地应用/服务,诸如数据库应用(例如, 电子表格)、消息传送应用(例如,)、生产力应用(例如,等)或其他类型的应用。虽然图1示出了单个本地应用,但是计算设备102处可以存在任何数目的本地应用,包括数十、数百或更大数字的数目。
第一基于网络的应用124A和第二基于网络的应用124B是基于网络的应用的示例,其被称为“云”应用或服务。基于网络的应用124A和124B由计算设备102在网络126上可访问,可以被配置为执行数据处理和/或数据托管操作,并且可以在这些工作流的运行时期间分别向由工作流设计器106创建的工作流提供数据130A和130B。基于网络的应用124A和124B每个可以是任何类型的网络可访问的应用/服务,诸如数据库应用、社交网络应用、消息应用、金融服务应用、新闻应用、搜索应用、网络可访问的生产力应用、云存储和/文件托管应用等。这样的应用的示例包括网络可访问的SQL(结构化查询语言)数据库、Salesforce.comTM
Finance、The New York(www.nytimes.com)、Google搜索、/>Bing、Google DocsTM、/>Office365、DropboxTM等。虽然图1示出了两个基于网络的应用,但是可以在网络126上访问任何数目的基于网络的应用,包括数十、数百、数千或更大数字的数目。
注意,数据128、数据130A、数据130B和数据132每个可以包括任何类型的数据,包括消息、通知、计算数据、检索数据、和/或通过工作流请求或可用的任何其他类型的信息。
计算设备102和服务器134每个可以包括使得能够在网络126上彼此通信以及与基于网络的应用124A和124B进行通信的至少一个网络接口。这样的网络接口(有线的或无线的)的示例包括IEEE 802.11无线LAN(WLAN)无线接口、全球微波接入互操作性(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、BluetoothTM接口、近场通信(NFC)接口等。本文中其他地方描述了网络接口的其他示例。网络126的示例包括局域网(LAN)、广域网(WAN)、个域网(PAN)和/或通信网络的组合,诸如因特网。
工作流设计器106(也称为自动化工作流开发系统)被配置为被操作/交互以创建工作流。例如,开发者可以通过与能够访问基于网络的应用(诸如浏览器136)的计算设备102处的应用交互来访问工作流设计器106。开发者可以使用浏览器136来遍历到工作流设计器106的网络地址(例如,统一资源定位器),工作流设计器106在浏览器窗口114中调用工作流设计器GUI 116(例如,网页)。开发者能够与工作流设计器GUI 116交互以开发工作流。
如图1所示,工作流设计器106包括UI生成器110和工作流逻辑生成器112。UI生成器110被配置为将工作流GUI信息140(例如,一个或多个网页、图像内容等)传输到浏览器136以在显示屏108中的浏览器窗口114内显示为工作流设计器GUI 116。工作流设计器GUI116可以由开发者交互以选择和配置工作流步骤到工作流中。例如,开发者可以在工作流设计器GUI 116中插入和排序多个工作流步骤,其中一个或多个步骤与本地或基于网络的应用相关联。浏览器136将所选择的工作流步骤、相应的配置信息和工作流步骤顺序信息存储为构造的工作流信息138。构造的工作流信息138被传输到服务器134处的工作流逻辑生成器112。工作流逻辑生成器112基于由构造的工作流信息138表示的组装的工作流生成工作流逻辑120。随后,由工作流逻辑120表示的工作流可以在运行时由最终用户调用。
在工作流的运行时期间,工作流逻辑120可以调用与工作流逻辑120的工作流步骤相关联的一个或多个本地或基于网络的应用的操作。每个工作流步骤可以从工作流设计器GUI 116接收输入数据128,从本地应用122接收数据132,从本地或基于网络的应用124A和124B中的一个或两者接收数据130A或数据130B,和/或从工作流逻辑120的另一工作流步骤接收数据。
工作流设计器106可以以各种方式操作以实现工作流的开发。例如,在实施例中,工作流设计器106可以根据图2进行操作。图2示出了根据一个示例实施例的提供用于开发工作流的过程的流程图200。流程图200描绘了根据示例实施例的用于开发工作流的过程。流程图200和工作流设计器106如下关于图3和4来描述。图3示出了根据示例实施例的工作流设计器106的框图。如图3所示,工作流设计器106包括UI生成器110和工作流逻辑生成器112。UI生成器110包括工作流步骤集(gallery)生成器302、模板集生成器304、保存工作流选择器306、步骤选择器308和步骤配置UI生成器310。工作流逻辑生成器112包括工作流定义生成器312和接口定义生成器314。图4示出了根据示例实施例的显示屏108的框图,其示出了显示在显示屏108上的浏览器窗口402中的工作流设计器GUI 116的示例。
图2的流程图200从步骤202开始。在步骤202中,发起工作流的开发。例如,在一个实施例中,工作流设计器106可以由与计算设备102处的浏览器136交互的开发者调用。开发者可以遍历指向服务器134处的工作流设计器106的链接或其他网络地址,以调用工作流设计器106,以引起工作流设计器106向浏览器136提供工作流GUI信息140(例如,一个或多个网页、图像内容等)以在浏览器窗口114中的显示屏108中显示为工作流设计器GUI116。一旦被调用,开发者可以打开现有工作流以进行进一步开发,或者可以开始新的工作流。
例如,工作流设计器GUI 116的显示页面可以显示由工作流步骤集生成器302生成的集或工作流步骤。工作流步骤集包括多个可选择的工作流步骤。工作流步骤可以存储在工作流库118中,并且由工作流设计器GUI 116访问用于显示。开发者可以选择工作流步骤之一以包括在其工作流中,并且可以继续配置工作流步骤的内容,和/或可以添加其他工作流步骤以继续生成其工作流。
例如,如图4所示,工作流步骤集生成器302可以使得能够选择步骤406A、406B和406C以插入正在工作流设计器GUI 116中组装的工作流404中。可以插入任何数目的工作流步骤。
在另一示例中,工作流设计器GUI 116的显示页面可以显示由模板集生成器304生成的模板集。模板集包括多个可选择的工作流模板,每个模板包括预先连接用于操作的一个或多个工作流步骤。工作流模板可以存储在工作流库118中,并且由工作流设计器GUI116访问用于显示。开发者可以选择工作流模板之一以包括在其工作流中,并且可以继续配置工作流模板的内容,和/或可以向工作流模板的工作流步骤添加附加工作流步骤以生成更复杂的工作流。
例如,在图4的示例中,步骤406A和406B可以已经被包括在放置在工作流404中的工作流模板中,随后,步骤406C可以被添加(例如,从工作流步骤集)。
在另一示例中,保存工作流选择器306可以使得开发者能够选择要打开的现有的保存的工作流以在工作流设计器GUI 116的显示页面中进一步编辑。保存的工作流可以存储在工作流库118中或其他地方。例如,保存工作流选择器306可以显示保存工作流的列表,可以实现到保存的工作流的导航,和/或可以提供用于选择保存的工作流以进行编辑的另一机制。然后,开发者可以继续进一步配置工作流的内容,和/或可以向工作流的工作流步骤添加其他工作流步骤以生成更复杂的工作流。
在步骤204中,启用对用于包括在工作流中的一个或多个步骤的选择。当开发者正在编辑工作流时,步骤选择器308可以使得开发者能够选择用于包括在工作流中的另外的工作流步骤以及对步骤进行排序。工作流步骤可以由工作流库118中的步骤选择器308访问。例如,步骤选择器308可以显示工作流步骤的下拉菜单、可用工作流步骤的可滚动和/或可搜索的列表,或者可以以另一种方式提供工作流步骤,并且可以使得开发者能够从列表中选择任何数目的工作流步骤以包括在工作流中。
在一个示例中,步骤选择器308可以使得开发者能够选择与本地应用(诸如)或基于网络的应用(诸如/>)相关联的步骤。步骤选择器308使得步骤能够按顺序链接在一起,可选地与条件步骤链接在一起,以包括在工作流逻辑120中。
在步骤206中,使得能够配置工作流中的每个所选择的步骤。在一个实施例中,步骤配置UI生成器310使得能够配置工作流中的每个工作流步骤。步骤配置UI生成器310访问工作流库118中的每个所选择的工作流步骤以确定工作流步骤的配置,包括其所有输入参数以及用户或开发者需要提供给工作流步骤以配置它的任何其他选择或信息。例如,步骤配置UI生成器310可以生成UI,该UI使得开发者能够键入、导航到、使用下拉菜单或者以其他方式将输入数据输入到工作流步骤的文本输入框或其他数据输入元素中(例如,输入参数)。开发者可以将先前步骤的输出配置为工作流步骤的输入数据。步骤配置UI生成器310可以使得数据或其他对象能够被复制和粘贴、拖放或以其他方式从其他地方复制输入到工作流步骤的数据输入框中。
在步骤208中,生成用于实现工作流的工作流逻辑。在一个实施例中,工作流逻辑生成器112被配置为当开发者指示工作流完成时(诸如当开发者与工作流设计器GUI 116交互以保存工作流时)基于构造的工作流信息138打包和生成工作流逻辑120。如图3所示,工作流逻辑生成器112接收构造的工作流信息138。构造的工作流信息138指示哪些工作流步骤已经被插入工作流中、它们的输入参数值及其排序。工作流逻辑生成器112还接收所选择的工作流逻辑320,其是在构造的工作流信息138中指示的工作流的每个工作流步骤的工作流逻辑。在一个示例中,工作流逻辑生成器112针对在构造的工作流信息138中指示的每个工作流步骤从工作流库118中检索工作流逻辑,以接收所选择的工作流逻辑320。工作流逻辑生成器112基于构造的工作流信息138和所选择的工作流逻辑320为工作流生成工作流逻辑120。例如,工作流逻辑生成器112可以以可以以独立方式执行、可以在浏览器中执行、或者可以以另一种方式执行的可执行文件、zip文件或其他形式生成工作流逻辑120,这取决于正在生成的工作流的特定类型。
参考图3,工作流逻辑生成器112可以生成工作流逻辑120以包括至少两个分量(例如,文件):工作流定义信息316和界面定义信息318。工作流定义信息316包括限定工作流逻辑的工作流的序列和操作的信息(例如,列出工作流步骤操作及其排序/序列)并且包括工作流的参数值。例如,可以生成工作流定义信息316以包含JSON(JavaScript对象表示法)文件格式或另一种形式的信息。界面定义信息318包括限定工作流的工作流步骤的界面/参数(例如,输入和输出)的信息。例如,可以生成接口定义信息318以包含Swagger(REST(代表性状态转移)网络服务的规范)文件格式或另一种形式的信息。例如,每个工作流步骤可以在工作流库118中表示为Swagger格式的API(应用编程接口)元数据,以限定工作流步骤的必要的输入和输出(参数)是什么,使得可以根据API定义来访问服务。在这样的实现中,工作流定义信息316中的操作参考接口定义信息318中的相应API元数据以提供所生成的工作流的完整结构(例如,用工作流定义信息316中的参数值定义的每个有序工作流步骤/操作具有在接口定义信息318中限定的相应API)。
因此,流程图200和工作流设计器106使得开发者能够创建工作流。图5-8示出了根据示例实施例的使用开发GUI的各种开发阶段中的示例性工作流的视图。例如,图5-8中的每个示出了显示用于开发工作流的工作流设计器GUI 116的相应视图的浏览器窗口402。
例如,图5示出了包括工作流步骤502和添加界面504的浏览器窗口402。工作流步骤502由开发者选择作为工作流中的第一步骤。可以由开发者与添加界面504(例如,按钮或其他GUI控件)交互以向工作流添加另外的工作流步骤。
如上所述,开发者能够从步骤的列表或库、工作流步骤的集、模板集或其他地方选择工作流步骤502。列表、库(library)或集(gallery)可以包括任何数目的工作流步骤。工作流步骤可以与本文中其他地方提到的或以其他方式已知的基于网络的应用(例如,DropboxTM)和/或本文中其他地方提到的或以其他方式已知的本地应用(例如,)相关联。每个工作流步骤被配置为插放到工作流中。每个工作流步骤配置有用于执行其(一个或多个)相应功能的适当的逻辑和/或(一个或多个)接口,这些功能可以包括与本地或远程应用通信。例如,工作流步骤可以被配置为将查询传输到应用(例如,对搜索引擎的搜索查询、对数据库的数据库查询、来自社交网络应用的数据请求等),工作流步骤被预先配置为如何向应用正确传输和格式化这样的请求。工作流步骤可以被配置为接收对请求的响应,工作流步骤被预先配置为如何解析对期望响应数据的响应。因此,工作流的开发者不需要知道如何以编程语言编写程序代码,如何与复杂的应用接口(例如,应用编程接口(API))接口,或者如何理解网络通信协议,因为工作流步骤已经设置。当工作流步骤由开发者插入工作流逻辑时,开发者配置工作流步骤的输入(如下所述),并且以其他方式预先配置的工作流步骤处理与其他应用的任何通信。
在图6中,开发者已经与步骤502交互(例如,通过鼠标点击等)以引起步骤配置UI生成器310生成用于步骤502的配置的UI。例如,在图6的示例中,工作流步骤502被配置为监测是否要在由开发者在文本输入框中识别的特定文件夹中创建文件(例如,通过键入、点击由“...”指示的导航器等)。当工作流步骤502确定文件被添加到指示的文件夹时,触发工作流步骤502之后的工作流步骤。因此,在这个示例中,工作流步骤502可以被认为是触发步骤。
例如,在图7中,开发者与添加界面504交互以选择下一工作流步骤702。在一个实施例中,与添加界面504的交互调用图3中的步骤选择器308,其使得开发者能够选择工作流步骤。在图7的示例中,工作流步骤702是条件步骤。在实施例中,可以选择逻辑元素以包括在工作流中,包括算术逻辑(例如,加法器、乘法器等)、条件逻辑等,这些逻辑元素基于在先前工作流步骤中确定的变量值进行操作。工作流步骤702的条件使得工作流能够基于条件的确定(例如,变量值)来分叉。条件可以包括对象名称、关系(例如,逻辑关系,诸如等于、包括、不等于、小于、大于等)和值,它们都由开发者与工作流步骤702交互来定义。相应的动作步骤可以取决于工作流基于条件进行分叉的方式来执行。
例如,在图7的一个说明性示例中,可以选择对象名称(例如,从可能性列表中)作为工作流步骤502的创建文件的名称,关系可以是“包含”(例如,通过下拉菜单选择的)并且值可以是“dummyfile”(例如,由开发者键入的)。如果文件名包含调用第一动作工作流步骤704的“dummyfile”,则条件评估为“是”条件,而如果文件名不包含调用第二动作工作流步骤的“dummyfile”,则条件评估为“否”条件。如果需要,可以由开发者为“是”和“否”动作工作流步骤704和706中的一个或两个定义动作。
例如,在图8中,开发者与动作工作流步骤704交互以限定动作。在这个示例中,开发者通过经由步骤选择器308选择工作流步骤来限定动作工作流步骤704。如图8所示,显示工作流步骤802A、802B、802C的列表,开发者可以从中选择要针对动作工作流步骤704执行的工作流步骤(例如,通过鼠标点击等)。工作流步骤可以是触发步骤、动作步骤或条件步骤。在选择工作流步骤之后,开发者可以如上所述配置工作流步骤。此外,开发者可以配置工作流步骤706的动作,可以添加另外的工作流步骤,等等,以便最终能够保存工作流。
应当注意,在一些实施例中,诸如第一工作流步骤502等工作流步骤可能需要凭证(例如,登录和密码)来访问所指示的数据(例如,访问在图6中的文本输入框中指示的位置处的文件)。
这样,可以请求开发者与第一工作流步骤502相关联地提供凭证信息,使得当在运行时期间第一工作流步骤502被执行时,可以访问数据。或者,可以在运行时期间向用户请求凭证。
B.示例运行时实施例
根据实施例,最终用户可以执行如本文所述开发的工作流。在操作期间,最终用户可以与工作流的GUI交互,这可以导致工作流逻辑被执行。工作流逻辑可以在本地(例如,在浏览器中)和/
或在远程服务处(在“云”中)执行。工作流逻辑可以访问由开发者配置的一个或多个本地或网络可访问应用的数据。因此,工作流执行其预期功能。
图9示出了根据一个示例实施例的用于操作包括一个或多个工作流步骤的工作流的系统900的框图。如图9所示,系统900包括计算设备902、第一基于网络的应用124A、第二基于网络的应用124B和服务器134。计算设备902包括工作流应用904。服务器134包括工作流执行引擎906。系统100描述如下。
第一基于网络的应用124A和第二基于网络的应用124B每个可选地存在,这取决于工作流逻辑120的配置。另外的基于网络的应用可以存在,这取决于工作流逻辑120的配置。
计算设备902可以是本文中描述的或以其他方式已知的任何类型的固定或移动计算设备。计算设备902被配置为在网络126上与第一基于网络的应用124A和第二基于网络的应用124B以及服务器134通信。
在一个实施例中,工作流由工作流执行引擎906在服务器134处执行,并且工作流应用904是使得计算设备902处的用户能够与正在执行的工作流交互的UI应用,诸如通过选择和调用工作流,从正在执行的工作流接收通信(例如,消息、警报、输出数据等),向正在执行的工作流提供所请求的输入数据,等等。在这样的实施例中,工作流应用904可以是与工作流执行引擎906(例如,工作流应用904可以是工作流执行引擎906的扩展)相关联的工作流UI应用,工作流执行引擎906可以与计算设备902处的浏览器分开操作或在该浏览器内操作,或者可以以另一种方式配置。如图9所示,工作流执行引擎906可以加载所选择的工作流的工作流逻辑102(例如,由用户从工作流库中选择的),并且可以执行工作流逻辑102以执行工作流。
在另一实施例中,工作流应用902可以被配置为在计算设备902处执行工作流。例如,计算设备902的最终用户可以与工作流应用902的用户界面交互以选择和调用特定工作流(例如,从工作流库中选择的)。在这样的实施例中,工作流逻辑120可以与计算设备902处的浏览器分开操作或在该浏览器中操作,或者可以以另一种方式配置。如图9所示,工作流应用904可以加载所选择的工作流的工作流逻辑120(例如,由用户从工作流库中选择的),并且可以执行工作流逻辑120以执行工作流。
在另一实施例中,工作流逻辑120的第一部分可以在计算设备902处的工作流应用904中操作,并且工作流逻辑120的第二部分可以在服务器134处的工作流执行引擎906中和/或其他地方操作。
图10示出了根据一个示例实施例的提供用于执行工作流的工作流逻辑120的过程的流程图1000。流程图1000如下关于图9的系统900来描述用于说明目的。
流程图1000从步骤1002开始。在步骤1002中,执行工作流。在一个实施例中,计算设备902处的最终用户可以引起工作流逻辑120被执行,诸如通过命令行,通过点击/敲击或以其他方式与表示应用的图标交互,通过在浏览器中进行选择,或者以另一种方式。如上所述,工作流逻辑120可以在计算设备902处的工作流应用904中和/或在服务器134处的工作流执行引擎906中执行。
当被执行时,工作流逻辑120的工作流步骤以配置的顺序执行。
因此,一个或多个工作流步骤可以调用相应的应用/服务来执行它们的功能,诸如本地应用122(以返回数据132)、基于网络的应用124A(以返回数据130A)、基于网络的应用。124B(以返回数据130B)和/或其他本地或基于网络的应用。
在步骤1004中,显示工作流GUI。步骤1004是可选的,如在一些实施例中,不为工作流显示GUI。在一个实施例中,GUI可以由计算设备902处的工作流应用904显示。当被显示时,用户可以通过查看显示的数据(例如,从文件、数据库记录、电子表格或由工作流读取的其他数据结构)、通过向GUI中输入数据(例如,通过键入,通过语音,等等)和/或通过与由GUI显示的一个或多个控件交互来与GUI交互。
在步骤1006中,基于与工作流的交互来触发工作流逻辑。在工作流的一个或多个工作流步骤需要来自用户的输入的情况下,步骤1006是可选的。在这种情况下,用户与与工作流逻辑120的工作流步骤相关联的工作流应用904的GUI中的控件交互以提供触发工作流步骤的逻辑进行操作的信息。
以这种方式,工作流逻辑120执行其功能,诸如处理订单、跟踪信息、生成消息、处理文档以生成任务或信息、收集反馈和/或任何其他功能。
III.自动化工作流开发系统中的模板的自动生成
如上面参考图3所述,模板集生成器304可以实现模板集的显示,该模板集包括多个可选择的工作流模板,每个工作流模板包括预先连接用于操作的一个或多个工作流步骤。工作流模板可以存储在工作流库118(图1)中,并且由工作流设计器GUI 116访问用于显示。开发者可以选择工作流模板之一以包括在其工作流中,并且可以继续配置工作流模板的内容,和/或可以将其他工作流步骤添加到工作流模板的工作流步骤以生成更复杂的工作流。
图11描绘了根据实施例的可以经由其向用户呈现一个或多个手动生成的或自动生成的模板的工作流设计器GUI 116的示例交互式显示屏1102。如图11所示,示出了多个工作流模板指示,包括工作流模板指示1104A-1104C。每个工作流模板指示由矩形图标和工作流模板的功能的文本描述表示。因此,例如,在图11中呈现给用户的模板可以包括“当你在Office 365中保存文件时,上传到SharePoint”(工作流模板1104A)、“将你的Instagram发布到Twitter”(工作流模板1104C)、“使用工作要素简化你的工作流”(工作流模板1104B)、“设置项目要点”以及“开始处理接受的估算”。
每个工作流模板被限定为步骤的组合。例如,模板(例如,工作流模板1104A)可以被限定为触发器(“当你在Office 365中保存文件”时)和在触发器被激活时执行的动作(“上传到SharePoint”)的组合。模板中包括的每个步骤可以包括与使用合适的应用程序编程接口(API)访问的特定连接器或服务的交互。也就是说,每个连接器(例如,DropBox、Outlook、Bing搜索、SharePoint等)可以使得能够针对该连接器执行一个或多个操作。
当用户选择在屏幕上指示的特定模板时(例如,通过在触摸屏上触摸它,通过用鼠标指向它并且点击,等等),用户被带到工作流设计器屏幕(例如,图7的浏览器窗口402),该工作流设计器屏幕提供模板的每个步骤的图形表示并且提供用户可以定制由每个步骤引用的各种参数的手段以及用户可以添加、修改或删除步骤,测试自动化工作流,以及保存自动化工作流的手段。
在一个实施例中,经由图11所示的交互式显示屏1102呈现给用户的每个模板可以表示由人手动开发、存储并且然后被发布以供他人使用的自动化工作流。然而,在存在大量连接器(每个连接器可能具有大量操作)的实施例中,可以通过组合不同连接器操作而生成的可能模板的数目可能非常大并且可能根本不能手动生成(并且可选地定制)每个可能的模板。
为了解决该问题,工作流设计器106的模板生成逻辑可以被配置为通过自动组合不同的连接器操作来自动生成可以呈现给用户的新模板。每个新组合可以经由诸如图11所示的交互式显示屏呈现为新模板。因此,例如,模板生成逻辑可以自动组合保存文件的Office 365操作与上传文件的SharePoint操作,以便自动创建当在Office 365中保存文件时将文件上传到SharePoint的模板。
在一个实施例中,模板生成逻辑还被配置为自动生成描述由新生成的模板执行的操作的文本。因此,进一步根据前述示例,模板生成逻辑可以自动生成文本“当你在Office365中保存文件时,上传到SharePoint”。
在另一实施例中,可以收集关于用户使用哪些手动生成的和自动生成的模板的遥测/使用统计数据。基于这样的使用信息,可以确定哪些模板受用户欢迎。该信息又可以用于确定应当在交互式显示屏上为用户突出显示哪些模板,将来应当自动生成哪种类型的模板,和/或将来应当手动生成和/或定制哪种类型的模板。
因此,在实施例中,工作流设计器可以被配置为生成工作流模板。例如,图12示出了根据一个示例实施例的被配置为自动生成工作流模板的工作流设计器106的框图。如图12所示,工作流设计器106包括模板生成逻辑1202。模板生成逻辑1202被配置为自动生成模板(预先生成的用户可定制的自动化工作流),这些模板可以呈现给用户并且可以由此用于容易且有效地开发自动化工作流。如图12所示,模板生成逻辑1202包括工作流步骤组合器1206、描述生成器1208和使用分析器1210。工作流步骤组合器1206被配置为组合工作流步骤以生成工作流模板。描述生成器1208被配置为为所生成的工作流模板生成标签。使用分析器1210可选地存在。当存在时,使用分析器1210被配置为监测工作流步骤的使用以及用户从工作流步骤对工作流的创建,并且基于其的使用统计数据可以用于确定用于形成模板的工作流步骤的期望组合。
模板生成逻辑1202在下面参考图13进一步详细描述。图13示出了根据一个示例实施例的提供用于自动生成工作流模板的过程的流程图1300。在一个实施例中,模板生成逻辑1202可以根据流程图1300进行操作。注意,并非需要在所有实施例中执行流程图1300的所有步骤。模板生成逻辑1202和流程图1300描述如下。
流程图1300以步骤1302开始。在步骤1302中,确定工作流步骤库中的多个工作流步骤。在一个实施例中,图12的工作流步骤组合器1206被配置为访问工作流库118(和/或包含工作流步骤的其他库)以确定包含在其中的多个工作流步骤。工作流步骤组合器1206可以确定库中的所有工作流步骤,或者可以基于由开发者/管理员配置的过滤器标准来确定其一部分(例如,过滤掉特定类型的工作流步骤,诸如消息传送步骤、文件监测步骤、提醒步骤等)。可以确定任何数目和组合的类型的工作流步骤,包括一个或多个触发步骤和/或动作步骤。通常,工作流的触发步骤监测条件,并且当条件满足时,触发步骤触发(激活或启用)一个或多个后续工作流步骤。动作步骤当在工作流中到达时执行动作,诸如在另一动作步骤之后,或者在被触发步骤触发时。根据特定的条件步骤和情况,条件步骤可以被认为是触发步骤或动作步骤。
在步骤1304中,自动生成一个或多个工作流模板,每个自动生成的工作流模板包括库中的工作流步骤中的至少两个工作流步骤的组合。在一个实施例中,工作流步骤组合器1206从工作流库118接收工作流步骤1214。工作流步骤1214包括在步骤1302中确定的工作流步骤。工作流步骤组合器1206被配置为通过组合在工作流步骤1214中接收的工作流步骤来自动生成一个或多个工作流模板1216。以与如上面参考图1-8进一步描述的组合工作流步骤以生成工作流类似的方式,工作流步骤组合器1206可以以任何方式组合工作流步骤以生成任何数目的工作流模板1216。
图14示出了根据一个示例实施例的提供用于将触发步骤与一个或多个动作步骤组合以生成工作流模板的过程的流程图1400。在一个实施例中,工作流步骤组合器1206可以根据流程图1400进行操作。流程图1400描述如下。
在步骤1402中,选择工作流步骤库中的工作流步骤的触发步骤。在一个实施例中,工作流步骤组合器1206可以选择工作流步骤1214的触发步骤。可以以任何方式选择特定触发步骤,包括通过作为以特定顺序、随机地、根据选择算法或以任何其他方式的下一触发步骤(例如,按照指派给工作流步骤的步骤标识符排序)。在一个示例中,所选择的触发步骤可以是监测何时向表格添加一行的表监测工作流步骤。例如,触发步骤可以在GoogleSheetsTM中实现。
在步骤1404中,选择工作流步骤库中的工作流步骤的至少一个动作步骤。在一个实施例中,工作流步骤组合器1206可以选择工作流步骤1214的一个或多个动作步骤。可以以任何方式选择特定动作步骤,包括作为以特定顺序、随机地、根据选择算法或以任何其他方式的下一动作步骤(例如,按照指派给工作流步骤的步骤标识符排序)。继续该示例,所选择的动作步骤可以是传输消息的消息传送工作流步骤。例如,动作步骤可以在文本消息传送应用中实现。
在步骤1406中,自动组合所选择的触发步骤和所选择的至少一个动作步骤以生成工作流模板。在一个实施例中,工作流步骤组合器1206可以自动地(例如,无需人为干预)将所选择的触发步骤与所选择的一个或多个动作步骤组合成互连的工作流。触发步骤可以由工作流步骤组合器1206配置为启动步骤,具有流入一个或多个动作步骤的一个或多个输出(例如,触发信号等),在触发步骤被触发时将一个或多个动作步骤触发为动作。当存在多个动作步骤时,动作步骤可以被配置为串行、并行或以其组合进行操作。继续上述示例,工作流步骤组合器1206可以将所选择的表监测工作流步骤与所选择的消息传送工作流步骤组合,在该特定示例中,将Google SheetsTM应用工作流步骤与文本消息传送应用工作流步骤组合。工作流步骤组合器1206可以将Google SheetsTM工作流步骤配置为触发文本消息传送工作流步骤,使得在向Google SheetsTM中的表格添加新的一行时,文本消息传送工作流步骤被触发以发送文本消息以向接收者通知正在添加一行。
注意,当生成工作流模板1216时,工作流步骤组合器1206可以或可以不以通用或匿名方式生成工作流模板1216。例如,当匿名时,工作流步骤组合器1206可以生成工作流模板1216以不包括至少一些参数的参数值(或通用参数值)。在以上示例中,工作流步骤组合器1206可以擦除或以其他方式对由Google SheetsTM工作流步骤监测的行和/或由文本消息传送工作流步骤传输的文本消息的(一个或多个)接收者的参数值进行通用化。当用户选择(例如,复制)工作流模板1216以转换成实际工作流时,这样的参数值可以稍后由这样的用户填充(如上面进一步所述)。关于匿名工作流模板的进一步描述在下面的子部分中进一步描述。
在一个实施例中,工作流步骤组合器1206可以访问工作流逻辑生成器112(图1)或与工作流逻辑生成器112(图1)类似地被配置为以工作流逻辑120的形式生成工作流模板1216(而没有至少一些参数值,如上所述)。例如,工作流步骤组合器1206可以以各种形式生成工作流模板1216,诸如以包括至少两个分量(例如,文件)的包的形式:工作流定义信息316和接口定义信息318(图3)。如上所述,工作流定义信息316包括定义工作流逻辑的工作流的序列和操作的信息(例如,列出工作流步骤操作及其排序/定序)并且包括工作流的参数值。此外,如上所述,界面定义信息318包括定义工作流的工作流步骤的界面/参数(例如,输入和输出)的信息。当生成工作流1216时,工作流步骤组合器1206生成工作流定义信息316以包括定义工作流模板的序列和操作的信息,并且生成接口定义信息318以包括定义工作流模板的工作流步骤的接口/参数(例如,输入和输出)的信息,同时省略或替换任何匿名参数的参数值,如上所述。
再次参考图14,在步骤1408中,自动生成描述由所生成的工作流模板执行的操作的文本。在一个实施例中,存在描述生成器1208,并且描述生成器1208接收工作流模板1216。描述生成器1208被配置为自动生成描述由工作流模板1216执行的操作的文本,并且包括所生成的文本(例如,作为工作流模板“标题”或“名称”参数的参数值)以及工作流模板1216,从而生成标记的工作流模板1218。生成的文本可以以各种方式使用,例如,包括显示在表示工作流模板的图标上,诸如图11所示。
例如,描述生成器1208可以为当在Office 365中保存文件时触发将文件上传到SharePoint的工作流模板自动生成文本“当你在Office 365中保存文件时,上传到SharePoint”。描述生成器1208可以以任何方式生成文本,包括通过确定被组合成工作流模板的工作流步骤的名称或标签(例如,从工作流步骤的“标题”或“名称”参数),以及将所确定的工作流步骤的名称或标组合成文本。继续上面的示例,描述生成器1208可以自动生成文本“当在Google Sheets中添加新的一行时发送文本”,并且将所生成的文本保存为工作流模板的名称或标签。
注意,模板生成逻辑1202可以根据图12或以其他方式生成工作流模板。此外,模板生成逻辑1202可以以各种方式基于可用的工作流步骤生成多个工作流模板。图15-17示出了用于生成工作流模板的各种技术,并且描述如下。
例如,图15示出了根据一个示例实施例的用于基于一组工作流步骤自动生成工作流模板的所有组合的步骤1502。在步骤1502中,迭代触发步骤与工作流步骤库中的动作步骤的所有组合以生成多个工作流模板。在一个实施例中,工作流步骤组合器1206可以被配置为迭代通过触发步骤与动作步骤的所有组合来生成多个工作流模板。例如,如果工作流库118中有十种不同类型的触发步骤,并且工作流库118中有十二种不同类型的动作步骤,则工作流步骤组合器1206可以生成一百二十(120)个工作流模板,其包括触发步骤和动作步骤的所有组合。在另一实施例中,工作流步骤组合器1206可以被配置为通过迭代通过如下来生成多个工作流模板:触发步骤与动作步骤对的所有组合或触发步骤与大数目的动作步骤的所有组合。因此,根据步骤1502,可以生成大数目的工作流模板,其中一些工作流模板可以包含工作流步骤的有用组合,而其他工作流模板可以不包含工作流步骤的有用组合。以这种方式,可以生成大量工作流模板,尽管工作流模板集可能会混杂有大量无用的工作流模板,这对于访问该集的开发者来说可能是不合需要的。
图16示出了根据示例实施例的用于减少自动生成的工作流模板的数目的步骤1602。步骤1602可以用于减少在图15的步骤1502中生成的工作流模板的数目。在步骤1602中,管理员能够策划模板库以从模板库中消除一个或多个工作流模板。在一个实施例中,管理员可以访问模板库1212以查看和删除管理员认为无用的工作流模板。例如,可以向管理员显示由工作流设计器GUI 116提供的交互式显示屏1102(图11)以示出模板库1212中的工作流模板。管理员可以具有关于模板库1212的管理员权限,以使得管理员能够选择和删除工作流模板。例如,管理员可以读取工作流模板的标签以向管理员通知其内容,并且可以使用该信息来删除管理员认为缺乏有用性的工作流模板。以这种方式,显示的工作流模板集不会被用户不太可能需要的工作流模板所混乱。
在其他实施例中,可以以更智能的方式自动生成工作流模板。例如,图17示出了根据示例实施例的提供用于基于使用统计数据自动生成工作流模板的过程的流程图1700。流程图1700以步骤1702开始。在步骤1702中,分析关于由开发者创建的工作流的统计数据,以确定由开发者大量地或以大于预定阈值的频率创建的工作流。在一个实施例中,工作流库118中的工作流步骤可以可用于很多开发者以包括在工作流中。使用分析器1210被配置为接收与工作流库118相关联的使用统计数据1220。使用统计数据1220可以包括关于工作流库118中的工作流步骤的访问的信息,包括开发者将每个工作流步骤合并到工作流中的次数、用户将工作流中的特定工作流步骤组合在一起的次数、和/或关于工作流库118中的工作流步骤的访问的进一步信息。使用分析器1210分析使用统计数据1220以确定工作流中的工作流步骤的相对流行的组合,其可以有利地被形成为工作流模板。结果,使得用户可以从模板库1212中选择包含相对流行的工作流步骤组合的工作流模板,而不是用户必须自己组装这些工作流步骤组合。
例如,使用分析器1210可以将每个特定工作流步骤组合(例如,与一个或多个特定动作步骤互连的特定触发步骤)被形成工作流的次数与预定阈值进行比较。预定阈值可以是特定工作流步骤组合必须发生以被认为是流行的最小次数。使用分析器1210可以生成流行工作流指示1222以指示包含发生次数大于预定阈值的工作流步骤组合的一个或多个工作流。
在步骤1704中,生成与所确定的工作流相对应的工作流模板。如图12所示,工作流步骤组合器1206接收流行工作流指示1222(当存在使用分析器1210时)。工作流步骤组合器1206被配置为生成包括在流行工作流指示1222中指示的工作流步骤组合的工作流模板1216。工作流步骤组合器1206可以如本文所述生成工作流模板。
在步骤1706中,将与所确定的工作流相对应的工作流模板存储在模板库中。如图12所示,描述生成器1208可以为工作流模板1216生成标签,并且将标记的工作流模板1218存储在模板库1212中,或者工作流步骤组合器1206可以将工作流模板1216直接存储在模板库1212中。
基于本文中的教导,用于确定要生成和在模板库1212中存储哪些工作流模板的其他方式对于相关领域的技术人员将是很清楚的。
再次参考图13,在步骤1306中,将一个或多个工作流模板存储在模板库中。如图12所示,描述生成器1208可以将标记的工作流模板1218存储在模板库1212中。或者,在不存在描述生成器1208的实施例中,工作流步骤组合器1206可以将工作流模板1216直接存储在模板库1212中。模板库1212是工作流模板库,包含任何数目的工作流模板。
在步骤1308中,在图形用户界面中显示模板集,模板库包括模板库中的一个或多个工作流模板的指示。在一个实施例中,模板集生成器304(图3)可以访问工作流模板的模板库1212以显示在工作流设计器GUI 116中。如上所述,图11描绘了可以经由其呈现一个或多个手动生成的或自动生成的模板的工作流设计器GUI 116的示例交互式显示屏1102。如图11所示,示出了多个工作流模板指示,包括工作流模板指示1104A-1104C。每个工作流模板指示由图标和相应工作流模板的功能的文本描述表示。
在步骤1310中,使得开发者能够与图形用户界面交互以从模板库中选择工作流模板以包括在工作流中。在一个实施例中,开发者可以选择图11的工作流模板(表示为工作流模板1104A-1104C等)之一以包括在其工作流中,并且可以继续配置工作流模板的内容,和/或可以向工作流模板的工作流步骤添加其他工作流步骤以生成更复杂的工作流。
IV.基于所选择的预先生成的触发步骤来生成模板
如在先前部分中所描述的,可以以各种方式生成工作流模板,包括通过迭代通过可用工作流步骤(例如,触发步骤和动作步骤)的所有组合,使得管理员能够策划一组生成的工作流模板,基于使用统计数据生成工作流模板,等等。在另一实施例中,当开发者(或管理员)选择工作流步骤时,可以自动确定和显示与工作流步骤兼容的工作流步骤的选择。管理员可以选择一个或多个自动显示的工作流步骤以与初始选择的工作流步骤组合以创建工作流模板。兼容工作流步骤的自动显示有助于开发者避免在选择兼容的工作流步骤之前滞后和错误地选择不兼容的工作流步骤,确保了仅向开发者显示兼容的工作流步骤以供选择。所得到的工作流模板可以存储在工作流库118(图1)或其他地方以使开发者可以包括在其工作流中。
例如,图18示出了根据实施例的包含被配置为确定兼容的工作流步骤的模板生成逻辑的工作流设计器106的框图。如图18所示,工作流设计器106包括模板生成逻辑1802。模板生成逻辑1802被配置为基于兼容的工作流步骤生成工作流模板。如图18所示,模板生成逻辑1802包括兼容工作流步骤确定器1804。兼容工作流步骤确定器1804被配置为通过自动确定与所选择的工作流步骤兼容的工作流步骤来帮助生成工作流模板。
下面参考图19更详细地描述模板生成逻辑1802。图19示出了根据一个示例实施例的提供用于自动确定兼容的工作流步骤的过程的流程图1900。在一个实施例中,模板生成逻辑1802可以根据流程图1900进行操作。注意,并非在所有实施例中都需要执行流程图1900的所有步骤。模板生成逻辑1802和流程图1900描述如下。
流程图1900以步骤1902开始。在步骤1902中,使得开发者(或管理员)能够选择第一工作流步骤。如上面关于流程图200(图2)的步骤204和UI生成器110(例如,图3的步骤选择器308)进一步描述的,开发者可以与用户界面交互以选择用于包括在工作流中的工作流步骤。例如,图20示出了浏览器窗口402的视图,如上所述,浏览器窗口402是用于开发工作流的示例GUI。在图20中,开发者可能已经选择工作流步骤502作为正在开发的工作流中的步骤。
在步骤1904中,自动确定与第一工作流步骤兼容的一个或多个工作流步骤。如图18所示,兼容工作流步骤确定器1804接收指示在步骤1902中选择的工作流步骤的选择步骤指示1806。在一个实施例中,兼容工作流步骤确定器1804被配置为自动确定与由选择步骤指示1806指示的工作流步骤兼容的一个或多个工作流步骤。兼容工作流步骤确定器1804可以以各种方式确定与用户选择的所指示的工作流步骤兼容的一个或多个工作流步骤。
例如,在一个实施例中,兼容工作流步骤确定器1804可以根据流程图2100进行操作。图21示出了根据示例实施例的提供用于确定彼此兼容的触发步骤和动作步骤的过程的流程图2100。流程图2100描述如下。
在步骤2102中,响应于第一工作流步骤是动作步骤而自动确定与第一工作流步骤兼容的一个或多个触发步骤。在一个实施例中,兼容工作流步骤确定器1804确定哪种类型的工作流步骤被指示为被选择(例如,基于所选择的工作流步骤的参数,基于工作流步骤的类型列表,等等)。当确定所选择的工作流步骤是动作步骤时,兼容工作流步骤确定器1804可以被配置为自动确定与动作步骤兼容的一个或多个触发步骤。或者,兼容工作流步骤确定器1804可以自动确定与动作步骤兼容的一个或多个动作步骤、或者与动作步骤兼容的触发步骤和动作步骤的组合。
在步骤2104中,响应于第一工作流步骤是触发步骤而自动确定与第一工作流步骤兼容的一个或多个动作步骤。当确定所选择的工作流步骤是触发步骤时,兼容工作流步骤确定器1804可以被配置为自动确定与触发步骤兼容的一个或多个动作步骤。或者,兼容工作流步骤确定器1804可以自动确定与触发步骤兼容的一个或多个触发步骤、或者与触发步骤兼容的触发步骤和动作步骤的组合。
兼容工作流步骤确定器1804可以被配置为以各种方式确定与所选择的工作流步骤兼容的工作流步骤。例如,在一个实施例中,兼容工作流步骤确定器1804可以保持所有可用工作流步骤的列表,并且对于每个列出的工作流步骤,可以指示与所列出的工作流步骤兼容的所有可用工作流步骤。如果需要,每个工作流步骤可以被指示为“触发”或“动作”步骤,以仅选择兼容的触发步骤或动作步骤。在另一实施例中,兼容工作流步骤确定器1804可以访问使用统计数据1220(图12)以确定用户在其工作流中彼此组合的工作流步骤,并且可以将在用户工作流中彼此组合的工作流步骤分类为彼此兼容。其他。在其他实施例中,兼容工作流步骤确定器1804可以以其他方式确定兼容的工作流步骤。
再次参考图19,在步骤1906中,与第一工作流步骤相关联地显示所确定的一个或多个工作流步骤。在一个实施例中,UI生成器110(图1)可以被配置为与在步骤1902中选择的工作流步骤相关联地显示在步骤1904中确定的兼容工作流步骤。可以以任何方式与所选择的工作流步骤相关联地显示所确定的兼容工作流步骤,包括与所选择的工作流步骤相关联地显示在所选择的步骤的左侧、右侧、顶部或底部,在下拉菜单中,或以任何其他方式。备选地,由工作流步骤集生成器302(图3)生成的工作流步骤集可以显示在同一页面或新的页面上。
例如,如图20所示,开发者选择工作流步骤502以包括在工作流中,并且作为响应,兼容连接器选择器2002可以被显示在工作流步骤502(图20中的右侧)附近,其包括被确定为与工作流步骤502兼容的多个工作流步骤。兼容连接器选择器2002可以提供可滚动列表,特别是当所确定的兼容工作流步骤的数目不适合一页时,或者可以以另一种方式显示兼容工作流步骤。
一旦显示了兼容的工作流步骤,就可以使得开发者(或管理员)能够选择它们中的一个或多个以便合并到工作流模板中。特别地,图22示出了根据示例实施例的提供用于选择用于包括在工作流模板中的兼容工作流步骤的过程的流程图2200。在一个实施例中,流程图2200可以是流程图1900的继续。流程图2200描述如下。
在步骤2202中,使得开发者能够选择所显示的一个或多个工作流步骤中的第二工作流步骤。在一个实施例中,步骤选择器308
(或用于选择工作流步骤的其他机制)可以使得开发者能够以本文中其他地方描述的或以其他方式已知的任何方式从所显示的兼容工作流步骤中选择工作流步骤。例如,关于图20,开发者可以滚动通过由兼容连接器选择器2002显示的兼容工作流步骤。
在步骤2204中,将第二工作流步骤插入与第一工作流步骤互连的工作流模板中。在一个实施例中,步骤选择器308(或用于选择工作流步骤的其他机制)可以以本文中其他地方描述的或以其他方式已知的任何方式将所选择的工作流步骤插入具有在步骤1902中选择的第一工作流步骤的工作流模板中。例如,关于图20,开发者可以通过用鼠标指针或以任何其他方式点击工作流步骤2004来选择(在流程图1900的步骤1902中)由兼容连接器选择器2002显示的工作流步骤2004。步骤选择器308可以将所选择的工作流步骤2004合并到具有工作流步骤502的工作流模板中。可以为工作流模板生成标签(例如,“在创建文件时,将消息发布到Slack”),并且可以保存工作流模板,如本文中其他地方所述。
注意,在工作流中包括兼容工作流步骤之一之后,在一个实施例中,兼容工作流步骤确定器1804可以确定并且显示另一兼容工作流步骤列表,这次是针对根据流程图1900的刚刚包括的工作流步骤而确定的。可以以这种方式将另一兼容工作流步骤以及甚至另外的兼容工作流步骤并入工作流。
V.用于私人和公共共享的自动化工作流模板的选择性匿名
在一个实施例中,图12和图18的模板生成逻辑1202和1802被配置为允许用户将自动化工作流模板发布到开发者可以访问它们的站点。如上所述,模板包括预先生成的用户可配置的自动化工作流。通过允许用户将开发/完成的自动化工作流作为模板进行发布,模板生成逻辑1202和1802有利地使得用户能够利用其社区中的其他人的工作来标识可能对他们有用并且可以用作开发自己的自动化工作流的起点的自动化工作流。
图23描绘了使得用户能够将完成的工作流应用作为模板进行发布的自动化工作流开发应用(例如,图1的工作流设计器106)的示例交互式显示屏2302。如图23所示,屏幕2302包括用户可以与之交互以将开发/完成的自动化工作流作为模板进行发布的交互式元件2304(例如,按钮)。如在屏幕2302中进一步示出的,还可以向用户呈现用户可以向其中键入模板的名称(“当在Google Sheets中添加一行时发送文本”)(而不是如上所述自动生成)的第一文本输入框2306以及用户可以向其中键入自动化工作流的更广泛的描述的第二文本输入框2308。在该示例中,用户可以选择交互式元件2310(例如,按钮)以将键入的文本提交到文本输入框2306和2308中以与工作流模板相关联。
在一些实施例中,用户可以选择性地与整个公众共享工作流模板(例如,通过经由因特网将模板发布给一般用户群),或者可以私下选择性地共享模板(例如,通过发布模板给私有组织内的一组用户,诸如企业,或者与目标用户共享模板)。取决于模板被发布给的受众,模板中关联的各种参数可能需要也可能不需要匿名。
例如,如上所述,图6示出了正在开发的自动化工作流的工作流步骤502。工作流步骤502被包括在图6中的进一步开发中的工作流中,工作流包括一系列步骤,其中每个步骤具有与其相关联的一个或多个用户可配置参数。如图6所示,工作流步骤502包括被示出为/PowerApps/FolderName的文件夹名称的参数。如果要将这个自动化工作流作为模板与同一私有组织内的其他用户共享,则在模板中包括相同的文件夹名称/PowerApps/FolderName可能是有意义的。但是,如果要将这个自动化工作流作为模板与企业之外的用户共享,则删除特定文件夹名称(即,匿名参数)可能更有意义,因为该文件夹名称与企业之外的用户无关,企业之外的用户可能无法访问,和/或可能包括不希望在组织之外泄露的私人信息。
在组织之外发布时可能需要匿名的自动化工作流中的参数的其他示例可以包括例如特定数据库的标识符、特定连接的标识符、特定帐户的标识符、以及可以用于访问这样的数据库、连接或帐户的凭据或其他信息。这样,工作流设计器可以被配置为使得参数值能够出于任何这些原因以及出于相关领域的技术人员而言很清楚的其他原因而被匿名。
因此,图24是根据一个实施例的被配置为选择性地匿名用于公共和私人共享的模板的工作流设计器106的框图。如图24所示,工作流设计器106包括模板生成逻辑2402。模板生成逻辑2402包括接收要作为模板进行发布的自动化工作流并且然后发布这样的模板的工作流模板发布器2406。如图24中进一步所示,模板生成逻辑2402还包括在发布之前基于一个或多个因素选择性地匿名包括在自动化工作流中或由自动化工作流引用的某些参数的选择性匿名器2404。一个或多个因素可以包括例如但不限于用于发布的预期目标受众(例如,是向公众还是仅在组织内发布,是向整个组织还是向组织内的特定团队发布,是否仅向单个人发布,等等)、共享模板的用户、在其内共享模板的组织以及在其中构建模板的上下文。取决于这些因素,自动化工作流的某些连接和/或属性可以在发布之前被匿名,而某些连接和/或属性可以不在发布之前被匿名。
下面参考图25更详细地描述模板生成逻辑2402。图25示出了根据一个示例实施例的提供用于匿名工作流模板中的参数的过程的流程图2500。在一个实施例中,模板生成逻辑2402可以根据流程图2500进行操作。注意,并非需要在所有实施例中执行流程图2500的所有步骤。模板生成逻辑2402和流程图2500描述如下。
流程图2500以步骤2502开始。在步骤2502中,接收自动化工作流模板以用于发布,该自动化工作流模板包括参数。在实施例中,可以生成工作流模板2408(例如,如上所述)并且由模板生成逻辑2402接收工作流模板2408。工作流模板2408可以包括具有参数值的一个或多个参数,如上所述。这可能是因为工作流模板2408是由被指派参数值的工作流步骤的组合形成的。在工作流模板2408的发布之前,可能希望匿名至少一些参数值(其中工作流模板2408可用于不同的用户组)。工作流模板2408可以由模板生成逻辑2402接收以进行匿名,并且然后作为匿名工作流模板进行发布。
关于图26示出了可以被接收以作为工作流模板进行发布的示例工作流。图26示出了根据示例实施例的包括正在开发的工作流2600的浏览器窗口402的视图。工作流2600是包括一系列步骤的自动化工作流,其中每个步骤具有与其相关联的一个或多个用户可配置参数。一个或多个工作流步骤具有要匿名的参数。
例如,如图26所示,工作流2600包括作为第一步骤的触发步骤2602和作为第二步骤的动作步骤2604。触发步骤2602包括填充有参数值“https:/contoso.sharepoint.com/teams/marketing”的站点URL以及填充有参数值“资产”的列表名称作为参数。如果工作流2600作为工作流模板与同一私人组织内的其他用户共享,则在模板内包含相同的站点URL“https:/contoso.sharepoint.com/teams/marketing”作为参数值可能是有意义的。但是,如果工作流2600要作为工作流模板与企业之外的用户共享,则删除特定站点URL(即,匿名参数)可能是更有意义的,因为该站点URL可能与企业之外的用户无关。
在步骤2504中,自动化工作流模板中包括的参数的至少一部分被自动匿名以生成匿名的自动化工作流模板。如图24所示,选择性匿名器2404可以接收工作流模板2408。在一个实施例中,选择性匿名器2404被配置为对工作流模板2408中的一个或多个参数进行匿名,清除参数值或将参数值替换为通用值以将其匿名。在一个实施例中,选择性匿名器2404可以逐步通过工作流模板2408的参数(例如,如存储在图3的接口定义信息318中),并且选择性地对其匿名,以确定哪些参数要匿名,并且匿名这些确定的参数的参数值。如图24所示,选择性匿名器2404输出匿名工作流模板2410,其是工作流模板2408的匿名形式。
可以以各种方式配置选择性匿名器2404以执行参数的这种自动匿名。例如,图27是根据实施例的被配置为选择性地匿名模板的选择性匿名器2404的框图。如图27所示,选择性匿名器2404包括基于受众的匿名器2702、基于用户身份的匿名器2704、基于组织的匿名器2706和基于上下文的匿名器2708。这些组件中的任何一个或多个可以存在于选择性匿名器2404中。在实施例中。选择性匿名器2404的这些组件描述如下。
基于受众的匿名器2702被配置为解析工作流模板2408的参数,并且基于用于发布的受众选择性地匿名其参数值。用于发布的受众可以由基于受众的匿名器2702以各种方式确定,包括通过用户输入,通过目标发布库或文件夹的指示,和/或通过其他机制。基于该确定,基于受众的匿名器2702可以确定是向公众还是仅在组织内发布,是向整个组织还是向组织内的特定团队发布,是否仅向单个人发布,等等。因此,基于受众的匿名器2702被配置为匿名在本组织之外将没有任何意义或者需要在本组织之外保密的参数(如果发布是给不同的组织),在本团队之外将没有任何意义或者需要在本团队之外保密的参数(如果发布是给同一组织内的不同团队),如果被其他人使用则没有任何意义或者需要保密的参数。
基于用户身份的匿名器2704被配置为解析工作流模板2408的参数,并且基于工作流模板2408正在被发布给的用户的身份来选择性地匿名其参数值。用于发布的用户的身份可以由基于用户身份的匿名器2704以各种方式确定,包括通过用户输入,通过用户拥有目标发布库或文件夹的指示,和/或通过其他机制。基于该确定,基于用户身份的匿名器2704可以匿名对所标识的用户没有意义的参数,不应当泄露给用户的参数,或者否则需要由用户调节到用户自己的简档的参数(例如,消息传送标识符,诸如文本消息传送号或电子邮件地址)。
基于组织的匿名器2706被配置为解析工作流模板2408的参数,并且基于工作流模板2408正在被发布给的组织的身份来选择性地匿名其参数值。用于发布的组织的身份可以由基于组织的匿名器2706以各种方式确定,包括通过用户输入,通过组织拥有目标发布库或文件夹的指示,和/或通过其他机制。基于该确定,基于组织的匿名器2706可以匿名对所标识的组织没有意义的参数,不应当泄露给组织的参数,或者否则需要由组织调节到组织自己的简档的参数(例如,文件夹名称、域名、组消息传送标识符等)。
基于上下文的匿名器2708被配置为解析工作流模板2408的参数,并且基于创建在其中工作流模板2408的上下文来选择性地匿名其参数值。该上下文可以由基于上下文的匿名器2708以各种方式确定,包括通过用户输入,通过创建工作流模板2408的时间、地点和/或原因,和/或通过其他机制。基于该确定,基于上下文的匿名器2708可以匿名在所标识的上下文之外没有意义的参数。
在一个实施例中,所有参数由选择性匿名器2404自动分析以确定是否要匿名参数。在另一实施例中,除了选择性匿名器2404确定是否要匿名参数之外,选择性匿名器2404还可以使得开发者能够选择一个或多个用于匿名的参数。
例如,图28示出了根据一个实施例的用于使得开发者能够选择用于匿名的参数的步骤2802。在步骤2802中,使得开发者能够选择是否匿名所接收的自动化工作流模板中的特定参数。在一个实施例中,UI生成器110(图1)被配置为显示用户界面控件(例如,下拉菜单、复选框、按钮等)以使得开发者能够选择是否匿名工作流模板2408的参数。如果用户选择匿名参数,则选择性匿名器2404被配置为匿名参数(例如,清除参数值,将参数值替换为通用参数值,输入消息以填充参数值,等等)。例如,如果参数是消息传送帐户标识符(例如,电子邮件地址),则选择性匿名器2404可以被配置为擦除当前消息传送帐户标识符,或者将其替换为通用消息传送帐户标识符。
关于图26的示例,选择性匿名器2404可以被配置为匿名“站点URL”参数,因为“https:/contoso.sharepoint.com/teams/marketing”在开发工作流2600的当前组织之外没有意义。因此,选择性匿名器2404可以删除“https:/contoso.sharepoint.com/teams/marketing”或者可以将其替换为通用URL或填充消息的参数值(例如,“在此处插入URL”)。选择性匿名器2404可以被配置为匿名“列表名称”参数,因为“资产”是开发工作流2600的组织的机密资产列表。这样,选择性匿名器2404可以删除“资产”或者将其替换为通用列表或填充消息的参数值(例如,“在此处插入列表名称”)。选择性匿名器2404可以被配置为匿名“接收者”参数,因为“fredjones@hotmail.com”是开发工作流2600的组织中的人员的个人电子邮件地址。因此,选择性匿名器2404可以删除“fredjones@hotmail.com”或将其替换为通用消息标识符或填充消息的参数值(例如,“目标接收者”)。选择性匿名器2404可以确定“消息”参数具有参数值(“接收的项目”),该参数值不包含机密信息并且在组织之外有意义,并且因此不需要匿名。
注意,在一些实施例中,选择性匿名器2404可以被配置为部分地修改参数值,而不是完全删除或替换参数值。例如,图29示出了根据实施例的用于部分地匿名参数的步骤2902。在步骤2902中,部分地匿名所接收的自动化工作流模板中包括的参数。在这样的实施例中,选择性匿名器2404被配置为分析特定参数,并且如果选择性匿名器2404确定参数要被匿名,则选择性匿名器2404替换参数值的一部分。例如,选择性匿名器2404可以将文件夹名称修改为不同的文件夹名称或通用文件夹名称,可以将消息传送标识符修改为不同的消息传送标识符或通用消息传送标识符,等等。
例如,关于图26,选择性匿名器2404可以修改URL“https:/contoso.sharepoint.com/teams/marketing”以指向要与其共享工作流模板的组织内的组的站点URL,或者指向通用URL,在任何一种情况下,都可以通过修改参数值的一部分来实现。例如,
可以修改URL以从“团队”组指向“管理员”组,如下:
“https:/contoso.sharepoint.com/managers/marketing”,其中在文件路径中,“团队”被替换为“管理员”。
再次参考图25,在步骤2506中,发布匿名的自动化工作流模板。如图24所示,工作流模板发布器2406接收匿名工作流模板2410,其是工作流模板2408的匿名形式。工作流模板发布器2406被配置为发布匿名工作流模板2410。工作流模板发布器2406可以将匿名工作流模板2410发布给由用户指定的文件夹或站点或者发布给默认文件夹或站点。例如,如图24所示,工作流模板发布器2406可以通过将匿名工作流模板2410存储在模板库1212中来发布匿名工作流模板2410。工作流模板发布器2406可以以各种形式发布工作流模板1216,诸如以包括至少两个分量(例如,文件)的包的形式:工作流定义信息316和接口定义信息318(图3)。
模板库1212可以是公共可用的,或者可以由组织、组织内的团队或一个或多个特定个体使用,并且可以相应地被匿名。
VI.示例计算机系统实现
计算设备102、工作流设计器106、UI生成器110、工作流逻辑生成器112、本地应用122、基于网络的应用124A、基于网络的应用124B、服务器134、工作流步骤集生成器302、模板集生成器304、保存工作流选择器306、步骤选择器308、步骤配置UI生成器310、工作流定义生成器312、接口定义生成器314、计算设备902、工作流应用904、工作流执行引擎906、模板生成逻辑1202、工作流步骤组合器1206、描述生成器1208、使用分析器1210、模板生成逻辑1802、兼容工作流步骤确定器1804、选择性匿名器2404、工作流模板发布器2406、基于受众的匿名器2702、基于用户身份的匿名器2704、基于组织的匿名器2706、基于上下文的匿名器2708、流程图200、流程图1000、流程图1300、流程图1400、步骤1502、步骤1602、流程图1700、流程图1900、流程图2100、流程图2200、流程图2500、步骤2802和步骤2902可以用硬件或与软件和/或固件组合的硬件来实现。例如,工作流设计器106、UI生成器110、工作流逻辑生成器112、本地应用122、基于网络的应用124A、基于网络的应用124B、服务器134、工作流步骤集生成器302、模板集生成器304、保存工作流选择器306、步骤选择器308、步骤配置UI生成器310、工作流定义生成器312、接口定义生成器314、计算设备902、工作流应用904、工作流执行引擎906、模板生成逻辑1202、工作流步骤组合器1206、描述生成器1208、使用分析器1210、模板生成逻辑1802、兼容工作流步骤确定器1804、选择性匿名器2404、工作流模板发布器2406、基于受众的匿名器2702、基于用户身份的匿名器2704、基于组织的匿名器2706、基于上下文的匿名器2708、流程图200、流程图1000、流程图1300、流程图1400、步骤1502、步骤1602、流程图1700、流程图1900、流程图2100、流程图2200、流程图2500、步骤2802和/或步骤2902可以被实现为被配置为在一个或多个处理器中执行并且存储在计算机可读存储介质中的计算机程序代码/指令,或者可以被实现为硬件逻辑/电气电路。
例如,在一个实施例中,工作流设计器106、UI生成器110、工作流逻辑生成器112、本地应用122、基于网络的应用124A、基于网络的应用124B、服务器134、工作流步骤集生成器302、模板集生成器304、保存工作流选择器306、步骤选择器308、步骤配置UI生成器310、工作流定义生成器312、接口定义生成器314、计算设备902、工作流应用904、工作流执行引擎906、模板生成逻辑1202、工作流步骤组合器1206、描述生成器1208、使用分析器1210、模板生成逻辑1802、兼容工作流步骤确定器1804、选择性匿名器2404、工作流模板发布器2406、基于受众的匿名器2702、基于用户身份的匿名器2704、基于组织的匿名器2706、基于上下文的匿名器2708、流程图200、流程图1000、流程图1300、流程图1400、步骤1502、步骤1602、流程图1700、流程图1900、流程图2100、流程图2200、流程图2500、步骤2802和/或步骤2902的任何组合中的一个或多个可以一起在SoC中实现。SoC可以包括集成电路芯片,集成电路芯片包括处理器(例如,中央处理单元(CPU)、微控制器、微处理器、数字信号处理器(DSP)等)、存储器、一个或多个通信接口和/或其他电路中的一个或多个,并且可以可选地执行所接收的程序代码,和/或包括嵌入式固件以执行功能。
图30示出了可以实现本文中描述的实施例的示例性移动设备3002的框图。例如,移动设备1702可以用于实现服务器134的计算设备902。如图30所示,移动设备1702包括各种可选的硬件和软件组件。移动设备3002中的任何组件可以与任何其他组件通信,但是为了便于说明,并未示出所有连接。移动设备3002可以是各种计算设备(例如,蜂窝电话、智能电话、手持计算机、个人数字助理(PDA)等)中的任何一种,并且可以允许与诸如蜂窝或卫星网络或局域或广域网等一个或多个移动通信网络3004的无线双向通信。
所示的移动设备3002可以包括控制器或处理器3010(例如,信号处理器、微处理器、ASIC或其他控制和处理逻辑电路),用于执行诸如信号编码、数据处理、输入/输出处理、功率控制和/或其他功能等任务。操作系统3012可以控制移动设备3002的组件的分配和使用,并且提供对一个或多个应用程序3014(也称为“应用”或“app”)的支持。应用程序3014可以包括常见的移动计算应用(例如,电子邮件应用、日历、联系人管理器、网络浏览器、消息传送应用)和任何其他计算应用(例如,文字处理应用、地图绘制应用、媒体播放器应用)。
所示的移动设备3002可以包括存储器3020。存储器3020可以包括不可移动存储器3022和/或可移动存储器3024。不可移动存储器3022可以包括RAM、ROM、闪存、硬盘或其他公知的存储设备或技术。可移除存储器3024可以包括闪存或用户识别模块(SIM)卡(其在GSM通信系统中是公知的)或者其他公知的存储器设备或技术,诸如“智能卡”。存储器3020可以用于存储用于运行操作系统3012和应用3014的数据和/或代码。示例数据可以包括网页、文本、图像、声音文件、视频数据、或要经由一个或多个有线或无线网络发送给从一个或多个网络服务器或其他设备和/或从其接收的其他数据。示例代码可以包括用于工作流设计器106、UI生成器110、工作流逻辑生成器112、本地应用122、基于网络的应用124A、基于网络的应用124B、服务器134、工作流步骤集生成器302、模板集生成器304、保存工作流选择器306、步骤选择器308、步骤配置UI生成器310、工作流定义生成器312、接口定义生成器314、计算设备902、工作流应用904、工作流执行引擎906、模板生成逻辑1202、工作流步骤组合器1206、描述生成器1208、使用分析器1210、模板生成逻辑1802、兼容工作流步骤确定器1804、选择性匿名器2404、工作流模板发布器2406、基于受众的匿名器2702、基于用户身份的匿名器2704、基于组织的匿名器2706、基于上下文的匿名器2708、流程图200、流程图1000、流程图1300、流程图1400、步骤1502、步骤1602、流程图1700、流程图1900、流程图2100、流程图2200、流程图2500、步骤2802和/或步骤2902(包括流程图200、1000、1300、1400、1700、1900、2100、2200、2500的任何合适步骤)、和/或本文中描述的其他实施例的程序代码。存储器3020可以用于存储订户标识符(诸如国际移动订户身份(IMSI))以及设备标识符(诸如国际移动设备标识符(IMEI))。这样的标识符可以传输到网络服务器以标识用户和设备。
移动设备3002可以支持一个或多个输入设备3030(诸如触摸屏3032、麦克风3034、相机3036、物理键盘3038和/或轨迹球3040)以及一个或多个输出设备3050(诸如扬声器3052和显示器3054)。其他可能的输出设备(未示出)可以包括压电或其他触觉输出设备。一些设备可以提供多个输入/输出功能。例如,触摸屏3032和显示器3054可以组合在单个输入/输出设备中。输入设备3030可以包括自然用户界面(NUI)。
无线调制解调器3060可以耦合到天线(未示出),并且可以支持处理器3010与外部设备之间的双向通信,如本领域公知的。调制解调器3060一般地示出并且可以包括用于与移动通信网络3004通信的蜂窝调制解调器3066和/或其他基于无线电的调制解调器(例如,蓝牙3064和/或Wi-Fi 3062)。无线调制解调器3060中的至少一个通常被配置用于与一个或多个蜂窝网络的通信,诸如用于单个蜂窝网络内、蜂窝网络之间或移动设备与公共交换电话网(PSTN)之间的数据和语音通信的GSM网络。
移动设备3002还可以包括至少一个输入/输出端口3080、电源3082、卫星导航系统接收器3084(诸如全球定位系统(GPS)接收器)、加速度计3086和/或物理连接器3090,物理连接器3090可以是USB端口、IEEE 1394(FireWire)端口和/或RS-232端口。移动设备3002的所示组件不是必需的或包括所有的,因为可以删除任何组件并且可以添加其他组件,如本领域技术人员将认识到的。
在一个实施例中,移动设备3002被配置为执行工作流设计器106的任何上述功能。用于执行这些功能的计算机程序逻辑可以存储在存储器3020中并且由处理器3010执行。
图31描绘了可以用于实现本文中描述的各种实施例的示例性的基于处理器的计算机系统3100。例如,计算设备102、服务器134和移动设备3002中的任何一个可以在与固定或移动计算机实施例中的计算设备3100类似的一个或多个计算设备中实现,包括计算设备3000的一个或多个特征和/或替代特征。本文中提供的系统3100的描述是出于说明的目的而提供的,而不是限制性的。如相关领域的技术人员所知,实施例可以在其他类型的计算机系统中实现。
如图31所示,系统3100包括处理单元3102、系统存储器3104和总线3106,总线3106将包括系统存储器3104在内的各种系统组件耦合到处理单元3102。处理单元3102可以包括一个或多个微处理器或微处理器核。总线3106表示几种类型的总线结构中的任何一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任何一种的处理器或本地总线。系统存储器3104包括只读存储器(ROM)3108和随机存取存储器(RAM)3110。基本输入/输出系统3112(BIOS)存储在ROM 3108中。
系统3100还具有以下驱动器中的一个或多个:用于从硬盘读取和向其写入的硬盘驱动器3114、用于从可移动磁盘3118读取或向其写入的磁盘驱动器3116、以及用于从可移动光盘3122读取或向其写入的光盘驱动器3120,可移动光盘3122诸如CD ROM、DVD ROM、BLU-RAYTM盘或其他光学介质。硬盘驱动器3114、磁盘驱动器3116和光盘驱动器3120分别通过硬盘驱动器接口3124、磁盘驱动器接口3126和光学驱动器接口3128连接到总线3106。驱动器及其相关联的计算机可读介质为计算机提供计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。虽然描述了硬盘、可移动磁盘和可移动光盘,但是可以使用其他类型的计算机可读存储器设备和存储结构来存储数据,诸如闪存卡、数字视频盘、随机存取存储器(RAM)、只读存储器(ROM)等。
多个程序模块可以存储在硬盘、磁盘、光盘、ROM或RAM上。这些程序包括操作系统3130、一个或多个应用程序3132、其他程序3134和程序数据3136。应用程序3132或其他程序3134可以包括例如用于实现工作流设计器106、UI生成器110、工作流逻辑生成器112、本地应用122、基于网络的应用124A、基于网络的应用124B、服务器134、工作流步骤集生成器302、模板集生成器304、保存工作流选择器306、步骤选择器308、步骤配置UI生成器310、工作流定义生成器312、接口定义生成器314、计算设备902、工作流应用904、工作流执行引擎906、模板生成逻辑1202、工作流步骤组合器1206、描述生成器1208、使用分析器1210、模板生成逻辑1802、兼容工作流步骤确定器1804、选择性匿名器2404、工作流模板发布器2406、基于受众的匿名器2702、基于用户身份的匿名器2704、基于组织的匿名器2706、基于上下文的匿名器2708、流程图200、流程图1000、流程图1300、流程图1400、步骤1502、步骤1602、流程图1700、流程图1900、流程图2100、流程图2200、流程图2500、步骤2802和/或步骤2902(包括流程图200、1000、1300、1400、1700、1900、2100、200、2500、2500的任何合适步骤)、和/或本文中描述的其他实施例的计算机程序逻辑(例如,计算机程序代码或指令)。
用户可以通过诸如键盘3138和指示设备3140(例如,鼠标)等输入设备向系统3100中输入命令和信息。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏控制器、扫描仪等。在一个实施例中,结合显示器3144提供触摸屏,以允许用户经由触摸(例如,通过手指或触笔)到触摸屏上的一个或多个点的应用来提供用户输入。这些和其他输入设备通常通过耦合到总线3106的串行端口接口3142连接到处理单元3102,但是可以通过其他接口连接,诸如并行端口、游戏端口或通用串行总线(USB)。这样的接口可以是有线或无线接口。
显示器3144经由诸如视频适配器3146等接口连接到总线3106。除了显示器3144之外,系统3100还可以包括其他外围输出设备(未示出),诸如扬声器和打印机。
系统3100通过网络接口3150、调制解调器3152或用于通过网络上建立通信的其他合适的装置连接到网络3148(例如,局域网或诸如因特网等广域网)。可以是内部的或外部的调制解调器3152经由串行端口接口3142连接到总线3106。
如本文中使用的,术语“计算机程序介质”、“计算机可读介质”和“计算机可读存储介质”用于指代物理硬件介质,诸如与硬盘驱动器3114相关联的硬盘、可移动磁盘3118、可移动光盘3122、其他物理硬件介质,诸如RAM、ROM、闪存卡、数字视频盘、zip盘、MEM、基于纳米技术的存储设备、以及其他类型的物理/有形硬件存储介质(包括图12的存储器1220)。这样的计算机可读存储介质与通信介质不同并且不重叠(不包括通信介质)。
通信介质在诸如载波等调制数据信号中实施计算机可读指令、数据结构、程序模块或其他数据。术语“调制数据信号”表示以使得能够在信号中对信息进行编码的方式设置或改变其一个或多个特性的信号。作为示例而非限制,通信介质包括无线介质(诸如声学、RF、红外和其他无线介质)以及有线介质。实施例还涉及与涉及计算机可读存储介质的实施例分离且不重叠的这样的通信介质。
如上所述,计算机程序和模块(包括应用程序3132和其他程序3134)可以存储在硬盘、磁盘、光盘、ROM、RAM或其他硬件存储介质上。这样的计算机程序还可以经由网络接口3150、串行端口接口3142或任何其他接口类型来接收。当由应用执行或加载时,这样的计算机程序使得计算设备3100能够实现本文中讨论的实施例的特征。因此,这样的计算机程序表示计算设备3100的控制器。
实施例还涉及包括存储在任何计算机可读介质上的计算机代码或指令的计算机程序产品。这样的计算机程序产品包括硬盘驱动器、光盘驱动器、存储器设备包、便携式存储棒、存储卡和其他类型的物理存储硬件。
IV.示例实施例
在第一实施例中,一种计算设备中的方法包括:确定工作流步骤库中的多个工作流步骤;自动生成一个或多个工作流模板,每个自动生成的工作流模板包括库中至少两个工作流步骤的组合;以及将一个或多个工作流模板存储在模板库中。
在一个实施例中,自动生成包括:选择工作流步骤库中的工作流步骤的触发步骤;选择工作流步骤库中的工作流步骤的至少一个动作步骤;以及自动组合所选择的触发步骤和所选择的至少一个动作步骤以生成工作流模板。
在一个实施例中,自动生成还包括:自动生成描述由所生成的工作流模板执行的操作的文本。
在一个实施例中,自动生成包括:迭代通过工作流步骤库中的触发步骤与工作流步骤库中的动作步骤的所有组合以生成多个工作流模板。
在一个实施例中,该方法还包括:使得管理员能够策划模板库以从模板库中消除一个或多个工作流模板。
在一个实施例中,自动生成包括:分析关于由开发者创建的工作流的统计数据,以确定由开发者以大于预定阈值的频率创建的工作流,以及生成与所确定的工作流相对应的工作流模板;并且其中上述存储包括在模板库中存储与所确定的工作流相对应的工作流模板。
在一个实施例中,该方法还包括:在图形用户界面中显示模板集,该模板集包括模板库中的一个或多个工作流模板的指示;以及使得开发者能够与图形用户界面进行交互以从模板库中选择工作流模板以包括在工作流中。
在另一实施例中,一种系统包括:一个或多个处理器;以及存储用于由一个或多个处理器执行的计算机程序逻辑的存储器,该计算机程序逻辑包括模板生成逻辑,模板生成逻辑被配置为自动生成一个或多个工作流模板的,每个自动生成的工作流模板包括工作流步骤库的至少两个工作流步骤的组合,并且模板生成逻辑被配置为将一个或多个工作流模板存储在模板库中。
在一个实施例中,模板生成逻辑包括工作流步骤组合器,工作流步骤组合器被配置为选择工作流步骤库中的工作流步骤的触发步骤,选择工作流步骤库中的工作流步骤的至少一个动作步骤,以及自动组合所选择的触发步骤和所选择的至少一个动作步骤以生成工作流模板。
在一个实施例中,模板生成逻辑还包括被配置为自动生成描述由所生成的工作流模板执行的操作的文本的描述生成器。
在一个实施例中,工作流步骤组合器被配置为迭代通过工作流步骤库中的触发步骤与工作流步骤库中的动作步骤的所有组合以生成多个工作流模板。
在一个实施例中,用户界面使得管理员能够策划模板库以从模板库中消除一个或多个工作流模板。
在一个实施例中,模板生成逻辑包括:被配置为分析关于由开发者创建的工作流的统计数据以确定由开发者以大于预定阈值的频率创建的工作流的使用分析器;被配置为生成与所确定的工作流相对应的工作流模板并且在模板库中存储与所确定的工作流相对应的工作流模板的工作流步骤组合器。
在一个实施例中,计算机程序逻辑还包括模板集生成器,模板集生成器被配置为在图形用户界面中显示模板库,模板库包括模板库中的一个或多个工作流模板的指示,并且模板库生成器被配置为使得开发者能够与图形用户界面交互以从模板库中选择工作流模板以包括在工作流中。
在另一实施例中,一种计算设备中的方法包括:使得开发者能够选择第一工作流步骤;自动确定与第一工作流步骤兼容的一个或多个工作流步骤;以及与第一工作流步骤相关联地显示所确定的一个或多个工作流步骤。
在一个实施例中,该方法还包括:使得开发者能够选择所显示的一个或多个工作流步骤中的第二工作流步骤;以及将第二工作流步骤插入与第一工作流步骤互连的工作流模板中。
在一个实施例中,自动确定包括:响应于第一工作流步骤是动作步骤而自动确定与第一工作流步骤兼容的一个或多个触发步骤;以及响应于第一工作流步骤是触发步骤而自动确定与第一工作流步骤兼容的一个或多个动作步骤。
在另一实施例中,一种系统包括:一个或多个处理器;以及存储用于由一个或多个处理器执行的计算机程序逻辑的存储器,计算机程序逻辑包括:被配置为使得开发者能够选择第一工作流步骤的步骤选择器;被配置为自动确定与第一工作流步骤兼容的一个或多个工作流步骤的兼容工作流步骤确定器;以及被配置为与第一工作流步骤相关联地显示所确定的一个或多个工作流步骤的用户界面生成器。
在一个实施例中,步骤选择器被配置为使得开发者能够选择所显示的一个或多个工作流步骤中的第二工作流步骤,并且将第二工作流步骤插入与第一工作流步骤互连的工作流模板中。
在一个实施例中,兼容工作流步骤确定器被配置为响应于第一工作流步骤是动作步骤而自动确定与第一工作流步骤兼容的一个或多个触发步骤,并且响应于第一工作流步骤是触发步骤而自动确定与第一工作流步骤兼容的一个或多个动作步骤。
在一个实施例中,一种计算设备中的方法包括:接收包括参数的用于发布的自动化工作流模板;自动匿名自动化工作流模板中包括的至少一部分参数以生成匿名的自动化工作流模板;以及发布匿名的自动化工作流模板。
在一个实施例中,自动匿名基于用于发布所接收的自动化工作流模板的预期目标受众来执行。
在一个实施例中,自动匿名基于已经选择所接收的用于发布的自动化工作流模板的用户的身份来执行。
在一个实施例中,自动匿名基于在其中通过发布来共享所接收的自动化工作流模板的组织来执行。
在一个实施例中,自动匿名基于在其中构建所接收的自动化工作流模板的上下文来执行。
在一个实施例中,自动匿名包括:显示用户界面控件以使得开发者能够选择是否匿名所接收的自动化工作流模板中的消息传送帐户标识符。
在一个实施例中,选择性地匿名包括:部分匿名所接收的自动化工作流模板中包括的参数。
在另一实施例中,一种系统包括:一个或多个处理器;以及存储用于由一个或多个处理器执行的计算机程序逻辑的存储器,该计算机程序逻辑包括:被配置为自动匿名包括在自动化工作流模板中的一组参数的至少一部分以生成匿名的自动化工作流模板的选择性匿名器;以及被配置为发布匿名的自动化工作流模板的工作流模板发布器。
在一个实施例中,选择性匿名器被配置为基于用于发布所接收的自动化工作流模板的预期目标受众自动匿名一组参数的至少一部分。
在一个实施例中,选择性匿名器被配置为基于已经选择所接收的用于发布的自动化工作流模板的用户的身份来自动匿名一组参数的至少一部分。
在一个实施例中,选择性匿名器被配置为基于在其中通过发布来共享所接收的自动化工作流模板的组织来自动匿名一组参数的至少一部分。
在一个实施例中,选择性匿名器被配置为基于在其中构建所接收的自动化工作流模板的上下文来自动匿名一组参数的至少一部分。
在一个实施例中,一种UI(用户界面)生成器被配置为显示用户界面控件以使得开发者能够选择是否匿名所接收的自动化工作流模板中的消息传送帐户标识符。
在一个实施例中,选择性匿名器被配置为
部分匿名所接收的自动化工作流模板中包括的参数。
在一个实施例中,一种系统包括:一个或多个处理器;以及存储程序代码的存储器,该程序代码被配置为由至少一个处理器执行以执行操作,这些操作包括:接收包括参数的用于发布的自动化工作流模板;自动匿名自动化工作流模板中包括的至少一部分参数以生成匿名的自动化工作流模板;并且发布匿名的自动化工作流模板。
在一个实施例中,自动匿名基于用于发布所接收的自动化工作流模板的预期目标受众来执行。
在一个实施例中,自动匿名基于已经选择所接收的用于发布的自动化工作流模板的用户的身份来执行。
在一个实施例中,自动匿名基于在其中通过发布来共享所接收的自动化工作流模板的组织来执行。
在一个实施例中,自动匿名基于在其中构建所接收的自动化工作流模板的上下文来执行。
在一个实施例中,自动匿名包括:显示用户界面控件以使得开发者能够选择是否匿名所接收的自动化工作流模板中的消息传送帐户标识符。
V.结论
尽管上面已经描述了各种实施例,但是应当理解,它们仅以示例而不是限制的方式呈现。相关领域的技术人员将很清楚,在不脱离在所附权利要求限定的本发明的精神和范围的情况下,可以在形式和细节上进行各种改变。因此,本发明的广度和范围不应当受任何上述示例性实施例的限制,而应当仅根据所附权利要求及其等同物来限定。

Claims (20)

1.一种计算设备中的方法,包括:
确定工作流步骤库中的多个工作流步骤,所述库中的每个工作流步骤配置有对应的逻辑,所述对应的逻辑对参数进行操作并且具有用于至少一个输入参数或输出参数的接口;
由所述计算设备自动生成一个或多个工作流模板,每个自动生成的工作流模板包括所述库中的所述工作流步骤中的至少两个工作流步骤的组合,并且所述每个自动生成的工作流模板是可选择的以包括在工作流中;以及
将所述一个或多个工作流模板存储在模板库中,
其中所述自动生成一个或多个工作流模板包括:
自动生成描述由所述一个或多个工作流模板中的所生成的模板执行的操作的文本;以及
迭代通过所述工作流步骤库中的触发步骤与所述工作流步骤库中的动作步骤的组合来生成多个工作流模板,包括:
选择所述工作流步骤库中的所述工作流步骤的触发步骤;
选择所述工作流步骤库中的所述工作流步骤的至少一个动作步骤;以及
自动组合所选择的所述触发步骤和所选择的所述至少一个动作步骤以生成工作流模板。
2.根据权利要求1所述的方法,还包括:
使得管理员能够策划所述模板库以从所述模板库中消除一个或多个工作流模板。
3.根据权利要求1所述的方法,其中所述自动生成还包括:
分析关于由开发者创建的工作流的统计数据,以确定由所述开发者以大于预定阈值的频率创建的工作流,以及
生成与所确定的所述工作流相对应的工作流模板;以及
其中所述存储包括:
在所述模板库中存储与所确定的所述工作流相对应的工作流模板。
4.根据权利要求1所述的方法,还包括:
在图形用户界面中显示模板集,所述模板集包括所述模板库中的一个或多个工作流模板的指示;以及
使得开发者能够与所述图形用户界面交互以从所述模板库中选择工作流模板以包括在工作流中。
5.根据权利要求1所述的方法,其中所生成的所述文本被显示在表示所生成的工作流模板的图标上。
6.根据权利要求1所述的方法,其中所述确定工作流步骤库中的多个工作流步骤包括:
从包括在所确定的所述多个工作流步骤中过滤掉所述工作流步骤库中的至少一种特定类型的工作流步骤。
7.一种电子系统,包括:
一个或多个处理器;以及
存储器,存储用于由所述一个或多个处理器执行的计算机程序逻辑,所述计算机程序逻辑包括:
模板生成逻辑,所述模板生成逻辑被配置为由所述模板生成逻辑自动生成一个或多个工作流模板,每个自动生成的工作流模板包括工作流步骤库中的至少两个工作流步骤的组合,并且所述模板生成逻辑被配置为将所述一个或多个工作流模板存储在模板库中,
其中所述模板生成逻辑包括:
工作流步骤组合器,被配置为选择所述工作流步骤库中的工作流步骤的触发步骤,选择所述工作流步骤库中的工作流步骤的至少一个动作步骤,以及自动组合所选择的所述触发步骤和所选择的所述至少一个动作步骤以生成工作流模板,其中所述工作流步骤组合器还被配置为迭代通过所述工作流步骤库中的触发步骤与所述工作流步骤库中的动作步骤的组合以生成多个工作流模板。
8.根据权利要求7所述的电子系统,其中所述模板生成逻辑还包括:
描述生成器,被配置为自动生成描述由所生成的所述工作流模板执行的操作的文本。
9.根据权利要求7所述的电子系统,其中所述工作流步骤组合器被配置为从自动生成所述一个或多个工作流模板过滤掉所述工作流步骤库中的至少一种特定类型的工作流步骤。
10.根据权利要求8所述的电子系统,其中所生成的所述文本被显示在表示对应的所生成的工作流模板的图标上。
11.根据权利要求7所述的电子系统,其中用户界面使得管理员能够策划所述模板库以从所述模板库中消除一个或多个工作流模板。
12.根据权利要求7所述的电子系统,其中所述模板生成逻辑包括:
使用分析器,被配置为分析关于由开发者创建的工作流的统计数据,以确定由所述开发者以大于预定阈值的频率创建的工作流;以及
所述工作流步骤组合器,还被配置为生成与所确定的所述工作流相对应的工作流模板,并且在所述模板库中存储与所确定的所述工作流相对应的工作流模板。
13.根据权利要求7所述的电子系统,所述计算机程序逻辑还包括:
模板集生成器,所述模板集生成器被配置为在图形用户界面中显示模板集,所述模板集包括所述模板库中的一个或多个工作流模板的指示,并且所述模板集生成器被配置为使得开发者能够与所述图形用户界面交互以从所述模板库中选择工作流模板以包括在工作流中。
14.根据权利要求8所述的电子系统,其中所述描述生成器被配置为自动地生成针对每个自动生成的工作流模板的名称。
15.一种计算设备,包括:
至少一个处理器电路;以及
存储器,所述存储器存储程序代码,所述程序代码被配置为由所述至少一个处理器电路执行以执行操作,所述操作包括:
确定工作流步骤库中的多个工作流步骤,所述库中的每个工作流步骤配置有对应的逻辑,所述对应的逻辑对参数进行操作并且具有用于至少一个输入参数或输出参数的接口;
由所述至少一个处理器电路自动生成一个或多个工作流模板,每个自动生成的工作流模板包括所述库中的所述工作流步骤中的至少两个工作流步骤的组合,并且所述每个自动生成的工作流模板是可选择的以包括在工作流中;以及
将所述一个或多个工作流模板存储在模板库中,
其中是自动生成包括:
迭代通过所述工作流步骤库中的触发步骤与所述工作流步骤库中的动作步骤的组合来生成多个工作流模板,包括:
选择所述工作流步骤库中的所述工作流步骤的触发步骤;
选择所述工作流步骤库中的所述工作流步骤的至少一个动作步骤;以及
自动组合所选择的所述触发步骤和所选择的所述至少一个动作步骤以生成工作流模板;
分析关于由开发者创建的工作流的统计数据,以确定由所述开发者以大于预定阈值的频率创建的工作流,以及
生成与所确定的所述工作流相对应的工作流模板;以及其中所述存储包括:
在所述模板库中存储与所确定的所述工作流相对应的工作流模板。
16.根据权利要求15所述的计算设备,其中所述操作还包括:
在图形用户界面中显示模板集,所述模板集包括所述模板库中的所述一个或多个工作流模板的指示;以及
使得开发者能够与所述图形用户界面交互以从所述模板库中选择工作流模板以包括在工作流中。
17.根据权利要求15所述的计算设备,其中所述自动生成还包括:
自动生成描述由所生成的、与所确定的所述工作流相对应的所述工作流模板执行的操作的文本。
18.根据权利要求17所述的计算设备,其中所生成的所述文本被显示在表示所生成的、与所确定的所述工作流相对应的工作流模板的图标上。
19.根据权利要求17所述的计算设备,其中所述确定工作流步骤库中的多个工作流步骤包括:
从包括在所确定的所述多个工作流步骤中过滤掉所述工作流步骤库中的至少一种特定类型的工作流步骤。
20.根据权利要求15所述的计算设备,还包括:
使得管理员能够策划所述模板库以从所述模板库中消除一个或多个工作流模板。
CN201780025654.1A 2016-04-28 2017-04-26 电子系统、计算设备和计算设备中的方法 Active CN109074537B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201662329016P 2016-04-28 2016-04-28
US201662328913P 2016-04-28 2016-04-28
US62/329,016 2016-04-28
US62/328,913 2016-04-28
US15/417,845 US11314485B2 (en) 2016-04-28 2017-01-27 Lazy generation of templates
US15/417,845 2017-01-27
PCT/US2017/029500 WO2017189636A1 (en) 2016-04-28 2017-04-26 Lazy generation of templates

Publications (2)

Publication Number Publication Date
CN109074537A CN109074537A (zh) 2018-12-21
CN109074537B true CN109074537B (zh) 2023-12-26

Family

ID=60158336

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201780025654.1A Active CN109074537B (zh) 2016-04-28 2017-04-26 电子系统、计算设备和计算设备中的方法
CN201780026370.4A Withdrawn CN109074549A (zh) 2016-04-28 2017-04-26 具有嵌入式工作流设计器的应用

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201780026370.4A Withdrawn CN109074549A (zh) 2016-04-28 2017-04-26 具有嵌入式工作流设计器的应用

Country Status (4)

Country Link
US (4) US10331416B2 (zh)
EP (1) EP3449444A1 (zh)
CN (2) CN109074537B (zh)
WO (2) WO2017189636A1 (zh)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10528327B2 (en) * 2015-11-23 2020-01-07 Microsoft Technology Licensing Llc Workflow development system with ease-of-use features
US10331416B2 (en) 2016-04-28 2019-06-25 Microsoft Technology Licensing, Llc Application with embedded workflow designer
US10979539B1 (en) 2017-07-21 2021-04-13 State Farm Mutual Automobile Insurance Company Method and system of generating generic protocol handlers
CN108829378B (zh) * 2018-05-24 2022-06-21 北京顺丰同城科技有限公司 一种应用软件的开发方法、装置及电子设备
US11768707B2 (en) * 2018-08-27 2023-09-26 Box, Inc. Workflow selection
CN110895463B (zh) * 2018-09-13 2023-06-20 百度在线网络技术(北京)有限公司 标签处理方法、装置、设备及计算机可读存储介质
US20200090097A1 (en) * 2018-09-14 2020-03-19 International Business Machines Corporation Providing user workflow assistance
EP3637339A1 (en) * 2018-10-08 2020-04-15 Augnition NV Method for in-procedure initialization of new instructural flow procedure on head-mounted display device
US10754626B2 (en) 2018-11-30 2020-08-25 Shopify Inc. Visual and code views in a process workflow user interface
US20200193221A1 (en) * 2018-12-17 2020-06-18 At&T Intellectual Property I, L.P. Systems, Methods, and Computer-Readable Storage Media for Designing, Creating, and Deploying Composite Machine Learning Applications in Cloud Environments
CN109814854B (zh) * 2019-01-24 2024-05-03 平安科技(深圳)有限公司 项目框架生成方法、装置、计算机设备和存储介质
US11409644B2 (en) 2019-03-11 2022-08-09 Microstrategy Incorporated Validation of mobile device workflows
US11194845B2 (en) 2019-04-19 2021-12-07 Tableau Software, LLC Interactive lineage analyzer for data assets
FR3097672A1 (fr) * 2019-06-21 2020-12-25 Aava Mobile Sas Système d’applications de service pour terminaux de paiement
US11354216B2 (en) 2019-09-18 2022-06-07 Microstrategy Incorporated Monitoring performance deviations
US11651003B2 (en) * 2019-09-27 2023-05-16 Tableau Software, LLC Interactive data visualization interface for data and graph models
US11669793B2 (en) 2019-10-01 2023-06-06 Box, Inc. Inter-application workflow performance analytics
US11816713B2 (en) * 2019-10-24 2023-11-14 Shopify Inc. Systems and methods for automating tasks across multiple online stores
US11966774B2 (en) 2019-10-25 2024-04-23 Microstrategy Incorporated Workflow generation using multiple interfaces
US11829421B2 (en) 2019-11-08 2023-11-28 Tableau Software, LLC Dynamic graph generation for interactive data analysis
US11086602B2 (en) * 2019-11-13 2021-08-10 Palantir Technologies Inc. Workflow application and user interface builder integrating objects, relationships, and actions
US11681572B2 (en) 2019-12-23 2023-06-20 Box, Inc. Extensible workflow access
US10908971B1 (en) * 2020-01-30 2021-02-02 Salesforce.Com, Inc. Method and system for generating a customizable connector
US20210287315A1 (en) * 2020-03-16 2021-09-16 Hantz Group, Inc. Architectures and methods for generating and transferring electronically signed document data packages
CN113312083B (zh) * 2020-07-14 2024-01-23 阿里巴巴集团控股有限公司 应用生成方法、装置及设备
US20220083679A1 (en) 2020-09-14 2022-03-17 Box, Inc. Broker-assisted workflows
WO2022075878A1 (ru) * 2020-10-08 2022-04-14 Общество С Ограниченной Ответственностью "Альбато" Способ реализации приложения встраиваемых приложений
US11444903B1 (en) * 2021-02-26 2022-09-13 Slack Technologies, Llc Contextual discovery and design of application workflow
US20220318067A1 (en) * 2021-04-06 2022-10-06 Intuit Inc. Orchestration layer for user defined automation workflows
FR3124292A1 (fr) * 2021-06-29 2022-12-23 Orange Générateur et procédé de génération de deuxièmes traitement, et dispositif de fourniture de services l’utilisant
US20230072246A1 (en) * 2021-09-07 2023-03-09 Slack Technologies, Inc. Workflow interface in a communication platform
US20230161607A1 (en) * 2021-11-23 2023-05-25 Salesforce.Com, Inc. Screen-pop configuration using flow builder application
US20230236910A1 (en) * 2022-01-24 2023-07-27 UiPath Inc. Systems and Methods for Executing Robotic Process Automation (RPA) Within a Web Browser
US11736556B1 (en) 2022-03-31 2023-08-22 UiPath Inc. Systems and methods for using a browser to carry out robotic process automation (RPA)
US11797760B1 (en) * 2022-09-29 2023-10-24 Docusign, Inc. Machine learning based instantiation of documents based on templates in a document management system
WO2024072808A1 (en) * 2022-09-29 2024-04-04 Docusign, Inc. Machine learning based generation of documents based on templates
US20240111946A1 (en) * 2022-09-29 2024-04-04 Docusign, Inc. Generating document templates in a document management system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101310233A (zh) * 2005-08-09 2008-11-19 甲骨文系统公司 通用的基于工作流的路由
CN105045228A (zh) * 2014-04-30 2015-11-11 布里斯托尔D/B/A远程自动化解决方案公司 在过程控制系统中运行的主机设备中的配置工作流

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658568B1 (en) 1995-02-13 2003-12-02 Intertrust Technologies Corporation Trusted infrastructure support system, methods and techniques for secure electronic commerce transaction and rights management
US6728762B1 (en) * 2000-01-04 2004-04-27 International Business Machines Corporation System and method for browser definition of workflow documents
US7065493B1 (en) * 2000-04-06 2006-06-20 International Business Machines Corporation Workflow system and method
WO2002029517A2 (en) * 2000-10-02 2002-04-11 International Projects Consultancy Services, Inc. Automated loan processing system and method
US7581011B2 (en) 2000-12-22 2009-08-25 Oracle International Corporation Template based workflow definition
US6603882B2 (en) 2001-04-12 2003-08-05 Seho Oh Automatic template generation and searching method
US7069536B2 (en) 2001-06-28 2006-06-27 International Business Machines Corporation Method, system, and program for executing a workflow
US7840934B2 (en) 2001-08-29 2010-11-23 Hewlett-Packard Development Company, L.P. Method and system for integrating workflow management systems with business-to-business interaction standards
US7305656B2 (en) 2002-02-14 2007-12-04 Hubbard & Wells Content management framework for use with a system for application development
US20030195762A1 (en) 2002-04-12 2003-10-16 David Gleason Automated workflow
US20040148299A1 (en) 2002-11-25 2004-07-29 Microsoft Corporation Automated workflow composable action model
US7610575B2 (en) 2003-01-08 2009-10-27 Consona Crm Inc. System and method for the composition, generation, integration and execution of business processes over a network
CN1853196A (zh) 2003-08-29 2006-10-25 皇家飞利浦电子股份有限公司 用来开发并执行图像处理协议的可执行模板的方法、设备和计算机程序
CA2451164C (en) * 2003-09-11 2016-08-30 Teamplate Inc. Customizable components
US8782616B2 (en) * 2004-01-12 2014-07-15 Hewlett-Packard Development Company, L.P. Templates for configuring digital sending devices to achieve an automated business process
US7272616B1 (en) 2004-07-29 2007-09-18 Oag Worldwide Limited Method and apparatus for generating custom configured output
US20060069605A1 (en) 2004-09-29 2006-03-30 Microsoft Corporation Workflow association in a collaborative application
US20060136490A1 (en) 2004-12-17 2006-06-22 International Business Machines Corporation Autonomic creation of shared workflow components in a provisioning management system using multi-level resource pools
WO2007052285A2 (en) * 2005-07-22 2007-05-10 Yogesh Chunilal Rathod Universal knowledge management and desktop search system
US8117549B2 (en) 2005-10-26 2012-02-14 Bruce Reiner System and method for capturing user actions within electronic workflow templates
US8284423B2 (en) 2006-04-07 2012-10-09 Ricoh Production Print Solutions LLC Customer-configurable print workflow system
US7571069B1 (en) * 2006-12-22 2009-08-04 Hewlett-Packard Development Company, L.P. Data assurance workflow derivation and execution
US7991317B2 (en) 2007-02-19 2011-08-02 Kabushiki Kaisha Toshiba Automatic job template generating apparatus and automatic job template generation method
CN101334865A (zh) 2007-06-28 2008-12-31 国际商业机器公司 工作流用户界面生成方法及生成器
US8301480B2 (en) 2007-11-01 2012-10-30 International Business Machines Corporation Automatically evolving processes in workflow automation
US20090171708A1 (en) 2007-12-28 2009-07-02 International Business Machines Corporation Using templates in a computing environment
US20090183185A1 (en) 2008-01-16 2009-07-16 Microsoft Corporation Declarative and Extensible Process Definition
US8370293B2 (en) * 2008-08-21 2013-02-05 Terarecon Inc. Workflow template management for medical image data processing
JP5422939B2 (ja) 2008-08-25 2014-02-19 富士通株式会社 変更プログラム、情報処理装置および変更方法
US8195321B2 (en) 2008-10-24 2012-06-05 Bell And Howell, Llc Item workflow tracking in an automated production environment
US20100241990A1 (en) 2009-03-23 2010-09-23 Microsoft Corporation Re-usable declarative workflow templates
US20100251155A1 (en) * 2009-03-25 2010-09-30 Microsoft Corporation Placeholder activities and in-lining of code editors in workflow designer
WO2010132492A2 (en) * 2009-05-11 2010-11-18 Experian Marketing Solutions, Inc. Systems and methods for providing anonymized user profile data
US8781998B2 (en) 2009-11-09 2014-07-15 King Fahd University Of Petroleum And Minerals Workflow automation system and method
US8627309B2 (en) 2010-02-25 2014-01-07 Microsoft Corporation Automated deployment and servicing of distributed applications
WO2012054932A2 (en) * 2010-10-22 2012-04-26 Medicity, Inc. Managing healthcare information in a distributed system
US20130247051A1 (en) 2010-12-07 2013-09-19 Fan Sun Implementation of a process based on a user-defined sub-task sequence
US20120227044A1 (en) * 2011-03-03 2012-09-06 Tata Consultancy Services Limited Automated workflow manager
US9250886B2 (en) 2011-07-01 2016-02-02 International Business Machines Corporation Optimizing provisioning workflows in cloud computing
US9395959B2 (en) 2011-12-09 2016-07-19 Microsoft Technology Licensing, Llc Integrated workflow visualization and editing
US20130152038A1 (en) 2011-12-09 2013-06-13 Microsoft Corporation Project management workflows
US9043870B1 (en) 2011-12-16 2015-05-26 Google Inc. Automated sign up based on existing online identity
US8553965B2 (en) 2012-02-14 2013-10-08 TerraRecon, Inc. Cloud-based medical image processing system with anonymous data upload and download
US9076016B2 (en) * 2012-08-20 2015-07-07 Verizon Patent And Licensing Inc. Anonymization as a service
US9557988B2 (en) 2012-09-07 2017-01-31 Inadev Corporation Workflow-based application generator
CN102999816B (zh) 2012-12-05 2016-02-24 中邮科通信技术股份有限公司 可个性化定制业务流程的工作流引擎
US10261757B2 (en) 2013-03-13 2019-04-16 Northrop Grumman Systems Corporation System and method for automated web processing service workflow building and application creation
US9600792B2 (en) 2013-04-11 2017-03-21 Siemens Aktiengesellschaft Method and apparatus for generating an engineering workflow
US20140324501A1 (en) 2013-04-30 2014-10-30 The Glassbox Incorporated Method and system for automated template creation and rollup
US9524157B2 (en) * 2013-08-06 2016-12-20 Salesforce.Com, Inc. Providing an improved web user interface framework for building web applications
WO2015077896A1 (en) 2013-11-29 2015-06-04 1033759 Alberta Ltd. Method and user interface for generating a workflow for published electronic content
US20150160809A1 (en) 2013-12-06 2015-06-11 Biodatomics, LLC Visual effects for scientific workflow editors
US8984612B1 (en) 2014-09-04 2015-03-17 Google Inc. Method of identifying an electronic device by browser versions and cookie scheduling
CN107533619A (zh) * 2015-02-05 2018-01-02 费施莱恩有限责任公司 社交工程模拟工作流装置
CN104850405A (zh) 2015-05-25 2015-08-19 武汉众联信息技术股份有限公司 一种智能可配置工作流引擎及其实现方法
US9424112B1 (en) * 2015-10-01 2016-08-23 Emc Corporation Execution plan generator and execution engine for interfacing with application programming interfaces
US10528327B2 (en) 2015-11-23 2020-01-07 Microsoft Technology Licensing Llc Workflow development system with ease-of-use features
US20170316363A1 (en) * 2016-04-28 2017-11-02 Microsoft Technology Licensing, Llc Tailored recommendations for a workflow development system
US10331416B2 (en) 2016-04-28 2019-06-25 Microsoft Technology Licensing, Llc Application with embedded workflow designer

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101310233A (zh) * 2005-08-09 2008-11-19 甲骨文系统公司 通用的基于工作流的路由
CN105045228A (zh) * 2014-04-30 2015-11-11 布里斯托尔D/B/A远程自动化解决方案公司 在过程控制系统中运行的主机设备中的配置工作流

Also Published As

Publication number Publication date
US20170316355A1 (en) 2017-11-02
CN109074549A (zh) 2018-12-21
US20170315782A1 (en) 2017-11-02
US10331416B2 (en) 2019-06-25
WO2017189638A1 (en) 2017-11-02
US11314485B2 (en) 2022-04-26
US10956128B2 (en) 2021-03-23
US20170315981A1 (en) 2017-11-02
CN109074537A (zh) 2018-12-21
US20190272154A1 (en) 2019-09-05
WO2017189636A1 (en) 2017-11-02
EP3449444A1 (en) 2019-03-06
US11210068B2 (en) 2021-12-28

Similar Documents

Publication Publication Date Title
CN109074537B (zh) 电子系统、计算设备和计算设备中的方法
US11099816B2 (en) Workflow development system with ease-of-use features
US10846153B2 (en) Bot creation with workflow development system
US20170316363A1 (en) Tailored recommendations for a workflow development system
US10353560B2 (en) Debugging a flow
US10360407B2 (en) Author anonymization
WO2017189640A1 (en) Intelligent flow designer
US20190005228A1 (en) Trusted and untrusted code execution in a workflow
US20180213048A1 (en) Secured targeting of cross-application push notifications
CN108027825B (zh) 在企业中暴露外部内容
US20230334395A1 (en) Automated code generation for data transformations in a workflow
WO2023200507A1 (en) Automated code generation for data transformations in a workflow
Gonçalves et al. VRE Architecture and Interfaces Definition

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant