一种通用自定义接口报文实现方法及系统的制作方法

文档序号:9330382阅读:514来源:国知局
一种通用自定义接口报文实现方法及系统的制作方法
【技术领域】
[0001] 本发明涉及通信技术领域,尤其涉及一种通用自定义接口报文实现方法及系统。
【背景技术】
[0002] 对于综合资源管理系统,需要提供大量的资源查询接口给外围系统,如营业系统 选号接口、资源能力查询接口等;但是经过分析发现,大部分接口基本可划分为两类:查询 类和更新类(包括删除,可看作是一种特殊的更新操作);而通常在定义接口报文的时候都 是以业务动作为基本单元,一个业务动作对应一套接口报文,并且每一个报文节点都是双 方协定接口交互方式后预定义好的,一旦有变化就需要修改程序,非常麻烦。
[0003] 报文片段:
[0004]
[0005] 从上述的报文片段可以看出,传统的报文组装方式中,每一个节点都是预定义好 的,每一个节点即对应一个实际的业务元素,如果业务需求发生变化新增或修改某个节点, 则需要相应的修改服务端解析程序,可移植性和扩展性很差。传统的组装方式的,服务端的 解析是和报文强关联的,报文变更服务端的解析也要跟着修改。
[0006] Sun公司提供了一套利用注解方式解析xml文件的API (javax. xml. bind. · annotation)很好的支持了报文节点的属性配置管理,但是考虑到在有些情况下,由于业务 的变更可能需要对报文内容进行修改,如果采用注解方式则需要修改java源码并重新发 布程序,在一定程度上不够灵活。

【发明内容】

[0007] 本发明所要解决的技术问题是针对现有技术的不足,提供一种通用自定义接口报 文实现方法及系统。
[0008] 本发明解决上述技术问题的技术方案如下:一种通用自定义接口报文实现方法, 包括如下步骤:
[0009] 步骤1,协定报文协议,确定报文内容;
[0010] 步骤2,根据报文协议配置查询类报文模板和更新类报文模板;
[0011] 步骤3,根据报文内容所属的类型,选择相应类型的报文模板,将报文内容按照选 择的报文模板进行组装,得到通用自定义接口报文。
[0012] 本发明的有益效果是:本发明所述报文通用性强、复用度高,轻量级,不依赖特殊 的API,大大降低接口制定的复杂度和开发工作量,便于统一化管理,便于工作量精准评估。
[0013] 在上述技术方案的基础上,本发明还可以做如下改进。
[0014] 进一步,步骤2中所述查询类报文模板和更新类报文模板为包括报文头 xmlHeader和报文体xmlBody的XML报文模板,所述报文头xmlHeader定义鉴权信息,所述 报文体xmlBody定义根节点信息、业务节点信息和节点属性信息。
[0015] 进一步,所述报文头xmlHeader定义的鉴权信息包括服务端应用编码、客户端应 用编码、调用方式及调用方身份标识。
[0016] 进一步,所述报文体xmlBody定义的根节点信息用于区分所述报文模板的类型, 所述业务节点信息用于定义业务节点的内容,所述节点属性信息用于定义业务节点的属 性。
[0017] 进一步,上述技术方案还包括当接口参数有变更时,根据变更的内容直接修改报 文的业务节点信息和/或节点属性信息。
[0018] 进一步,所述查询类请求报文的报文体xmlBody定义如下:
[0019] a、输出属性节点output_field,是0或多个;
[0020] b、查询条件节点query_condition,是0或多个,该节点存在时必须包含两个子节 点,分别为操作符operator和属性值value ;
[0021] c、排序条件节点sort_condition,是0或多个;
[0022] d、分页节点page_condition,必须,该节点下包含三个子节点,分别是page_ size、current_page 和 total_record ;
[0023] 所述查询类响应报文的报文体xmlBody定义如下:
[0024] a、响应编码resp_code,必填;实际项目中可能会定义统一的响应编码;
[0025]
[0026] b、响应消息描述resp_desc,必填;
[0027] c、每页的数据量;
[0028] d、当前页码;
[0029] e、返回的数据总量;
[0030] f、总页数;
[0031] g、输出的属性集合,根据output_field节点自动拼装。
[0032] 进一步,所述更新类报文的报文体xmlBody定义为二级节点update」tem,为1个 或多个,所述二级节点update_item定义五个节点,分别为:
[0033] a、变更目标target_field,目标属性,是0或多个,如果是数据同步更新或插入操 作时使用该节点;
[0034] b、查询条件节点query_condition,是0或多个,该节点存在时必须包含两个子节 点,分别为操作符operator和属性值value ;
[0035] c、操作类型operate_type,非空,定义操作类型是修改、删除或其它业务动作;
[0036] d、操作原因或备注operate_note,可空,填写操作原因或备注信息;
[0037] e、是否指定操作目标intended_target,非空,如果指定操作目标则target_ field节点不能为空;1为是,0为否。
[0038] 进一步,所述更新类报文的报文体xmlBody还包括一个扩展节点,所述扩展节点 与二级节点update_item并列。
[0039] 本发明解决上述技术问题的另一技术方案如下:一种通用自定义接口报文实现系 统,包括协议商定模块、模板配置模块和报文组装模块;
[0040] 所述协议商定模块,其用于协定报文协议,确定报文内容;
[0041] 所述模板配置模块,其用于根据报文协议配置查询类报文模板和更新类报文模 板;
[0042] 所述报文组装模块,其用于根据报文内容所属的类型,选择相应类型的报文模板, 将报文内容按照选择的报文模板进行组装,得到通用自定义接口报文。
[0043] 在上述技术方案的基础上,本发明还可以做如下改进
[0044] 进一步,所述查询类报文模板和更新类报文模板为包括报文头xmlHeader和报文 体xmlBody的XML报文模板,所述报文头xmlHeader定义鉴权信息,所述报文体xmlBody定 义节点信息和节点属性信息。
【附图说明】
[0045] 图1为本发明所述一种通用自定义接口报文实现方法流程图;
[0046] 图2为本发明所述一种通用自定义接口报文实现系统框图;
[0047] 图3为本发明实施例中所述查询类报文模板结构示意图;
[0048] 图4为本发明实施例中所述更新类报文模板结构示意图。
[0049] 附图中,各标号所代表的部件列表如下:
[0050] 1、协议商定模块,2、模板配置模块,3、报文组装模块。
【具体实施方式】
[0051] 以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并 非用于限定本发明的范围。
[0052] Xml是一种可扩展的标记语言,有着良好的自定义特性和自我描述特性,本发明 对传统报文进行了改进,设计了两种通用性的报文模板(查询类报文模板和更新类报文模 板),节点+属性的组装方式。
[0053] 如图1所示,一种通用自定义接口报文实现方法,包括如下步骤:
[0054] 步骤I,协定报文协议,确定报文内容;
[0055] 步骤2,根据报文协议配置查询类报文模板和更新类报文模板;
[0056] 步骤3,根据报文内容所属的类型,选择相应类型的报文模板,将报文内容按照选 择的报文模板进行组装,得到通用自定义接口报文。
[0057] 其中,步骤2中所述查询类报文模板和更新类报文模板为包括报文头xmlHeader 和报文体xmlBody的XML报文模板,所述报文头xmlHeader定义鉴权信息,所述报文体 xmlBody定义根节点信息、业务节点信息和节点属性信息。所述报文头xmlHeader定义的 鉴权信息包括服务端应用编码、客户端应用编码、调用方式及调用方身份标识等等。业务 调用时通过该部分信息进行应用匹配和身份识别等操作。报文头xmlHeader,主要定义一 些鉴权信息,而且相对比较固定一般不会有太大变化,所以采用传统的预定义方式,指定 元素节点即业务节点,节点添加required属性标识是否为必填项;例如:〈server_app_ code required = 〃true〃>100001〈/server_app_code> ;为了便于业务扩展,在节点头部分 增加了扩展参数节点;〈extends_paramsname = 〃xxx〃required = 〃true〃>xxx〈/extends_ params> ;
[0058] 所述报文体xmlBody定义的根节点信息用于区分所述报文模板的类型,所述业务 节点信息用于定义业务节点的内容,所述节点属性信息用于定义业务节点的属性。所述节 点属性信息包括属性名称、数据类型、是否必填等。
[0059] 本发明将报文节点进行抽象化定义,每个报文节点增加相应的属性信息,来标识 属性名称、属性值或其它约束条件。例如:〈〇utput_field name = 〃column〃required = 〃true〃/>。上述技术方案还包括当接口参数有变更时,根据变更的内容直接修改报文的业 务节点信息和/或节点属性信息。
[0060] 下面详细介绍几种报文的报文体定义。
[0061] 图3为本发明实施例中所述查询类报文模板结构示意图。表1为本发明实施例中 所述查询类报文结构表。
[0062] 表 1
[0063]
[0064] 1.所述查询类请求报文在报文体body部分定义四类节点,分别是:
[0065] a、输出属性节点output_field,是0或多个;
[0066] <output_fieldname = "column"required = "true"/>
[0067] b、查询条件节点query_condition,是0或多个,该节点存在时必须包含两个子节 点,分别为操作符operator和属性值value ;
[0068] 〈query-conditionname = 〃num-header〃required = 〃true〃>
[0069] <operator>l〈/operator>l 表示等于,不填时默认为 I
[0070] <value>531</value>
[0071] 〈/query-condition〉
[0072] c、排序条件节点sort_condition,是0或多个;
[0073] <sort_conditionname = 〃column〃>desc〈/sort_condition>
[0074] d、分页节点page_condition,不可省略,包含以下三个子节点;
[0075] <p
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1