没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记154(2006)139-158www.elsevier.com/locate/entcs基于ReSpecT元组中心米歇尔·卡瓦诺,恩里科·登蒂,利玛窦,米尔科·维罗利DEIS,AlmaMaterStudiorum,Universit`adiBologna,via Venezia 52,I-47023切塞纳,意大利{mcabano,edenti}@ deis.unibo.it{a.ricci,mirko.viroli}@ unibo.it摘要我们提出了一个基于ReSpecT元组中心(一个扩展了LINDA的协调模型,具有声明式编程反应行为的能力)的数据流编排引擎的设计tuple spaces空间我们的解决方案的架构和语言方面进行了讨论,侧重于如何的语法和语义的元组中心映射到。这是通过将编排规范转换为一组逻辑元组,并根据ReSpecT反应构思编排引擎的执行周期来实现的保留字:Web服务,演示,工作流,多代理系统,元组中心1介绍研究Web服务编排理论和实践是当前的一个热门研究主题:虽然通过适当的标准协议访问单个Web服务非常简单,但适当地协调多个Web服务以构建具有已知语义的复合的、类似工作流的服务是一个相当复杂的问题[12]。在这种背景下,业务流程执行语言(Business Process ExecutionLanguage,缩写为BPR)[14]值得越来越多的关注,因为它正在成为复杂活动规范的事实标准,例如基于Web的业务流程。 当前进行了几种尝试来向与编配相关的语言特征提供基础语义1571-0661 © 2006 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2005.12.037140M. Cabano等人/理论计算机科学电子笔记154(2006)139包括补偿[3,2],相关[15]和故障处理[8]-主要是在过程代数的框架中开发的[1]。另一方面,协调模型和语言的研究领域通常研究类似的问题,即使是在更一般的并行和分布式系统的背景下,也产生了适用于Web场景的有趣技术和解决方案。ReSpecT元组中心协调模型是这种解决方案的一个例子[10],用可编程元组空间的思想扩展了L INDA模型[6],它可以用作真正的协调虚拟机-用于支持面向协调任务的全表达虚拟机。作为一种特殊情况,元组中心可以用于构建工作流引擎,实现工作流管理任务[13]。因此,评估这个框架对于实现指定为可执行流程的活动的适用性似乎是很自然的,最终目的是定义一个完整的可执行编排引擎。因此,在这项工作中,我们的意思是解决“抽象”的实现问题,而不是像当前大多数关于编排语言的研究那样处理语义方面。 我们报告一个正在进行的项目开发在我们的部门 设计和实现一个全功能的基于ReSpecT元组中心协调的多代理系统的由于代理实现了引擎的非常简单的基本活动,因此ReSpecT元组中心扮演了支持网络编排语义的关键角色,这些中心使用基于ReSpecT逻辑的语言进行声明式编程[9]。这个项目使我们能够证明这种协调框架的有效性,它显示了一种内在的能力,可以随着Java语言的复杂性而扩展。最后,我们目前的原型设计实现了ReSpecT程序中少于200条规则(约50 KB代码)的ReSpecT程序的完全工作流行为-比通常的编排引擎的单体实现小得多。该解决方案允许快速原型化和易于维护;从我们的实现中预期的进一步优势是能够动态跟踪交互、调试编排活动的执行以及动态调整编排行为以处理不可预测的事件(例如过载)。特别是,在本文中,我们的目的是强调的问题,设计一个基于ReSpecT元组中心,无论是从建筑和语言学的角度来看,编排引擎在简要介绍了Java基础(第2节)和ReSpecT元组中心(第3节)之后,我们首先为Java引擎提供了一个基于元组中心的架构:在那里,我们讨论了映射到架构项的Java方面(第4节)。然后,我们分析如何将XML 语言的语法和语义映射到合适的元组和ReSpecT规则(第5节)。结论和相关工作是M. Cabano等人/理论计算机科学电子笔记154(2006)139141报告在第6节。2电子邮件2.1英语作为一种语言XML是一种基于XML的规范语言,用于描述编排不同的、现有的和可能动态出现的Web服务的交互的业务过程。因此,它建立在WSDL语言之上,用于描述Web服务的接口[4] --从端口、动作和消息类型的角度。一个声明规范由四个声明部分组成:伙伴链接、变量、相关集和实现业务流程的活动。伙伴链接通过指定流程/Web服务和Web服务/流程交互的端口类型,标识业务流程与其交互的其他Web服务的关系可以定义携带XML数据值和消息的变量,从而定义每个流程实例的状态-负责编排给定客户端请求的工作会话相关集-基本上是消息中的字段组[15] -然后被引入来识别与给定流程实例相关的那些交互,这对于在各个并发会话之间正确地分发消息是必要的最后,一个描述业务流程的精确行为的活动被具体化--这是我们主要关注的活动具体化的一部分基本活动包括发送和接收请求和应答的行为(调用、接收和应答),其可以指定它们必须遵守的或 者 要 初 始 化 的 新 相 关 集 。 在 其 他 基 本 活 动 中 , 有 变 量 赋 值(assign)、等待超时(wait)和引发错误(throw)。结构化活动实现了顺序组合(sequence)、保护选择(pick)、并行组合(flow)、迭代循环(while)和多个case(switch)。引入了一种(私有)链接机制,通过分别执行基本活动源和目标,让流构造的不同分支中的两个活动彼此为了扩大规格的复杂性,一项基本活动也可以采取作用域的形式,即一个单独定义的子流程,它有自己的活动、变量和相关集。一个故障处理器规范实际上可以提供一些故障处理器的定义,这些故障处理器是类似于作用域的子进程:它们可以通过显式抛出或当同步交互失败时执行,并且可以用于恢复故障或简单地终止整个进程实例。142M. Cabano等人/理论计算机科学电子笔记154(2006)1392.2为例作为一个参考案例研究,在本文中,我们考虑了在《商业规范》[14](第16.1节)中描述的航运服务。因为这个例子实际上描述了一个抽象的流程,也就是客户和业务流程之间的交互协议(或家务),其中与运输服务的交互被抽象掉了,所以我们将其专门化为一个实际的可执行流程,编排客户和运输服务器。尽管它很简单,但我们展示的示例涵盖了我们感兴趣的大多数语言功能,包括基本活动,结构化活动和故障处理。我们描述了一个处理订单发货的Web服务,这些订单是由发货服务的客户发出的,它们都被建模为Web服务。客户指定包含更多商品的订单,而运送服务一次只能运送其中的一个子集:业务流程负责多次调用运送服务,直到所有商品都被运送完为止,每次都向客户发送一个运送通知回调。如果单批货物无法完成,我们假设整个货物被中止,并向客户发送通知。指定业务流程的活动如图1所示。在这里,带下划线的部分并不表示实际的XML代码,而是非正式地描述更复杂的XML代码的占位符,为了简洁起见,没有报告其细节实 现 的 工 作 流 行 为 如 下 。 最 初 从 客 户 接 收 请 求 消 息shipRequest。当它的itemsTotal部分大于itemsShipped变量(初始化为零)时,消息shipRequest被发送到storeService。如果shipResponse回复完成(shipComplete部分),则准备一条shipNotice消息并将其发送到客户和变量itemsShipped被更新。否则,将抛出名为shippingError的错误,指定变量error,这将导致在终止流程实例(terminate)之前向客户发送消息。3ReSpecTTuple中心元组中心协调模型元组中心协调模型基于可编程协调媒体的概念[10] -一种通用虚拟机,执行以某种特定语言编码的协调规范。更具体地说,元组中心是可编程的元组空间。类似于元组空间-例如在LINDA模型中发现的[6] -它们接受并服务于M. Cabano等人/理论计算机科学电子笔记154(2006)139143. 联系<我们 itemsShipped:=0/assign><而条件=项目发货<调用storeService:shipRequest,shipResponse>./invoke><开关><案例shipRequest.shipComplete>shipNotice.itemsCount:=storeService.itemSent . / itemsShipped+=shipNotice.itemsCount/assign>序列><产品展示<否则>否则>开关>序列><故障处理程序><调用customer:itemsShipped>... /<终止>序列><联系我们Fig. 1. 运输服务来自外部代理的用于插入元组(out原语)、移除匹配模板的元组(in原语)以及读取匹配模板的元组(rd原语)的请求与基本元组空间不同,元组中心可以被编程,使得每当外部通信事件发生时,curs,计算反应性地开始,其可以检查内部元组空间的状态。该功能使在元组中心内完全封装协调策略(在行为和动态状态方面)成为可能的协调活动,并提供计算(嵌入在代理)和协调(嵌入在元组中心)之间的高度分离。总的来说,元组中心模型使系统设计者能够有效地平衡系统中的协调负担,通过根据所需需求适当地编程它们的行为来对协调媒体进行充电。更详细的讨论,感兴趣的读者可以参考[10]。144M. Cabano等人/理论计算机科学电子笔记154(2006)139质量标准::={反应}Reaction::=reaction(Event,(Body)).Event::=CommunicationEvent|InternalEventCommunicationEvent::=out(T)|in(T)|rd (T)InternalEvent::=outr(T)|inr(T)|rdr(T)正文::={目标{,正文}}目标::=outr(T)|inr(T)|rdr(T)|n或r(T)图二. ReSpecT语言核心的扩展ReSpecT元组中心我们在本文中采用的特定类型的元组中心被称为ReSpecT元组中心[10]。它具有一种基于原语out,rd和in的通信语言,用于一阶逻辑元组,并使用逻辑统一作为元组匹配标准。作为规范语言,它使用ReSpecT(反应规范元组[9]),通过该语言,元组中心反应行为通过一组规范元组进行编程:一阶(Prolog类)事实指定对某些交互事件的反应在这个框架中,虽然元组中心的元组集内容可以被构建为关于使用元组中心的代理之间发生的交互(通信)的逻辑理论,但ReSpecT规范可以被构建为关于管理此类交互的理论-通过定义,作为系统协调的理论。图2报告了ReSpecT语言核心的语法-在本文中,为了简单起见,我们只描述了我们直接利用的语言功能的子集。ReSpecT程序是一组反应,每个反应都有一个头和一个身体。当通信事件发生时,所有具有匹配头部的反应都被激活,也就是说,它们的主体-每个主体指定元组中心上的原子计算-用于产生等待执行的挂起反应。这种反应由一系列原语组成,用于移除一个元组(in r),读取一个元组(rd r),插入一个元组(outr)。挂起的反应被非确定性地挑选和执行,通过原子地执行它们的所有反应原语-如果单个原语失败,例如,一个元组是如果read不存在,则反应的整个效果被回滚。 每一个这样的原语的执行都触发了一个新的通信事件,它可以再次被另一个反应拦截,等等,递归地。 因此,compu-tation从外部通信事件(接收out、rd或in)开始,并且可能由于内部通信事件(执行out r、rd r或in r)而递归地进行,直到到达不再存在未决反应的定点。在那个阶段,ReSpecT元组中心达到了其元组集的新状态,并且简单地等待另一个外部通信事件发生。 反应的递归激发是M. Cabano等人/理论计算机科学电子笔记154(2006)139145[15]这是一个非常复杂的问题,它是一个非常复杂的问题,它ReSpecT协调模型是多代理系统的TuCSoN协调基础设施的核心[11]:在TuCSoN中,元组中心在网络上分布,由基础设施节点收集和管理-对应于互联网节点。该基础设施使代理访问和使用元组中心,无论是在本地网络不知道的方式,当代理驻留在同一节点托管元组中心被利用,或在全球网络感知的方式,当他们驻留在任何其他互联网节点。作为演示引擎ReSpecT元组中心ReSpecT元组中心的功能使其成为设计和开发针对协调方面定制的系统的那些部分的自然选择。工作流程和编排引擎是典型的案例,它们是集中协调分布式活动(服务)的复杂组件[13]。因此,可以自然地利用元组中心可编程性和ReSpecT表达能力来设计基于一个或多个元组中心的处理引擎,该处理引擎被编程为动态地解释和执行以逻辑元组的形式适当编码的处理规范。该协调模型的属性可以被利用来实现具有高级功能的调度引擎,特别是关于在观察、控制和适应方面的协调活动的动态管理。例如,可以添加一些特定的ReSpecT规则来跟踪引擎内部的任何感兴趣的交互,以便监控编排方之间的通信和编排活动的状态。作为另一个示例,该模型支持通过对元组集的改变来动态适应编排活动4演示引擎架构由于在我们的方法中,我们关注的是协调,并将其视为与通信(合作伙伴链接)和数据表示(变量和属性)方面基本正交,因此我们将重点讨论协调中特定的活动。尽管一个Web服务流程在外部被看作是Web服务的编排器,但当查看引擎的内部细节时,另一个类似的视图是可能的,并且是富有成效的。在该级别上,一个XML流程实例被视为协调一组基本活动- 如调用、接收、分配、终止等,以XML语义规定的顺序执行[14]。背景下146M. Cabano等人/理论计算机科学电子笔记154(2006)139演示Web服务图三. 左:解释器代理的设置阶段。右:创建代理和元组中心(BPEL变量、BPEL引擎等)对于流程实例。ReSpecT元组中心,这种观点自然促进了通过代理实现单个基本活动的想法,以及通过元组中心协调这些活动,这需要代理“按需”执行活动。因此,这个多代理系统将被视为由引擎实现的(概念上原子的)编排服务器。在我们的引擎中,编排服务的生命周期如下所示在引导过程中,引擎中的解释器代理获取对编译过程(.bpel文件)和要编排的单个Web服务(.wsdl文件)的描述,并根据ReSpecT逻辑元组生成表示,存储在元组中心bpel规范中。 当这个设置阶段结束时,系统配置通过创建一个boss代理池来完成,这些boss代理负责实际启动EJB流程实例(图3,左)。发生这种仅响应来自Web服务器的客户端的请求:在EJB中,一个新的流程实例实际上仅由于接收或挑选(涉及一组可能的消息接收)而创建,因为这些是可以暴露EJB实例属性的唯一活动[14,15]。当boss代理收到一个这样的请求时,它从bpel规范元组中心检索信息设置一个正在运行的实例,并创建执行它所需的代理和元组中心(图3,右)。当流程实例终止时,boss代理释放所有使用的资源。对于一个给定的实例,是否应该有一个或多个元组中心和一个或多个代理,这是一个设计选择,可能会影响解决方案的性能和简单性,但主要是正交的一般引擎架构;在我们的开发过程的这个阶段,我们主要关心的是简单性,因此将忽略性能问题。一方面,老板老板老板.wsdl我.BPELTC老板一一一A ATCTCTCM. Cabano等人/理论计算机科学电子笔记154(2006)139147TCTCTC工作流引擎信息补偿快照反应Web服务信息WSDL+合作伙伴链接流动(范围+处理程序)2级范围TC一一一一一3级范围1级范围一一老板一一一一一2级范围TCTCTCTUPLE CENTRE见图4。上图:多个bpel引擎元组中心的运行时架构。底部:每个元组中心内的不同类型的元组类别。148M. Cabano等人/理论计算机科学电子笔记154(2006)139给定一个流程实例,我们精确地将一个代理与每个基本活动标记相关联-因此我们将有一个代理处理所有的调用活动,一个接收中心,同时促进在代理人的实施关注的分离另一方面,一个流程实例与许多元组中心相关联(图3,右):一个bpel变量,保存流程实例变量的值,一个bpel引擎用于流程规范中表示的每个不同的“流程”-一个用于主活动流程(称为正常流程),一个用于每个范围(图4,顶部),一个用于定义的每个补偿,故障和事件处理程序。在正常的执行过程中,其他元组中心可以被激活,或者在进入范围时读取/更新变量和属性,或者在处理程序被执行时。相应地,每个元组中心中的元组在概念上指的是不同的信息类别:主要的一个描述作用域流,另一个描述支持信息,例如消息交换的数据格式、提供Web服务的节点的地址和端口号,以及所有补偿处理程序快照(图4,底部)。让一个元组中心只负责一个工作流的决定极大地简化了我们的设计:它允许我们根据“工作流虚拟机”(WVM)模式开发元组中心-如[ 13 ]中详细讨论的那样特别是,要执行的实际工作流不是硬连接到元组中心程序中的;相反,它可以通过合适的“工作流规范语言”的脚本来指定-在我们的情况下,一组逻辑元组表示工作流的5映射到ReSpecT在本节中,我们将描述ReSpecT元组中心中业务流程编排服务器的映射,包括业务流程规范的表示和以ReSpecT程序表示的WVM行为。我们集中讨论这些元组中心的行为,实现正常的并行流的执行:仅仅为了空间的缘故,我们将只简要概述与变量,范围和补偿,事件和故障的处理程序的管理相关的方面。5.1一个网络的具体化虽然一个ReSpecification可以很容易地理解为一个进程代数规范[15],但就ReSpecT元组中心的执行/解释而言,它更有效地描述为一个网络或自动机M. Cabano等人/理论计算机科学电子笔记154(2006)139149图五. 结构化活动作为网络[7]的文件。它的静态结构用两类结点- 图5中示出了图的一些示例。节点被称为任务,可以是(i)基本的活动,画成圆圈,或者(ii)标识复杂控制结构的开始和结束的标记,画成半圆。边称为链接,表示任务执行顺序之间的依赖关系。图5显示了如何将XML的基本结构化活动映射到图--开始和停止标记之间的整个规范的子图序列构造表达了它指定的活动的顺序,因此链接通过链连接这些活动。例如,在图5中,示出了一个基本活动、一个结构化活动和再次一个基本活动的序列。而switch、pick和flow结构表达的活动没有直接排序,因此链接只是将开始标记与每个活动连接起来在图5中,对应于pick构造的图显示,如果其中的单个活动是一个序列,则我们不需要进一步的开始和结束标记;对应于flow构造的图显示,在这种情况甚至存在于活动之间,如由特定化的链接构造所表示的while构造表达了一个条件迭代循环,因此由于循环,单个Activity可以执行多次。关于链接,我们发现区分四种语义上不同的链接是有用的:(i)顺序链接,强制顺序排序,(ii)同步链接,模拟流中活动之间的链接,(iii)循环链接(或cycle1),处理while构造循环,(iv)转义循环链接(或cycle2),处理while构造中断。在图5中,水平流图中的链接是同步链接,while图中的循环链接是循环链接,while图中朝向结束标记的两个链接是转义循环链接;所有其他的都是顺序链接。150M. Cabano等人/理论计算机科学电子笔记154(2006)139fault_start(1)22sequence_start(4)23(3)24(1)25(4)26fault_end19见图6。 航运服务网络由于活动指定允许嵌套在一个活动流中的作用域指定一个完整的(可能复杂的)结构化活动,并且由于我们将每个作用域映射到一个元组中心,它们在外部活动流中的出现由一个活动节点跟踪-它携带实际管理作用域的元组中心的信息因此,最后,单个活动节点被用于对基本活动(调用、接收、回复、等待、终止、分配)进行建模,抛出、清空和补偿,以及范围,而结构化活动映射到子图。作为下一节中讨论的图的另一个示例,图6报告了与第2节中描述的运输服务规范相对应的图,其中每个节点都有一个唯一的标识符,每个链接都有一个唯一的编号(侧边子图对应于故障处理程序)。scope_start(0)1(1)2接收(1)3赋值(1)45while_start(1)6sequence_start(27while_end(1)(1)20(1)98switch_start(1)21scope_end(0)sequence_start(3)1510(2)1811(2)Throw(1)12(3)1316(3)14switch_end(1)17M. Cabano等人/理论计算机科学电子笔记154(2006)1391515.2在ReSpecT元组ReSpecT元组中心通过跟踪以一组ReSpecT元组表示的图结构来执行一个重新指定这样的元组还携带关于当前执行状态的信息,使得通过在执行期间演化这样的信息来获得网络的动态。这是通过四种元组来实现的,分别表示任务、链接、开始标签/结束标签关联(称为结构)和整个流程,如下所示:任务- 网络的每个节点,无论是活动还是标签,都由一个元组描述task/10of the kind:task(Name,Type,Status,OrderCondition,JoinCondition,InLinkList,OutLinkList,TaskInfo)Name表示任务的唯一标识符,并且是图6所示的TaskName(n)类 型 ;Type 是 Activity 或 Tag;Status是 ready 、 started 、 completed或stopped;OrderCondition和JoinCondition表示由XML规范表示的任务执行的条件;InLinkList和OutLinkList是传入和传出链接标识符的列表;TaskInfo表示XML规范中表示的关于任务的进一步信息特别地,通过演化每个这样的元组的参数Status来跟踪给定时间的网络的状态,该元组通过就绪/开始/完成序列传递,并且还可以被重新初始化为就绪(由于while循环)或停止(例如,由于故障)。Link-每个链接类似地由以下类型的元组link/6描述:link(LinkName,LinkType,Source,Target,TransCond,LinkStatus)LinkName是用于链接的唯一自然数,如图6所示;LinkType可以是order、flowsync、cycle1或cycle2,如中所述上一节;Source和Target是源任务和目标任务的标识符;TransCond表示任务执行的条件,如配置说明所表达的;LinkStatus是评估的、未评估的和中止的-再次反映执行的动态方面。结构- 开始标记和结束标记之间的每个关联由以下类型的元组link/6结构(StartTask,EndTask)表达 1对1的二元关联, 带标识符的StartTask和EndTask。Flow- 元组flow/4描述了流的总体结构:152M. Cabano等人/理论计算机科学电子笔记154(2006)139flow(FlowName,FlowType,TaskList,FlowStatus)FlowName 是 整 个 流 程 规 范 中 此 特 定 流 程 的 标 识 符 ;FlowType 是normal、compensation或fault,具体取决于流程规范中流程的来源;TaskList是此流程的所有任务的标识符列表,从初始开始标记开始;FlowStatus是ready、executing或completed。图7中显示了表示运输服务规范的ReSpecT元组的初始状态;注意,这些元组正是解释器代理从实际(基于XML的)运输规范中生成的元组。我们特别注意到以下方面:• 每个任务的JoinCondition由术语status(n)给出,其中n是任务的传入链接-或者当存在许多传入链接时由这些术语的析取(或)给出• 某些任务必须携带额外的信息,对应于XML规范中指定为XML标记属性 的所 有数 据- 在 图中 由术 语info(.). 例 如, 初 始接 收任 务(receive(1))实际上提供了以下项[14]:info ( partnerlink ( customer ) , portType ( sns :shippingServicePT),operation( shippingRequest ) , variable ( shipRequest ) ,yes,[correlationset([shipOrder],yes)])• 链接的TransitionCondition属性通常设置为true,但同步链接(此流程中不存在)和循环链接除外例如,链路11的条件表示为:condition(not(bpws:getVariableData
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功