一种业务逻辑运行环境实现的方法

文档序号:7897673阅读:262来源:国知局
专利名称:一种业务逻辑运行环境实现的方法
技术领域
本发明涉及电信业务运行环境领域,特别是指一种业务逻辑运行环境实现的方法。
背景技术
JAIN(JAVA API for Intelligent Network)技术致力于提供基于JAVA平台的集成应用程序接口(API)和接口框架,建立或集成一个能跨越各种网络的统一电信业务解决方案。其中,各种网络包括基于网际协议(IP)或异步转移模式(ATM)的分组交换网络、无线网络和传统的公用电话交换网络(PSTN);电信业务解决方案包括业务的可移植性和一致性,外部业务访问该集成网络的安全性等特性。JAIN技术使互联网(Internet)和智能网(Intelligent Network)的协议能够集成在一起,成为新的集成网络(IntegratedNetwork)。JAIN技术组织的众多参与者根据一致定义好的工作过程制定出一系列的API和接口框架,业务开发者遵循这些API和接口框架,能够达到快速开发和部署多样化业务的目的。
JAIN技术组织的工作输出包括两个主要的开发领域API协议规范和API应用规范。API协议规范是制定标准化的接入IP、有线网络和无线网络的信令协议接口规范,信令协议包括事务处理能力应用部分(TCAP)、综合业务服务网用户部分(ISUP)、智能网应用协议(INAP)、移动应用部分(MAP)、会晤启动协议(SIP)和H.323等。API应用规范是制定网络安全访问(JAIN Parlay)、连接性管理、JAIN会话/呼叫控制(JCC/JCAT)、以及JAIN业务生成/电信级业务逻辑运行环境(JSC/SLEE)等方面的接口框架建议和API规范。
图1为JAIN API规范体系结构示意图,如图1所示,JAIN API体系结构可由三层组成JAIN应用层104、JAIN业务层110和JAIN网络协议层(Protocol Layer)111。
JAIN网络协议层111支持TCAP、ISUP、INAP、MAP、SIP、H.323、媒体网关控制协议(MGCP)和Megaco等协议。JAIN网络协议层111的作用是把来自下面实际网络层的特定网络消息适配成JAIN协议的API调用形式。实际网络层包括IP 112、宽带网络(Broadband)113、有线网络(Wireless)114、PSTN 115和卫星网络(Satellite)116等。
JAIN业务层110包括JAIN业务逻辑运行环境(JSLEE,JAIN ServiceLogic Execution Environment)108和JAIN会话/呼叫控制(JCC,JAIN CallControl/JCAT,JAIN Coordination and Transactions)109。业务开发好以后,将业务部署于JSLEE 108,并且业务以JCC/JCAT 109的模式来处理网络事件。JSLEE 108是一系列JAIN API集成的一个重要部分,在JAIN API整个体系结构中处于比较核心的位置。JSLEE是JAIN业务逻辑运行环境,可以视为支撑业务运行的一个虚拟操作系统环境,它的典型功能包括对业务生命周期进行管理,为业务的运行提供各种系统服务等。
JAIN应用层104包括非信任的第三方应用(Untrusted third-partyapplications)101、JAIN业务生成环境(JSCE,JAIN Service CreationEnvironment)102和信任的第三方应用(Trusted third-party applications)103。非信任的第三方应用101通过JAIN业务供应商接口(JSPA,JAIN ServiceProvider Access)105来发现并访问在JSLEE 108中部署的业务及各业务的能力。信任的第三方应用103通过标准的安全接口(Security Interface)106来访问JSLEE 108中的业务。JSCE 102属于JAIN规范,可以独立出来,它是一套可以快速开发JSLEE 108业务的API规范。
JAIN业务层110通过安全的电信空间107与JSPA 105和安全接口106进行通信。
图2为SLEE简化逻辑功能框图,如图2所示,SLEE 201的基本组成部分主要包括业务类型实例池(Service Instance Pool)202、事件调度器(ED,Event Dispatcher)204、系统服务(SLEE Resource)205和数据池206。业务类型实例池202包括多个业务实例203,事件调度器204在业务类型实例池202中查找并获取所需的业务实例203。系统服务205管理业务生命周期、定时器服务、告警服务等。数据池包括存储运行期间各种数据的数据库(DataRepository)207、描述业务的数据—业务描述(Service Description)209,以及描述ED 204可能会调度事件的事件信息(Event Information)208。ED204通过不同的网络适配器(Network Adaptor)210接受来自底层网络协议栈的事件信息(Event Source)2 11。
JAIN SLEE API的集成为具体实现SLEE提供了一个接口框架,它的优势包括以一种标准和可重复使用的方式提供一系列精确定义的API,通过这些API能调用公共功能,业务提供者遵循这些API就能够快速开发新业务和新应用;业务开发者在开发业务的过程中可以只关注于业务的实现逻辑,而不用去关心底层的网络协议和运行业务的技术细节,将业务和底层网络协议的变更屏蔽开来;业务开发者能够快速地生成新业务,也可以利用现存的业务特征组合成新业务;业务开发好以后,新业务可以运行在所有与JSLEE兼容的接口框架上。
除了JAIN SLEE API,JAIN技术组织还提供了实现SLEE的规范,规范描述了业务的生命周期模型、业务的部署机制等。业务的部署机制包括业务打包的结构和对业务内容的定义,如何定义用于指导业务部署的部署描述器(Deployment Descriptor),业务部署和订阅接口等。此外,还定义了业务的运行机制,包括操作管理接口定义、业务间异步通信机制等等。
JSLEE体系结构和API都在随着现有的网络技术和软件实现技术的改进不断演化。JSLEE的优点还体现在它的开放性,它没有规定具体的实现细节,只提供了一个体系结构一级的接口框架和标准的API级接口。这样,不同的开发商可以根据自身的技术特点实现一个具体的SLEE。采用不同的技术,会有性能和成本上的差异,有助于市场上SLEE产品的竞争和发展,同时反过来会促进JSLEE体系结构和API的不断完善。
实现一个电信级的SLEE,必须考虑到分布式处理、负载平衡、数据库的有效存储、对象和连接业务类型实例池的管理等技术细节。从技术层面上看JAIN SLEE可以用组件技术来实现。EJB(Enterprice JAVA BEAN)组件技术就是一个可行的实现JSLEE的技术,除此之外,JINI、JINI JAVASpace、JES都是可选的能够实现JSLEE的组件技术。JSLEE的一些特性,例如分布式处理、负载均衡、处理能力等,完全依赖于所采用的应用程序服务器平台的性能。
如果JSLEE采用EJB组件技术来实现,JSLEE的性能完全依赖于所采用的支持EJB的应用程序服务器平台的性能。目前一些常用的应用程序服务器平台虽然宣称能够达到很高的性能指标,但实际测试的效果并不理想。一些应用程序服务器平台对EJB请求的处理能力大概是1600条请求/秒,而且随着客户端数量的增加,响应时间明显加长。虽然应用程序服务器平台可以通过对系统参数的优化来提高性能,但优化参数所提高的性能不会有本质上的改变。另外,一些应用程序服务器平台可以采用群机叠加技术,虽然会对JSLEE的性能有较大改善,但是,却是在增加软件和硬件投资的基础上实现的。使用EJB组件技术实现JSLEE需要完全遵循EJB 1.0或2.0规范。采用特定的应用程序服务器平台会对EJB规范作适当的扩展,以此达到特定的性能指标或提供一些EJB规范中没有涉及的特性。
基于某些应用程序服务器平台开发JSLEE也需要遵循所采用的应用程序服务器平台的开发规范,在应用程序服务器平台支持的性能特性范围内实现JSLEE。然而,对于有些特性,如异步回调特性,大多数应用程序服务器平台不支持,在设计上只能采取一些变通的方法来实现。
采用EJB组件技术实现JSLEE,在部署JSLEE的时候,过程会比较复杂。首先需要部署应用程序服务器平台,把性能参数先调测到最优化,然后再在应用程序服务器平台上部署JSLEE。如果采用商用的应用程序服务器平台还需要支付昂贵的软件使用费用和维护费用。

发明内容
有鉴于此,本发明的目的在于提供一种业务逻辑运行环境实现的方法,实现了不依赖于应用程序服务器平台的业务逻辑运行环境运行机制。
为了达到上述目的,本发明提供了一种业务逻辑运行环境实现的方法,其特征在于该方法包含以下步骤A、通信实体向事件调度器发送消息中间件事件消息;B、事件调度器根据收到的消息中间件事件消息,在业务类型池中获取相应的业务实例,并控制所获取的业务实例完成相应操作。
所述通信实体为网络协议栈;所述步骤A为网络协议栈向事件调度器发送消息中间件业务会话初始事件消息;所述步骤B为事件调度器根据收到的消息中间件业务会话初始事件消息,在业务类型池中获取空闲的业务实例,并将该业务实例激活,然后控制所获取的业务实例完成相应操作。
所述通信实体为网络协议栈;所述步骤A为网络协议栈向事件调度器发送消息中间件业务会话过程事件消息;所述步骤B为事件调度器根据收到的消息中间件业务会话过程事件消息,在业务类型池中获取相应的激活的业务实例,并控制所获取的业务实例完成相应操作。
所述通信实体为业务实例;所述步骤A为业务实例向事件调度器发送消息中间件业务实例事件消息;所述步骤B为事件调度器根据收到的消息中间件业务实例事件消息,在业务类型池中获取相应的目标业务实例,事件调度器根据业务实例事件消息向目标业务实例发送事件处理信息,控制目标业务实例完成相应操作。
对于分布式业务逻辑运行环境结构,所述步骤B进一步包括事件调度器收到事件消息后,判断相应的业务实例是否位于其所在的业务逻辑运行环境节点上,如果是,在该业务逻辑运行环境节点上的业务类型池中获取相应的业务实例;否则,该事件调度器所在的业务逻辑运行环境节点根据初始化配置文件查找到相应的目标业务实例所在的目标业务逻辑运行环境节点,并获取目标业务逻辑运行环境节点上目标事件调度器的消息中间件地址,该事件调度器向目标事件调度器发送消息中间件格式的消息,目标事件调度器获取相应的业务实例。
对于分布式业务逻辑运行环境结构,所述步骤B进一步包括业务实例所在逻辑运行环境节点将该业务实例置为主业务实例。
较佳地,对于分布式业务逻辑运行环境结构,该方法进一步包含以下步骤D、业务实例调用数据访问接口;E、数据访问接口通过调用本地数据访问工具访问业务会话上下文数据,并对业务会话上下文数据进行操作;F、本地数据访问工具将对业务会话上下文数据的操作结果返回给业务实例。
所述业务会话上下文数据存储于主业务实例所在的业务逻辑运行环境节点。
访问业务会话上下文数据的业务实例为远程业务实例时,该方法进一步包括以下步骤E1、数据访问接口调用远程数据访问工具,远程数据访问工具向主业务实例所在业务逻辑运行环境节的远程数据代理发送消息中间件消息,远程数据代理收到消息中间件消息后,调用本地数据访问工具访问业务会话上下文数据,并对业务会话上下文数据进行操作;F1、本地数据访问工具将对业务会话上下文数据的操作结果返回给所述远程数据代理,所述远程数据代理将对业务会话上下文数据的操作结果返回给所述远程数据访问工具,所述远程数据访问工具将对业务会话上下文数据的操作结果返回给远程业务实例。
在初始化过程中生成所述本地数据访问工具和远程数据访问工具。
对于分布式业务逻辑运行环境结构,所述步骤A进一步包括网络协议栈向任意业务逻辑运行环境节点上的事件调度器发送业务会话初始事件消息。
本发明通过消息中间件技术实现了不依赖于应用程序服务器平台的SLEE运行机制。本发明通过消息中间件技术为SLEE提供通用的通讯平台。并且,在分布式SLEE结构中,业务部署者可以根据负荷均衡、地理位置等条件综合考虑业务部署于哪一个SLEE节点,实现了灵活部署业务的目的,并且通过消息中间件技术可以实现分布式SLEE的数据共享。


图1为JAIN API体系结构示意图;图2为SLEE简化逻辑功能框图;图3为非分布式SLEE结构示意图;图4为分布式SLEE结构示意图;图5为分布式SLEE Session Context数据共享示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步地详细描述。
本发明在SLEE中引入了消息中间件(MOM,Message OrientedMiddleware)技术,通过MOM技术实现通信实体间信息的交互,下面首先对MOM技术进行介绍。
MOM技术用来在通信对象间提供一个高效通用的通信平台。MOM技术支持同步消息和异步消息。发送同步消息,发送者进程会被阻塞,直到收到了消息返回值,才会继续执行后续工作。发送异步消息不存在阻塞问题,发送者发送消息后,可以处理后续流程。每一个需要接收MOM消息的通信实体对象,都需要分配一对唯一的模块标识(MID)和进程标识(PID)。MID表示物理上独立的模块号;PID表示进程号,可以用来标识应用程序中需要接收MOM消息的特定程序模块。MOM消息发送端要将MOM消息发送至目标通信实体,必须知道目标通信实体的MID和PID。一对唯一的MID和PID构成了MOM消息发送的地址,也可称为MOM地址。
MOM消息的接收端通信实体需要实现两个特定JAVA接口的功能,分别用于收到异步消息和同步消息后的处理过程。当MOM接收端通信实体收到MOM消息后,会根据MOM消息类型分别调用这两个接口中的一个,实现MOM消息事件的触发。
SLEE从其运行环境可分为非分布式SLEE和分布式SLEE。其中,非分布式SLEE只能运行于一个物理节点上,即一个JAVA虚拟机(JVM)。对于业务来说,所有业务都部署在同一个物理节点上,业务间的通信都是在同一个JVM上进行的;分布式SLEE只能运行于不同的物理节点上,即不同的JVM上。
图3为非分布式SLEE结构示意图,如图3所示,网络协议栈302运行在与SLEE 301不同的物理节点或JVM上。业务管理器307对多个业务类型实例池202进行管理。来自网络协议栈302的网络消息306以MOM消息的格式发送至SLEE 301的ED 204,ED 204根据该事件的类型标识进行后续处理。
为获得更好的可扩展性和更高的系统处理能力,SLEE必须支持分布式的运行机制,系统负荷可以由多个物理节点来分担。对于业务来说,业务部署于不同的物理节点上,业务间的通信可能在不同的JVM上进行。
图4为分布式SLEE结构示意图,如图4所示,每一个SLEE节点都有一个ED 204。通过ED 204,分布式的SLEE节点间可以相互通信,例如,SLEE节点A 401和SLEE节点B 402。网络协议栈A 403以MOM消息的格式将网络消息306发送至某个SLEE节点的ED 204,例如SLEE节点A 401的ED 204,ED 204根据事件的类型标识进行处理。同时ED 204可以将来自网络协议栈A 403的网络消息306转发至其他SLEE节点的ED 204,例如SLEE节点B 402的ED 204。
SLEE节点A 401中的业务实例A 203可以通过分布调用406去调用SLEE节点B 402中的业务实例。关于业务实例间的分布调用,下面会作介绍。
整个分布式SLEE平台可以由运行在不同物理位置的多个SLEE节点组成,业务可以部署在任意一个SLEE节点上。业务具体部署在哪一个SLEE节点上可根据各个SLEE节点的负荷均衡,或地理位置的方便等条件进行综合考虑。
此外,无论是非分布式SLEE结构还是分布式SLEE结构,所有业务实例均可直接与网络协议栈进行通信,业务实例构造一条MOM消息,通过将MOM消息发送至目标网络协议栈,使目标网络协议栈进行相应操作。
所有需要接收MOM消息的通信实体都需要分配一个唯一的地址标识,即一对唯一的MID和PID的组合,作为发送端发送MOM消息的目的地址。对于非分布式SLEE结构,需要分配MID和PID的通信实体是ED。此外,需要进行通信的网络协议栈也需要为其分配MID和PID。
在非分布式SLEE结构中,SLEE会配置一个初始化配置文件,初始化配置文件中包含了分配给其ED的MID和PID,以及分配给网络协议栈的MID和PID。
在非分布式SLEE结构中,如果是业务会话初始事件(Service InitialEvent),ED收到的业务会话初始事件消息中携带业务的类型标识,ED通过业务管理器在相应类型的业务类型实例池中查找并获取一个空闲的业务实例。SLEE激活空闲的业务实例并对其进行初始化配置,配置一些初始参数。同时SLEE为业务实例分配业务实例标识(Instance ID)。如果当前的业务会话还没有分配业务会话标识(Session ID),则SLEE为当前业务会话分配Session ID,接下来的处理过程与下面所述的业务会话过程中的事件基本相同。
如果是业务会话过程中的事件,ED根据业务会话过程事件消息中携带的Session ID和Instance ID,通过业务管理器在业务类型实例池中找到相应的激活中的业务实例。业务实例在处理事件的过程中,可能会与同一业务会话过程中的其他业务实例进行通信,或者与底层的网络协议栈进行通信。上述业务实例与其他业务实例进行通信时,业务实例将业务实例事件消息发送至ED。ED根据业务实例事件消息将事件处理信息发送至相应的业务实例,使该业务实例去处理相应的事件。
在分布式SLEE结构中,MOM技术同样为通信实体提供了一个高效通用的通信平台,通信实体以该通信平台为基础进行相互间的通信,所有分布式SLEE节点中通信实体间的通信都是基于MOM消息进行的。其中ED之间的通信采用同步MOM消息,这样可以简化ED的设计。ED的MOM消息处理采用多线程机制,ED需要维护一个线程资源池,即ED每收到一条MOM消息,就从线程资源池中取出一条空闲线程并激活该线程,通过运行该线程处理MOM消息。ED之间采用同步MOM消息,发送端ED在发送一条MOM消息后,在等待该MOM消息的响应过程中,只是该线程处于阻塞状态,其他线程可以并行处理其他MOM消息。从宏观上看,ED是可以并行处理多条MOM消息的,ED的调度效率和吞吐量只取决于JVM对线程的调度效率和线程资源池的大小。
在部署分布式SLEE节点的过程中,给每个SLEE节点分配一个唯一的SLEE标识符(SLEE ID)用以标识该SLEE节点。每个网络协议栈也会分配一个唯一的标识符(ID)。
所有需要接收MOM消息的通信实体都需要分配一个唯一的地址标识,即一对唯一的MID和PID的组合,作为发送端发送MOM消息的目的地址。对于分布式SLEE节点,需要分配MID和PID的通信实体是每一个SLEE节点的ED。此外,所有需要进行通信的网络协议栈都需要分配MID和PID。
在分布式SLEE结构中,每个SLEE节点都会配置一个初始化配置文件,初始化配置文件中包含了分配给该SLEE节点的SLEE ID及其ED的MID和PID,其他所有SLEE节点的SLEE ID及与其相对应的ED的MID和PID,分配给所有网络协议栈的ID及其MID和PID。
每个SLEE节点启动初始化过程的时候,会去读取初始化配置文件,把自身SLEE节点的SLEE ID、其ED的MID和PID读入内存,初始化收发MOM消息的通信实体,如配置一些初始参数等,并把通信实体自身的MID和PID绑定到MOM通信实体上,这样通信实体才可以接收MOM消息。这样,通信实体就能够接收发自其他通信实体的MOM消息。同时,SLEE初始化过程还把其他SLEE节点的SLEE ID及与之对应的ED的MID和PID、所有网络协议栈的ID及给所有网络协议栈分配的MID和PID读入内存,并分别建立SLEE ID与该SLEE的ED的MID和PID、网络协议栈的ID与为其分配的MID和PID相互之间的对应关系。这样,通过ID就可以查到与相应通信实体进行通信的MOM地址。
建立一个业务会话(Session)过程是从SLEE平台上某个SLEE节点的ED收到网络协议栈发出的一条业务会话初始事件消息开始的,业务会话初始事件消息中携带业务的类型标识。网络协议栈随机地把业务会话初始事件消息发送至任意一个SLEE节点。
SLEE节点收到业务会话初始事件消息后,如果该业务类型部署在接收到业务会话初始事件消息的SLEE节点上,以下的处理过程与前面所述的非分布式SLEE结构中业务会话初始事件建立的过程基本相同,同时需要将该业务实例设置为当前业务会话的主业务实例。
如果该业务类型没有部署在接收业务会话初始事件消息的ED所在的SLEE节点上,每个SLEE节点都维护了一个部署所有业务类型时,每个业务类型所在的SLEE节点的SLEE ID关系表,该SLEE节点会找到当前业务类型所在的SLEE节点的SLEE ID,通过SLEE节点的SLEE ID找到其ED的MOM地址,即该ED的MID和PID。接收到业务会话初始事件消息的SLEE节点的ED构造出一条用于ED间通信的MOM消息,将业务会话初始事件消息封装在MOM消息中,发送至部署了该业务类型的目标SLEE节点的ED。目标SLEE节点的ED收到该业务会话初始事件消息后,其处理过程与以上所述过程基本相同。
Session ID包含SLEE ID和CallID,其中SLEE ID为发起该业务会话过程的SLEE节点的标识,Call ID为本次呼叫(本次业务实例间的分布调用)的标识,用于组织数据,实现业务会话过程。
Instance ID包含SLEE ID、Self ID和ServiceKey,SLEE ID为该业务实例所运行的SLEE节点的标识,Self ID为不同业务实例的标识,ServiceKey为该业务实例所属业务类型的标识。
如果是业务会话过程中的事件,ED根据业务会话过程事件消息中携带的Session ID判断该业务类型是否部署于其所在的SLEE节点上,如果是,ED通过业务管理器在业务类型实例池中找到相应的激活中的业务实例;否则,ED所在的SLEE节点根据Session ID中包含的SLEE ID找到其ED的MOM地址,即该ED的MID和PID。接收到业务会话过程事件消息的SLEE节点的ED构造出一条用于ED间通信的MOM消息,将业务会话过程事件消息封装在MOM消息中,发送至部署了该业务类型的目标SLEE节点的ED。目标SLEE节点的ED收到该业务会话过程事件消息后,其处理过程与以上所述过程基本相同。
业务实例与其他业务类型的业务实例进行通信时,业务实例将业务实例事件消息发送至ED。ED根据业务实例事件消息中携带的Session ID判断该业务类型是否部署于其所在的SLEE节点上,如果是,ED根据业务实例事件消息将事件处理信息发送至相应的业务实例,使该业务实例去处理相应的事件;否则,ED所在的SLEE节点根据Session ID中包含的SLEE ID找到其ED的MOM地址,即该ED的MID和PID。接收到业务实例事件消息的SLEE节点的ED构造出一条用于ED间通信的MOM消息,将业务实例事件消息封装在MOM消息中,发送至部署了该业务类型的目标SLEE节点的ED。目标SLEE节点的ED收到该业务实例事件消息后,其处理过程与以上所述过程基本相同。
实现分布式SLEE需要考虑的问题有业务间屏蔽物理位置、网络协议栈屏蔽业务物理位置和数据共享。
业务间屏蔽物理位置是指在业务A调用业务B时,业务A不需要知道业务B具体的物理位置,只需相互调用的接口是统一的即可。
网络协议栈屏蔽业务物理位置是指网络协议栈通过向SLEE节点发送业务会话初始事件消息启动一个业务实例,网络协议栈不需要知道该业务实例具体的物理位置,只需将业务会话初始事件消息发送至任意一个SLEE节点,由ED转发业务会话初始事件消息即可。
一个业务会话过程除了主业务实例外,可以包含多个其他业务类型的业务实例,在业务会话过程中会出现业务实例间相互调用的情况,这就是业务实例间的分布调用。业务实例间的分布调用是通过分布式的SLEE节点的ED转发MOM消息来实现的。发起调用的业务实例将业务实例事件消息发送至其所在节点的ED。ED根据业务实例事件消息将事件处理信息发送至目标业务实例,使该业务实例进行相关操作。
发起调用的业务实例所在的SLEE节点为此次调用分配Event ID,被调用的业务实例通过Event ID获知相关操作。在消息的前端有Event ID、Session ID、发起调用方业务实例标识(Source Instance ID)和被调用目标业务实例标识(Destination Instance ID)。Source Instance ID为发起业务实例间调用的业务实例标识,Destination Instance ID为被调用的目标业务实例标识。Session ID和Instance ID都是可序列化的类,即可在网络上进行传输。
当ED处理业务实例间的分布调用时,ED根据Destination Instance ID中的SLEE ID处理业务实例间分布调用的MOM消息时,如果SLEE ID就是自身的SLEE ID,则被调用的业务实例就运行在该SLEE节点上,ED只需找到相应的业务实例,调用该业务实例的事件处理接口即可;如果SLEEID不是自身的SLEE ID,ED能够根据其所在SLEE节点的初始化配置文件查找到相应业务实例所在的SLEE节点的SLEE ID。ED构造一条用于ED间通信的MOM消息,把业务实例间的分布调用消息封装在该MOM消息中,通过同步MOM消息发送至目标SLEE ID的ED,实现业务实例间的分布调用。目标SLEE ID的ED收到该MOM消息后,处理步骤与上述同一SLEE节点间的业务实例调用过程基本相同。
一次业务会话(呼叫)过程会生成大量的数据,统称这些数据为业务会话上下文(Session Context)数据,用于集中存储业务会话过程中有关属性和参数的数据,参与该次业务会话的业务实例会访问和修改这些SessionContext数据。由于业务实例对Session Context数据的访问和修改会比较频繁,为保证访问效率和Session Context数据的安全性及完整性,采用集中方式对Session Context数据进行存储和管理。存储的位置为发起一次业务会话过程的主业务实例(Main Instance)所运行的SLEE节点。对于参与一次业务会话的多个业务实例来说,它们在物理位置上可以是分布的,因此它们访问相应的Session Context数据的方式也是分布的。但是Session Context数据存放的物理位置应该对所有的业务实例都是透明的,也就是说,业务实例访问Session Context数据的接口应该是统一的,即Session Context数据的物理位置对业务实例来说是被屏蔽的,以此来实现Session Context数据的共享。
对于一次业务会话过程中生成的大量Session Context数据,参与该业务会话的业务实例会在业务会话过程中进行频繁访问和修改。为了保证数据的完整性和安全性,采用集中方式对这些Session Context数据进行管理和存储,存储的位置是发起一次业务会话过程的主业务实例所运行的SLEE节点,即在Session ID中包含的SLEE ID所标识的SLEE节点。因为参与一次业务会话过程的多个业务实例可能分布在不同的SLEE节点上,必须为所有业务实例提供一个访问Session Context数据的统一接口,使Session Context数据存储位置在业务实例访问Session Context数据时是被屏蔽的。
在业务实例访问Session Context数据时,业务实例会与主业务实例位于不同的SLEE节点上,因此将与主业务实例位于同一SLEE节点的业务实例称为本地业务实例,相对应地,与主业务实例位于不同SLEE节点的业务实例称为远程业务实例。
图5为分布式SLEE Session Context数据共享示意图,如图5所示,如果业务实例A 501为主业务实例,则Session Context数据存储于主业务实例501所在的分布式SLEE节点A 401。业务实例A 501与业务实例B 502为同属于一个会话过程的不同业务实例。针对所有业务实例访问SessionContext数据的需求,提供一个统一的Session Context数据访问接口(DataAccess)503,数据访问接口503中定义了业务实例访问Session Context数据的所有操作,例如访问、修改等操作。数据访问接口503提供两个不同的类来实现数据访问,一个是用于访问本地Session Context数据的本地数据访问工具(LocalDataAccessImpl)类504,另一个是用于访问远程SessionContext数据的远程数据访问工具(RemoteDataAccessImpl)类505。SLEE节点A 401还需要实现一个远程数据代理(RemoteDataAgent)类506,该类作为位于SLEE节点B 402上的远程业务实例B 502访问SLEE节点A 401的Session Context数据的代理,它能够接收远程数据访问的同步MOM消息,并解析MOM消息,把每个远程数据访问的MOM消息转换成不同的调用。只有LocalDataAccessImpl类504能够访问本地Session Context数据中心,因此RemoteDataAgent类506在初始化过程会生成一个LocalDataAccessImpl类508的引用,通过调用相应的LocalDataAccessImpl类508中的操作访问本地Session Context数据,并通过同步MOM消息的返回结果至发起SessionContext数据访问调用的远程业务实例。
每个SLEE节点中的RemoteDataAgent类都需要接收MOM消息,因此也需要为RemoteDataAgent类分配MOM地址,即一对唯一的MID和PID。该MOM地址也是在SLEE节点初始化过程中在初始配置文件中进行配置的,每个RemoteDataAgent类的MOM地址与其所属的SLEE ID进行关联。SLEE节点在启动的时候从初始配置文件中读出并存储所有SLEE节点的RemoteDataAgent类的MOM地址。
LocalDataAccessImpl类的实现可以通过调用本地API的方式直接去访问Session Context数据中心。
对于RemoteDataAgent类的实现可以通过对每个需要实现的数据访问接口构造不同的MOM消息,把操作类型及所携带的参数封装到MOM消息中。RemoteDataAccessImpl类根据调用数据访问接口的业务实例Instance ID,能够获知业务实例所属的Session ID,通过Session ID可以获知SessionContext数据所在的SLEE节点的SLEE ID,通过该SLEE节点的SLEE ID可以获知RemoteDataAgent类的MOM地址,向该MOM地址发送同步MOM消息,解析同步MOM消息的返回结果就是本次访问Session Context数据获得的结果。
在初始化过程中,将DataAccess与相应的类对应,如果该DataAccess与主业务实例在同一个SLEE节点上,则将DataAccess与本地类相对应;如果DataAccess与主业务实例不在同一个SLEE节点上,则将DataAccess与远程类相对应。DataAccess为业务实例访问Session Context数据提供统一接口,使Session Context数据的存储位置对于访问其的业务实例而言是透明的。
本地业务实例访问Session Context数据时,因为DataAccess与本地类相对应,所以DataAccess 自动调用LocalDataAccessImpl类,LocalDataAccessImpl类访问Session Context数据并对其进行相关操作,然后将操作结果返回给该本地业务实例。
远程业务实例访问Session Context数据时,因为DataAccess与远程类相对应,所以DataAccess自动调用RemoteDataAccessImpl类,该RemoteDataAccessImpl类根据初始化配置文件向主业务实例所在SLEE节点的RemoteDataAgent类发送同步MOM消息,该MOM消息中携带对SessionContext数据的操作类型及该操作类型所对应的参数,RemoteDataAgent类收到MOM消息后,对MOM消息进行解析,然后调用其初始化过程中生成的LocalDataAccessImpl类,该LocalDataAccessImpl类访问Session Context数据并对其进行相关操作,然后将操作结果返回给RemoteDataAgent类,RemoteDataAgent类将操作结果通过同步MOM消息返回给远程业务实例所在SLEE节点的RemoteDataAccessImpl类,最后RemoteDataAccessImpl类将操作结果返回给远程业务实例。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种业务逻辑运行环境实现的方法,其特征在于该方法包含以下步骤A、通信实体向事件调度器发送消息中间件事件消息;B、事件调度器根据收到的消息中间件事件消息,在业务类型池中获取相应的业务实例,并控制所获取的业务实例完成相应操作。
2.根据权利要求1所述的方法,其特征在于所述通信实体为网络协议栈;所述步骤A为网络协议栈向事件调度器发送消息中间件业务会话初始事件消息;所述步骤B为事件调度器根据收到的消息中间件业务会话初始事件消息,在业务类型池中获取空闲的业务实例,并将该业务实例激活,然后控制所获取的业务实例完成相应操作。
3.根据权利要求1所述的方法,其特征在于所述通信实体为网络协议栈;所述步骤A为网络协议栈向事件调度器发送消息中间件业务会话过程事件消息;所述步骤B为事件调度器根据收到的消息中间件业务会话过程事件消息,在业务类型池中获取相应的激活的业务实例,并控制所获取的业务实例完成相应操作。
4.根据权利要求1所述的方法,其特征在于所述通信实体为业务实例;所述步骤A为业务实例向事件调度器发送消息中间件业务实例事件消息;所述步骤B为事件调度器根据收到的消息中间件业务实例事件消息,在业务类型池中获取相应的目标业务实例,事件调度器根据业务实例事件消息向目标业务实例发送事件处理信息,控制目标业务实例完成相应操作。
5.根据权利要求1所述的方法,其特征在于对于分布式业务逻辑运行环境结构,所述步骤B进一步包括事件调度器收到事件消息后,判断相应的业务实例是否位于其所在的业务逻辑运行环境节点上,如果是,在该业务逻辑运行环境节点上的业务类型池中获取相应的业务实例;否则,该事件调度器所在的业务逻辑运行环境节点根据初始化配置文件查找到相应的目标业务实例所在的目标业务逻辑运行环境节点,并获取目标业务逻辑运行环境节点上目标事件调度器的消息中间件地址,该事件调度器向目标事件调度器发送消息中间件格式的消息,目标事件调度器获取相应的业务实例。
6.根据权利要求2所述的方法,其特征在于,对于分布式业务逻辑运行环境结构,所述步骤B进一步包括业务实例所在逻辑运行环境节点将该业务实例置为主业务实例。
7.根据权利要求1所述的方法,其特征在于,对于分布式业务逻辑运行环境结构,该方法进一步包含以下步骤D、业务实例调用数据访问接口;E、数据访问接口通过调用本地数据访问工具访问业务会话上下文数据,并对业务会话上下文数据进行操作;F、本地数据访问工具将对业务会话上下文数据的操作结果返回给业务实例。
8.根据权利要求6或7所述的方法,其特征在于,所述业务会话上下文数据存储于主业务实例所在的业务逻辑运行环境节点。
9.根据权利要求8所述的方法,其特征在于,访问业务会话上下文数据的业务实例为远程业务实例时,该方法进一步包括以下步骤E1、数据访问接口调用远程数据访问工具,远程数据访问工具向主业务实例所在业务逻辑运行环境节的远程数据代理发送消息中间件消息,远程数据代理收到消息中间件消息后,调用本地数据访问工具访问业务会话上下文数据,并对业务会话上下文数据进行操作;F1、本地数据访问工具将对业务会话上下文数据的操作结果返回给所述远程数据代理,所述远程数据代理将对业务会话上下文数据的操作结果返回给所述远程数据访问工具,所述远程数据访问工具将对业务会话上下文数据的操作结果返回给远程业务实例。
10.根据权利要求9所述的方法,其特征在于,在初始化过程中生成所述本地数据访问工具和远程数据访问工具。
11.根据权利要求2所述的方法,其特征在于,对于分布式业务逻辑运行环境结构,所述步骤A进一步包括网络协议栈向任意业务逻辑运行环境节点上的事件调度器发送业务会话初始事件消息。
全文摘要
本发明公开了一种业务逻辑运行环境实现的方法,涉及电信业务运行环境领域,该方法包含通信实体向事件调度器发送消息中间件事件消息;事件调度器根据收到的消息中间件事件消息,在业务类型池中获取相应的业务实例,并控制所获取的业务实例完成相应操作。在分布式业务逻辑运行环境结构中,一次会话过程中的业务实例能够共享该会话过程中生成的业务会话上下文数据,业务实例可对其进行相应操作。通过消息中间件技术为业务逻辑运行环境提供通用的通讯平台。本发明通过消息中间件技术实现了不依赖于应用程序服务器平台的业务逻辑运行环境运行机制,并且通过消息中间件技术可以实现分布式业务逻辑运行环境节点间的数据共享。
文档编号H04Q3/545GK1536818SQ0310949
公开日2004年10月13日 申请日期2003年4月10日 优先权日2003年4月10日
发明者梁笑凯, 廖江波 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1