基于soa的数据访问方法和装置的制作方法

文档序号:6585415阅读:199来源:国知局
专利名称:基于soa的数据访问方法和装置的制作方法
技术领域
本发明涉及管理信息系统技术领域,具体涉及一种基于SOA的数据访问方法和装置。
背景技术
SOA (Service-Oriented Architecture,面向服务的体系结构)通过建立一种统一 的架构,使得软件开发人员能快速开发、集成和重用应用。更为重要的是,基于这种软件框 架,系统能在业务发生变化之后,动态响应新的需求,快速重新装配各种软件构件和服务。 今天基于SOA的集成方法正推动着市场的发展,BEA、IBM、MicrOSOft、0racle等主流厂商已 转向S0A。随着SOA概念的不断成熟以及各大IT巨头逐渐在SOA的具体细节上不断达成 共识,于是成立了一个SOA的标准化组织OSOA(http://www. osoa. org/)专门负责制定各 大SOA厂商共同遵循的SOA规范,约定SOA的具体实现的细节。OSOA规范核心概念主要是 SCA(ServiceComponent Architecture,服务构建架构)和 SDO (Service Data Obiect,服务 数据对象)。SCA规范包括了 Assemble Model和Client Model两部分。前者约定了如何将异 种组件(Java类,BPEL Jeb Service)组装并发布成SOA服务,是SCA最大的特点和核心的 概念;后者则约定了如何在异种语言环境中调用SOA服务。SDO规范则负责解决如何在异种服务间交换数据。它定义了一套中立的数据结构, 目前有Java和C++的具体语言规范,Java规范解决了 JavaBean和SDO的映射,C++规范解 决了 C++类、结构体和SDO的映射。DAS(Data Access krvice,数据访问服务)提供了一个简单的针对关系数据库的 SDO接口,虽然DAS不属于SDO规范,但它是SOA架构中不可或缺的一部分,如果没有DAS的 支持,SDO只是一个数据传输对象模型,就不能从根本上企业级应用中的数据问题,包括数 据的查询、数据的持久性处理等。各厂商SOA产品都提供访问各类异构数据库的DB Adapter组件(适配器组 件),但是DB Adapter组件本身具有一定的局限性,只适合静态SQLGtructured Query Language,结构化查询语言),不能灵活应对SQL的变动,对于某些特别复杂的业务SQL语句 可能需要动态构造,此种情况下使用DB Adapter往往无法满足要求。在实现本发明过程中,发明人发现现有技术基于SOA的数据访问方式中存在如下 问题不能灵活应对SQL的变动,使用DB Adapter无法满足SQL语句动态构造的要求。

发明内容
本发明的目的是解决现有技术基于SOA的数据访问方式不能灵活应对SQL的变 动,使用DB Adapter无法满足SQL语句动态构造的要求的问题,提出一种基于SOA的数据 访问方法和装置,以提供了一套动态查询,数据转换和传输的方案。
为实现上述目的,根据本发明的一个方面,提供了一种基于SOA的数据访问方法, 包括接收业务服务的调用指令,调用指令中包括SQL ID和查询参数;获取SQL ID对应的 XML配置文件,根据XML配置文件解析SQL原始语句;根据SQL原始语句和查询参数,构造 完整SQL语句;根据完整SQL语句,在数据库中进行查询,获取查询结果。本技术方案中,接收业务服务的调用指令的步骤之前还包括分配SQLID给各查 询服务对应的SQL原始语句,将各原始SQL语句写为XML配置文件。本技术方案中,接收业务服务的调用指令的步骤之前还包括对XML配置文件进 行更新。本技术方案中,根据完整SQL语句,在数据库中进行查询,获取查询结果的步骤之 后还包括将查询结果封装为Web service格式输出。本技术方案中,在XML配置文件中,查询参数使用ftparaml替代。本技术方案中,构造完整SQL语句的步骤中还包括根据查询参数为空,自动添加 过滤条件。为实现上述目的,根据本发明的另一个方面,提供了一种基于SOA的数据访问装 置,包括接收模块,用于接收业务服务的调用指令,调用指令中包括SQL ID和查询参数; 解析模块,用于获取SQL ID对应的XML配置文件,根据XML配置文件解析SQL原始语句,拼 装模块,用于根据SQL原始语句和查询参数,构造完整SQL语句;查询模块,用于根据完整 SQL语句,在数据库中进行查询,获取查询结果。本技术方案中,基于SOA的数据访问装置还可以包括预处理模块,用于分配SQL ID给各查询服务对应的SQL原始语句,将各原始SQL语句写为XML配置文件。本发明各实施例的基于SOA的数据访问方法和装置,适合BPEL流程中的复杂与动 态查询,弥补厂商提供的DB Adapter查询方式的不足。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变 得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明 书、权利要求书、以及附图中所特别指出的结构来实现和获得。下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。


附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实 施例共同用于解释本发明,并不构成对本发明的限制。在附图中;图1为本发明实施例一基于SOA的数据访问方法的流程图;图2为本发明实施例二基于SOA的数据访问方法系统结构的关系图;图3为本发明实施例三基于SOA的数据访问方法的流程图;图4为本发明实施例四基于SOA的数据访问装置的示意图。结合附图在其上标记 以下附图标记502-接收模块;504-解析模块;506-拼装模块;508-查询模块;510-预处理模块;512-输出模块;514-更新模块。
具体实施例方式以下结合附图对本发明的实施例进行说明,应当理解,此处所描述的实施例仅用 于说明和解释本发明,并不用于限定本发明。实施例一图1为本发明实施例一基于SOA的数据访问方法的流程图。如图1所示,本实施 例包括步骤S102 接收业务服务的调用指令,调用指令中包括SQL ID和查询参数;步骤S 104:获取SQL ID对应的XML配置文件,根据XML配置文件解析SQL原始 语句;步骤S106 根据SQL原始语句和查询参数,构造完整SQL语句;步骤S108 根据完整SQL语句,在数据库中进行查询,获取查询结果。本实施例中,步骤S102之前还可以包括分配SQL ID给各查询服务对应的SQL原 始语句,将各原始SQL语句写为XML配置文件。SQL ID是代表SQL语句的唯一标识,系统根 据SQL ID来寻找相应的SQL语句。本实施例基于SOA的DAS数据访问服务实现方法,该方法可以作为SOA架构系统 中的数据访问层,完成各类数据库查询操作。特别适合BPEL流程中的复杂与动态查询,弥 补厂商提供的DB Adapter查询方式的不足,具有简单,方便,灵活等特点。实施例二图2为本发明实施例二基于SOA的数据访问方法系统结构的关系图。如图2所示, 本实施例首先编写XML配置文件,XML配置文件保存了查询所需要的原始SQL语句信息,包 括相关过滤条件信息;其次部署DAS服务,DAS服务内部程序分为四个主要部分,包括配置 文件监控程序,XML文件解析程序,动态SQL语句构造程序,数据查询及绑定程序,外部请求 发送过来后,DAS服务根据读取的原生SQL语句动态构造SQL语句,进行参数绑定;最后访 问数据库,获取所需数据,按照Webservice标准格式进行输出。本实施例提供的基于SOA的数据访问方法具有如下优点1.基于XML的配置DAS制定了一套XML规则,应用程序遵循此规则编写个性化的 SQL配置文件,告知DAS如何从数据库中获取,解析,转换,删除,插入和更新数据。2.灵活的SQL语句构造DAS规则定义下SQL文件涵盖了业界常用的不定参数 的动态查询功能,并且设置了依据相关条件从DAS绑定的数据库中获取查询所需的配置信 息,从而实现了动态查询的功能。3.支持热部署所有按照DAS规则编写的SQL文件,在DAS的上下文中都会被自动 解析予以处理。同时,若需求发生变化,造成SQL文件变更,那么变更后的SQL配置文件不用 重新部署DAS服务既可生效,DAS将自动检查修改的SQL文件语义,从而形成新的功能效应。4.数据动态绑定与转换对于动态查询获得的结果集,DAS服务将按照外围系统 接受调用返回的约束条件,使用XSLT技术进行动态转换,改善了 Web服务输入输出固定格 式的约束。实施例三图3为本发明实施例三基于SOA的数据访问方法的流程图。如图3所示,本实施例 包括预处理部分和响应处理部分,在实施例部分,同样给出了程序的原代码,为便于识别,用灰色背底显示。本实施例包括预备部分步骤S302 编写XML配置文件,将每个查询服务使用的SQL语句剥离,写入*. XML 配置文件中,建议每个查询服务单独写一个配置文件,每一条SQL有ID唯一标志,查询参数 在SQL中使用#PARAMETER1#替代;XML配置文件样例如下〈SELECT ID=〃 SELECT_APINVOICE〃 >-命名 SQL 的唯一 ID 标志〈SQL DATACLASS = 〃 COM. ZTE. EIP. ERP. DAS. RECORDDATA" >-以下为剥离
出的SQL语句正文示例SELECT*FROM AP_INVOICES_ALL INViENDi-END为SQL拼装的关键字,对应下面的LABEL</SQL>〈APPENDSQL LABEL = 〃 END" FRONTSQL = 〃 WHERE" >-此处为条件语句的
前缀<IF APPENDSQL = “ NOTNULLAPPEND SQL “ PARAMETER ="PARAMETER” >-此处追加SQL前提条件,如果满足,则将SQL语句追加关键字位置,达到动态拼装 SQL的效果INV. APIMP0RT_HEADER_ATTRIBUTE2 = #PARAMETER1#</IF>〈/APPENDSQL〉〈/SELECT〉步骤S304 :装载配置文件后台监控进程自动监控配置文件所在目录,如果有更 新自动读取XML配置文件,将配置文件内容更新到内存;响应处理部分步骤S306 =DAS服务接收其他业务服务调用,获取查询对应得SQL语句ID和相关 参数;示例代码GETSQLFROMXMLC SELECT_APINV0ICE",“ INV IMPORT")步骤S308 获取SQL ID对应的XML配置文件,根据XML配置文件解析SQL原始语 句;步骤S310 构造动态SQL =DAS服务根据输入参数和原始SQL语句,拼装出完整的 SQL语句(如根据查询条件是否为空,自动添加AND过滤条件),最后将输入参数内容绑定 到SQL语句,形成最终查询SQL语句;示例SQL SELECT*FROM AP_INV0ICES_ALL INVWHERE INV. APIMP0RT_HEADER_ATTRIBUTE2 = iINV IMPORT’
步骤S312 访问数据库通过JDBC连接访问数据库,执行SQL语句,获取查询结果 集;步骤S314 数据绑定从结果集中取出数据,并将数据封装成Java对象;示例对象Class ApInvoices{}步骤S316 数据输出DAS的输出是一组不定长度的数组消息。示例XML输出< ? xml version = “ 1.0〃 encoding = “ IS0-8859-1" ? >...<ApInvoices><InvoiceID>168888</InvoiceID><InvoiceNum>LS20090101-00016</InvoiceNum><createDate>2009-01-01 10:10:10</createDate></ApInvoices><ApInvoices><InvoiceID>168889</InvoiceID><InvoiceNum>LS20090101-00019</InvoiceNum><createDate>2009-01-01 10:12:10</createDate></ApInvoices>...本实施例提出了一种基于SOA的数据访问方法,该方法是对0S0ADAS以及SDO标 准规范加以裁剪后设计实现的。该方法是一个以Java语言为基础,严格遵守JAX-RPC规范 编写的Web服务,提供了 一套动态查询,数据转换和传输的方案。本实施例提出的方法可以实现访问数据库的公用查询修改,输入输出采用XML格 式,可以作为SOA架构系统中的数据访问层,完成各类数据库查询与修改操作。特别适合 BPEL流程中的复杂与动态查询,弥补厂商提供的DB Adapter查询方式的不足。具有简单, 方便,灵活,支持热部署等特点。实施例四图4为本发明实施例四基于SOA的数据访问装置的示意图。本实施例中的装置,包 括接收模块502,用于接收业务服务的调用指令,调用指令中包括SQL ID和查询参数;解 析模块504,用于获取SQL ID对应的XML配置文件,根据XML配置文件解析SQL原始语句; 拼装模块506,用于根据SQL原始语句和查询参数,构造完整SQL语句;查询模块508,用于 根据完整SQL语句,在数据库中进行查询,获取查询结果。
Integer InvoiceID ; String InvoiceNum ; Date createDate ;
此外,本实施例还可以包括预处理模块510,用于分配SQL ID给各查询服务对应 的SQL原始语句,将各原始SQL语句写为XML配置文件;输出模块512,用于将查询结果封 装为Webservice格式输出;更新模块514,用于对XML配置文件进行实时更新。本实施例实现的方法可参照实施例一-四的相关说明,并具有上述实施例的全部 有益效果,此处不再重述。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成,前述的程序可以存储于可读取存储介质中,该程序在执行时, 执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟、光盘、网络节 点、调度器等各种可以存储程序代码的介质。最后应说明的是以上所述仅为本发明的优选实施例而已,并不用于限制本发明, 尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可 以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。 凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的 保护范围之内。
权利要求
1.一种基于SOA的数据访问方法,其特征在于,包括接收业务服务的调用指令,所述调用指令中包括SQL ID和查询参数; 获取所述SQL ID对应的XML配置文件,根据所述XML配置文件解析SQL原始语句; 根据所述SQL原始语句和查询参数,构造完整SQL语句; 根据所述完整SQL语句,在数据库中进行查询,获取查询结果。
2.根据权利要求1所述的方法,其特征在于,所述接收业务服务的调用指令的步骤之 前还包括分配SQL ID给各查询服务对应的SQL原始语句,将各原始SQL语句写为XML配置文件。
3.根据权利要求2所述的方法,其特征在于,所述接收业务服务的调用指令的步骤之 前还包括对XML配置文件进行更新。
4.根据权利要求2所述的方法,其特征在于,所述根据完整SQL语句,在数据库中进行 查询,获取查询结果的步骤之后还包括将所述查询结果封装为Webservice格式输出。
5.根据权利要求1-4中任一项所述的方法,其特征在于 在所述XML配置文件中,查询参数使用#paraml替代。
6.根据权利要求1-4中任一项所述的方法,其特征在于,所述构造完整SQL语句的步骤 中还包括根据查询参数为空,自动添加过滤条件。
7.一种基于SOA的数据访问装置,其特征在于,包括接收模块,用于接收业务服务的调用指令,所述调用指令中包括=SQLID和查询参数; 解析模块,用于获取所述SQL ID对应的XML配置文件,根据所述XML配置文件解析SQL 原始语句;拼装模块,用于根据所述SQL原始语句和查询参数,构造完整SQL语句; 查询模块,用于根据所述完整SQL语句,在数据库中进行查询,获取查询结果。
8.根据权利要求7所述的装置,其特征在于,还包括预处理模块,用于分配SQL ID给各查询服务对应的SQL原始语句,将各原始SQL语句 写为XML配置文件。
9.根据权利要求7所述的装置,其特征在于,还包括 更新模块,用于对XML配置文件进行更新。
10.根据权利要求7所述的装置,其特征在于,还包括输出模块,用于将所述查询结果封装为Webservice格式输出。
全文摘要
本发明公开了一种基于SOA的数据访问方法和装置。该方法包括接收业务服务的调用指令,调用指令中包括SQL ID和查询参数;获取SQL ID对应的XML配置文件,根据XML配置文件解析SQL原始语句;根据SQL原始语句和查询参数,构造完整SQL语句;根据完整SQL语句,在数据库中进行查询,获取查询结果。本方法可以作为SOA架构系统中的数据访问层,完成各类数据库查询操作。特别适合BPEL流程中的复杂与动态查询,弥补厂商提供的DB Adapter查询方式的不足,具有简单,方便,灵活等特点。
文档编号G06F17/30GK102110110SQ20091024407
公开日2011年6月29日 申请日期2009年12月28日 优先权日2009年12月28日
发明者张滨, 张笑楠, 李越新, 王学建, 高翔 申请人:中国移动通信集团公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1