CN114567667B - 一种基于责任链设计模式的业务处理组件系统 - Google Patents

一种基于责任链设计模式的业务处理组件系统 Download PDF

Info

Publication number
CN114567667B
CN114567667B CN202210212160.7A CN202210212160A CN114567667B CN 114567667 B CN114567667 B CN 114567667B CN 202210212160 A CN202210212160 A CN 202210212160A CN 114567667 B CN114567667 B CN 114567667B
Authority
CN
China
Prior art keywords
service
pipeline
class
logic interface
commandhandler
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210212160.7A
Other languages
English (en)
Other versions
CN114567667A (zh
Inventor
杨晖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Qianhai Huanrong Lianyi Information Technology Service Co Ltd
Original Assignee
Shenzhen Qianhai Huanrong Lianyi Information Technology Service Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Qianhai Huanrong Lianyi Information Technology Service Co Ltd filed Critical Shenzhen Qianhai Huanrong Lianyi Information Technology Service Co Ltd
Priority to CN202210212160.7A priority Critical patent/CN114567667B/zh
Publication of CN114567667A publication Critical patent/CN114567667A/zh
Application granted granted Critical
Publication of CN114567667B publication Critical patent/CN114567667B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0876Aspects of the degree of configuration automation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/20Network management software packages

Abstract

本发明公开了一种基于责任链设计模式的业务处理组件系统,包括业务请求参数端和业务处理结果端;还包括分别与业务请求参数端和业务处理结果端连接的业务逻辑接口CommandHandler、业务管道实现类CommandHandlerPipeline、流水线基础元素CommandHandlerContext。本发明实现了不与任何API耦合,单纯处理业务逻辑,且对外提供异常处理扩展,并与spring完美结合,通过spring的IOC自动完成责任链的初始化的基于责任链设计模式的业务处理组件系统。

Description

一种基于责任链设计模式的业务处理组件系统
技术领域
本发明涉及计算机软件领域,尤其涉及的是一种基于责任链设计模式的业务处理组件系统。
背景技术
责任链模式是一种处理请求的模式,它让多个处理器都有机会处理该请求,直到其中某个处理成功为止。责任链模式把多个处理器串成链,然后让请求在链上传递;现有使用责任链模式的实现中,都与特定场景、特定功能结合,无法用于通用的业务处理场景下。
现有技术包括以下两类:
1、Tomcat中的Servlet过滤器。
Servlet过滤器是可用于Servlet编程的Java类,可以实现以下目的:在客户端的请求访问后端资源之前,拦截这些请求;在服务器的响应发送回客户端之前,处理这些响应。
在运行过滤器之前需要完成过滤器的加载和初始化,以及根据配置信息生成过滤器链:
(1)过滤器的加载具体是在ContextConfig类的configureContext方法中,分别加载filter和filterMap的相关信息,并保存在上下文环境中;
(2)过滤器的初始化在StandardContext类的startInternal方法中完成,保存在filterConfigs中并存到上下文环境中;
(3)请求流转到StandardWrapperValve时,在invoke方法中,会根据过滤器映射配置信息,为每个请求创建对应的ApplicationFilterChain,其中包含了目标Servlet以及对应的过滤器链,并调用过滤器链的doFilter方法执行过滤器;
2、Netty中的ChannelPipeline、ChannelHandlerContext、Handler组件。
一个channel对应一条ChannelPipeline,Netty在传输层接收或者发送消息之前,都会将消息派发事件到ChannelPipeline中进行流转。
在启动Netty时,服务端和客户端可分别在public B handler(ChannelHandlerhandler)和public ServerBootstrap childHandler(ChannelHandler childHandler)方法中配置父子channel的Handler。然后Netty会根据该配置,在初始化channel时,同时初始化pipeline。以子channel为例,其pipeline初始化和运行过程如下:
(1)父channel在传输层收到消息,开始创建子channel;
(2)为子channel初始化pipeline,根据之前在childHandler()方法中配置的handler,将handler包装为ChannelHandlerContext,并根据配置的先后顺序,依次加入到pipeline内置的链表中,完成初始化;
(3)channel将消息派发到初始化完成的pipeline中,然后消息就会按配置的顺序,并根据消息类型(netty将消息分为入站消息和出站消息),沿着pipeline里ChannelHandlerContext链的顺序,往一个方向传递下去。
上述两类现有技术中,Tomcat中的Servlet过滤器与Servlet容器相关API耦合,只能用于处理HTTP请求,且其未提供全局的异常处理;而Netty中的ChannelPipeline也正如其名,是与Channel耦合在一起的,只能用在Netty自身的IO处理。这两类技术也无法直接用在现在业务开发使用的spring环境下。
因此,现有技术存在缺陷,需要改进。
发明内容
本发明所要解决的技术问题是:提供一种不与任何API耦合,单纯处理业务逻辑,且对外提供异常处理扩展,并与spring完美结合,通过spring的IOC自动完成责任链的初始化的基于责任链设计模式的业务处理组件系统。
本发明的技术方案如下:一种基于责任链设计模式的业务处理组件系统,包括业务请求参数端和业务处理结果端;还包括分别与业务请求参数端和业务处理结果端连接的业务逻辑接口CommandHandler、业务管道实现类CommandHandlerPipeline、流水线基础元素CommandHandlerContext;其中,业务逻辑接口CommandHandler用于处理业务和处理异常;业务管道实现类CommandHandlerPipeline用于为业务逻辑接口CommandHandler提供实现具体业务处理和异常处理的方法;流水线基础元素CommandHandlerContext用于封装业务逻辑接口CommandHandler并将其链接到业务管道实现类CommandHandlerPipeline的链表上。
应用于上述技术方案,所述的业务处理组件系统中,业务管道实现类CommandHandlerPipeline包含添加接口具体业务实现类的方法、用于派发事件的方法、用于处理异常的方法。
应用于上述各个技术方案,所述的业务处理组件系统中,还包括注解Handler,用于标注在业务逻辑接口CommandHandler的具体业务管道实现类CommandHandlerPipeline上,用于表示这个实现类是业务管道实现类CommandHandlerPipeline中的一个。
应用于上述各个技术方案,所述的业务处理组件系统中,还包括注解Handler的内部类注解BindPipelineInfo,用于配置业务逻辑接口CommandHandler与业务管道实现类CommandHandlerPipeline的绑定,以及order的信息。
应用于上述各个技术方案,所述的业务处理组件系统中,还包括注解Pipeline,用于标注在业务管道实现类CommandHandlerPipeline的子类上,用于表示这个类是一个业务处理的流水线。
应用于上述各个技术方案,所述的业务处理组件系统中,还包括自动配置类PipelineBeanPostProcessor,用于自动配置具体业务管道实现类CommandHandlerPipeline的方法给业务逻辑接口CommandHandler。
应用于上述各个技术方案,所述的业务处理组件系统中,还包括注解EnableHandlerPipeline,用于启用上述自动配置类PipelineBeanPostProcessor,并完成自动配置。
应用于上述各个技术方案,所述的业务处理组件系统中,还包括注册类PipelineRegister,用于扫描工程中的业务逻辑接口CommandHandler和业务管道实现类CommandHandlerPipeline,然后注册到spring容器中。
本发明的有益效果为:
本发明不与任何API耦合,单纯处理业务逻辑,且对外提供异常处理扩展,并与spring完美结合,通过spring的IOC自动完成责任链的初始化。
附图说明
图1为本发明的UML类图。
具体实施方式
以下结合附图和具体实施例,对本发明进行详细说明。
本实施例提供了一种基于责任链设计模式的业务处理组件系统,如图1所示,业务处理组件系统包括业务请求参数端Request101和业务处理结果端Response102;还包括分别与业务请求参数端Request101和业务处理结果端Response102连接的业务逻辑接口CommandHandler104、业务管道实现类CommandHandlerPipeline111、流水线基础元素CommandHandlerContext103。
其中,业务逻辑接口CommandHandler104用于处理业务和处理异常;业务逻辑接口CommandHandler104包含handleCommand和handleException两个方法,handleCommand和handleException是用于具体实现类实现该业务逻辑接口CommandHandler104,按需实现上述两个方法,分别用于处理业务和处理异常。
业务管道实现类CommandHandlerPipeline111用于为业务逻辑接口CommandHandler提供实现具体业务处理和异常处理的方法;其中,业务管道实现类CommandHandlerPipeline包含添加接口具体业务实现类的方法、用于派发事件的方法、用于处理异常的方法。具体为:包含添加CommandHander接口具体业务实现类的方法addLast(),addFirst(),用于派发事件的fireHandleCommand()方法,还有用于处理异常的fireHandleException()方法。其属性字段head和tail用于保存双向链表的头结点和尾结点。
流水线基础元素CommandHandlerContext103用于封装业务逻辑接口CommandHandler并将其链接到业务管道实现类CommandHandlerPipeline的链表上;其中,流水线基础元素CommandHandlerContext是流水线中的基础元素。一个流水线基础元素CommandHandlerContext对应一个业务逻辑接口CommandHandler,其用于封装业务逻辑接口CommandHandler,然后链接到pipeline的链表上。
并且,还包括注解Handler109,注解Handler109用于标注在业务逻辑接口CommandHandler的具体业务管道实现类CommandHandlerPipeline上,用于表示这个实现类是业务管道实现类CommandHandlerPipeline中的一个。
以及,还包括注解Handler109的内部类注解BindPipelineInfo107,内部类注解BindPipelineInfo107用于配置业务逻辑接口CommandHandler与业务管道实现类CommandHandlerPipeline的绑定,以及order的信息。
并且,还包括注解Pipeline106,注解Pipeline106用于标注在业务管道实现类CommandHandlerPipeline的子类上,用于表示这个类是一个业务处理的流水线。
还包括自动配置类PipelineBeanPostProcessor110,自动配置类PipelineBeanPostProcessor110用于自动配置具体业务管道实现类CommandHandlerPipeline的方法给业务逻辑接口CommandHandler;如此,通过具体业务管道实现类CommandHandlerPipeline的方法来实现业务逻辑接口CommandHandler。
还包括注解EnableHandlerPipeline108,注解EnableHandlerPipeline108用于启用上述自动配置类PipelineBeanPostProcessor,并完成自动配置。
最后还包括注册类PipelineRegister105,注册类PipelineRegister105用于扫描工程中的业务逻辑接口CommandHandler和业务管道实现类CommandHandlerPipeline,然后注册到spring容器中,从而实现与spring完美结合,通过spring的IOC自动完成责任链的初始化。
实际使用中,一个业务可以写一个CommandHandlerPipeline子类,并通过实现CommandHandler接口完成具体的业务逻辑,然后在该业务实现类上标注Handler注解,实现handler与pipeline的绑定。之后,可以把pipeline放到service层,在调用pipeline.fireHandleCommand()方法前将Controller层的参数设置到一个新的request实例里(调用setAttributeByName方法),然后调用fireHandleCommand方法,即可将请求流转到自己的CommandHandler实现类中。
本发明不与任何API耦合,单纯处理业务逻辑,且对外提供异常处理扩展,并与spring完美结合,通过spring的IOC自动完成责任链的初始化。
以上仅为本发明的较佳实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种基于责任链设计模式的业务处理组件系统,包括业务请求参数端和业务处理结果端;其特征在于:
还包括分别与业务请求参数端和业务处理结果端连接的业务逻辑接口CommandHandler、业务管道实现类CommandHandlerPipeline、流水线基础元素CommandHandlerContext;
其中,业务逻辑接口CommandHandler用于处理业务和处理异常;业务管道实现类CommandHandlerPipeline用于为业务逻辑接口CommandHandler提供实现具体业务处理和异常处理的方法;
流水线基础元素CommandHandlerContext用于封装业务逻辑接口CommandHandler并将其链接到业务管道实现类CommandHandlerPipeline的链表上;
业务管道实现类CommandHandlerPipeline包含添加CommandHander接口具体业务实现类的方法addLast(),addFirst(),用于派发事件的fireHandleCommand()方法,还有用于处理异常的fireHandleException()方法;
还包括注册类PipelineRegister,用于扫描工程中的业务逻辑接口CommandHandler和业务管道实现类CommandHandlerPipeline,然后注册到spring容器中。
2.根据权利要求1所述的业务处理组件系统,其特征在于:还包括注解Handler,用于标注在业务逻辑接口CommandHandler的具体业务管道实现类CommandHandlerPipeline上,用于表示这个实现类是业务管道实现类CommandHandlerPipeline中的一个。
3.根据权利要求2所述的业务处理组件系统,其特征在于:还包括注解Handler的内部类注解BindPipelineInfo,用于配置业务逻辑接口CommandHandler与业务管道实现类CommandHandlerPipeline的绑定,以及order的信息。
4.根据权利要求2所述的业务处理组件系统,其特征在于:还包括注解Pipeline,用于标注在业务管道实现类CommandHandlerPipeline的子类上,用于表示这个类是一个业务处理的流水线。
5.根据权利要求1所述的业务处理组件系统,其特征在于:还包括自动配置类PipelineBeanPostProcessor,用于自动配置具体业务管道实现类CommandHandlerPipeline的方法给业务逻辑接口CommandHandler。
6.根据权利要求4所述的业务处理组件系统,其特征在于:还包括注解EnableHandlerPipeline,用于启用上述自动配置类PipelineBeanPostProcessor,并完成自动配置。
CN202210212160.7A 2022-03-04 2022-03-04 一种基于责任链设计模式的业务处理组件系统 Active CN114567667B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210212160.7A CN114567667B (zh) 2022-03-04 2022-03-04 一种基于责任链设计模式的业务处理组件系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210212160.7A CN114567667B (zh) 2022-03-04 2022-03-04 一种基于责任链设计模式的业务处理组件系统

Publications (2)

Publication Number Publication Date
CN114567667A CN114567667A (zh) 2022-05-31
CN114567667B true CN114567667B (zh) 2024-03-15

Family

ID=81717889

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210212160.7A Active CN114567667B (zh) 2022-03-04 2022-03-04 一种基于责任链设计模式的业务处理组件系统

Country Status (1)

Country Link
CN (1) CN114567667B (zh)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002027510A1 (en) * 2000-09-28 2002-04-04 Bea Systems, Inc. System for managing logical process flow in an online environment
US7221650B1 (en) * 2002-12-23 2007-05-22 Intel Corporation System and method for checking data accumulators for consistency
CN101119268A (zh) * 2007-06-28 2008-02-06 杭州东信北邮信息技术有限公司 基于通用消息总线的通用业务系统架构的实现方法
WO2012042478A1 (en) * 2010-09-29 2012-04-05 Sika Technology Limited Improvements in/or and relating to utility chambers and surrounds and methods therfor
CN107133024A (zh) * 2016-02-29 2017-09-05 北京广联达正源兴邦科技有限公司 基于osgi框架的业务管理系统
CN107329762A (zh) * 2017-06-30 2017-11-07 上海棠棣信息科技股份有限公司 一种描述与集成软件服务的方法和系统
CN109194762A (zh) * 2018-09-20 2019-01-11 山东省农业科学院科技信息研究所 基于ssh的土壤信息网络发布系统及方法
CN110149353A (zh) * 2018-02-11 2019-08-20 陕西爱尚物联科技有限公司 一种物联网方法及其系统
CN112363755A (zh) * 2020-11-20 2021-02-12 成都秦川物联网科技股份有限公司 一种基于插件引擎注入的低耦合扩展的业务系统
CN113296829A (zh) * 2021-05-31 2021-08-24 中国建设银行股份有限公司 处理业务的方法、装置、设备和计算机可读介质
CN113672205A (zh) * 2021-08-25 2021-11-19 广州方舟信息科技有限公司 一种基于业务事件驱动的工作流框架
CN113706123A (zh) * 2021-09-08 2021-11-26 北京鲸鹳科技有限公司 一种基于组件责任链的团险业务处理方法和系统
CN113760487A (zh) * 2020-08-05 2021-12-07 北京京东振世信息技术有限公司 一种业务处理方法和装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10333731B2 (en) * 2005-06-09 2019-06-25 Whirlpool Corporation Methods and apparatus for communicatively coupling internal components within appliances, and appliances with external components and accessories
US7571447B2 (en) * 2005-06-20 2009-08-04 International Business Machines Corporation Loose coupling of web services
GB2497991A (en) * 2011-12-30 2013-07-03 Aircom Internat Optimising a self organising network

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002027510A1 (en) * 2000-09-28 2002-04-04 Bea Systems, Inc. System for managing logical process flow in an online environment
US7221650B1 (en) * 2002-12-23 2007-05-22 Intel Corporation System and method for checking data accumulators for consistency
CN101119268A (zh) * 2007-06-28 2008-02-06 杭州东信北邮信息技术有限公司 基于通用消息总线的通用业务系统架构的实现方法
WO2012042478A1 (en) * 2010-09-29 2012-04-05 Sika Technology Limited Improvements in/or and relating to utility chambers and surrounds and methods therfor
CN107133024A (zh) * 2016-02-29 2017-09-05 北京广联达正源兴邦科技有限公司 基于osgi框架的业务管理系统
CN107329762A (zh) * 2017-06-30 2017-11-07 上海棠棣信息科技股份有限公司 一种描述与集成软件服务的方法和系统
CN110149353A (zh) * 2018-02-11 2019-08-20 陕西爱尚物联科技有限公司 一种物联网方法及其系统
CN109194762A (zh) * 2018-09-20 2019-01-11 山东省农业科学院科技信息研究所 基于ssh的土壤信息网络发布系统及方法
CN113760487A (zh) * 2020-08-05 2021-12-07 北京京东振世信息技术有限公司 一种业务处理方法和装置
CN112363755A (zh) * 2020-11-20 2021-02-12 成都秦川物联网科技股份有限公司 一种基于插件引擎注入的低耦合扩展的业务系统
CN113296829A (zh) * 2021-05-31 2021-08-24 中国建设银行股份有限公司 处理业务的方法、装置、设备和计算机可读介质
CN113672205A (zh) * 2021-08-25 2021-11-19 广州方舟信息科技有限公司 一种基于业务事件驱动的工作流框架
CN113706123A (zh) * 2021-09-08 2021-11-26 北京鲸鹳科技有限公司 一种基于组件责任链的团险业务处理方法和系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Netty解析:Handler、Pipeline大动脉及其在注册过程中体现;饿了就下楼;简书;全文 *
The ITAR and you - what you need to know about the International Traffic in Arms Regulations;Kendra L. B. Cook;2010 IEEE Aerospace Conference;20100415;全文 *
分布式大数据服务开放平台的设计与实现;林贻民;信息科技辑;20210415;全文 *

Also Published As

Publication number Publication date
CN114567667A (zh) 2022-05-31

Similar Documents

Publication Publication Date Title
CN111163129B (zh) 一种基于跨链网络的资源处理方法及装置
US20080282223A1 (en) Xml push and remote execution of a wireless applications
US10303529B2 (en) Protocol for communication of data structures
US9350848B2 (en) Method for distributing, installing and executing software-defined radio application
US20060235928A1 (en) System and method for creating a mapping document for binding messages between an application and an associated backend server
US9164819B2 (en) Composing message processing pipelines
CN106713469B (zh) 用于分布式容器的动态加载方法、装置及系统
US20240069877A1 (en) Method and device for generating application based on android system, and storage medium
JP2000029730A (ja) メソッド・インボケーション中にコードを 実行するための方法及びその装置
CN114579194B (zh) 一种基于Spring远程调用的异常处理方法和系统
CN111367685B (zh) 接口调用的方法及装置、计算机设备、存储介质
US5517636A (en) Platform independent data communication system and method
CN107977260B (zh) 任务提交方法及装置
CN114567667B (zh) 一种基于责任链设计模式的业务处理组件系统
CN109729121B (zh) 一种云存储系统及用于云存储系统中实现自定义数据处理的方法
US11080102B2 (en) System and method for developing modularized application
CN109857374B (zh) 移动应用的开发方法及装置
US8799003B2 (en) Dynamic binding of principal services in a cross-enterprise business process management system
CN112511417B (zh) 跨平台智能网关系统
CN114138259A (zh) 适配多云平台的多微服务分布式框架的构建系统及方法
EP2042986A1 (en) Method and system for execution of a service-related process
US20050261918A1 (en) Business protocol policy injection
Jololian et al. A framework for a meta-semantic language for smart component-adapters
US20110125932A1 (en) Port setting method of application system
CN114245172A (zh) 一种通用多媒体素材播放的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant