具有多同步的处理模型控制流程的制作方法

文档序号:6463624阅读:199来源:国知局
专利名称:具有多同步的处理模型控制流程的制作方法
具有多同步的处理模型控制流程技术领域本说明书涉及工作流程处理模型。
背景技术
建才莫语言可用作描述和执行诸如业务处理的下层处理的元语言。例如, 处理建模语言允许企业描述处理的任务,并使那些任务以期望的顺序自动化 执行,从而达到期望的结果。例如,企业可能实行多个业务软件应用,而处 理建模可以允许协调这些应用的功能性,包括应用之间的通信(例如消息), 从而实现期望的结果。此外,这样的处理建模一般依赖于多种类型的软件应 用和/或开发平台公用的、和/或能共同使用的语言。结果,处理建模可用于提 供企业组织内和企业组织之间的业务应用的整合。因此,这样的建模语言允许以图形方式捕获并执行活动或任务的流程,从而实现高效和有效地协调负责该活动的资源。通过路由(routing)(例如控 制流程)构成(construct)来捕获处理中的工作流程,路由构成允许通过顺序 (sequencing)、选择(例如允许选择性分支的判决点)、并行(例如在不同分 支中并发执行的任务)、迭代(例如,分支中的循环)以及同步(例如,不同 分支的汇合)来将处理中的任务安排成要求的执行顺序。在刚刚提到的那样的处理的上下文中,可能出现并行执行的多个任务或 活动。而且,在真实世界的场景中,可能出现这样的情况,即,对后续任务 的选择或执行可能取决于一些或所有正在执行的并行任务的当前或最终结 果。例如,业务处理模型可能包括多个并行执行的任务,每一个都与从多个 货方中的一个或多个获得货款许可的货款请求相关。因此,后续任务可能取 决于这些货款请求中的一些或全部的当前或最终结果。例如,当发送货款请 求时,可能出现一些货款请求根本不会被答复,或者可能得到对利率极高或 极低的货款的货款许可,或者可以有一些其它期望的或不期望的结果。结果, 例如后续的任务可能包括在一段时间之后由于缺少期望的货款选择权而中止 货款处理,或者可能包括选择得到的货款许可的某个规定的(defined)子集,或者可能包括启动新的货款请求。以可作为处理模型执行的方式表达或者包括这样的并行任务和多个后续 任务(以及用于在它们之间进行判决的标准)往往是困难的或有问题的。例 如,即使这些并行任务在处理模型中规定的点被组合或同步,结果也可能仅 仅是预先指定的、固定数量的并行任务(例如可能的4个任务中的2个)导 致后续任务的执行。但是,这样的方法可能在适用性和有效性方面有所限制。 例如,可能实行不同数量或动态数量的并行任务,或者在同步出现之前可能 最好要求不同数量或动态数量的已实行的任务。例如,在刚刚给出的例子中,在设计时预期的4个任务可能在运行时变成5个或更多的任务,和/或可能出 现这样的情况,即,激活不是需要2个任务,而是处理模型的用户可能希望 在并行任务中的单个任务执行之后导致同步,或者希望在3个或更多个任务 执行之后导致同步,或者希望在某个变化数量或动态数量的任务执行之后导 致同步。因此,-在这些和其它情况中,处理模型可能无法实现以灵活的、可 重复的、计算机可执行的方式表达真实世界的处理的目标,或者在这方面能 力有限。发明内容根据一个总体方面, 一种系统可以包括分支管理器,被配置成在同步 点检测工作流程处理的多个传入分支(incoming branch)中任意一个的激活, 并被配置成从所述多个传入分支中识别被激活的分支。所述系统还可以包括 流程条件评价器,其被配置成基于所述激活和基于所识别的、被激活的分支, 评价至少一个同步条件被满足;以及分支条件评价器,其被配置成确定所述 至少一个同步条件的满足,并基于所述确定评价分支条件,以从所述同步点 的至少两个传出分支中选择至少 一个传出分支。根据另 一个总体方面,可以在具有多个传出分支的同步点检测多个传入 分支的激活。在检测到第一数量的激活之后可以执行第一同步,并且可以基 于所述第一同步,激活来自所述同步点的多个传出分支中的至少一个。在冲企 测到第二数量的激活之后,可以执行第二同步,并且可以基于所述第二同步, 激活来自所述同步点的多个传出分支中的至少第二个。根据另 一个总体方面, 一种计算机程序产品可以用于执行处理模型的实 例,所述计算机程序产品有形地体现在计算机可读介质上,并且包括可执行代码,所述可执行代码在被执行时,被配置成导致至少一个数据处理装置执行编制(orchestration)引擎。所述编制引擎可以被配置成在同步点检测多个 并行分支之一的第一次激活,并产生(spawn)连续同步器。该连续同步器可 以被配置成同步所述并行分支的第一已执行子集;基于所述第一已执行子 集,导致随后执行第一后续分支;同步所述并行分支的第二已执行子集;基 于所述第二已执行子集,导致随后执行第二后续任务。一个或多个实现方式的细节将在附图和下面的说明中阐述。从说明书、 附图和权利要求书,其它特征将变得明显。


图1是用于在处理模型中执行多个同步的系统的框图。 图2是示出图1的系统的示例操作的流程图。 图3是图1的系统的示例实现方式的框图。 图4是示出图3的系统的示例操作的流程图。图5是可以在图1和图3的系统中使用的网关的彩色佩特里(Petri)网图示。图6是可以在图1和图3的系统中使用的第一示例处理模型。 图7是可以在图1和图3的系统中使用的第二示例处理模型。
具体实施方式
图1是用于在处理模型中执行多个同步的系统100的框图。例如,系统 100允许以如下方式来处理并行任务,该方式考虑并评价(evaluate)并行任务 的不同执行场景、并且考虑各种执行场景可能导致的不同的后续任务,并从 中进行选择。例如,系统100可以同步并行任务的第一已执行子集(导致随 后执行第一后续任务),并且可以在稍后同步并行任务的第二已执行子集(导 致随后执行第二后续任务)。通过这种方式,例如系统100通过明确定义并行 任务和后续任务之间的关系,提供灵活但控制严格地执行并行任务,并且提 供灵活且全面地选择并行任务之后的后续任务。结果,系统100为工作流程 设计者和用户提供了以更准确和全面地反映并行处理的真实世界的应用场景 的方式实现工作流程处理模型的能力。在图1的例子中,全局处理模型102代表由多个协作的服务提供商实行并达成一致的业务处理模型,以使得服务提供商执行全局处理模型102的任
(governing)消息、消息格式、和消息类型的安排,以及管理要发送的消息 和/或要执行的任务的顺序的安排)。具体举例来说, 一个服务提供商可能发 送采购定单,该服务提供商可能要求一个或多个其它服务提供商的确认或拒 绝。因此,全局处理模型102 (也称为全局编排(choreography)模型)提供 一种方式来捕获、契约化(contractualize)、和实行在服务提供商之间可能是 复杂和长期的消息交换序列,以便执行期望的业务处理。
例如,业务应用106可以由企业或其它实体构建和实行,以便执行某种 业务功能,诸如例如创建采购定单和向多个(可能是相互竟争的)供应商发 送采购定单或货款请求。业务应用106可以实现本地处理模型108,其与全 局处理模型102类似,例如针对刚刚提到的采购定单或货款请求示例,形式 化(formalize)和定义业务应用106在全局处理才莫型102中的角色。例如, 本地处理^^莫型108可以描述作为采购定单的一部分,可以或者应当与供应商 交换何种类型的消息。
在图1的例子中,全局处理模型102和本地处理模型108的任务至少部 分地使用应用服务来执行。例如,业务应用106和本地处理才莫型108可以与 至少一个服务110相关联。在这个上下文中,服务110指的是这样的应用, 其具有往往是通过网络(例如因特网)借助于服务接口 (其中,根据需要, 该接口的操作和使用可以是已知的或确定的)暴露(expose)给其它应用的
一个和多个特定功能。当这样的服务(和/或服务的接口 )通过万维网(World Wide Web,这里称为WWW或网络(web))暴露/可获得时,将该服务称为 网络服务。
使用这样的服务和服务交互来实现处理模型可称为面向服务的架构 (SOA),在SOA中,如刚刚提到的,处理任务导致服务的执行。此外,可 以将依靠服务实现处理步骤的处理本身作为服务来部署和访问,这可以称为 基于处理的服务合成(composition )。存在诸如例如业务处理执行语言 (Business Process Execution Language, BPEL )的i吾言,它们一皮i殳计用来^是供 这样的服务的合成(例如网络服务),并因此提供一种接近于SOA的由上至 下的、面向处理的方法。因此,BPEL或其它这样的语言(诸如例如网络服务 流程语言(Web Services Flow Language, WSFL )、可扩展语言(extensiblelanguage, XLANG)和/或业务处理建模语言(BPML))、或它们的修改/扩展 可被用于定义全局处理模型102和/或本地处理模型108。
在图1中,为了在全局处理模型102内整合服务110,包括了消息发送 基础结构(messaging infrastructure )112。 一般来说,消息发送基础结构112 帮助本地处理才莫型108的实例化和执行。消息发送基础结构112包括编制 (orchestration)引擎114,除了其它功能外,编制引擎114可操作用于执行 本地处理模型108的实例。例如,编制引擎114可以负责保证本地处理模型 108的给定任务在允许实例前进到随后的任务之前一皮实际执行和完成。编制 引擎114的其它功能和例子是已知的,和/或将在下面更具体地描述。
消息库116表示可用于例如存储消息类型和模板以及实际的消息(包括 传出(outgoing)的和/或传入(incoming)的消息)的数据库或其它存储器。 例如,如下面将更具体描述的,消息库116可以包括特定于业务应用106 (的 功能)或与业务应用106 (的功能)相关联的多个消息类型。例如,在业务 应用106用于生成采购定单的情况中,在消息库116中可以有多个相关联的 消息类型,它们可以是在某种程度上基于例如采购定单的类型或采购定单的 接收方的身份而预先配置的。
消息处理器118可用于在与诸如具有消息发送基础结构122的服务120 的其它服务的通信期间发送和接收消息发送基础结构112的实际的消息。例 如,在编制引擎114正在执行多个本地处理模型108的实例的情况下,消息 处理器118可以负责使用适当的传输技术和/或协议将各种实例的消息发送到 适当的接收方。相反地,对于传入的消息,消息处理器118可用于将消息分 类(sort)和/或路由到消息发送基础结构112、服务110和/或业务应用106 的适当部分。
消息处理器118还可用作传入和传出消息的緩冲器或队列。为此,例如, 消息处理器118可以用作传入消息的队列,该传入消息最终可以被转发到消 息日志124。消息日志124可用于跟踪每个传入(和传出)消息,并且最终 将消息永久保存到消息库116。
因此,例如,处理模型108可以描述要执行的任务、以及作为这样的任 务的一部分,可以由作为制造处理的一部分的制造商或由某个其它参与方 (party )/其它实体发送/接收的消息。如上面提到的,这样的处理模型一般包 括多个节点或任务,所述多个节点或任务被联结(join)并排序以获得期望的结果。也就是说,如图1中示出的示例处理模型108 (其仅仅意图作为具有多 个同步的处理模型的概念化说明或举例说明,而不是意图必须表示在图1中 正在执行的特定处理模型)所示出的,节点/任务可以通过适当的边(箭头)
被联结(join),并且控制任务(例如分裂点(split)和/或联结点(join))以获得 包括并行任务、迭代任务、嵌套循环、或其它已知任务进展(progression)的结构。
具体来说,处理模型108从概念上示出了一个简化的例子,其中,三个 并行任务126a、 126b、 126c中的一些或全部被同步,并导致一个或多个后续 任务128a、 128b。同步被图示为在同步点130发生,同步点130可以表示或 被实现为网关或类似的工作流程构成(construct),其例子将在下面更详细地 讨论。如图所示,任务126a、 126b、 126c分别与分支132a、 132b、 132c相 关联。例如,尽管图1的简化处理模型108示出了单个任务与每个分支132a、 132b、 132c相关联,将会理解,可以存在分别与分支132a、 132b、 132c相关 联的多个任务。类似的,后续任务128a、 128b被示为分别与分支134a、 134b 相关联。
如上面所提到的,处理模型108的例子可以包括用于从多个货方获得货 款许可的处理,其中每个货方与分支132a、 132b、 132c之一相关联。也就是 说,三个货款请求可以并行发送到三个货方,并且当接收到第一响应时(例 如经由分支132a),可以发生第一同步,并且可以触发第一后续分支134a。 例如,第一同步可以与继续进行货款处理的判决相关联,而无需识别货方, 从而后续分支134a可以与涉及货款的、不是特定于货方的处理相关联(诸如 获得对要通过货款所得(proceeds of loan)来采购的项目的估价(appraisal))。 然后,当分支132a、 132b、 132c全部被激活时(例如,所有响应都被接收到), 可以发生第二同步,并且可以激活第二后续分支134b, ^v而选择三个货方/ 分支中的特定货方,并货款处理针对所选"^的货方继续进行。
在这个上下文中,可以理解,在本地处理模型108的给定实例中,分支 132a、 132b、 132c可能被激活多于一次。而且,本地处理模型108的不同实 例可以以重叠的方式实现(即,实例在前一实例结束之前开始)。再有,分支 132a、 132b、 132c的激活可以是动态的,例如当分支132a、 132b、 132c代表 单个的、下层任务的多个实例时(例如下面将参照图6和图7更具体地描述 的)。当^^行分支132a、 132b、 132c的同步时,系统100应当考虑这些和其它需要考虑的事项。
例如,连续同步器(continuous synchronizer) 136可以由同步点130 <吏用, 或者与同步点130结合使用,以执行这样的多个同步,并且在多个后续分支 134a、 134b之间进行判决。例如, 一旦检测到多个传入分支132a、 132b、 132c 中的第一个已经被激活,就可以由编制引擎114产生(spawn)连续同步器 136。如上面提到的,同步点130可以实现为在现有处理模型和/或执行语言 中已知的网关构成,爿t人而在一些实现方式中,连续同步器136可以由编制引 擎114产生并在这样的网关中实现。
连续同步器136的连续属性指的是连续执行分支132a、 132b、 132c的、 以及图1中没有示出的其它传入分支132n的多个同步的能力。由于对不同分 支132a、 132b、 132c确定结果,所以这样的同步可能超时(over time)发生。 例如,任务126a、 126b、 126c可能分别对于它们各自的分支132a、 132b、 132c 来说是类似的或相同的;然而,任务126a、 126b、 126c的结果可能在难以定 义或指定的一段时间内变为可获得,例如在上面的货款请求的例子中,货方 答复可能从相应货方在可获得的(on an as-available basis)基础上到达。例如,
如刚刚提到的,连续同步器136可以在分支132a ...... 132n的第一子集被激
活(同样,这可能会在一段可能很长且难以预测的时间段内发生)之后导致 第一同步,并且可以在分支132a ...... 132n的第二子集被激活之后导致第二
同步,对于第三或更高数量的子集/同步以此类推。如上面提到的,所述执行 这种连续同步的能力允许系统100仔细考虑并利用并行处理来执行各种真实 世界场景,所述真实世界场景的例子将在这里进行描述,其可以包括采购定 单处理或业务投标(tendering),或者是需要通过不同的和分布式的参与者(例 如外部参与方)进行多次交互的其它例子。
在执行多个同步以及在多个传出分支(和后续任务)之间进行判决时, 连续同步器136可以访问模型实例数据138和评价规则140。在这个上下文 中,模型实例数据138可以指例如特定于处理模型108的正在执行的实例和 与处理模型108的正在执行的实例相关联的几乎任何数据。例如,模型实例 数据138可以与关于同步点130 (例如网关)的当前状态的状态数据相关联, 或者与处理模型108的正在执行的实例所关联的其它工作流程处理数据相关 联。
在图1的例子中,模型实例数据138包括工作流程数据142和分支数据144。流程数据142和分支数据144的其它例子将在下面更具体地提供,但是 总体来说,工作流程数据142可以指与处理模型108的正在执行的实例相关 联的数据。例如,如果处理模型108与货款许可处理相关联,则可能存在整 体上与处理模型108相关联的总体规则(并且这些规则可以包括在评价规则 140中)。例如,如果处理模型涉及技术控制数据(例如,用于控制机械或电 子机械传感器和制动器),则评价规则140可以涉及所使用的设备的一般属性 和用途。同时,在业务相关的例子中,这样的评价规则140可被认为是业务 规则,并且可以包括如何创建和提交货款请求、如何判断作为结果的货款许 可或拒绝、或者与货款处理相关联的其它概念和决定。
实际上,在前面的例子中,这样的控制技术可在不同的上下文中应用(例 如,控制不同的参数,诸如压力或温度,并且是在不同的等级)。类似的,在 后面的例子中,例如当正在获取的货款用于采购第一汽车与用于釆购第二汽 车相比时(从而在这两个实例之间,可能要仔细考虑不同的货款标准或货款 量),这样的货款处理可能涉及不同的上下文。因此,工作流程数据142可以 在处理模型108的实例之间有所不同,并且如下面将描述的,基于工作流程 数据142的不同,在不同的实例中,连续同步器136可能会采取不同的动作。
同时,分支数据144一般指关于分支132a、 132b、 132c的信息,所述分 支132a、 132b、 132c与同步点130和连续同步器136相关4关。这样的信息可
已经激活了分支132a、 132b、 132c中的哪个或哪些的信息。
在一些实现方式中,如下面将例如针对图3更具体描述的,分支132a、 132b、 132c可以定义激活周期(activation cycle ),在激活周期中,到分支132a、 132b、 132c全部被激活为止,分支132a、 132b、 132c中的每一个被激活一次 且<又-故激活一次,在该点同步点130和连续同步器136可以被重置并开始(分 支132a、 132b、 132c的相应的、后续的多个同步的)下一个激活周期。如这 里所描述的,在这样的激活周期中,同步点130和连续同步器136可以执行 分支132a、 132b、 132c的两个或多个同步。
实际中,连续同步器136可以包括分支管理器146,其监视、检测和以 其它方式管理关于分支132a、 132b、 132c的信息,包括管理和跟踪刚刚提到 的激活周期。例如,分支管理器146可以被配置成在同步点130检测工作流 程处理的多个传入分支132a、 132b、 132c中的任何分支的激活,并且可以被配置成/人多个传入分支132a、 132b、 132c中识别激活的分支。也就是说,由 于任务126a、 126b、 126c并行运行,因此分支132a、 132b、 132c可以相互 独立地、以任意次序激活。因此分支管理器146不仅可以4全测(并在分支数 据144中记录)给定数量的分支132a、 132b、 132c已经被激活,而且可以识 别和记录分支132a、 132b、 132c中哪些具体的分支已经被激活,以及例如在 给定激活周期内何时被激活。通过这种方式,分支管理器146还可以确定并 在工作流程数据142中记录与分支132a、 132b、 132c中的每一个相关联的工 作流程数据。
流程条件评价器148可以与多个同步条件相关联,并且可以被配置成根
据对分支(包括已识别的和已激活的分支)的激活和识别来评^r至少一个这
样的同步条件的满足情况。例如,流程条件评价器148可以与一个或多个同 步表达式相关联,并且,每次分支132a、 132b、 132c之一一皮激活、;险测并识 别时,流程条件评价器148都可以评价(当前)同步表达式,以便确定同步 条件是否满足,这可能会使用工作流程数据142和/或分支数据144。
例如,同步表达式可以确定某个定义数量或百分比的分支132a、 132b、 132c被激活,基于此可以发生第一同步。例如,如上面提到的,同步条件可 以是分支132a、 132b、 132c中的第一个被激活,基于此同步点130和/或连续 同步器136可以使用例如分支条件评价器150和评价规则140来执行同步并 开始选4奪后续的、传出的分支134a或134b,这将在下面更具体地描述。
随后,例如在第二个、较大数量或百分比的分支132a、 132b、 132c被激 活之后,可以发生第二同步条件。例如,流程条件评价器148可以使用分支 数据144确定所有三个分支132a、 132b、 132c都被激活,并且可以执行第二 同步,从而导致分支条件评价器150选择(在这个例子中)传出分支134a、 134b中之前没有被选择的另一个分支(或者,在其它例子的情况中,选择不 同的传出分支134n (未示出),或者甚至再次选择原始的分支134a)。
如上面提到的,这样的多个同步允许对真实世界处理进行灵活且更完全 的描述。例如,在达到激活分支的第一阈值之后,可以采取第一动作,而在 达到激活分支的第二阔值之后,可以采取第二个不同的动作。此外,通过使 用流程数据142、分支数据144和评价规则140,可以定义和评价复杂和具体 的条件,从而不仅确定到底是否应当发生同步(例如使用流程条件评价器 148),而且还确定(一旦同步发生)应当激活多个传出分支中的哪个(哪些)(例如使用分支条件评价器150 )。
如上面提到的,多种不同类型的语言可用于设计/创建处理模型,还可用
于执行处理模型,诸如处理模型108。在随后的例子中,使用建模语言业务 处理建才莫注释(Business Process Modeling Notation, BPMN)作为开发人员和 设计人员可以用来创建处理模型108的语言的例子。众所周知,BPMN提供 直观的、图形化的接口,利用这样的接口,设计人员(甚至是非技术的或业 务设计人员)可以容易地创建处理模型108。更具体来说,所创建的基于BPMN 的模型可以被变换或转换成可由编制引擎114执行的格式,诸如用于执行处 理模型108 (包括连续同步器136)的实例的像上面提到的BPEL的可执行语
在BPEL以及其它上下文和语言中,分支的激活可被称为或描述为传递 或路由与分支相关联的控制令牌。例如,如果分支132a是传入分支132a、 132b、 132c中首先被激活的分支,则分支132a可以将控制令牌传递到同步点 130,这会导致编制引擎114和/或同步点130产生连续同步器136,基于此, 分支管理器146的令牌处理器152可以负责接收、跟踪和存储该令牌,以及 从传入分支132b、 132c (以及图1中未示出的其它传入分支)接收的后续令 牌。下面会针对图3-7提供这样的令牌的更具体的示例。但是, 一般来说, 同步点130的接口的任何触发都可被看作是提供这样的激活或令牌。
在图l的例子中,与分支识别器154相关联地,令牌处理器152可以在 分支数据144中将令牌保存为与分支132a、 132b、 132c中特定的、已识别出 的分支相关联,如上面提到的,所述特定的、已识别出的分支帮助允许流程 条件评价器148获得和评价与执行处理模型108相关的状态数据并在此基础 上执行同步。类似地,如上面提到过的,分支条件评价器150可能基于分支 条件评价器例如基于评价规则140评价的分支条件,将控制令牌传递到传出 分支134a、 134b中所选择的一个分支。
尽管在与所示出的全局处理模型102、业务应用106、本地处理模型108、 以及各种服务和消息发送系统相关联的业务处理方面对图l进行了讨论,但 是将会理解,图1仅仅是示例上下文。例如,术语业务应用应当被宽泛地解 释为包括在某种利益产生中使用的任何应用,尽管业务应用106也可以指非 赢利性的努力,包括例如学校、教堂、慈善机构、医院、和几乎任何其它组 织。此外,业务应用106仅仅是示例,也可以使用其它应用,诸如供个人使用的应用。因此,连续同步器136可以在几乎任何场景中使用,其中,可以 对并行执行、但可能在不同时间启动或完成、并且可能得益于启动/完成发生 时的多个部分同步的并行活动或任务进行控制,以便最好地表示真实世界场 景,其中,这样不同的同步可能提供与在并行任务同步之后可能包括的两个 或多个传出分支之间进行评价和选择相关联的益处。
图2是示出图1的系统100的示例操作的流程图200。因此,图2同样 涉及与分布式的、并行活动的协调相关联的例子,所述分布式的、并行活动 共同用于确定诸如处理模型108的处理从同步点130应当选择的方向。也就 是说,如这里所描述的,图2涉及并行处理和部分同步,其中,诸如传入分 支132a、 132b、 132c的多个分支启动针对各个参与方(诸如服务120和消息 发送基础结构122)的动作(诸如使用消息发送基础结构112发送消息),然 后等待接收来自所述参与方的结果(例如接收响应消息)。如上所述,当接收 到这样的结果时,可以发生多个同步,从而使不同数量或不同类型的这种结 果可以最终触发同步点130的传出分支134a、134b中的不同分支或多个分支。
因此,在图2中,在具有多个传出分支的同步点可以检测多个传入分支 的激活(202)。例如,编制引擎114和/或分支管理器146可以在具有多个传 出分支134a、 134b的同步点13(M企测多个传入分支132a、 132b、 132c的激 活。编制引擎114可以检测传入分支132a、 132b、 132c中的第一个分支的第 一激活,并响应于此,产生连续同步器136的实例,基于此,分支管理器146 可以继续对分支132a、 132b、 132c的其它激活进行^r测和分类,例如用于存 储在分支数据144中。如所描述的,分支的激活可以被4t测为接收到来自该 分支的令牌,从而分支数据144可以由这样的令牌来表示,例如下面参照图 3进行描述的。
在检测到第一数量的激活之后执行第一同步(204)。例如,流程条件评 价器148可以与一个和多个同步条件或表达式相关联。每次分支管理器146 (例如令牌处理器152)在其激活周期内^f企测到分支132a、 132b、 132c之一 的激活时,流程条件评价器148都可以评价(当前的、相关联的)同步条件 或表达式,所述评价可能基于工作流程数据142和/或分支数据144。
基于所述第 一激活,可以激活来自同步点的多个传出分支中的至少 一个 (206)。例如,如果流程条件评价器148结合激活的分支评价同步条件为真, 从而判决将发生同步,则分支条件评价器150可以承担例如基于评价规则140判决将选4奪多个传出分支134a、 134b中的哪个(哪些)来进行进一步处理的 责任。
然后,在检测到第二数量的激活之后,可以执行至少第二同步(208)。 例如,当在其激活周期内发生分支132a、 132b、 132c中的剩余分支的其它激 活时,流程条件评价器148可以继续评价与当前激活的分支相关联的当前的 同步条件(其中,用于第二同步的同步条件可以与用于第一同步的同步条件 不同)。
基于第二同步,可以激活来自同步点的多个传出发分之中的至少第二个 分支(210)。例如,与之前一样,分支条件评价器150可以评1"介相同或不同 的业务规则140,以^更选择传出分支134a、 134b中的一个(其可以与之前选 择的传出分支134a、 134b相同或不同)。
更具体地举例来说,可能出现这样的业务投标情况,其中,存储待交付 货物的仓库可能需要容纳大于该仓库的可容纳能力的负荷。结果,相关联的 工作流程处理(诸如处理^t型108)的至少一部分可以用来寻找两三个(或 更多)其它的仓库并向其发送消息,以用于帮助存储所讨论的货物。然后, 可以收集响应,尽管如下面的例子中所提到的,可能很难或不可能确定最终 是否最终会接收到响应以及最终将接收到多少响应(即,很难或不可能确定 分支132a、 132b、 132c中的任意一个是否会被激活以及何时、如何被激活)。
但是,从上面的描述可以理解到,不是所有分支132a、 132b、 132c都需 要被激活才能使第一同步发生,例如, 一旦获得了特定数量或阈值的响应, 就可能发生第一同步,在该第一同步中,可以采取步骤来开始从多个响应中 进行选择的决策处理。然后,当获得另一数量或阈值的响应时,可以发生第 二同步,在该第二同步中,可以对利用与评价规则140相关联的特定存储提 供商继续,并使用该特定存储提供商进行判决。通过这种方式,例如,可以 相对早的开始决策处理,甚至是在实际进行有关存储4是供商的判决之前开始, 从而可以从总体上加速和促进处理。
图3是图1的系统100的实现方式的框图300。在图3中, 一些元件与 图1的元件类似,以相似的参考数字表示。但是从图3将会理解到,连续同 步器136和相关元件可以在与图1的示例环境不同的环境中实现。例如,连 续同步器136不需要与服务110、消息发送基础结构112、或全局处理模型102 中的一些或全部相关Jf关,或者可以利用不同版本或类型的图1中的这些或其它元件来实现。
然后,在图3中示出了特定的例子,其中,令牌源302 —般地和概念性
地表示与执行一个或多个处理模型的实例,例如图1的处理模型108,相关 联的各种活动/任务。所以,分支132a、 132b、 132c或其它分支132n (图1 中没有示出)中的每一个可以结合该分支的令牌而被激活。因此,在处理模 型108中多个激活上游可以导致两个令牌在同一分支中流动,其中,例如两
例如,如图所示,分支132a可以从分支132a接收"令牌1" 304和"令 牌1A" 304a,同时,如图所示,在分支132b、 132c上接收"令牌2" 306和 "令牌3" 308。然后,对示出的三个分支132a、 132b、 132c,可以确定这三 个分支132a、 132b、 132c的激活周期,其中,网关130a保证在每个这样的 激活周期中,在每个传入分支132a、 132b、 132c接收到至少一个令牌。
例如,可以使用令牌列表310来跟踪令牌的计数(使用令牌计数312) 以及令牌的身份或所讨论的源分支的身份两者(使用与三个传入分支132a、 132b、 132c相对应的令牌位置(slot) 1、 2和3)。当令牌处理器152接收到
"令牌1A" 304a,并且该"令牌1A" 304a不是当前激活周期的一部分时, 令牌处理器152可以例如使用令牌池320和未决(pending)令牌池322,将 这样的令牌作为当前激活周期之外的令牌进行高速緩存(下面将例如参照图 4进行更具体地描述)。然后, 一旦当前激活周期完成,连续同步器136可以 继续处理高速緩存的令牌以及与下一个激活周期相对应的其它当前接收到的 令牌。
从以上对图1的描述可以理解系统300的总体操作。例如,当令牌304、 306、 308到达同步点(在图3中示为网关130a)时,令牌处理器152可以使 用由分支识别器154提供的、具有它们各自的分支132a、 132b和132c的令 牌的标识,来填充(populate)相应的令牌列表310 (例如,可以增加令牌计 数312,并填充相应的令牌位置314、 316、 318)。可以理解,可以进行这些 动作,而无需考虑在所讨论的激活周期中令牌304、 306、 308的启动、才喿作 或结束顺序。例如,如图所示,"令牌3" 308可以首先到达,然后是"令牌 1" 304,随后是"令牌1A" 304a (其在分支132a上跟随在"令牌1" 304之 后,因此它是下一个激活周期的一部分),在这个例子中最后跟随的是"令牌 2" 306。这对应于这样的真实世界情况,其中将接收到来自消息接收方的答复的次序,并且其中,处理模型108的随后的实例将在当前实例完全完成之 当接收到令牌并且将分支标识为已经被激活时,还可以填充工作流程数
据142。例如,在货款许可处理中,"令牌3" 308可以到达,并且可以与来 自货方的响应相关联,所述响应包括来自该货方的特定细节或数据,例如利 率、货款期限或其它货款参数。这样的数据可以保存在工作流程数据142中, 以便由流程条件评价器148和分支条件评价器150进行评价。
例如,如参照图l描述的,并且如图3中所示出的,同步表达式324可 以被连续同步器136访问,或者与连续同步器136相关联。这样的同步表达 式324可以由设计人员在设计时明确地或暗示地定义。例如,当使用基于GUI 的工具来^L计处理;溪型108时,设计人员可以创建传入分支132a、132b、132c、 同步点130和传出分支134a、 134b的并行结构,并且可以被给予定义同步表 达式以作为处理的一部分的机会(例如,当定义同步点130或网关130a时)。
在其它例子中,可以简单地通过对消息接收方和处理场景进行特定的选 择,来至少部分地自动得到或确定同步表达式324。例如,在上面货款的例 子中,可能存在特定元素或条件,它们与货款处理相关联,因此它们可以被 包括在同步表达式324中(或被提供以作为供包括的选项)。特别是,例如, 来自非常高利率或风险的货方的货款可能要与答复货方的较大阔值相关联,
在可以进行同步之前需要满足该较大阈值,或者相反地,如果货方声誉较好, 则在给定同步发生之前可以要求有较少的答复货方。
分支数据144、工作流程数据142、以及可获得的其它状态数据的可用性 意p未着可以以许多不同形式和格式来表达和评价同步表达式324,并且可以 使用复杂的表达式。例如,如上面提到过的,同步条件可以通过已经被激活 的传入分支132a......132n (即,其令牌已经被接收到)的范围或百分比来表
达,而不是表达单个阈值。例如,如果已知当前令牌计数和最大令牌计数, 则可以通过百分比来定义阈值(例如,在激活周期内,在接收到33%的令牌 之后发生同步)。
再例如,工作流程数据142允许复杂的同步表达式324。例如,同步表 达式可以要求接收到50%的令牌,并且这些令牌100%与存储在工作流程数据 142中的某些标准相关联(例如,在货款的场景中,利率小于特定阈值)。更 一般地,几乎任何布尔表达式都可以包括在同步表达式324中,并且都可以在接收到令牌时由流程条件评价器148进行评价(例如,与(AND)条件、 或(OR)条件、或者非(NOT)条件)。
类似地, 一旦同步条件被评价为"真",就可以实现也可能是复杂表达式 的分支表达式,以允许分支条件评价器150在传出分支134a、 134b之间进行 选择。例如,分支表达式326可以将评价规则140映射到网关130a、分支数 据144、或流程数据142的当前状态。具体来说,例如,评价规则140可以 包括用于评价特定货款要约(offer)的标准,并且这些标准中的特定标准可 以包括在分支表达式326中,从而使分支条件评价器150可以有效地将当前 条件映射到评价规则140中的期望的评价规则,以便在传出分支134a、 134b (或134n,未示出)中进4亍选择。
图1和图3的系统能够进行甚至更加复杂的同步行为,下面将提供示例。 例如,可能发生基于对较早同步条件的评价更新或改变较晚的同步表达式324 的情况(对于分支表达式326来说也是类似地)。而且,评价规则140还可以 以动态地方式更新,例如,取决于较早同步的结果进行更新。
例如,可以基于关于执行处理模型108的实例将会有何结果的特定假设 (例如,预期非常低百分比的接收方会响应,或者接收方将会是质量低、声 誉差或信誉级别低的接收方)来定义评价规则140和分支表达式326。如果 这些假设被证实是错误的,例如,如果接收到大量的响应,或者如果接收到 非常高质量的响应,则评价规则140和/或分支表达式326可以相应地更新, 从而例如需要较小或较大数量/百分比的令牌用于后续同步。
因此,如上面提到过的,可以例如通过使用多个实例构成或概念(例如 下面将参照图6和图7更具体描述的)来动态地执行对分支的激活。例如, 可以创建任务或活动的若干实例,从而在完成之前创建的任务之前可以创建 附加的或另外的任务。通过这样对实例进行动态激活,可以允许直接或间接 地改变用于评价同步的表达式。例如,可以对照处理模型和实例的当前上下 文来评价分支条件,以产生表达式,该表达式可以与用于执行同步的之前的 表达式相同或不同。
关于是否以及如何以动态方式更新图3的评价规则140或其它数据,存 在许多其它例子,下面就其中的一些进行讨论。这样的更新可以通过或基于 分支管理器146、流程条件评价器148或分支条件评价器150的动作,适当 地或按照期望来实现。在一些情况中,可以在设计时指定对评价规则140的更新,而在其它情况中,可以基于当前执行条件或执行实例的结果进行运行 时的修改。
图4是示出图3的系统300的示例操作的流程图400。在图4的例子中, 初始令牌到达传入分支(402),例如当图3中的"令牌3" 308到达分支132c 和网关130a时。如上所述,到达传入分支132a...... 132n之一该第一令牌运
行以触发连续同步器136的实例化。连续同步器136的这个实例可以处理所 有其它的触发(例如,其它的传入令牌)。
对于接收的令牌,可以识别令牌的源分支(404)。例如,分支识别器154 可以确定"令牌3" 308被识别为与传入分支132c相关联。
如果令牌列表310尚未保存来自该源分支的令牌(406),则接收到的令 牌可以被放置到令牌列表310中(408)。例如,可以将"令牌3" 308放置到 令牌位置3318中,并且可以将令牌计数312增加1。可以为连续同步器136 的每个实例维护令牌列表310,并且如描述和示出的,令牌列表310可以保 存令牌的列表,其中每个令牌都来自不同的传入源分支。因此,对于M个传 入分支可以有最多M个令牌。另外,当网关130a已经在每个传入分支至少 消耗 (consume) —个令牌时,出现咒整的(full)令牌歹ll表310。
如上所述,在一个激活周期内,例如在激活分支132a...... 132n中的每
一个的一个周期内,以每个分支仅一个令牌的方式来填充令牌列表310。因 此,尽管消耗了所有接收到的令牌,但是(在每个周期)只有在传入分支处 的第一个令牌会产生直接影响。同时,如这里所描述的,在分支处的其它令 牌被存储(高速緩存)在令牌池320中,并且,在连续同步器136重置之后, 在接下来的周期中对其进行考虑,其中,对连续同步器136的重置在当前(和 每个)激活周期完成之后进行。
更一般地,激活周期可以包括其中已经通过不同的同步评价了所有分支 的任意场景。可能发生在给定分支上没有令牌流动的情况(例如当没有接收 到预期答复时),或者单个令牌流动的情况,或者多于一个令牌流动的情况(在 这种情况中,如上面描述的,后续令牌被高速緩存,并作为不同激活周期的 一部分进行评价)。因此,激活周期包括对来自上游的用于分支的相关激活的 输入进行处理,所述输入诸如例如对同一货款或投标的请求的响应。
可以进一步响应于对令牌的接收以及对所接收的令牌来自在当前激活周 期中之前没有接收到令牌的分支的确定,评价同步条件是否满足(410)。例如,流程条件评价器148可以使用例如令牌列表310和工作流程数据142来 评价适当的同步表达式324。
如果同步条件满足(410),则可以发生同步,并且为每个传出分支134a、 134b评价分支条件(412)。例如,分支条件评价器150可以使用例如评价规 则140评价适当的分支表达式326。如图所示,检查用于不同分支的所有分 支条件,之后可以将控制令牌传送到所选择的分支(例如,被评价为"真" 的分支)(416)。
当接收到之前没有接收过的令牌时,如果不满足同步条件(410),或者 一旦响应于"真"分支条件而将令牌传送到传出分支(416),则可以评价令 牌列表310是否被充满(418)。例如,令牌处理器152或分支管理器146的 其它元件可以确定令牌列表310是否被充满。
如果令牌列表310被充满(418),则意味着当前激活周期完成,从而应 当进行重置,因此,可以将令牌列表310清零(420),进而网关130a也被清 零和重置。
如上面提到的,令牌池320指的是高速緩存或其它存储器,可用于存储 在当前激活周期完成之前(即,在所有传入分支都接收到令牌之前)在传入 分支接收到的令牌。例如,如图3所示,可能发生这样的情况在网关130a 处接收到"令牌2" 306之前,即,在由令牌304 - 308定义的分支132a、 132b、 132c的激活周期完成之前,可能接收到"令牌r 304a。
如果没有令牌存储在令牌池中,并且令牌池为空(empty ) ( 422 ),则处 理结束(422)。也就是,例如,连续同步器136的实例可以终止(expire), 并且,如果新激活周期的新的令牌到达网关130a,则可以在以后创建连续同 步器136的新的实例。
如过令牌池不为空(422),例如,如果来自后续激活周期的令牌已经高 速緩存在令牌池中以等待当前周期结束,则可以将令牌从令牌池320移动到 未决令牌池322 (426 )。如可以理解的那样,对于单个周期,可以只有一个 令牌池320。也就是说,将每个不能进入令牌列表310的令牌(因为在令牌 列表中已经存在该分支的令牌)都被存储在令牌池320中。在令牌列表310 重置之后,可以考虑令牌池320中的所有令牌。例如,可能出现这样的情况, 即,在一个激活周期内,接收到一个分支(例如分支132a)处的五个令牌。 在这种情况中,第一令牌将被存储在令牌列表310中,而另外四个将被存储在令牌池320中。当像刚刚提到的对令牌列表310进行重置时,可以将高速 緩存在令牌池中的令牌移动到未决令牌池322中。
然后,可以从未决令牌池322取出未决令牌,以便识别其源分支(404), 并且处理如上所述继续。同时,如果实际上令牌列表是充满的(418),则可 以确定未决令牌池是否为空(430)。如果不为空,则可以再次迁移(428)和 转送未决令牌以便进行识别(404)。然而,如果未决令牌池为空(430),则 处理等待新的令牌到达传入分支(432 ),并且再次进行对该分支的识别(404 )。 如上面提到的以及在图4中所示出的,例如基于较早的、对于令牌列表当前 保存了来自当前识别的分支的令牌的确定(406),未决令牌池322可以接收 令牌。
并且,在图4的例子中可以理解到,在来自未决令牌池322的令牌被清 空之前,不对来自传入分支的新的令牌(432)进行识别。此外,可以理解到, 只有在未决令牌列表322中没有未决令牌,以及对于传入分支已经接收到了 非平衡数量的令牌时,才进行在传入分支接收新的令牌以便对该分支进行识 别的操作。
图5是可以在图1和图3的系统中用作例如同步点130或网关130a的网 关的彩色佩特里(Petri)网图示500。佩特里网 一般指这样的已知建模语言或技 术,其中弧线(有向弧线(direct arc ))可以在"库所(place ),,和"变迁(transition ),, 之间延伸,变迁被称为具有变迁的"输入库所"(如果借助弧线通向变迁)和
"输出库所"(如果接收来自变迁的弧线)。这样的佩特里网可用于对与工作 流程处理相关联的动作进行建模,或者,在这里的情况中(如刚刚提到的), 可用于对与处理模型内的特定构成,例如网关130/130a,相关联的动作进行 建模。在这种情况下,佩特里网的库所可以包含令牌,从而变迁可称为通过
"点火(fire)"对输入令牌作出响应,其中,如果在变迁的每个输入库所都 存在令牌,则使能的变迁可以点火。当点火时,变迁使用来自其输入库所的 令牌,执行任何相关联的处理,并将令牌放入不同的输出库所。在标准佩特 里网中,这样的令牌是不能相互区分的,而彩色佩特里网提供了一种扩展, 其中,每个令牌具有特定值,这样的值可用作表达式的基础,并可用于进行 判决。
在图5的例子中,彩色佩特里网500示出了网关130a的恰好两个传入分 支和两个传出分支,用"p一il" 502、 "p一in,, 504、 "p—ol" 520和"p—im" 522表示。当然,将会理解到,相同或类似的机制可以用于任意数量的传入和传 出分支。
在图5中,如这里所描述的,每当令牌在分支进入时(例如,"p—il" 502 或"p—in" 504中的令牌),如果之前没有为该分支处理过令牌,则可以由网 关130a对该令牌进4于处理。当它被处理时,相应的变迁tl 506或tn 508点火, 并将唯一的令牌放入令牌列表"tl" 510中。
如这里所描述的,令牌列表510表示已经消耗了令牌的分支。因此,空 列表"[]"表示没有令牌。同时,如果变迁已经处理过令牌(即,如果在列表 中已经存在该变迁的令牌),则保护条件"[not(exists("X", tl))]"防止变迁点 火。
当处理传入令牌变迁"tl" 506或"tn,, 508时,令牌可以被放入库所"可 点火"512。当在变迁点火之后将令牌放回到库所令牌列表510中时,令牌可 以携带情况标识符(case identifier)和令牌列表510 (例如,图3-4的令牌 列表310)的副本。所有可点火令牌都由变迁过滤器518处理。当过滤器变 迁518点火时,计数器516增加,以指示已经被网关130a完全处理的令牌的 数量,并且对每个输出分支的分支表达式(用于输出库所"p—ol" 520的condl 或用于输出库所"p—om" 522的condm)进4亍评价。只有当同步条件和分支 条件两者都评^介为真时,才可以将令牌》文入库所"p—ol" 520或"p—om" 522。 在图5的例子中,所有条件都可以参考令牌被"tl" 506或"tn,, 508处理时 网关130a的状态。同时,如果激活周期完成(并且令牌列表是充满的),则 计数器516向重置514输出,从而在当前激活周期的结尾,令牌列表510和 计数器516可以;陂重置到零。
图6是可在图1和图3的系统100/300中4吏用的第一示例处理才莫型600。 在图6的例子中,分盆(fork)或分裂(split)控制流程602导致沿分支132a、 132b、 132c、 132n的多个子处理604-610的并行处理。也就是说,例如在 BPMN中,已知元素604-610底部的矩形中的十字指代与单个任务相对的子 处理。也就是说,元素604-610中的每一个一般可以指装运(shipment)请求, 但是每个这样的请求可以包括或导致到不同托运方(shipper)的多个任务/消
因此,网关130a说明可以发生多个同步。例如,流程条件评价器148 可以在每次子处理604-610之一完成时评价同步条件。例如,可以在来自可能发送方的两个响应的阔值发生同步,在该点,可以对运送方进行选择(612 ),
之后,可以向所选择的运送方预定装运(614)。之后,在同一激活周期中, 可以评价第二同步条件,并且可能发现其为真,例如,已经接收到了四个(或 "全部")响应。在这种情况下,可以进行第二子处理,其可以包括对结果进 4亍推断(reasoning on result),并相应地保存历史(616)。
参照本说明书,特别是图6,将会理解到,多种处理建模、设计和执行
出了多种"工作流程模式",它们以标准化的方式描述在面向处理的设计中可 能出现的常见问题和经证明的解决方案/技术。这些工作流程模式中的各种工 作流程方案都与执行并行任务相关联。例如,被称为鉴别器的工作流程模式 考虑这样的并行任务,并且其在执行单个后续任务之前,等待这些并行任务 中的一个(而且仅仅一个)激活。有些类似地,M选N结合的方式考虑"M" 个并行任务,并且在点火单个后续任务之前,等待这些并行任务中某个数量 N的任务完成。
图l-6的连续同步器包括所有这些场景以及其它场景(例如,工作流程 模式包括同步模式、多个合并模式、结构化鉴别器、模块化(blocking)鉴别 器、结构化的M选N结合、以及模块化的M选N结合,所有这些本身在现 有技术中都是已知的,并且在这里不再进一步描述),并且图1-6的连续同 步器允许处理;漢型的增加的灵活性和效用。例如,在图6的例子中,如所描 述的,在达到激活分支的某个初始阈值之后,处理可以继续以对运送方进行 选择(614),而激活分支的某个较迟的阈值触发第二同步,该第二同步用于 对从整体上对处理结果进行推断的任务。例如,通过对结果进行整体检查, 设计人员可以随后确定在继续进行之前最好等待更多数量的响应,或者相反, 可以确定无需等待一样多的响应就可以获得类似的结果。因此,可以改进以 后对处理的执行。例如,可以基于这种推断的结果更新评价规则140。
图7是可在图1和3的系统中使用的第二示例处理模型700。在图6的 例子以及在较早的例子中,给出了主要针对并行处理,例如并行活动的图示 和讨论。类似地,如图7所示,同样已知的是,同一活动可以被调用和执行 多次,这可以称为该活动在处理模型108的较大实例中的多个实例。
因此,可能出现这样的情况,即,所有涉及的参与方共享同一接口,因 此可以使用并行执行多次的同一活动调用(对于每个参与方)。在图7的第一实例实现方式中,参与方的列表不是固定的,并且在设计时其长度是未知的。 相反,在运行时,由在先处理步骤702收集该列表,并且列表的长度由将要
联系的参与方的数量确定。然后,从参与方请求装运要约(offer) (704),其 中,任务704中的垂直平行线指的是任务的多个实例。在这种情况下,该任 务为从参与方请求装运。
在第一个例子中,对第一表达式"表达式1"进行评价,以便在联系的 参与方中的50%已经响应之后,选择运送方(710),并且预订运送(712)。 基于对第二表达式"表达式2"的评价,在联系的参与方100%响应之后,如 图6所示,保存结果以进4亍推断/分析。
在图7的第二个例子中,假定不是联系每个运送方,而是向公共信道公 布装运机会,并且等待响应,即,在多个实例活动中,对于所述活动,最终 将出现多少实例是未知的。所以,MI活动可以与这样的能力相关联,所述能 力为具有无约束数量(unbound)的内部活动实例。因此,每次装运要约被 发送到参与方时,都可以开始新的"收集装运要约,,实例。在一个例子中, 一旦至少10个要约可获得,并且至少一个满足由阈值百分比变量设置的要 求,就可以选4奪运送方(710)。然后,在如表达式1所判断/要求的,完成了 所有实例之后,结果可以被再次保存和分析(706)。
因此,可以理解到,即使对于相同或类似的控制流程要求,同步条件/ 表达式也可以具有不同程度的复杂性。例如,在刚刚给出的第一个例子中, 可能发生这样的情况,即,如刚刚提到的,在设计时实例(例如装运请求) 的数量未知,并且事实上直到运行时为止实例的数量仍是未知的。在这种情 况下,可以与诸如由已经完成的实例产生的结果的流程数据一起,使用多个 实例活动704的状态数据,以便确定实例的实际数量。
在另外的例子中,如在第二个例子中一样,可能出现这样的情况,即, 即使在运行时多个实例的数量也是未知的(例如,就像在刚刚提到的公开邀 请的例子中那样)。在这样的情况下,多个实例的完成条件是相关的 (relevant),并且可以例如参考多个实例活动完成的状态,或者可以复制用 于多个实例活动完成的相同条件。对于这样的确定,可以使用多个实例活动 的状态信息和工作流程/环境lt据。例如,可能存在这样的状态信息或工作流 程/环境数据,其指定对装运要约的收集应当在24小时之后关闭,或者如果 已经选择了运送方,则在2小时后关闭。在这些例子中,可以要求相关表达式(例如这里的表达式1和表达式2 )
被原子化地(atomically)改变,即,以"全有或全无"的方式改变。通过这 种方式,例如,可以维持处理整体的一致性。
这里描述的各种技术可以以数字电子电路来实现,或者以计算机硬件、 固件、软件或它们的组合来实现。实现方式可以实现为计算机程序产品,即 有形地在信息载体中(例如在机器可读存储器件或传播信号中)具体化的计 算机程序,以供数据处理装置执行,或者控制数据处理装置的操作,所述数 据处理装置例如可编程处理器、计算机或多个计算机。计算机程序,诸如上 面描述的计算机程序,可以用任何形式的编程语言编写,包括汇编语言或解 释语言,并且,它可以被以任何形式部署,包括作为独立的程序或者作为模 块、組件、子例程或其他适于在计算环境中使用的单元。计算机程序可以被 部署成在 一个计算机上或在位于 一 个地点或跨越多个地点分布并通过通信网 络互连起来的多个计算机上执行。
方法步骤可以由一个或多个可编程处理器执行,所述可编程处理器执行 计算机程序,从而通过对输入数据操作并产生输出来执行功能。方法步骤还 可以由专用逻辑电路来执行,或者装置可以被实现为专用逻辑电路,所述专 用逻辑电路例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
举例来说,适于执行计算机程序的处理器包括通用和专用微处理器两者, 以及任何类型的数字计算机的任意一个或多个处理器。 一般来说,处理器将 从只读存储器或随机存取存储器或它们两者接收指令和数据。计算机的要素 可以包括至少一个为用于执行指令的处理器,和用于储存指令和数据的一个 或多个存储器设备。 一般来说,计算机还可以包括用于存储数据的一个或多 个海量存储设备,或者被可操作地连接到一个或多个海量存储设备,以从其 接收数据,或向其传送数据,或者二者皆有,所述海量储存设备例如磁盘、 磁光盘或光盘。适于具体实施计算机程序指令和数据的信息载体包括所有形 式的非易失性存储器,举例来说,包括半导体存储器器件,例如EPROM、 EEPROM和快闪存储器设备;磁盘,例如内置硬盘或可移动盘;磁光盘;以 及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充, 或包含在专用逻辑电路中。
为了提供与用户的交互,实现方式可以在具有显示设备以及键盘和指示 设备(pointing device)的计算机上实现,显示设备例如阴极射线管(CRT)或液晶显示器(LCD)监视器,用于向用户显示信息,指示设备例如鼠标或跟踪球, 用户利用它们可以提供到计算机的输入。其他种类的设备也可以被用来提供 与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如
-现觉反馈、听觉反々贵或触觉反馈;并且,来自用户的输入可以;波以任何形式 接收,包括声音、语音或触觉输入。
实现方式可以在计算系统中实现,所述计算系统包括后端組件,例如数 据服务器,或者包括中间件组件,例如应用服务器,或者包括前端组件,例 如具有图形用户界面或网络浏览器的客户端计算机,用户可以通过所述图形 用户界面或网络浏览器与实现方式进行交互,或者包括这些后端组件、中间 件组件、或前端组件的任意組合。组件可以通过任何形式或任何数字数据通 信介质互连,所述数字数据通信介质例如通信网络。通信网络的例子包括局 域网(LAN)和广域网(WAN),例如互联网。
虽然在这里已经举例说明了所描述实现方式的特定特征,但是本领域技 术人员也可能想到许多修改、替代、改变和等效方式。因此,应当理解,所 附权利要求书旨在覆盖落入实施例范围内的所有这些修改和改变。
权利要求
1、一种系统,包括分支管理器,被配置成在同步点检测工作流程处理的多个传入分支中任意一个的激活,并被配置成从所述多个传入分支中识别被激活的分支;流程条件评价器,被配置成基于所述激活和基于所识别的、被激活的分支,评价至少一个同步条件被满足;以及分支条件评价器,被配置成确定所述至少一个同步条件的满足,并基于所述确定评价分支条件,以从所述同步点的至少两个传出分支中选择至少一个传出分支。
2、 如权利要求l所述的系统,其中,所述分支管理器被配置成确定激活 周期,在所述激活周期中,所述多个传入分支中的每一个被识别为激活一次, 所述分支管理器还被配置成确定所述所识别的、被激活的分支在所述激活周 期内^皮〗敫活。
3、 如权利要求2所述的系统,其中,所述分支管理器被配置成在所述激 活周期结束时,并且在所述多个传入分支中的最后一个被识别为已经被激活 之后,导致对同步点的重置。
4、 如权利要求l所述的系统,其中,所述分支管理器被配置成从所述多 个传入分支中识别第二个被激活的分支,并且其中,所述流程条件评价器被 配置成基于所述第二个所识别的、被激活的分支,确定第二同步条件的满足。
5、 如权利要求4所述的系统,其中,所述分支条件评价器被配置成确定 所述第二同步条件的满足,并基于所述确定选择来自所述同步点的至少两个 传出分支中的至少第二分支。
6、 如权利要求l所述的系统,其中,所述流程条件评价器被配置成访问 由所述分支管理器收集的分支数据,以评价所述同步条件,所述分支数据包 括在所述工作流程处理的执行实例中从所述多个传入分支中识别出的激活的 分支。
7、 如权利要求l所述的系统,其中,所述流程条件评价器被配置成访问 工作流程数据,以评价所述同步条件,所述工作流程数据与所述工作流程处 理的执行实例相关联。
8、 如权利要求l所述的系统,其中,所述分支条件评价器被配置成访问工作流程数据,以评价所述分支条件,所述工作流程数据与所述工作流程处 理的执行实例相关联。
9、 如权利要求l所述的系统,其中,所述分支条件评价器被配置成访问 评价规则,以激活所述分支条件,所述评价规则与所述工作流程处理相关联。
10、 如权利要求9所述的系统,其中,所述分支条件评价器被配置成访问修改后的评价规则,以评价当前分支条件,所述修改后的评价规则是基于 之前的同步条件评价或之前的分支条件评价从所述评价规则修改而成的。
11、 如权利要求l所述的系统,其中,所述分支管理器包括令牌处理器, 其被配置成接收与激活分支的检测相关联的令牌,并且还被配置成构建令牌 列表,该令牌列表包括在所述多个传入分支的激活周期内来自所有被激活的 分支的令牌。
12、 如权利要求11所述的系统,其中,所述令牌处理器被配置成高速緩存从所述多个传入分支接收的、并且在所述激活周期之外的第二令牌,以便 在第二激活周期中使用,所述第二激活周期在所述激活周期完成之后启动。
13、 一种方法,包括在具有多个传出分支的同步点4企测多个传入分支的激活; 在检测到第一数量的激活之后执行第一同步;基于所述第一同步,激活来自所述同步点的多个传出分支中的至少一个;在检测到第二数量的激活之后,执行第二同步;以及基于所述第二同步,激活来自所述同步点的多个传出分支中的至少第二个。
14、 如权利要求13所述的方法,其中,在具有多个传出分支的同步点检 测多个传入分支的激活包括接收来自所述多个传入分支的令牌;以及高速緩存不是所述多个传入分支的当前激活周期的一部分的令牌。
15、 如权利要求13所述的方法,其中,在检测到第一数量的激活之后执 行第一同步包括在每次检测到激活时评价同步表达式,直到同步表达式评价为真为止。
16、 如权利要求13所述的方法,其中,基于所述第一同步激活来自所述同步点的多个传出分支中的至少 一个包括 评价与每个传出分支相关联的分支条件。
17、 一种计算机程序产品,用于执行处理模型的实例,所述计算机程序 产品有形地实现在计算机可读介质上,并且包括可执行代码,所述可执行代 码在执行时,被配置成导致至少一个数据处理装置执行编制引擎,所述编制引擎一皮配置成在同步点检测多个并行分支之一的第 一激活; 产生连续同步器,该连续同步器被配置成同步所述并行分支的第一已执行子集;基于所述第一已执行子集,导致第一后续分支的后续执行;同步所述并行分支的第二已执行子集;基于所述第二已执行子集,导致第二后续任务的第二执行。
18、 如权利要求17所述的计算机程序产品,包括网关,其被配置成接收 并行分支,并输出所述第一后续分支和第二后续分支。
19、 如权利要求17所述的计算机程序产品,其中,所述连续同步器被配 置成基于至少一个同步表达式来同步所述第一已执行子集和第二已执行子 集。
20、 如权利要求17所述的计算机程序产品,其中,所述连续同步器被配 置成基于至少一个分支表达式导致所述第一后续分支的后续执行和所述第二 后续分支的后续执行。
全文摘要
提供一种系统和方法。可以在具有多个传出分支的同步点检测多个传入分支的激活。在检测到第一数量的激活之后可以执行第一同步,并且可以基于所述第一同步,激活来自所述同步点的多个传出分支中的至少一个。在检测到第二数量的激活之后,可以执行第二同步,并且可以基于所述第二同步,激活来自所述同步点的多个传出分支中的至少第二个。
文档编号G06F9/46GK101315607SQ20081010878
公开日2008年12月3日 申请日期2008年6月2日 优先权日2007年5月31日
发明者亚历山大·格罗斯科普夫, 阿利斯泰尔·P·巴罗斯 申请人:Sap股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1