一种基于eca规则的服务组合方法

文档序号:8301727阅读:682来源:国知局
一种基于eca规则的服务组合方法
【技术领域】
[0001] 本发明属于异构数据融合及业务集成技术领域,更具体地,涉及一种基于ECA规 则的服务组合方法。
【背景技术】
[0002] 随着企业业务需求的不断变化及扩充,如何有效整合各企业及企业各部门之间的 业务资源,满足用户多样性的功能需求,已成为一项日益重要的课题。在这种环境之下,Web 服务应运而生。Web服务基于一系列底层标准,通过注册、发布及发现等机制,将公共的服务 提供给用户。以服务为基础的架构(Service Oriented Architecture, SOA)能够有效屏蔽 分布式计算环境下异构的底层环境,构建面向服务的、松耦合的、灵活的企业应用,因而越 来越多的企业将自己的业务功能打包成服务发布。
[0003] 然而,单一的服务无法满足企业业务快速变化的需求。通过服务组合技术,可以将 单一的、细粒度的服务通过有效的编排或重组,能够生成粗粒度的、复杂的、具有业务价值 的服务,实现业务增值。在当前相关服务组合技术中,以BEA公司、IBM和微软等提出的业务 流程执行语言BPEL为代表。BPEL使用XML标准格式来描述Web服务如何重组以形成新的 服务,并生成标准文件交由BPEL执行引擎部署。随着企业业务模型日益复杂及用户需求的 动态变化,基于BPEL-SOA的架构方式已不能满足应用需求。主要表现在如下方面:一方面, 相对固定的业务流程与业务逻辑紧耦合,无法满足业务动态变化的需要;另一方面,服务本 身缺少主动性及协调合作的能力。

【发明内容】

[0004] 针对现有技术的以上缺陷或改进需求,本发明提供了一种基于ECA规则的服务组 合方法,其目的在于解决现有服务组合技术缺少动态性和主动性的问题,能实现以事件驱 动服务的动态组合,同时提高了服务的主动性。
[0005] 为实现上述目的,本发明提供了一种基于ECA规则的服务组合方法,其特征在于, 包括如下步骤:(1)以XML格式存储外部服务对应的基本服务信息,注册外部服务;其中,基 本服务信息包括服务名、服务地址、操作名、输入消息和输出消息;(2)以XML格式存储ECA 规则,建立事件名到相应的ECA规则的映射表;其中,ECA规则包括事件名Event、事件触发 条件Condition和活动流程Activity ;活动流程Activity包括基本活动BaseActivity和 结构化活动StructActivity,其组成分别表示如下:
[0006] BaseActivity = {Receive, Assign, Invoke, Reply, Emit},
[0007] StructActivity = {Sequence, Flow, While, Switch};
[0008] 其中,Receive表示请求输入活动,Assign表示参数赋值活动,Invoke表示服务调 用活动,Reply表示响应输出活动,Emit表示事件投递活动;Sequence表示顺序活动,Flow 表示并行活动,While表示循环活动,Switch表示条件分支活动;(3)在客户端请求到达后, 根据ECA规则,解析请求参数并构建事件对象,将事件对象投递到事件通道,形成先入先出 的消息队列;(4)事件引擎从事件通道中获取事件对象,根据事件名到相应的ECA规则的映 射表和注册的外部服务,解析并执行事件对象。
[0009] 优选地,所述步骤(3)进一步包括如下子步骤:(3-1)在客户端请求到达后,解析 请求参数,并将其序列化为指定的XML格式,得到序列化的XML字符串;其中,该XML格式与 ECA规则中的活动流程Activity中请求输入活动Receive的文本值所定义的格式保持一 致;(3-2)构建标准化的事件对象,标准化的事件对象包括事件对象的名称、数据属性和时 戳属性;其中,事件对象的名称与ECA规则中的事件名Event -致,事件对象的数据属性为 步骤(3-1)得到的序列化的XML字符串,事件对象的时戳属性为创建事件对象的系统绝对 时间;(3-3)将标准化的事件对象投递到事件通道,形成先入先出的消息队列;其中,在队 列为空时,等待事件触发,并将到达的事件对象投递到队尾,队列长度加一;在队列为满时, 若新事件到达则循环等待直到队列非满;在队列不为空也不为满时,由事件引擎主动从队 列头获取事件对象,队列长度减一。
[0010] 优选地,所述步骤(4)进一步包括如下子步骤:(4-1)事件引擎从事件通道中获 取事件对象;(4-2)从事件对象中获取事件对象名称,检索事件名到相应的ECA规则的映 射表,获取与事件对象名称匹配对应的ECA规则;(4-3)获取ECA规则中的事件触发条件 Condition,判断是否满足事件触发条件Condition,是则顺序执行步骤(4-4);否则流程结 束;(4-4)遍历活动流程Activity,创建整个活动流程所需的服务调用实例列表;(4-5)将 整个活动流程作为一个可执行的树形结构,其中,叶子节点对应基本活动,非叶子节点对应 结构化活动,从活动流程Activity的根节点开始,解析并执行活动节点,直至遇到出口节 点响应客户端请求并结束整个活动流程。
[0011] 优选地,所述步骤(4-4)进一步包括如下子步骤:(4-4-1)遍历活动流程 Activity,匹配服务调用活动Invoke,提取活动名称、服务名和操作名等属性信息,根据 服务名和操作名获取该服务对应操作的输入消息和输出消息;(4-4-2)将整个活动流程 Activity作为一个新服务,其输入消息格式为Receive活动的值,其输出消息格式为Reply 活动的值;(4-4-3)建立服务实例的活动名称到其输入消息和输出消息格式的映射表。
[0012] 优选地,所述步骤(4-5)中,若当前活动节点为Sequnce、Flow、While或Switch, 则按照相应的控制规则执行其活动子节点;若当前活动节点为Receive、Assign、Invoke或 Emit,则执行其功能函数;若当前活动节点为Reply,则根据活动流程Activity的名称属 性,在步骤(4-4)创建的服务调用实例列表中提取输出消息,最后将输出消息封装成完整 的SOAP消息返回给客户端,完成响应过程。
[0013] 总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效 果:引入事件-条件-动作(Event-Condition-Action,ECA)规则,能实现以事件驱动服务 的动态组合:当外部业务逻辑发生变化时,只需要动态修改ECA规则即可实现服务功能的 更新;ECA规则所绑定的活动流程在执行过程中会根据活动运行情况触发新事件,进行嵌 套调用或异常通知,提高了服务的主动性。
【附图说明】
[0014] 图1是本发明实施例的基于ECA规则的服务组合方法流程图;
[0015] 图2是解析服务描述文档WSDL所对应的数据结构示意图;
[0016] 图3是本发明实施例的方法中步骤⑶的细化流程图;
[0017] 图4是本发明实施例的方法中步骤(4)的细化流程图。
【具体实施方式】
[0018] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并 不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要 彼此之间未构成冲突就可以相互组合。
[0019] 如图1所示,本发明实施例的基于ECA规则的服务组合方法包括如下步骤:
[0020] (1)加载外部服务描述文档WSDL,以XML格式存储外部服务对应的基本服务信息, 注册外部服务,其中,基本服务信息包括服务名、服务地址、操作名、输入消息和输出消息。
[0021] 具体地,根据文件路径名加载外部服务描述文档WSDL,将WSDL解析为DOM节点树 形式后,
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1