CN1783132A - 通过工作流事务的批处理来同步运行库和应用状态 - Google Patents

通过工作流事务的批处理来同步运行库和应用状态 Download PDF

Info

Publication number
CN1783132A
CN1783132A CNA2005101271406A CN200510127140A CN1783132A CN 1783132 A CN1783132 A CN 1783132A CN A2005101271406 A CNA2005101271406 A CN A2005101271406A CN 200510127140 A CN200510127140 A CN 200510127140A CN 1783132 A CN1783132 A CN 1783132A
Authority
CN
China
Prior art keywords
work item
isp
affairs
assembly
workflow
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
Application number
CNA2005101271406A
Other languages
English (en)
Other versions
CN1783132B (zh
Inventor
A·索玛瑟卡兰
P·E·梅比
S·R·塔特
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 Corp
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 Corp filed Critical Microsoft Corp
Publication of CN1783132A publication Critical patent/CN1783132A/zh
Application granted granted Critical
Publication of CN1783132B publication Critical patent/CN1783132B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • 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

Landscapes

  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Engineering & Computer Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Operations Research (AREA)
  • Marketing (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Game Theory and Decision Science (AREA)
  • Educational Administration (AREA)
  • Development Economics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

用于通过批处理未提交的工作来跨通信组件维护持久状态的一致性的工作流管理。工作流组件定义包含要由服务提供者组件执行的工作项的工作流。工作流组件将工作项分配给服务提供者组件,且服务提供者组件确认所分配的工作项。工作流组件将所分配的工作项追加到批量工作。工作流组件创建包含批处理的工作项的事务。工作流组件通过请求服务提供者组件执行工作项来提交工作流。工作流组件检查工作项的执行状态,并在持久存储中储存该状态。

Description

通过工作流事务的批处理来同步运行库和应用状态
技术领域
本发明的实施例一般涉及工作流建模的领域,尤其涉及通过批处理未提交工作来跨通信组件维护持久状态的一致性。
背景技术
现有的软件系统试图通过对商业问题建模将商业问题映射到高级工作流。一般而言,工作流处理涉及一系列任务或动作、必须执行它们的顺序、定义谁能够执行它们的许可、以及对每一动作执行的脚本。工作流也可按照状态和事件来描述。工作流引擎可以是启用工作流的软件系统的组件,它实施工作流定义并执行工作流动作。
工作流引擎具有三个主要功能。首先,它验证改变对当前工作流状态是否有效。其次,它检查当前用户是否具有执行工作流事件的许可。第三,如果事件是有效的,且用户具有执行该事件的许可,则工作流引擎准许执行。例如,在管理诸如发布新闻文章所涉及的一系列任务时,必须执行一系列工作项。在本示例中,任务包括写文章、编辑所写的文章、审阅所编辑的文章、以及发布所编辑的文章。典型的工作流引擎可请求不同的服务提供者组件(例如,写组件、编辑组件、审阅组件和发布组件)执行这些工作项或任务。
软件系统的工作流引擎/组件有规律地与其它组件(例如,写组件、编辑组件等)进行通信,以监视各工作项的状态。同时,这些组件也可监视这些工作项的状态或对其设检查点。遗憾的是,这些组件没有用于保持其持久状态一致的机制。
例如,工作流引擎在执行工作流期间可调用不同的组件来执行多个工作项。工作流引擎可向这些组件发送若干消息,以确定工作项的状态。所发送的每一消息调用消息通信服务提供者组件。由于要求消息通信组件维护关于工作流的一致且持久的状态,因此除非可成功地持久保存工作流状态,否则不应当发送消息。
遗憾的是,这一类型的垂直集成的软件系统设计方法(即,实际上在数据到达之后执行工作流)具有许多缺点。例如,当一个组件正在执行特定的任务或工作项时,其它组件可能不知道该特定工作项的状态(例如,已完成、正在执行或已放弃)。另外,当在执行要执行的工作流中的一个或多个工作项时存在故障时,由于缺少状态知识,可能要求工作流引擎重新执行整个工作流。
因此,需要工作流管理中的改进来解决这些和其它缺点中的一个或多个,该改进通过一种机制来同步工作项的运行库和应用状态,该机制用于批处理工作流事务,以及用于通过批处理事务来使工作流引擎能够延迟工作项的执行并跨通信组件维护工作项的持久状态的一致性。
发明内容
本发明的实施例便于组件在持久事务中共享。换言之,这些实施例准许在单个事务中向持久存储提交工作流状态和未决的消息通信状态,这确保“设了检查点的”状态跨所有的组件是一致的。本发明的实施例包括一工作流组件,它在其对服务提供者组件的所有调用或分配的线程调用上下文中浮动批量工作对象。服务提供者组件可选择向该批量工作添加工作,该批量工作将在提交时将所有的动作作为单个事务来处理。
依照一方面,一种方法管理工作流中的状态。定义要执行的一个或多个工作项。该一个或多个定义的工作项被分配给一个或多个服务提供者组件用于执行。该一个或多个分配的工作项在稍后的时候由一个或多个服务提供者组件批处理。持久保存一个或多个批处理的工作项的状态。当一个或多个服务提供者组件执行这一个或多个提交的工作项时,一个或多个服务提供者组件提交执行一个或多个批处理的工作项。
依照另一方面,一个或多个计算机可读介质具有用于管理工作流中的状态的计算机可执行指令。工作流组件分配要执行的一个或多个工作项。工作流组件定义一个或多个工作项,并且工作流组件在稍后的时候批处理一个或多个分配的工作项。一个或多个服务提供者组件提交执行一个或多个批处理的工作项。
依照又一方面,一种系统维护服务的持久状态。工作流引擎分配要执行的一个或多个工作项。工作流引擎定义一个或多个工作项,并且工作流在稍后的时间批处理一个或多个分配的工作项。服务提供者提交执行一个或多个分配的工作项。
在再一方面,一种方法管理可由第一宿主环境执行的一个或多个工作项的工作流。在第一宿主环境处接收到执行一个或多个工作项的分配。一个或多个分配的工作项被追加到第一宿主环境处的批量工作,指示该一个或多个分配的工作项要由第一宿主环境在稍后的时间执行。在第一宿主环境处接收执行一个或多个分配的工作项的请求。第一宿主环境执行该一个或多个请求的工作项。
或者,本发明可包括各种其它方法和装置。
其它特征部分将变得显而易见,部分将在后文中指出。
附图说明
图1是依照本发明的一个实施例示出用于通过批处理未提交的工作来跨通信组件维护持久状态的一致性的系统的框图的一个示例性实施例。
图2是依照本发明的一个实施例示出通过服务提供者组件批处理工作项的示例性流程图。
图3是依照本发明的一个实施例示出对一个或多个追加的工作项的事务的示例性框图。
图4是依照本发明的一个实施例示出通过批处理未提交的工作来跨通信组件维护持久状态的一致性的操作的示例性流程图。
图5是示出其中可实现本发明的合适的计算系统环境的一个示例的框图。
贯穿附图,对应的参考标号表示对应的部分。
具体实施方式
首先参考图1,框图依照本发明的一个实施例示出了用于通过批处理未提交的工作来跨通信组件维护持久状态的一致性的系统100。系统100包括但不限于,工作流组件102、一个或多个服务提供者组件104以及持久存储106。在一个实施例中,系统100是由一个或多个组件(例如,工作流组件102、服务提供者组件104等)构成的软件系统。在另一实施例中,系统100是由包括本发明的实施例的一个或多个应用和/或软件系统构成的集成软件应用系统,如企业应用集成系统。
工作流组件102以由服务提供者组件104(例如,104-1到104-N)执行的任务的形式来管理工作。
图1中的服务提供者组件104-1到104-N是提供各种服务或工作项的组件。例如,服务提供者组件104-1可以是提供诸如接收用户搜索查询、接收在线产品定单等的Web服务的组件。在一个实施例中,服务提供者组件104是系统100(也称为宿主环境)的一部分,且服务提供者组件104是宿主。在另一环境中,服务提供者组件104的某些或全部在系统100之外。例如,服务提供者组件104-1可以在与服务提供者组件104-2分离的软件应用程序或系统中。在又一实施例中,由服务提供者组件104执行的工作项的示例可包括,但不限于,消息通信、实例、事务、持久性、线程化、定时器、角色、跟踪等。
尽管图1所示的工作流组件102和服务提供者组件104是系统100的一部分,然而可以理解,这些组件(即,工作流组件102、服务提供者组件104和/或持久存储106)可以是单独的系统(例如,单独的宿主环境)的一部分。例如,工作流组件102可以在独立的软件应用程序中,而服务提供者组件104-1和/或服务提供者组件104-2可以在诸如文字处理软件、电子表格软件等单独的软件中。
最初,工作流组件102具有要执行的一系列工作项。例如,在提供Web服务的系统中,可能需要一系列工作项来组成用于销售新产品的新网页。工作项或任务包括,但不限于,提供产品的图片、提供产品的描述、搜索产品可供性等等。在本实例中,服务提供者组件104-1到104-N提供了实现或执行这些工作项的全部或部分的服务。如图1所示,服务提供者组件104也可与持久存储106交互,而非仅与工作流组件102直接交互。
给定这一系列工作项,工作流组件102首先定义这些工作项的执行。在上述组成新网页的示例中,工作流组件102定义了工作项的执行顺序,诸如在提供产品描述之前提供产品图片等等。另外,工作流组件102定义了其它规则,诸如最终期限和/或其它业务规则。例如,工作流组件102可施加组成新网页的完成最终期限,和/或当新产品对在线顾客可用时施加头两天的折扣,等等。可以理解,可以向工作流组件102提供用于执行工作项的其它规则和/或定义。
一旦定义了这些工作项系列,工作流组件102将这些工作项分配给一个或多个服务提供者组件104。现在参考图2,流程图依照本发明的一个实施例示出了通过服务提供者组件104对工作项的批处理。例如,在调用服务提供者组件之前,工作流组件102在208对一系列工作项创建批量工作。在210-1,工作流组件102通过向服务提供者组件A(例如,服务提供者组件104-1)发送消息来分配工作项(例如,提供新产品的图片)。换言之,工作流组件102将批量工作附加到对服务提供者组件A的操作的调用上。服务提供者组件A进而创建第一工作项,并将其追加到批量工作。类似地,工作流组件102通过212-1向服务提供者组件B(例如,服务提供者组件104-2)分配另一工作(例如,提供新产品的描述)。在一个实施例中,工作流组件102通过请求服务提供者组件A延迟对工作项的执行来向服务提供者组件A分配工作项。例如,工作流组件102请求服务提供者组件A直到工作流组件102指令服务提供者组件A执行之后才执行工作项。在另一实施例中,工作流组件102可创建一个或多个批量工作,其每一个包含要由各服务提供者组件104执行的一系列工作项。
可以理解,工作流组件102可请求服务提供者组件A执行工作项,并且服务提供者组件A将所分配的工作项的一方面追加到批量工作,而非追加整个工作项。例如,由服务提供者组件A追加到批量工作的工作项可以是来自工作流组件102的请求的数据库元素。在另一示例中,由服务提供者组件B追加到批量工作的工作项可以是来自工作流组件102的同一请求的不同方面。
也可以理解,可以发生工作流组件102和每一服务提供者组件(例如,服务提供者组件A)之间的多个交互。例如,工作流组件102可通过210-2向服务提供者组件A(或通过212-2向服务提供者组件B)分配一个以上工作项,并且服务提供者组件A通过214-2将一个或多个分配的工作项追加到批量工作(或者服务提供者组件B通过216-2将一个或多个分配的工作项追加到批量工作)。
在另一示例中,工作流组件102创建与分配给特定服务提供者组件的工作项相关联的批量工作。例如,工作流组件102可对来自服务提供者组件A的工作项创建批量工作,并对来自服务提供者组件B的工作项创建另一批量工作。由此,工作流组件102按需对每一服务提供者组件创建批量工作。
服务提供者组件A经由214-1,通过向批量工作追加或添加所分配的工作项来响应于工作流组件102。类似地,服务提供者组件B通过216-1向批量工作追加工作项。例如,使用上述示例,服务提供者组件104-1向工作流102发送它能够提供用于组成新网络的新产品图片的消息。类似地,服务提供者组件104-2向工作流组件102发送它能够提供新产品描述的消息。可以构想,工作流组件102可能不知道特定服务提供者组件104如何执行特定工作项的细节。使用上述为新产品组成新网页的示例,可要求服务提供者组件104-1访问包含大量产品图片的数据库,以定位该新产品的图片。类似地,可要求服务提供者组件104-2访问包含产品描述的数据库,和/或如果数据库中没有产品描述可用,可要求服务提供者组件104-2让人工干预来提供新描述。
尽管图2中仅示出了两个服务提供者组件A和B,然而可以理解,可向这些和其它服务提供者组件分配额外的工作项。也可以理解,服务提供者组件104可拒绝执行从工作流组件102分配的工作项。
在从服务提供者组件104接收到消息之后,工作流组件102在226创建用于持久保存工作项状态的包含批处理的工作项的事务。例如,工作流组件102可在预定点或时间创建事务。在218-1,工作流组件102请求服务提供者组件A持久保存批处理的工作项(例如,提供新产品的图片)。换言之,工作流组件102向服务提供者组件A请求批处理的工作项的执行状态。服务提供者组件A在222-1通过指示批处理的工作项的状态,诸如“未执行”、“已完成”、“正在执行”、“已放弃”等来响应工作流组件102。可以理解,可向工作流组件102提供对应于特定工作项的一个或多个其它状态。类似地,工作流组件102在220-1请求服务提供者组件B(例如,服务提供者组件104-2)持久保存批处理的工作项(例如,提供新产品的描述)的执行状态,并且服务提供者组件B在224-1响应该请求。
也可以理解,工作流组件102可向服务提供者组件A发送关于另一批处理的工作项的执行状态的多个请求(例如,218-2)。同样,服务提供者组件A可响应工作流组件102(例如,在222-2),以指示另一所请求的批处理的工作项的状态。
依照本发明的一个实施例,工作流组件102创建事务来持久保存状态。工作流组件102在批量工作上迭代,并收集用于服务提供者组件A的所有工作项。在这一情况下,工作流组件102维护工作项之间的顺序,以创建特定的批量工作。在提交点,工作流组件102在调用服务提供者组件A的操作时传递事务和批量工作。服务组件A将批量工作中的工作项添加到事务。换言之,工作项被持久保存。可对具有批量工作中的项的所有组件重复这些过程。在提交通知或消息成功之后,工作流102提交该事务。然后,在成功地提交事务之后,工作流组件102在该批量工作上迭代,并收集每一组件(如上所述,对服务提供者组件A)的所有工作项。
工作流组件102下一步将工作项的状态储存在由服务提供者组件104提供的持久存储106中。例如,服务提供者组件104提供其整个资源环境,诸如持久存储106,以供工作流组件102储存工作项的状态。类似地,交互(例如,图1中服务提供者组件104-N和持久存储106之间的箭头)是示出服务提供者组件104-N访问工作流102的持久存储106来存储工作项的状态的示例。也可以理解,尽管在图1中仅示出了一个持久存储106,多个持久存储可以对工作流组件102可用,以储存工作项的状态。持久存储106可以是用于储存诸如计算机可读指令、数据结构、程序模块或其它数据的易失性和非易失性、可移动和不可移动介质(例如,图5中的系统存储器134)。有了储存的工作项的持久状态,工作流组件102能够维护工作项的一致性。换言之,工作流组件102规则地对工作项设检查点,并在检查点处储存工作项的状态,以维护所有工作项的持久状态。
在228,工作流组件102提交事务。换言之,工作流组件102请求服务提供者组件104提交批处理的工作项的执行。再次参考上文组成新产品的新网页的示例,在工作流组件102分配了完成任务所需的所有工作之后,工作流组件102请求服务提供者组件提供新产品的图片、提供新产品的描述等等。可以理解,通过工作流的这一分配、批处理和提交,工作流组件102有助于解决在分配之后执行/实现工作项的垂直集成模型的劣势和缺点。通过提供这一延迟的执行,工作流组件102在要求工作项用于执行/实现时进行管理,同时维护了工作项的一致状态。同时,每一服务提供者组件104也具有其它服务提供者组件104在特定的批量工作或事务中所具有的工作项的一致视图。
作为示例而非局限,消息通信服务提供者组件中的“Send(发送)”消息可导致对包含特别SQL(结构化查询语言)的对象的构造。在这一示例中,消息通信服务提供者组件向批量工作添加对象,即Work(工作)项。在由工作流组件确定的预定提交点,创建事务。此外,将所有未决的已分配工作项给予该事务,并且指令服务提供者组件提交执行/实现这些工作项。此时,例如,消息通信服务提供者组件执行适用于执行SQL的任何动作作为事务的一部分。然后提交该事务。
现在参考图3,框图依照本发明的一个实施例示出了具有一个或多个追加的工作项的事务304。如所讨论的,工作流组件102创建包含批处理的工作项的一个或多个批量工作的事务。在一个实施例中,事务304是包含一个或多个事务302(例如,302-1到302-N)且实际上花费长时间来完成(例如,几个月)的长期运行事务。换言之,事务302可被批处理成另一长期运行的事务,诸如事务304。每一事务302可依照事务边界来组织,如在单独的框中示出每一事务302的图3所描述的。例如,事务302-1(例如,原子事务1)具有与事务302-2(例如,原子事务2)分离的边界。通过用其单独的边界来定义事务302,工作流组件102可对事务302设检查点,以确定事务302的状况/状态。例如,工作流组件102在308检查或监视事务302-1的状态。类似地,工作流组件102在306检查事务302-2的状态。通过对事务302的状态设检查点,工作流组件102维护事务302中的工作项的持久状态。
在另一示例中,每一事务302包括包含一个或多个工作项的一个或多个批量工作。例如,原子事务302-1包括批量工作(或作用域批量工作)310,它包含一个或多个工作项(未示出)。类似地,原子事务302-2包括批量工作(或作用域批量工作)312,它包含一个或多个工作项。可以理解,尽管在图3中的原子事务302-1中仅示出了一个批301,然而每一事务302可包含一个或多个批量工作或内部作用域批量工作。
在另一实施例中,在一个或多个工作项或整个事务由于错误而未执行的情况下,工作流组件102只需放弃错误的事务中的工作项,而由于定义的事务边界,其它事务不受影响。工作流组件102首先标识与错误作用域(例如,原子事务302-1中的作用域批量工作310)有关的所有工作项,并构造错误批量工作。工作流组件102然后调用每一唯一的待决工作项的“完成”状态,并对错误批量工作中的所有工作将已完成状态设为“错误”。此外,工作流组件102放弃该批量工作中的所有工作。本实施例中的运行库在从错误中恢复之后维护对所有剩余批量工作项的引用。工作然后可在未来的持久保存点被提交。
在上述组成新网页的示例中,假定服务提供者组件104-1在提交执行事务中的工作项之后无法提供新产品的图片。在维护事务的持久状态时,工作流组件102确定特定的工作项(例如,提供新产品的图片)被放弃或未完成。工作流组件102接下来放弃该事务(即,组成新网页)中的部分或所有工作项,而其它事务(例如,对其它物品下定单等)不受这一错误事务的影响。在一个实施例中,在完成了其它事务中的其它工作项之后或从错误中恢复之后,工作流组件102可维护错误事务的引用(例如,批处理的工作项、工作项定义等),使得工作流组件102可请求服务提供者组件104在稍后的时间再次提交工作项。
在又一实施例中,服务提供者组件104-1可向工作流组件102通知或发送消息,指示它无法完成所提交的工作项的执行。结果,工作流组件102可响应于接收到的消息放弃该工作项。
图4是依照本发明的一个实施例示出通过批处理未提交的工作来跨通信组件维护持久保存的状态的一致性的操作的示例性流程图。最初,工作流组件102定义包含一组要实现/执行的工作项的工作流。在402,工作流组件102创建批量工作。工作流组件102在404向服务提供者组件(例如,服务提供者组件104-1)分配工作项。例如,工作流组件102向服务提供者组件104分配工作项(例如,提供新产品的图片)。在406,服务提供者组件104创建所分配的工作项,并将其追加到批量工作。工作流组件102在408确定是否还有更多的工作项要被追加到批量工作以完成工作流。如果确定是肯定的,则工作流组件102继续到404,以收集要追加到批量工作的其它工作项。
如果确定是否定的,则工作流组件102在410创建事务。或者,工作流组件102可在预定时间或点创建事务。在412,工作流组件102收集由事务批处理的工作项。在414,工作流组件102持久保存工作项的状态。工作流组件102下一步在416提交事务的执行。即,工作流102请求服务提供者组件104执行/实现所分配的工作。可以理解,在服务提供者组件104提交工作项的执行之后,工作流组件102通过在图1的持久存储106中储存工作项的状态继续持久保存工作项的状态。
在418,工作流组件102通过周期性地对工作项/事务的状态设检查点来确定在提交的工作项的执行期间是否发生任何错误。在另一实施例中,服务提供者组件104向工作流组件102发送消息或通知工作流组件102,指示发生了错误。如果工作流组件102确定没有执行错误,则工作流组件102在420继续完成事务的执行。
或者,如果工作流组件102确定存在执行错误,或者在另一实施例中,服务提供者组件指示存在执行错误,则工作流组件102在422放弃与错误工作项/事务相关联的批量工作。换言之,工作流组件102放弃(错误作用域的)内部批量工作中的所有项,且工作流组件102维护周围作用域中的工作项,用于本实施例中的稍后的提交点。在424,工作流组件102完成非错误工作项的执行。工作流组件102在426维护与错误工作项相关联的工作的引用,并可继续令服务提供者组件104在稍后的时间提交错误的工作项(如由虚线所示的)。附录A提供了用于工作流事务批处理的示例性协议。
本发明通过实现包含具体化本发明的至少某些特征的工作项的批量工作,提供了优于常规工作流系统设计和建模的优点。在操作中,包含一个或多个组件或软件系统的软件系统包括管理工作流的工作流组件。工作流组件最初定义要由一个或多个服务提供者组件执行的工作流(例如,组成新产品的新网页)。例如,用于组成新网页的工作流可包括诸如提供新产品的图片、提供新产品的描述、确定新产品的可供性等工作项。可以理解,服务提供者组件可以在与工作流组件分离的软件系统、应用程序或包中。
工作流组件创建批量工作,并发送向服务提供者组件分配工作项的消息。服务提供者组件确定所分配的工作项是否可被执行/实现。如果确定是肯定的,则服务提供者组件将工作项追加到批量工作中。可以理解,通过这一批处理过程,工作流组件延迟了分配的工作项的实际上同时的执行。
工作流组件接下来创建包含批处理的工作项的事务。工作流组件通过对事务/工作项设检查点并将工作项的状态储存在持久存储中,来周期性地持久保存工作项的状态。通过这样做,工作流组件维护了工作项在各事务中的持久状态的一致性。工作流组件通过请求服务提供者组件执行/实现工作项来提交事务。
在发生执行错误的情况下,工作流组件放弃错误的工作项。工作流组件继续完成非错误工作项的执行。在一个实施例中,服务提供者组件向工作流组件发送指示发生执行错误的消息。在从错误执行中恢复或完成了非错误工作项的执行之后,工作流组件可在稍后的时间提交错误的工作项。
图5示出了计算机130形式的通用计算设备的一个示例。在本发明的一个实施例中,诸如计算机130等计算机适用于此处所示和描述的其它附图。计算机130具有一个或多个处理器或处理单元132以及系统存储器134。在所示的实施例中,系统总线136将包括系统存储器134的各种系统组件耦合至处理器132。总线136表示若干种总线结构类型的一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各类总线体系结构的处理器或局部总线。作为示例而非局限,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线以及外围部件互连(PCI)总线,也称为Mezzanine总线。
计算机130通常包括至少某一形式的计算机可读介质。计算机可读介质可以包括易失性和非易失性介质、可移动和不可移动介质,可以是可由计算机130访问的任一可用介质。作为示例而非局限,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法或技术实现的易失性和非易失性,可移动和不可移动介质。例如,计算机存储介质包括RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、盒式磁带、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机130访问的任一其它介质。通信介质通常具体化为诸如载波或其它传输机制的已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送介质。本领域的技术人员熟悉已调制数据信号,它以对信号中的信息进行编码的方式设置或改变其一个或多个特征。如有线网络或直接连线连接等有线介质,以及如声学、RF、红外和其它无线介质等无线介质是通信介质的示例。上述任一的组合也应当包括在计算机可读介质的范围之内。
系统存储器134包括可移动和/或不可移动、易失性和/或非易失性存储器形式的计算机存储介质。在所示的实施例中,系统存储器134包括只读存储器(ROM)138和随机存取存储器(RAM)140。基本输入/输出系统142(BIOS)包括如在启动时帮助在计算机130内的元件之间传输信息的基本例程,通常储存在ROM 138中。RAM 140通常包含处理单元132立即可访问和/或当前正在操作的数据和/或程序模块。作为示例而非局限,图5示出了操作系统144、应用程序146、其它程序模块148和程序数据150。
计算机130也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。例如,图5示出了对不可移动、非易失性磁介质进行读写的硬盘驱动器154。图5还示出了对可移动、非易失性磁盘158进行读写的磁盘驱动器156以及对可移动、非易失性光盘162,如CD-ROM或其它光学介质进行读写的光盘驱动器160。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,盒式磁带、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器154、磁盘驱动器156和光盘驱动器160通常通过非易失性存储器接口,如接口166连接到系统总线136。
上文讨论并在图5示出的驱动器及其关联的计算机存储介质为计算机130提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图5中,示出硬盘驱动器154储存操作系统170、应用程序172、其它程序模块174和程序数据176。注意,这些组件可以与操作系统144、应用程序146、其它程序模块148和程序数据150相同,也可以与它们不同。这里对操作系统170、应用程序172、其它程序模块174和程序数据176给予不同的标号来说明至少它们是不同的副本。
用户可以通过输入设备,如键盘180和定位设备182(例如鼠标、跟踪球或触摸板)向计算机130输入命令和信息。其它输入设备(未示出)可包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至系统总线136的用户输入接口184连接至处理单元132,但是也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。监视器188或其它类型的显示设备也通过接口,如视频接口190连接至系统总线136。除监视器188之外,计算机通常可包括其它外围输出设备(未示出),如扬声器和打印机,它们通过输出外围接口(未示出)连接。
计算机130可以使用到一个或多个远程计算机,如远程计算机194的逻辑连接在网络化环境中操作。远程计算机194可以是个人计算机、服务器、路由器、网络PC、对等设备或其它普通网络节点,并通常包括许多或所有相对于计算机130所描述的元件。图5描述的逻辑连接包括局域网(LAN)196和广域网(WAN)198,但也可包括其它网络。LAN 196和/或WAN 198可以是有线网络、无线网络、其组合等等。这类网络环境常见于办公室、企业范围计算机网络、内联网以及全球计算机网络(例如,因特网)。
当在局域网网络环境中使用时,计算机130通过网络接口或适配器186连接至LAN 196。当在广域网网络环境中使用时,计算机130通常包括调制解调器178或用于通过WAN 198,如因特网建立通信的其它装置。调制解调器178可以是内置或外置的,通过用户输入接口184或其它适当的机制连接至系统总线136。在网络化环境中,相对于计算机130所描述的程序模块或其部分可储存在远程存储器存储设备(未示出)中。作为示例而非局限,图5示出了远程应用程序192驻留在存储器设备上。示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它手段。
一般而言,计算机130的数据处理器通过在不同的时刻储存在计算机的各种计算机可读存储介质中的指令来编程。程序和操作系统通常分布在例如软盘或CD-ROM上。从那里,它们被安装或加载到计算机的次级存储器中。在执行时,它们被至少部分地加载到计算机的主电子存储器中。当这些和其它各种类型的计算机可读存储介质包含下文结合微处理器或其它数据处理器描述的步骤的指令或程序时,此处所描述的本发明包括这类介质。当依照此处所描述的方法和技术来编程时,本发明也包括计算机本身。
为说明起见,诸如操作系统等程序和其它可执行程序组件此处被示为离散的框。然而,可以认识到,这些程序和组件在不同的时刻驻留在计算机的不同存储组件中,并由计算机的数据处理器来执行。
尽管结合了包括计算机130的示例性计算系统环境来描述,然而本发明可用众多其它通用或专用计算系统环境或配置来操作。该计算系统环境并不旨在对本发明的使用范围或功能提出任何局限。此外,该计算系统环境不应当被解释为对示例性操作环境中所示的组件的任一个或其组合具有任何依赖性或要求。适用于本发明的公知的计算系统、环境和/或配置的示例包括但不限于,个人计算机、服务器计算机、手持式或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子设备、移动电话、网络PC、小型机、大型机、包括任一上述系统或设备的分布式计算环境等等。
本发明可在诸如由一个或多个计算机或其它设备执行的程序模块等计算机可执行指令的一般上下文环境中描述。一般而言,程序模块包括但不限于,例程、程序、对象、组件、数据结构等等,它们执行特定的任务或实现特定的抽象数据类型。本发明也可以在分布式计算环境中实践,其中,任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质中。
软件体系结构环境中的接口包括软件模块、组件、代码部分、或其它计算机可执行指令序列。接口包括,例如访问第二模块来代表第一模块执行计算任务的第一模块。在一个示例中,第一和第二模块诸如由操作系统提供的应用程序编程接口(API)、组件对象模型(COM)接口(例如,用于对等应用程序通信)、以及可扩展标记语言元数据交换格式(XMI)接口(例如,用于Web服务之间的通信)。
接口可以是诸如Java 2平台企业版(J2EE)、COM或分布式COM(DCOM)示例中的紧耦合的同步实现。或者或除此之外,接口可以是诸如Web服务(例如,使用简单对象访问协议)中的松耦合的异步实现。一般而言,接口包括以下特征的任一组合:紧耦合的、松耦合的、同步和异步。此外,接口可符合标准协议、专有协议、或标准和专有协议的任何组合。
此处所描述的接口可以都是单个接口的一部分,或者可以被实现为单独的接口或其中的任何组合。接口可以本地或远程地执行以提供功能。此外,接口可包括比此处所示或所描述的更多或更少的功能。
此处所示且描述的方法的执行或实现顺序不是必要的,除非另外指定。即,方法的元素可以用任何顺序来执行,除非另外指定,且方法可包括比此处所揭示的更多或更少的元素。例如,可以构想,在另一元素之前、与其同时或之后执行或实现特定元素是在本发明的范围之内。
当介绍本发明或其实施例的元素时,冠词“一”、“一个”、“该”和“所述”意指存在一个或多个元素。术语“包括”、“包含”和“具有”旨在包含性的,且意味着除所列出的元素之外还可以有其它元素。
鉴于以上内容,可以看到,实现了本发明的若干目标并获得了其它有利结果。
由于可在不脱离本发明的范围的情况下在上述产品和方法中做出各种改变,因此包含在上述说明书并在附图中示出的所有内容都应当被解释为说明性而非限制性的。
附录A
工作流事务批处理
在示例性工作流的执行期间,运行库调用其服务来完成工作。例如,发送工作流活动是对消息通信服务的调用。消息通信服务处理发送请求,并维护与发送相关联的特定状态。事务/持久模型的要求之一是维护由不同服务维护的状态和工作流运行库之间的一致性。当工作流到达提交点时,运行库调用持久服务并分发其工作流实例状态。该实例状态和其它服务工作可以被批处理,并被提交给参与单个事务的持久资源管理器(RM)。
如果B0和B1是单独的批量工作(例如,见图3中的事务304和原子事务302-N),在提交点,整个工作集合{B0,B1}需要在事务中提交。在事务失败时,要求是与B0相关联的工作被丢弃。与B1相关联的工作应当对随后的点继续存在。
依照本发明的一个实施例,为便于提供者在同一事务中共享,运行库在对其服务的所有调用的线程调用环境中浮动WorkBatch(批量工作)对象。服务可选择向该批量工作添加工作。例如,消息通信服务中的Send(发送)方法可导致构造包含特别SQL的对象。消息通信服务然后可将对象添加到WorkBatch。在预定提交点,调用消息通信服务IPendingWork.Complete方法,并且其所有待决的工作被退还给它。服务然后可执行适用于执行SQL的任何动作作为事务的一部分。
例如,名字空间Microsoft.Workflow.Runtime:
public sealed class WorkBatch
{
       public void Add(IPendingWork work,obj ect workItem);
}
Add方法可用于向批量工作添加待决的工作项。提供者用对实现IPendingWork接口的对象的引用来对添加到批量工作的工作加标签。该对象将处理工作的最终提交。在以下示例中,持久提供者本身实现IPendingWork接口。
接口IPendingWork被定义为:
interface IPendingWork
{
       void Commit(ITransaction transaction,IList<object>items);
       void Complete(bool succeeded,IList<object>items);
}
在Commit方法中,使用事务对象将工作项列表提交给数据库。
Complete方法执行必要的清除。该方法由运行库在完成了项列表中的工作的处理时调用。如果工作被成功地完成,则succeeded=true,否则succeeded=false。
作为对该示例的补充,提交点的动作序列包括:
a.运行库调用PersistenceService∷Save方法。
b.运行库调用TransactionService∷Create方法,并获取System.ICommitableTransaction
c.运行库在其工作集合上迭代,并收集引用同一IPendingWork对象的所有项。它然后每次调用每一唯一IPendingWork对象的Commit方法,传递Transaction和所有其未决工作的列表。
d.在Commit通知成功之后,运行库调用ICommittableTransaction∷Commit
e.在事务成功之后,运行库每次调用每一唯一IPendingWork对象的Complete方法,传递succeeded=true以及其所有未决工作的列表。
在工作流错误时的示例性动作序列包括:
a.运行库基于工作流模型语义(原子作用域)决定放弃与错误作用域有关的IPendingWork对象。
b.运行库对所有放弃的工作调用每一唯一IPendingWork的Complete方法,其中完成状态=false。
c.运行库维护对其语义告知它在从错误中恢复之后仍然有效的任何工作的引用。该工作然后可在未来的持久保存点提交。

Claims (20)

1.一种用于管理工作流中的状态的方法,所述方法包括:
定义要执行的一个或多个工作项;
将所述一个或多个定义的工作项分配给一个或多个服务提供者组件用于执行;
在稍后的时间使所述一个或多个分配的工作项由所述一个或多个服务提供者组件批处理;
持久保存所述一个或多个批处理的工作项的状态;以及
提交所述一个或多个服务提供者组件以执行所述一个或多个批处理的工作项,其中,所述一个或多个服务提供者组件执行所述一个或多个提交的工作项。
2.如权利要求1所述的方法,其特征在于,
所述提交过程包括以下的至少一个:创建事务;以及将所述一个或多个批处理的工作项追加到事务。
3.如权利要求2所述的方法,其特征在于,追加包括根据所述一个或多个定义的工作项对所述事务中一个或多个追加的工作项进行分段。
4.如权利要求1所述的方法,其特征在于,
所述一个或多个服务提供者组件是以下的一个或多个的一部分:一个或多个宿主环境以及远离所述一个或多个定义的工作项的一个或多个宿主环境,以及
所述一个或多个工作项包括以下的至少一个或多个:消息通信、实例、事务、持久性、线程化、定时、角色和跟踪。
5.如权利要求1所述的方法,其特征在于,还包括由所述一个或多个服务提供者组件在执行所述一个或多个提交的工作项失败之后发送消息。
6.如权利要求1所述的方法,其特征在于,持久保存包括将所述一个或多个批处理的工作项的状态保存在计算机可读介质中,其中,所述一个或多个分配的工作项的状态包括以下的至少一个:已完成、正在执行和已放弃。
7.如权利要求1所述的方法,其特征在于,一个或多个计算机可读介质具有用于执行如权利要求1所述的方法的计算机可执行指令。
8.一个或多个具有用于管理工作流中的状态的计算机可执行组件的计算机可读介质,所述组件包括:
工作流组件,用于分配要执行的一个或多个工作项,其中,所述工作流组件定义所述一个或多个工作项,其中,所述工作流组件在稍后的时间批处理所述一个或多个分配的工作项;以及
一个或多个服务提供者组件,用于提交执行所述一个或多个批处理的工作项。
9.如权利要求8所述的计算机可读介质,其特征在于,还包括用于储存所述一个或多个批处理的工作项的持久状态的存储器,其中,所述一个或多个批处理的工作项的持久状态包括以下的至少一个:已完成、正在执行以及已放弃。
10.如权利要求8所述的计算机可读介质,其特征在于,所述工作流组件创建事务,所述事务包括所述一个或多个批处理的工作项。
11.如权利要求8所述的计算机可读介质,其特征在于,所述工作流组件还包括根据所述一个或多个定义的工作项对所述事务中的一个或多个分配的工作项分段。
12.如权利要求8所述的计算机可读介质,其特征在于,所述一个或多个服务提供者组件是一个或多个宿主环境的一部分。
13.如权利要求8所述的计算机可读介质,其特征在于,所述工作流组件将所述一个或多个定义的工作项分配给一个或多个服务提供者组件用于执行,所述一个或多个服务提供者组件是远离所述一个或多个定义的工作项的一个或多个宿主环境的一部分。
14.如权利要求8所述的计算机可读介质,其特征在于,所述一个或多个服务提供者组件在执行所述一个或多个提交的工作项失败之后通知所述工作流组件。
15.一种用于管理可由第一宿主环境执行的一个或多个工作项的工作流的方法,所述方法包括:
在所述第一宿主环境处接收执行一个或多个工作项的分配;
将所述一个或多个分配的工作项追加到批量工作,其中,追加指示所述一个或多个分配的工作项要由所述第一宿主环境在稍后的时间执行;
在所述第一宿主环境处接收执行所述一个或多个分配的工作项的请求;以及
在所述第一宿主环境处执行所述一个或多个请求的工作项。
16.如权利要求15所述的方法,其特征在于,
所述分配包括一个或多个定义的工作项,
所述事务包括根据所述一个或多个定义的工作项为所述事务中的一个或多个工作项定义原子事务边界,以及
所述一个或多个工作项可在第二宿主环境中执行。
17.如权利要求15所述的方法,其特征在于,还包括依照所定义的一个或多个工作项的原子事务边界,将所述一个或多个批处理的工作项的状态保存在所述事务中。
18.如权利要求15所述的方法,其特征在于,还包括将所述一个或多个批处理的工作项的状态保存在计算机可读介质中,其中,所述一个或多个批处理的工作项的状态包括以下的至少一个:已完成、正在执行以及已放弃。
19.如权利要求15所述的方法,其特征在于,还包括将所述批量工作追加到事务。
20.如权利要求15所述的方法,其特征在于,还包括由所述第一宿主环境在执行所述一个或多个提交的工作项失败后发送消息。
CN200510127140.6A 2004-12-22 2005-11-22 通过工作流事务的批处理来同步运行库和应用状态 Expired - Fee Related CN1783132B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/023,769 US7665093B2 (en) 2004-12-22 2004-12-22 Synchronization of runtime and application state via batching of workflow transactions
US11/023,769 2004-12-22

Publications (2)

Publication Number Publication Date
CN1783132A true CN1783132A (zh) 2006-06-07
CN1783132B CN1783132B (zh) 2014-11-19

Family

ID=36000930

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200510127140.6A Expired - Fee Related CN1783132B (zh) 2004-12-22 2005-11-22 通过工作流事务的批处理来同步运行库和应用状态

Country Status (5)

Country Link
US (1) US7665093B2 (zh)
EP (1) EP1675056A1 (zh)
JP (1) JP2006178935A (zh)
KR (1) KR20060071860A (zh)
CN (1) CN1783132B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105094758A (zh) * 2014-04-29 2015-11-25 国际商业机器公司 用于避免事务回滚的方法和装置
CN107423046A (zh) * 2007-07-26 2017-12-01 起元技术有限责任公司 用于处理基于图的计算的方法、系统以及计算机可读介质
CN111400352A (zh) * 2020-03-18 2020-07-10 北京三维天地科技股份有限公司 一种可进行数据批量处理的工作流引擎
US10901702B2 (en) 2013-12-05 2021-01-26 Ab Initio Technology Llc Managing interfaces for sub-graphs

Families Citing this family (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9552599B1 (en) * 2004-09-10 2017-01-24 Deem, Inc. Platform for multi-service procurement
US20080184250A1 (en) * 2007-01-30 2008-07-31 Microsoft Corporation Synchronizing Workflows
US8180658B2 (en) * 2007-01-30 2012-05-15 Microsoft Corporation Exploitation of workflow solution spaces to account for changes to resources
US20080307035A1 (en) * 2007-06-05 2008-12-11 Erik John Burckart System and Method for Off-loading Online Meeting Updates Using Forward Proxy
US8326814B2 (en) 2007-12-05 2012-12-04 Box, Inc. Web-based file management system and service
US8108868B2 (en) * 2007-12-18 2012-01-31 Microsoft Corporation Workflow execution plans through completion condition critical path analysis
JP2009217587A (ja) * 2008-03-11 2009-09-24 Hitachi Ltd バッチ処理装置及び方法
US8161492B2 (en) * 2008-04-15 2012-04-17 Microsoft Corporation Continuation based runtimes in transactions
JP5128365B2 (ja) * 2008-05-09 2013-01-23 キヤノンソフトウェア株式会社 情報処理システム、情報処理方法、プログラム、及び、記録媒体
US20090307651A1 (en) * 2008-06-05 2009-12-10 Shanmugam Senthil Computing Platform for Structured Data Processing
US10169199B2 (en) 2008-06-10 2019-01-01 Microsoft Technology Licensing, Llc Automatic model-specific debugger extensions
WO2010018637A1 (ja) * 2008-08-15 2010-02-18 富士通株式会社 業務フロー分散処理システム及び方法
US8683432B2 (en) * 2009-03-20 2014-03-25 Microsoft Corporation Providing execution context in continuation based runtimes
US20100293538A1 (en) * 2009-05-15 2010-11-18 Microsoft Corporation Dynamic program updating in a continuation based runtime
US8468529B2 (en) * 2009-05-27 2013-06-18 Microsoft Corporation Correlating, logging and tracing messaging events between workflow instances with globally unique identifiers
US8250588B2 (en) 2009-06-16 2012-08-21 Microsoft Corporation Persisting application state
US8205113B2 (en) * 2009-07-14 2012-06-19 Ab Initio Technology Llc Fault tolerant batch processing
US8281309B2 (en) * 2009-08-31 2012-10-02 Accenture Global Services Limited Optimization system for controlling batch job processing traffic transmitted to a mainframe computer
US8424009B2 (en) 2009-12-04 2013-04-16 Microsoft Corporation Lock resolution for distributed durable instances
US20110173947A1 (en) * 2010-01-19 2011-07-21 General Electric Company System and method for gas turbine power augmentation
US8417805B2 (en) * 2010-01-26 2013-04-09 Microsoft Corporation Controlling execution of services across servers
US8296780B2 (en) * 2010-03-23 2012-10-23 Microsoft Corporation Reducing persistence commands
US10078674B2 (en) * 2010-06-04 2018-09-18 Mcl Systems Limited Integrated workflow and database transactions
GB2500356A (en) 2011-01-20 2013-09-18 Box Inc Real time notification of activities that occur in a web-based collaboration environment
US8538793B2 (en) * 2011-02-17 2013-09-17 Infosys Limited System and method for managing real-time batch workflows
US9015601B2 (en) 2011-06-21 2015-04-21 Box, Inc. Batch uploading of content to a web-based collaboration environment
US9063912B2 (en) 2011-06-22 2015-06-23 Box, Inc. Multimedia content preview rendering in a cloud content management system
US9652741B2 (en) 2011-07-08 2017-05-16 Box, Inc. Desktop application for access and interaction with workspaces in a cloud-based content management system and synchronization mechanisms thereof
GB2503625A (en) 2011-07-08 2014-01-01 Box Inc Collaboration sessions in a workspace on cloud-based content management system
US8862975B2 (en) 2011-09-19 2014-10-14 Microsoft Corporation Web-based workflow service visualization and navigation
US9197718B2 (en) 2011-09-23 2015-11-24 Box, Inc. Central management and control of user-contributed content in a web-based collaboration environment and management console thereof
US8515902B2 (en) 2011-10-14 2013-08-20 Box, Inc. Automatic and semi-automatic tagging features of work items in a shared workspace for metadata tracking in a cloud-based content management system with selective or optional user contribution
WO2013062599A1 (en) 2011-10-26 2013-05-02 Box, Inc. Enhanced multimedia content preview rendering in a cloud content management system
US9098474B2 (en) 2011-10-26 2015-08-04 Box, Inc. Preview pre-generation based on heuristics and algorithmic prediction/assessment of predicted user behavior for enhancement of user experience
US8990307B2 (en) 2011-11-16 2015-03-24 Box, Inc. Resource effective incremental updating of a remote client with events which occurred via a cloud-enabled platform
GB2500152A (en) 2011-11-29 2013-09-11 Box Inc Mobile platform file and folder selection functionalities for offline access and synchronization
US9019123B2 (en) 2011-12-22 2015-04-28 Box, Inc. Health check services for web-based collaboration environments
US9904435B2 (en) 2012-01-06 2018-02-27 Box, Inc. System and method for actionable event generation for task delegation and management via a discussion forum in a web-based collaboration environment
US11232481B2 (en) 2012-01-30 2022-01-25 Box, Inc. Extended applications of multimedia content previews in the cloud-based content management system
US9965745B2 (en) 2012-02-24 2018-05-08 Box, Inc. System and method for promoting enterprise adoption of a web-based collaboration environment
US9195636B2 (en) 2012-03-07 2015-11-24 Box, Inc. Universal file type preview for mobile devices
US9054919B2 (en) 2012-04-05 2015-06-09 Box, Inc. Device pinning capability for enterprise cloud service and storage accounts
US9575981B2 (en) 2012-04-11 2017-02-21 Box, Inc. Cloud service enabled to handle a set of files depicted to a user as a single file in a native operating system
US9413587B2 (en) 2012-05-02 2016-08-09 Box, Inc. System and method for a third-party application to access content within a cloud-based platform
US9691051B2 (en) 2012-05-21 2017-06-27 Box, Inc. Security enhancement through application access control
US8914900B2 (en) 2012-05-23 2014-12-16 Box, Inc. Methods, architectures and security mechanisms for a third-party application to access content in a cloud-based platform
US9027108B2 (en) 2012-05-23 2015-05-05 Box, Inc. Systems and methods for secure file portability between mobile applications on a mobile device
US9021099B2 (en) 2012-07-03 2015-04-28 Box, Inc. Load balancing secure FTP connections among multiple FTP servers
GB2505072A (en) 2012-07-06 2014-02-19 Box Inc Identifying users and collaborators as search results in a cloud-based system
US9712510B2 (en) 2012-07-06 2017-07-18 Box, Inc. Systems and methods for securely submitting comments among users via external messaging applications in a cloud-based platform
US9792320B2 (en) 2012-07-06 2017-10-17 Box, Inc. System and method for performing shard migration to support functions of a cloud-based service
US9237170B2 (en) 2012-07-19 2016-01-12 Box, Inc. Data loss prevention (DLP) methods and architectures by a cloud service
US9794256B2 (en) 2012-07-30 2017-10-17 Box, Inc. System and method for advanced control tools for administrators in a cloud-based service
US8868574B2 (en) 2012-07-30 2014-10-21 Box, Inc. System and method for advanced search and filtering mechanisms for enterprise administrators in a cloud-based environment
US9369520B2 (en) 2012-08-19 2016-06-14 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
US8745267B2 (en) 2012-08-19 2014-06-03 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
GB2513671A (en) 2012-08-27 2014-11-05 Box Inc Server side techniques for reducing database workload in implementing selective subfolder synchronization in a cloud-based environment
US9135462B2 (en) 2012-08-29 2015-09-15 Box, Inc. Upload and download streaming encryption to/from a cloud-based platform
US9117087B2 (en) 2012-09-06 2015-08-25 Box, Inc. System and method for creating a secure channel for inter-application communication based on intents
US9195519B2 (en) 2012-09-06 2015-11-24 Box, Inc. Disabling the self-referential appearance of a mobile application in an intent via a background registration
US9311071B2 (en) 2012-09-06 2016-04-12 Box, Inc. Force upgrade of a mobile application via a server side configuration file
US9292833B2 (en) * 2012-09-14 2016-03-22 Box, Inc. Batching notifications of activities that occur in a web-based collaboration environment
US10200256B2 (en) 2012-09-17 2019-02-05 Box, Inc. System and method of a manipulative handle in an interactive mobile user interface
CN102902572B (zh) * 2012-09-17 2015-06-10 北京中电普华信息技术有限公司 一种基于消息分段式的工作流引擎以及集群系统
US9553758B2 (en) 2012-09-18 2017-01-24 Box, Inc. Sandboxing individual applications to specific user folders in a cloud-based service
US10915492B2 (en) 2012-09-19 2021-02-09 Box, Inc. Cloud-based platform enabled with media content indexed for text-based searches and/or metadata extraction
US9959420B2 (en) 2012-10-02 2018-05-01 Box, Inc. System and method for enhanced security and management mechanisms for enterprise administrators in a cloud-based environment
US9705967B2 (en) 2012-10-04 2017-07-11 Box, Inc. Corporate user discovery and identification of recommended collaborators in a cloud platform
US9495364B2 (en) 2012-10-04 2016-11-15 Box, Inc. Enhanced quick search features, low-barrier commenting/interactive features in a collaboration platform
US9665349B2 (en) 2012-10-05 2017-05-30 Box, Inc. System and method for generating embeddable widgets which enable access to a cloud-based collaboration platform
JP5982343B2 (ja) 2012-10-17 2016-08-31 ボックス インコーポレイテッドBox, Inc. クラウドベース環境におけるリモートキー管理
US9756022B2 (en) 2014-08-29 2017-09-05 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US10235383B2 (en) 2012-12-19 2019-03-19 Box, Inc. Method and apparatus for synchronization of items with read-only permissions in a cloud-based environment
US9396245B2 (en) 2013-01-02 2016-07-19 Box, Inc. Race condition handling in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9953036B2 (en) 2013-01-09 2018-04-24 Box, Inc. File system monitoring in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
EP2755151A3 (en) 2013-01-11 2014-09-24 Box, Inc. Functionalities, features and user interface of a synchronization client to a cloud-based environment
EP2757491A1 (en) 2013-01-17 2014-07-23 Box, Inc. Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform
US9323619B2 (en) 2013-03-15 2016-04-26 International Business Machines Corporation Deploying parallel data integration applications to distributed computing environments
US9401835B2 (en) 2013-03-15 2016-07-26 International Business Machines Corporation Data integration on retargetable engines in a networked environment
US9256460B2 (en) * 2013-03-15 2016-02-09 International Business Machines Corporation Selective checkpointing of links in a data flow based on a set of predefined criteria
US10846074B2 (en) 2013-05-10 2020-11-24 Box, Inc. Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client
US10725968B2 (en) 2013-05-10 2020-07-28 Box, Inc. Top down delete or unsynchronization on delete of and depiction of item synchronization with a synchronization client to a cloud-based platform
US9633037B2 (en) 2013-06-13 2017-04-25 Box, Inc Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform
US9805050B2 (en) 2013-06-21 2017-10-31 Box, Inc. Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform
US10229134B2 (en) 2013-06-25 2019-03-12 Box, Inc. Systems and methods for managing upgrades, migration of user data and improving performance of a cloud-based platform
US10110656B2 (en) 2013-06-25 2018-10-23 Box, Inc. Systems and methods for providing shell communication in a cloud-based platform
US9535924B2 (en) 2013-07-30 2017-01-03 Box, Inc. Scalability improvement in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9477511B2 (en) 2013-08-14 2016-10-25 International Business Machines Corporation Task-based modeling for parallel data integration
GB2518298A (en) 2013-09-13 2015-03-18 Box Inc High-availability architecture for a cloud-based concurrent-access collaboration platform
US9213684B2 (en) 2013-09-13 2015-12-15 Box, Inc. System and method for rendering document in web browser or mobile device regardless of third-party plug-in software
US10509527B2 (en) 2013-09-13 2019-12-17 Box, Inc. Systems and methods for configuring event-based automation in cloud-based collaboration platforms
US9704137B2 (en) 2013-09-13 2017-07-11 Box, Inc. Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform
US8892679B1 (en) 2013-09-13 2014-11-18 Box, Inc. Mobile device, methods and user interfaces thereof in a mobile device platform featuring multifunctional access and engagement in a collaborative environment provided by a cloud-based platform
US9535909B2 (en) 2013-09-13 2017-01-03 Box, Inc. Configurable event-based automation architecture for cloud-based collaboration platforms
US10866931B2 (en) 2013-10-22 2020-12-15 Box, Inc. Desktop application for accessing a cloud collaboration platform
US10530854B2 (en) 2014-05-30 2020-01-07 Box, Inc. Synchronization of permissioned content in cloud-based environments
US9602514B2 (en) 2014-06-16 2017-03-21 Box, Inc. Enterprise mobility management and verification of a managed application by a content provider
US10574442B2 (en) 2014-08-29 2020-02-25 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US9894119B2 (en) 2014-08-29 2018-02-13 Box, Inc. Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms
US10038731B2 (en) 2014-08-29 2018-07-31 Box, Inc. Managing flow-based interactions with cloud-based shared content
US9311134B1 (en) * 2014-09-29 2016-04-12 International Business Machines Corporation Automated creation of executable workflow
US11216764B2 (en) * 2017-07-11 2022-01-04 Jpmorgan Chase Bank, N.A. Systems and methods for distributed business process management
US11458621B2 (en) * 2017-09-27 2022-10-04 Kindred Systems Inc. Systems, devices, articles, and methods for parallelization of robots in synchronous communication framework
CN110264076B (zh) * 2019-06-19 2020-11-06 深圳市艾迪思特信息技术有限公司 一种物联网事务管理系统

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3267066B2 (ja) * 1994-09-30 2002-03-18 富士ゼロックス株式会社 ワークフロー支援システム
US5634127A (en) * 1994-11-30 1997-05-27 International Business Machines Corporation Methods and apparatus for implementing a message driven processor in a client-server environment
US5774661A (en) * 1995-04-18 1998-06-30 Network Imaging Corporation Rule engine interface for a visual workflow builder
US6353844B1 (en) * 1996-12-23 2002-03-05 Silicon Graphics, Inc. Guaranteeing completion times for batch jobs without static partitioning
US5960404A (en) * 1997-08-28 1999-09-28 International Business Machines Corp. Mechanism for heterogeneous, peer-to-peer, and disconnected workflow operation
US6225998B1 (en) * 1997-12-02 2001-05-01 Aspect Communications Visual design of workflows for transaction processing
US6115646A (en) * 1997-12-18 2000-09-05 Nortel Networks Limited Dynamic and generic process automation system
US6430538B1 (en) 1998-04-30 2002-08-06 Enterworks Workflow management system, method and medium with personal subflows
WO2000014618A2 (en) * 1998-08-24 2000-03-16 Fujitsu Limited Workflow system and method
WO2000054202A2 (en) 1999-03-11 2000-09-14 Paysys International, Inc. Methods and systems for developing applications and for interfacing with users
JP2000348111A (ja) * 1999-06-01 2000-12-15 Hitachi Ltd ワークフロー管理方法及びその実施装置並びにその処理プログラムを記録した記録媒体
US6609128B1 (en) * 1999-07-30 2003-08-19 Accenture Llp Codes table framework design in an E-commerce architecture
US7289964B1 (en) * 1999-08-31 2007-10-30 Accenture Llp System and method for transaction services patterns in a netcentric environment
US6625602B1 (en) * 2000-04-28 2003-09-23 Microsoft Corporation Method and system for hierarchical transactions and compensation
AU2002211405A1 (en) * 2000-10-02 2002-04-15 International Projects Consultancy Services, Inc. Object-based workflow system and method
US7174534B2 (en) * 2001-01-22 2007-02-06 Symbol Technologies, Inc. Efficient system and method for running and analyzing multi-channel, multi-modal applications
US6907451B1 (en) * 2001-09-29 2005-06-14 Siebel Systems, Inc. Method, apparatus, and system for immediate posting of changes in a client server environment
US7461119B2 (en) * 2001-09-29 2008-12-02 Siebel Systems, Inc. Method, apparatus, and system for managing status of requests in a client server environment
US7089287B2 (en) * 2002-01-16 2006-08-08 Xerox Corporation Message-based system having embedded information management capabilities
US7127716B2 (en) * 2002-02-13 2006-10-24 Hewlett-Packard Development Company, L.P. Method of load balancing a distributed workflow management system
EP1502218A4 (en) * 2002-04-15 2005-08-17 Invensys Sys Inc METHOD AND DEVICES FOR A PROCESS-, FACTORY-, ENVIRONMENT-, ENVIRONMENT- AND COMPUTER AIDED MANUFACTURING-BASED OR OTHERWISE CONTROL SYSTEM WITH REAL-TIME DATA DISTRIBUTION
US20040078105A1 (en) * 2002-09-03 2004-04-22 Charles Moon System and method for workflow process management
US20040148213A1 (en) * 2002-11-25 2004-07-29 Microsoft Corporation Automated workflow constraints
US20040162741A1 (en) * 2003-02-07 2004-08-19 David Flaxer Method and apparatus for product lifecycle management in a distributed environment enabled by dynamic business process composition and execution by rule inference
US7451432B2 (en) * 2004-10-01 2008-11-11 Microsoft Corporation Transformation of componentized and extensible workflow to a declarative format

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107423046A (zh) * 2007-07-26 2017-12-01 起元技术有限责任公司 用于处理基于图的计算的方法、系统以及计算机可读介质
CN107423046B (zh) * 2007-07-26 2021-08-06 起元技术有限责任公司 用于处理基于图的计算的方法、系统以及计算机可读介质
US10901702B2 (en) 2013-12-05 2021-01-26 Ab Initio Technology Llc Managing interfaces for sub-graphs
CN105094758A (zh) * 2014-04-29 2015-11-25 国际商业机器公司 用于避免事务回滚的方法和装置
CN111400352A (zh) * 2020-03-18 2020-07-10 北京三维天地科技股份有限公司 一种可进行数据批量处理的工作流引擎

Also Published As

Publication number Publication date
US7665093B2 (en) 2010-02-16
EP1675056A1 (en) 2006-06-28
KR20060071860A (ko) 2006-06-27
US20060136279A1 (en) 2006-06-22
JP2006178935A (ja) 2006-07-06
CN1783132B (zh) 2014-11-19

Similar Documents

Publication Publication Date Title
CN1783132A (zh) 通过工作流事务的批处理来同步运行库和应用状态
US11106459B2 (en) Distributed parallel build system
CN105357038B (zh) 监控虚拟机集群的方法和系统
RU2445688C2 (ru) Моделирование пользовательского ввода и взаимодействия в приложениях на основе рабочего процесса
WO2019195121A1 (en) Digital worker management system
US7100147B2 (en) Method, system, and program for generating a workflow
US8489441B1 (en) Quality of records containing service data
US20130132296A1 (en) Networked business object sharing
US20090172674A1 (en) Managing the computer collection of information in an information technology environment
CN1831854A (zh) 识别计算环境中实际清单与期望清单的不同的系统和方法
CN1674023A (zh) 项目时间和费用
CN102576354A (zh) 支持不同部署架构的可扩展框架
CN1685351A (zh) 在执行企业计划模型期间的节点级修改
CN1685308A (zh) 企业计划环境中的实时数据汇总
CN1662901A (zh) 用于在分布式环境中监视应用性能的方法和系统
US20120215583A1 (en) System and method for managing real-time batch workflows
CN1798111A (zh) 服务器排队系统和方法
CN1685352A (zh) 在企业模型环境内选择的配置软件扩展
US20110252019A1 (en) Project management system
US8914798B2 (en) Production control for service level agreements
WO2014172566A1 (en) Milestone management
WO2019195482A1 (en) Database lock
US20120150751A1 (en) Dialog Page Interaction Model
CN1826599A (zh) 自述商务对象
CN1823331A (zh) 在集群应用服务器上配置多个企业计划模型

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150505

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150505

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20141119

Termination date: 20191122

CF01 Termination of patent right due to non-payment of annual fee