专利名称:构件化软件系统中实现分布式业务逻辑计算的方法
技术领域:
本发明涉及计算机软件领域,特别涉及构件化软件系统领域,具体是指一种构件化软件系统中实现分布式业务逻辑计算的方法。
背景技术:
随着现代社会科学技术的发展,计算机系统已经成为各行各业所不可缺少的工具,而在其中起着核心作用的,则是计算机软件系统。随着软件系统在各行各业的日益渗透,商业系统的日益庞大,其自身的问题也是越来越严重。现在的一个企业应用,常常会涉及企业的每一个部分,会由几十人编写几十万到几百万行代码来完成。另一方面,现代企业是在一个不断变化的动态环境中生存和发展的,因此,企业应用就需要不断地维护——即部分地改写一些现有软件。由几十万上百万的代码式变化因子,组成的不断变化的系统,其复杂度是人类历史上没有见过的。软件的安全性和质量可靠性,常常成为现代无所不在、无所不能的信息化系统的一个严重问题。
构件技术整合了传统的构件技术、模型驱动技术和面向服务技术,是解决现有软件系统结构弊端的一种有效手段。所谓构件,是指某种自成一体、并有一个(或一组)清晰接口的软件。同时,构件还应具有清晰的运行时和上线内涵。也就是说,该构件具备可供运行时访问的接口;并且,在软件开发生命周期的某个时间点,该构件可独立交付和安装。另外,一个构件还能方便地跟其他构件合并或组合,从而提供有用的功能——通常情况下,单个构件只有跟别的构件协同工作才能达到其功效。
在构件开发的整个生命周期中,构件逻辑的控制和运行是至关重要的,因为它是实现基于构件的软件逻辑运算的基础,但是在现有技术中,并没有一种非常完善可靠的方法来实现构件的业务逻辑计算,特别是在分布式系统中,更是缺乏统一的方法,这样就造成了各种系统是孤立的,相互之间不兼容,构件本身灵活可变和独立性较强的优势无法发挥出来,并造成软件整体的开发效率无法得到根本的改善,同时这样的构件软件开发中存在着开发、实施、维护成本过高,管理不便的问题。在这种情况下,便给现代计算机构件化软件系统中的分布式业务逻辑计算技术的发展带来了一定的阻碍。
发明内容
本发明的目的是克服了上述现有技术中的缺点,提供一种不依赖于具体编程语言和运行环境的的计算方法的流程描述、灵活可变、节约系统资源、运行效率较高、系统性能稳定可靠、适用范围较为广泛的构件化软件系统中实现分布式业务逻辑计算的方法。
为了实现上述的目的,本发明的构件化软件系统中实现分布式业务逻辑计算的方法如下该构件化软件系统中实现分布式业务逻辑计算的方法,包括本地系统和通过计算机网络相连接的远程服务器,其主要特点是,所述的方法包括以下步骤(1)系统进行初始化操作;(2)远程服务器上的业务逻辑引擎进行启动初始化处理操作;(3)系统前端控制器接收到执行业务逻辑的请求,并根据系统预先配置的策略设置组编号或者使用系统默认的组编号;(4)系统判断发送请求的客户端是位于本地系统还是远程系统;(5)如果是本地系统,则直接进行本地的业务逻辑调用处理操作;(6)如果是远程系统,则搜寻对应的目标转发远程服务器地址;(7)系统将执行该业务逻辑所需的信息进行组装处理;(8)系统前端控制器将组装后的消息发送至所述的目标转发远程服务器;(9)系统前端控制器完成上述请求的处理并返回,不阻塞后续的处理;(10)目标转发远程服务器接收相应的消息,并触发一直处于活动状态的MDB(MessageDriven Bean)监听器;(11)MDB监听器对该消息进行解包处理,并传送给所述的业务逻辑引擎;(12)业务逻辑引擎进行本地的业务逻辑调用处理操作;(13)该远程服务器将该业务逻辑调用处理操作的计算结果重新进行组装处理,并发送回本地系统。
所述的业务逻辑引擎进行启动初始化处理操作包括以下步骤(1)载入所有的业务逻辑定义以及其所引用到的各种面向对象类的定义;(2)初始化业务逻辑状态并从数据总线中取出业务逻辑的参数;(3)判断该业务逻辑是否是根节点上的业务逻辑,如果否,则设置子业务逻辑标志;(4)提取运行期环境变量中的信息放入日志记录中;(5)将当前数据总线的值的快照和业务逻辑调用栈信息设为当前调试信息;
(6)将业务逻辑的路径压入调用栈的顶层;(7)将业务逻辑的流程分解成有序的控制节点和计算节点。
所述的业务逻辑调用处理操作包括以下步骤(1)以同步阻塞方式按照将该业务逻辑分解后的流程依次开始各个节点的迭代执行;(2)将调试信息的当前XML数据区指向预备执行的当前节点;(3)克隆预备执行的当前节点的实例;(4)将当前节点所需的输入和输入/输出参数的路径指向的XML数据从父XML数据区复制,构造为该节点当前运行期的XML数据区;(5)执行该节点的运算逻辑;(6)将该节点所设定的输出和输入/输出参数的路径指向的XML数据从当前XML数据区复制并覆盖到父XML数据区;(7)迭代执行下一个节点直到业务逻辑的结束节点;(8)将该业务逻辑从调用栈中弹出;(9)将当前调试信息出栈;(10)清空日志参数;(11)结束该业务逻辑的运行,并返回相应的计算结果。
所述的搜寻目标转发远程服务器地址为从数据库的系统表中寻找该设置的组编号所对应的目标转发服务器地址。
所述的将执行业务逻辑所需的信息进行组装处理包括以下步骤(1)取出该业务逻辑执行所需的输入参数,并将其序列化成二进制流;(2)将该业务逻辑的名称和输入参数按照预设的格式组装成标准JMS消息。
所述的预设的格式中包括消息属性和消息正文,所述的消息属性包括模块名称、进程名称、包名称、请求标识、应用标识和单元标识,所述的消息正文为序列化后的XML数据。
所述的对该消息进行解包处理并传送给所述的业务逻辑引擎包括以下步骤(1)将消息按照预设的格式进行解包;(2)将解包得到的信息重新解释成一个业务逻辑调用,并转发给业务逻辑引擎的EJB对象;(3)将执行业务逻辑所需的输入参数进行反序列化,并传给业务逻辑引擎。
在进行本地的业务逻辑调用处理操作之前、处理操作之后以及处理操作过程中出现异常的情况下,均进行系统处理者处理操作,该处理操作包括以下步骤
(1)系统进行处理者查询匹配处理操作;(2)执行处理者本身所设定的处理;(3)当处理过程中遇到异常的情况下,如果该处理者自己处理内部的异常,则将异常发生后的处置策略以返回值的方式通知系统;(4)如果该处理者将异常抛出,则终止执行后续的其它逻辑,并在运行日志中记录下异常信息。
所述的系统处理者为处理者工厂所生成的一个实例,且在进行本地的业务逻辑调用处理操作之前、处理操作之后以及处理操作过程中所进行的系统处理者处理操作分别为该系统处理者实例的三个方法。
所述的处理者查询匹配处理操作包括以下步骤(1)在系统中建立哈希表,并将初始状态下的Key设置为NullHandler;(2)系统通过处理者名称作为Key在哈希表中查询,如果查询到记录,则直接将记录中的处理者取出并返回;(3)如果未查询到记录,则系统使用通配符进行查询,并将查询的结果缓存入哈希表中,其中Key设置为处理者名称,值为处理者。
采用了该发明的构件化软件系统中实现分布式业务逻辑计算的方法,由于其通过使用特定方式的调用流程来完成构件逻辑的控制和运行,实现了基于构件的软件逻辑运算,而且不依赖于具体编程语言和运行环境的的计算方法的流程描述,整个逻辑组装结构灵活可变,使得软件构件的运行效率大大提高,有效节约了系统资源,并使得系统性能稳定可靠,降低了开发维护的成本;同时增强了系统可移植性和可扩展性;不仅如此,该方法还能够快速回应业务需求的变化和技术变化,能够支撑建立高度模块化而且又高度整合的软件系统,适用范围较为广泛,为现代计算机构件化软件系统中的分布式业务逻辑计算技术的进一步发展打下了坚实的基础。
图1为本发明的构件化软件系统中实现分布式业务逻辑计算的方法的流程图。
图2为本发明的业务逻辑引擎进行启动初始化处理操作和业务逻辑调用处理操作的流程图。
图3为本发明的包含有业务逻辑名称和调用参数的标准JMS消息格式示意图。
图4为本发明的构件化软件系统中实现分布式业务逻辑计算的方法中系统处理者处理操作流程图。
图5为本发明的系统处理者适配器使用单例模式的对象图。
具体实施例方式
为了能够更清楚地理解本发明的技术内容,特举以下实施例详细说明。
请参阅图1至图5所示,该构件化软件系统中实现分布式业务逻辑计算的方法,包括本地系统和通过计算机网络相连接的远程服务器,其中包括以下步骤(1)系统进行初始化操作;(2)远程服务器上的业务逻辑引擎进行启动初始化处理操作,包括以下步骤(a)载入所有的业务逻辑定义以及其所引用到的各种面向对象类的定义;(b)初始化业务逻辑状态并从数据总线中取出业务逻辑的参数;(c)判断该业务逻辑是否是根节点上的业务逻辑,如果否,则设置子业务逻辑标志;(d)提取运行期环境变量中的信息放入日志记录中;(e)将当前数据总线的值的快照和业务逻辑调用栈信息设为当前调试信息;(f)将业务逻辑的路径压入调用栈的顶层;(g)将业务逻辑的流程分解成有序的控制节点和计算节点;(3)系统前端控制器接收到执行业务逻辑的请求,并根据系统预先配置的策略设置组编号或者使用系统默认的组编号;(4)系统判断发送请求的客户端是位于本地系统还是远程系统;(5)如果是本地系统,则直接进行本地的业务逻辑调用处理操作,包括以下步骤(a)以同步阻塞方式按照将该业务逻辑分解后的流程依次开始各个节点的迭代执行;(b)将调试信息的当前XML数据区指向预备执行的当前节点;(c)克隆预备执行的当前节点的实例;(d)将当前节点所需的输入和输入/输出参数的路径指向的XML数据从父XML数据区复制,构造为该节点当前运行期的XML数据区;(e)执行该节点的运算逻辑;(f)将该节点所设定的输出和输入/输出参数的路径指向的XML数据从当前XML数据区复制并覆盖到父XML数据区;(g)迭代执行下一个节点直到业务逻辑的结束节点;(h)将该业务逻辑从调用栈中弹出;
(i)将当前调试信息出栈;(j)清空日志参数;(k)结束该业务逻辑的运行,并返回相应的计算结果;(6)如果是远程系统,则搜寻对应的目标转发远程服务器地址,该搜寻操作为从数据库的系统表中寻找该设置的组编号所对应的目标转发服务器地址;(7)系统将执行该业务逻辑所需的信息进行组装处理,包括以下步骤(a)取出该业务逻辑执行所需的输入参数,并将其序列化成二进制流;(b)将该业务逻辑的名称和输入参数按照预设的格式组装成标准JMS(Java MessageService,Java消息服务)消息,该预设的格式中包括消息属性和消息正文,所述的消息属性包括模块名称、进程名称、包名称、请求标识、应用标识和单元标识,所述的消息正文为序列化后的XML数据;(8)系统前端控制器将组装后的消息发送至所述的目标转发远程服务器;(9)系统前端控制器完成上述请求的处理并返回,不阻塞后续的处理;(10)目标转发远程服务器接收相应的消息,并触发一直处于活动状态的MDB(MessageDriven Bean)监听器;(11)MDB监听器对该消息进行解包处理,并传送给所述的业务逻辑引擎,包括以下步骤(a)将消息按照预设的格式进行解包;(b)将解包得到的信息重新解释成一个业务逻辑调用,并转发给业务逻辑引擎的EJB对象;(c)将执行业务逻辑所需的输入参数进行反序列化,并传给业务逻辑引擎;(12)业务逻辑引擎进行本地的业务逻辑调用处理操作;(13)该远程服务器将该业务逻辑调用处理操作的计算结果重新进行组装处理,并发送回本地系统。
同时,在进行本地的业务逻辑调用处理操作之前、处理操作之后以及处理操作过程中出现异常的情况下,均进行系统处理者(Handler)处理操作,该处理操作包括以下步骤(1)系统进行处理者查询匹配处理操作,包括以下步骤(a)在系统中建立哈希(Hash)表,并将初始状态下的Key设置为NullHandler;(b)系统通过处理者名称作为Key在哈希表中查询,如果查询到记录,则直接将记录中的处理者取出并返回;
(c)如果未查询到记录,则系统使用通配符进行查询,并将查询的结果缓存入哈希表中,其中Key设置为处理者名称,值为处理者;(2)执行处理者本身所设定的处理;(3)当处理过程中遇到异常的情况下,如果该处理者自己处理内部的异常,则将异常发生后的处置策略以返回值的方式通知系统;(4)如果该处理者将异常抛出,则终止执行后续的其它逻辑,并在运行日志中记录下异常信息。
所述的系统处理者为处理者工厂(HandlerFactory)所生成的一个实例,且在进行本地的业务逻辑调用处理操作之前、处理操作之后以及处理操作过程中所进行的系统处理者处理操作分别为该系统处理者实例的三个方法。
在实际应用当中,本发明的分布式业务逻辑计算方法中,构件的计算方式如下1、基础计算(1)在业务逻辑引擎启动时将载入所有的业务逻辑定义以及它所引用到的各种面向对象的(OO,Object Oriented)类的定义;(2)初始化业务逻辑状态并从数据总线中取出业务逻辑的参数;(3)如果业务逻辑是不是根节点上的业务逻辑,则置子业务逻辑标志;(4)提取运行期环境变量中的信息放入日志记录中;(5)将当前数据总线的值快照和业务逻辑调用栈信息设为当前调试信息;(6)将业务逻辑的路径压入调用栈的顶层;(7)将业务逻辑的流程分解成有序的控制节点和计算节点;(8)按照分解后的流程依次开始各个节点的迭代执行;(9)将调试信息的当前XML数据区指向预备执行的节点;(10)克隆预备执行的节点的实例(防止并发冲突);(11)将节点所需的输入和输入/输出参数的路径指向的XML数据从父XML数据区复制,构造为节点当前运行期的XML数据区;(12)执行该节点的运算逻辑;(13)将节点所设定的输出和输入/输出参数的路径指向的XML数据从当前XML数据区复制并覆盖到父XML数据区;(14)迭代执行下一个节点直到业务逻辑的结束节点;(15)将当前业务逻辑从调用栈中弹出;
(16)将当前调试信息出栈;(17)清空日志参数;(18)结束业务逻辑的运行。
2、基于组编号的分布式计算模式(1)前端控制器收到执行业务逻辑的请求;(2)根据配置的策略设置组编号UnitId或者使用默认的组编号;(3)判断发送请求的客户端是位于本地机器还是远程机器;(4)如果是本地机器则直接使用同步阻塞调用方式执行业务逻辑计算;(5)否则,去数据库的系统表中寻找给定UnitId所对应的转发服务器地址;(6)为了让请求能够通过网络传输,首先取出本次业务逻辑所需的输入参数,将其序列化成二进制流;(7)所请求的业务逻辑名称和调用的参数被格式化成以下形式的标准JMS消息(8)组装后的消息被发送到之前选定的目标转发服务器上;(9)前端控制器完成此次请求的处理并返回,不阻塞后续的处理;(10)当消息到达目标服务器时,一直处于活动状态的MDB监听器将会被触发;(11)监听器将消息解包后重新解释成一个业务逻辑调用并转发给业务逻辑引擎的EJB(Enterprise Java Bean)对象;(12)业务逻辑所需的输入参数此时也被反序列化后一同传给业务逻辑引擎;(13)业务逻辑引擎以普通业务逻辑方式执行逻辑计算;(14)计算的结果重新被序列化并返回;3、业务逻辑截面计算处理(Handle)的目的是为了能够灵活的在逻辑构件处理的某一个时机加入新的处理,这样逻辑构件就只需要关心具体的业务问题,一些额外的操作可以进行灵活的配置,起到了类似动态AOP的效果(PointCut就是每个展现逻辑、业务逻辑)。为了更加灵活的支持开发者的定制,需要对目前的Handle实现进行进一步扩展。在构件化软件系统中包含两种Handle,即展现逻辑Handle和业务逻辑Handle,现在增加了一个运算逻辑Handler,在运算构件执行的前、后时机,可以回调bizlet Handle。
(1)Handle调用机制现有的构件化软件系统中,Handle被回调的时机只有逻辑执行前和执行后两个时刻,现在增加了一个异常抛出的时刻。当逻辑被调用前、被调用后、或逻辑执行过程中发生异常的时候,都将触发指定Handle的相应回调函数。
原则上Handler应该自己处理内部的异常,通过返回值告之Server异常发生后的处置策略,若Handler将异常抛出,则余下的逻辑和Handler都将不会被执行,并在运行日志中记录下异常信息。
(2)Handler的效率因为像AccessController这样的Handler调用的十分频繁,所以Handler的运行效率要比较高。保证原有Handler的效率从两方面进行了考虑首先是Handler的生成。处理者工厂(HandlerFactory)为每个Handler生成一个实例,而前置、后置和异常处理被定义为一个Handler的三个方法,这样每个Handler都仅会被实例化一次。当使用Adapter调用原有Handler实现时,Adapter仅生成一次,通过Dispatch模式将执行权代理给具体的Handler实例。
再请参阅图5所示,Adapter本身也仅有一个实例,每次调用时通过setDelegatingHandlerClass将它所代理的Handler指向不同的原有Handler实例。
其次是Handler的匹配效率,由于每次使用通配符进行查询的效率不是最好,所以每次匹配命中后,匹配的结果都缓存到Hash表中,以后每次调用同样名称的逻辑时,将直接从缓存表中去取对应的Handler。由于Map的key不能为null,所以一个逻辑没有配任何Handler时,将在表中放一个NullHandler来表示不需要执行任何Handler操作。
(3)Handler的并发处理在传统的旧接口的实现中,仅展现逻辑的接口实现了java.lang.Clonable(),新的接口改为全部继承克隆接口,每次请求执行,均复制一个新的实例处理请求。
在上述实施例中,使用的是结构的扩展标记语言描述,当然也可以根据需要采用其它的标准元语机制,无论采用何种描述机制,本发明的构建方法始终能够很好的支持开发过程的可视化。在集成开发环境中,构件的内部逻辑和接口定义能够更加直观的得以表现,从而大大提高开发、调试、部署、管理的效率。
在现代计算机软件开发领域,面向构件技术整合了传统的构件技术、模型驱动技术和面向服务技术,是解决现有软件系统结构弊端的一种有效手段。所谓构件,是指某种自成一体、并有一个(或一组)清晰接口的软件。同时,构件应具有清晰的运行时和上线内涵。也就是说,该构件具备可供运行时访问的接口;并且,在软件开发生命周期的某个时间点,该构件可独立交付和安装。另外,还必须要求一个构件能方便地跟其他构件合并或组合,从而提供各种有用的功能,而且在通常情况下,单个构件只有跟其它的构件协同工作才能达到其功效。
基于面向构件的体系架构,面向构件的开发是一种先进的软件开发手段,在开发周期的不同阶段和不同方面——包括需求分析、结构、设计、建立、测试、上线、支撑性技术架构、项目管理等,都以构件为基础。该定义把面向构件开发的外延,从运用面向构件的思路建立软件,扩展到了整个软件开发周期——它的所有阶段和所有方面都以构件为中心。如果希望构件可随时用于组装,这些构件必须作为项目的零件来建造,此时面向构件显得特别有优势。因此,用构件法来构思信息系统,是目前控制大型分布式系统开发复杂度的最佳方法。
采用了上述的构件化软件系统中实现分布式业务逻辑计算的方法,由于其通过使用特定方式的调用流程来完成构件逻辑的控制和运行,实现了基于构件的软件逻辑运算,而且不依赖于具体编程语言和运行环境的的计算方法的流程描述,整个逻辑组装结构灵活可变,使得软件构件的运行效率大大提高,有效节约了系统资源,并使得系统性能稳定可靠,降低了开发维护的成本;同时增强了系统可移植性和可扩展性;通过实施本发明的分布式业务逻辑计算方法,能够使得构件化的软件的优势得以充分发挥,并强有力的支持了构件化软件系统的开发,同时具有以下优势(1)大大降低了开发、上线、个性化成本,容易向大型的高性能和可扩展系统演变,从而来降低软件开发方面的“制造成本”。换句话说,本发明的构建方法所关注的不仅是分析——设计——开发这个生命周期,而是软件产品的整个寿命;(2)能够快速回应“业务需求”的变化和“技术变化”。本发明的构建方法能以“订单生产”的方式,来应对某个垂直领域或某个特定客户的具体需求,从而能够交付出“高度个性化”和“可配置”的产品和流程;(3)能够支撑建立既“高度模块化”又“高度整合”的软件。本发明的构建方法能够使软件构件不仅具有精确定义的边界,同时又归属于一个明确的结构;(4)本发明的构建方法是一种事实上的软件构件“标准”,能够对构件规格和互动,起到技术和功能的双方面指导作用。
不仅如此,该方法还能够快速回应业务需求的变化和技术变化,能够支撑建立高度模块化而且又高度整合的软件系统,适用范围较为广泛,为现代计算机构件化软件系统中的分布式业务逻辑计算技术的进一步发展打下了坚实的基础。
在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。
权利要求
1.一种构件化软件系统中实现分布式业务逻辑计算的方法,包括本地系统和通过计算机网络相连接的远程服务器,其特征在于,所述的方法包括以下步骤(1)系统进行初始化操作;(2)远程服务器上的业务逻辑引擎进行启动初始化处理操作;(3)系统前端控制器接收到执行业务逻辑的请求,并根据系统预先配置的策略设置组编号或者使用系统默认的组编号;(4)系统判断发送请求的客户端是位于本地系统还是远程系统;(5)如果是本地系统,则直接进行本地的业务逻辑调用处理操作;(6)如果是远程系统,则搜寻对应的目标转发远程服务器地址;(7)系统将执行该业务逻辑所需的信息进行组装处理;(8)系统前端控制器将组装后的消息发送至所述的目标转发远程服务器;(9)系统前端控制器完成上述请求的处理并返回,不阻塞后续的处理;(10)目标转发远程服务器接收相应的消息,并触发一直处于活动状态的MDB监听器;(11)MDB监听器对该消息进行解包处理,并传送给所述的业务逻辑引擎;(12)业务逻辑引擎进行本地的业务逻辑调用处理操作;(13)该远程服务器将该业务逻辑调用处理操作的计算结果重新进行组装处理,并发送回本地系统。
2.根据权利要求1所述的构件化软件系统中实现分布式业务逻辑计算的方法,其特征在于,所述的业务逻辑引擎进行启动初始化处理操作包括以下步骤(1)载入所有的业务逻辑定义以及其所引用到的各种面向对象类的定义;(2)初始化业务逻辑状态并从数据总线中取出业务逻辑的参数;(3)判断该业务逻辑是否是根节点上的业务逻辑,如果否,则设置子业务逻辑标志;(4)提取运行期环境变量中的信息放入日志记录中;(5)将当前数据总线的值的快照和业务逻辑调用栈信息设为当前调试信息;(6)将业务逻辑的路径压入调用栈的顶层;(7)将业务逻辑的流程分解成有序的控制节点和计算节点。
3.根据权利要求2所述的构件化软件系统中实现分布式业务逻辑计算的方法,其特征在于,所述的业务逻辑调用处理操作包括以下步骤(1)以同步阻塞方式按照将该业务逻辑分解后的流程依次开始各个节点的迭代执行;(2)将调试信息的当前XML数据区指向预备执行的当前节点;(3)克隆预备执行的当前节点的实例;(4)将当前节点所需的输入和输入/输出参数的路径指向的XML数据从父XML数据区复制,构造为该节点当前运行期的XML数据区;(5)执行该节点的运算逻辑;(6)将该节点所设定的输出和输入/输出参数的路径指向的XML数据从当前XML数据区复制并覆盖到父XML数据区;(7)迭代执行下一个节点直到业务逻辑的结束节点;(8)将该业务逻辑从调用栈中弹出;(9)将当前调试信息出栈;(10)清空日志参数;(11)结束该业务逻辑的运行,并返回相应的计算结果。
4.根据权利要求1所述的构件化软件系统中实现分布式业务逻辑计算的方法,其特征在于,所述的搜寻目标转发远程服务器地址为从数据库的系统表中寻找该设置的组编号所对应的目标转发服务器地址。
5.根据权利要求1所述的构件化软件系统中实现分布式业务逻辑计算的方法,其特征在于,所述的将执行业务逻辑所需的信息进行组装处理包括以下步骤(1)取出该业务逻辑执行所需的输入参数,并将其序列化成二进制流;(2)将该业务逻辑的名称和输入参数按照预设的格式组装成标准JMS消息。
6.根据权利要求5所述的构件化软件系统中实现分布式业务逻辑计算的方法,其特征在于,所述的预设的格式中包括消息属性和消息正文,所述的消息属性包括模块名称、进程名称、包名称、请求标识、应用标识和单元标识,所述的消息正文为序列化后的XML数据。
7.根据权利要求6所述的构件化软件系统中实现分布式业务逻辑计算的方法,其特征在于,所述的对该消息进行解包处理并传送给所述的业务逻辑引擎包括以下步骤(1)将消息按照预设的格式进行解包;(2)将解包得到的信息重新解释成一个业务逻辑调用,并转发给业务逻辑引擎的EJB对象;(3)将执行业务逻辑所需的输入参数进行反序列化,并传给业务逻辑引擎。
8.根据权利要求1至7中任一项所述的构件化软件系统中实现分布式业务逻辑计算的方法,其特征在于,在进行本地的业务逻辑调用处理操作之前、处理操作之后以及处理操作过程中出现异常的情况下,均进行系统处理者处理操作,该处理操作包括以下步骤(1)系统进行处理者查询匹配处理操作;(2)执行处理者本身所设定的处理;(3)当处理过程中遇到异常的情况下,如果该处理者自己处理内部的异常,则将异常发生后的处置策略以返回值的方式通知系统;(4)如果该处理者将异常抛出,则终止执行后续的其它逻辑,并在运行日志中记录下异常信息。
9.根据权利要求8所述的构件化软件系统中实现分布式业务逻辑计算的方法,其特征在于,所述的系统处理者为处理者工厂所生成的一个实例,且在进行本地的业务逻辑调用处理操作之前、处理操作之后以及处理操作过程中所进行的系统处理者处理操作分别为该系统处理者实例的三个方法。
10.根据权利要求8所述的构件化软件系统中实现分布式业务逻辑计算的方法,其特征在于,所述的处理者查询匹配处理操作包括以下步骤(1)在系统中建立哈希表,并将初始状态下的Key设置为NullHandler;(2)系统通过处理者名称作为Key在哈希表中查询,如果查询到记录,则直接将记录中的处理者取出并返回;(3)如果未查询到记录,则系统使用通配符进行查询,并将查询的结果缓存入哈希表中,其中Key设置为处理者名称,值为处理者。
全文摘要
本发明涉及一种构件化软件系统中实现分布式业务逻辑计算的方法,包括远程服务器上的业务逻辑引擎进行启动初始化处理、前端控制器根据执行业务逻辑请求设置组编号或者使用系统默认的组编号、对远程系统搜寻对应的目标转发远程服务器地址、将业务逻辑信息进行组装并发送至所述的目标转发远程服务器、远程服务器接收消息、MDB监听器对该消息进行解包处理并传送给业务逻辑引擎、进行本地的业务逻辑调用处理、将计算结果重新组装发送回本地系统。采用该种构件化软件系统中实现分布式业务逻辑计算的方法,运行效率提高,节约系统资源,系统性能稳定可靠,降低了开发维护的成本;同时增强了系统可移植性和可扩展性,适用范围较为广泛。
文档编号H04L12/56GK1912840SQ200610030480
公开日2007年2月14日 申请日期2006年8月25日 优先权日2006年8月25日
发明者黄柳青, 焦列焱, 王葱权 申请人:上海普元信息技术有限责任公司