一种xml业务逻辑映射到java业务逻辑的方法转让专利

申请号 : CN201911346300.4

文献号 : CN111104122B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 丁星

申请人 : 联通(江苏)产业互联网有限公司

摘要 :

本发明公开了一种xml业务逻辑映射到java业务逻辑的方法,属于大数据技术领域,包括建立业务数据库和系统中心服务器,业务数据库用于存储xml业务逻辑数据,业务数据库与系统中心服务器通过互联网通信;在系统中心服务器中建立工作流模块、执行器模块和变量作用域模块,解决了为了应对开发中繁琐的上线流程而实现业务逻辑与系统分离的技术问题,本发明在小规模下,系统搭建非常简单,只需要加载几个jar包就可以实现,且服务实现界面化管理,易于维护和测试,服务易于管理和维护。

权利要求 :

1.一种xml业务逻辑映射到java业务逻辑的方法,其特征在于:包括如下步骤:步骤1:建立业务数据库和系统中心服务器,业务数据库用于存储xml业务逻辑数据,业务数据库与系统中心服务器通过互联网通信;

在系统中心服务器中建立工作流模块、执行器模块和变量作用域模块;

步骤2:在业务数据库中采用xml标签语言来作为接口逻辑的描述语言,每一个xml业务逻辑数据均包含一种xml标签,xml标签包括开始标签和一个结束标签;

步骤3:系统中心服务器获取到一个xml业务逻辑数据后,通过工作流模块根据以下方法建立工作流:步骤A1:将所有xml业务逻辑数据的xml标签转均换成java的实体类,即,将xml标签转换成一个对象,每一个对象仅仅是内部数据不同;

步骤A2:将步骤A1中生成的对象放入一个对象集合中,并与执行器模块进行关联,生成工作流;

步骤4:执行器模块建立执行器对象,初始化工作流指针;

步骤5:按照顺序从对象集合中逐一取出对象,并对对象进行解析,得到对象所对应的xml标签的java的实体类;

步骤6:在执行器模块中建立每一个标签所对应的处理方法,执行器模块通过步骤5的方法获取到xml标签的java的实体类后,查找出xml标签对应的处理方法,并根据该处理方法执行xml标签;

步骤7:重复执行步骤5和步骤6的方法,直到工作流指针指向结束,执行器模块返回工作流的返回值;

步骤8:变量作用域模块根据以下方法建立由执行器模块自行控制新建或释放的作用域:步骤B1:设定xml业务逻辑数据中包含其他标签的标签叫做块级标签,而不包含其他标签的叫内容标签;

步骤B2:新建作用域的触发条件就是遇到了块级标签且该标签的作用域在当前环境变量中并不存在;

步骤B3:每当新建一个作用域,就会标记当前作用域所属的对象;

步骤B4:当工作流执行到步骤B3中所述对象的外层的时候,会因为当前获取的对象并非当前作用域所属的对象,则会触发释放作用域的条件,释放作用域会从当前作用域开始,一直释放到新的对象所属的作用域位置。

2.如权利要求1所述的一种xml业务逻辑映射到java业务逻辑的方法,其特征在于:所述系统中心服务器的底层系统采用java,主系统框架选用springboot,xml解析选用sax xml解析器,xml中字符语言采用spel表达式。

3.如权利要求2所述的一种xml业务逻辑映射到java业务逻辑的方法,其特征在于:在执行步骤3时,所述sax xml解析器解析所述xml业务逻辑数据的java的实体类时,首先建立用于存放xml业务逻辑数据的元素实体的list对象,然后建立用于暂存当前实体元素的变量,再然后设置父元素唯一标识,再然后建立用于建立元素的对应关系的元素实体栈,最后在元素实体栈中将每一个xml标签均转换成一个对象。

说明书 :

一种xml业务逻辑映射到java业务逻辑的方法

技术领域

[0001] 本发明属于大数据技术领域,涉及一种xml业务逻辑映射到java业务逻辑的方法。

背景技术

[0002] 企业的接口系统往往需要对接多方,支持多种协议,而且由于第三方众多,加上需求的变更,就需要一个非常灵活的接口系统,这个接口系统需要满足,性能高,稳定,易于管理,易于维护,以及完善的日志系统和统计功能。
[0003] 而接口系统的逻辑相对简单,如果做一层简单抽象,可分为三层,既:接入方报文转换,接出方报文转换,以及连接接出方的连接器。如果仅仅做了这种抽象,随着系统越来越庞大,就会导致管理越来越困难,越来越难以维护,而且还有一个弊端就是很难用同一个接口满足不同的需求。

发明内容

[0004] 本发明的目的是提供一种xml业务逻辑映射到java业务逻辑的方法,解决了为了应对开发中繁琐的上线流程而实现业务逻辑与系统分离的技术问题。
[0005] 为实现上述目的,本发明采用如下技术方案:
[0006] 一种xml业务逻辑映射到java业务逻辑的方法,包括如下步骤:
[0007] 步骤1:建立业务数据库和系统中心服务器,业务数据库用于存储xml业务逻辑数据,业务数据库与系统中心服务器通过互联网通信;
[0008] 在系统中心服务器中建立工作流模块、执行器模块和变量作用域模块;
[0009] 步骤2:在业务数据库中采用xml标签语言来作为接口逻辑的描述语言,每一个xml业务逻辑数据均包含一种xml标签,xml标签包括开始标签和一个结束标签;
[0010] 步骤3:系统中心服务器获取到一个xml业务逻辑数据后,通过工作流模块根据以下方法建立工作流:
[0011] 步骤A1:将所有xml业务逻辑数据的xml标签转均换成java的实体类,即,将xml标签转换成一个对象,每一个对象仅仅是内部数据不同;
[0012] 步骤A2:将步骤A1中生成的对象放入一个对象集合中,并与执行器模块进行关联,生成工作流;
[0013] 步骤4:执行器模块建立执行器对象,初始化工作流指针;
[0014] 步骤5:按照顺序从对象集合中逐一取出对象,并对对象进行解析,得到对象所对应的xml标签的java的实体类;
[0015] 步骤6:在执行器模块中建立每一个标签所对应的处理方法,执行器模块通过步骤5的方法获取到xml标签的java的实体类后,查找出xml标签对应的处理方法,并根据该处理方法执行xml标签;
[0016] 步骤7:重复执行步骤5和步骤6的方法,直到工作流指针指向结束,执行器模块返回工作流的返回值;
[0017] 步骤8:变量作用域模块根据以下方法建立由执行器模块自行控制新建或释放的作用域:
[0018] 步骤B1:设定xml业务逻辑数据中包含其他标签的标签叫做块级标签,而不包含其他标签的叫内容标签;
[0019] 步骤B2:新建作用域的触发条件就是遇到了块级标签且该标签的作用域在当前环境变量中并不存在;
[0020] 步骤B3:每当新建一个作用域,就会标记当前作用域所属的对象;
[0021] 步骤B4:当工作流执行到步骤B3中所述对象的外层的时候,会因为当前获取的对象并非当前作用域所属的对象,则会触发释放作用域的条件,释放作用域会从当前作用域开始,一直释放到新的对象所属的作用域位置。
[0022] 优选的,所述系统中心服务器的底层系统采用java,主系统框架选用springboot,xml解析选用sax xml解析器,xml中字符语言采用spel表达式。
[0023] 优选的,在执行步骤3时,所述sax xml解析器解析所述xml业务逻辑数据的java的实体类时,首先建立用于存放xml业务逻辑数据的元素实体的list对象,然后建立用于暂存当前实体元素的变量,再然后设置父元素唯一标识,再然后建立用于建立元素的对应关系的元素实体栈,最后在元素实体栈中将每一个xml标签均转换成一个对象。
[0024] 本发明所述的一种xml业务逻辑映射到java业务逻辑的方法,解决了为了应对开发中繁琐的上线流程而实现业务逻辑与系统分离的技术问题,本发明在小规模下,系统搭建非常简单,只需要加载几个jar包就可以实现,且服务实现界面化管理,易于维护和测试,服务易于管理和维护。本发明由于服务的业务逻辑采用xml编写,与系统没有任何关系,所以可以把xml文件集中起来或者分散开管理都可以,而且可以直接把服务放到数据库里,在用管理界面实现更为直观的管理和维护,扩展灵活。

附图说明

[0025] 图1为本发明的流程图。

具体实施方式

[0026] 如图1所示的一种xml业务逻辑映射到java业务逻辑的方法,包括如下步骤:
[0027] 步骤1:建立业务数据库和系统中心服务器,业务数据库用于存储xml业务逻辑数据,业务数据库与系统中心服务器通过互联网通信;
[0028] 在系统中心服务器中建立工作流模块、执行器模块和变量作用域模块;
[0029] 步骤2:在业务数据库中采用xml标签语言来作为接口逻辑的描述语言,每一个xml业务逻辑数据均包含一种xml标签,xml标签包括开始标签和一个结束标签;
[0030] 本实施例中,以一下test.xml业务逻辑数据为例:
[0031] test.xml业务逻辑数据内容如下:
[0032]
[0033]
[0034] 该xml业务逻辑数据是通过两个for循环输出99乘法表。
[0035] 步骤3:系统中心服务器获取到一个xml业务逻辑数据后,通过工作流模块根据以下方法建立工作流:
[0036] 步骤A1:将所有xml业务逻辑数据的xml标签转均换成java的实体类,即,将xml标签转换成一个对象,每一个对象仅仅是内部数据不同;
[0037] 步骤A2:将步骤A1中生成的对象放入一个对象集合中,并与执行器模块进行关联,生成工作流;
[0038] 在获取到test.xml业务逻辑数据后,通过xml解析器SaxXmlParse对test.xml业务逻辑数据进行解析,生成工作流对象Listlist;
[0039] 步骤4:执行器模块建立执行器对象,初始化工作流指针;
[0040] 在获取了工作流对象Listlist后,执行器模块建立新的执行器对象,用来执行工作流对象Listlist;
[0041] 步骤5:按照顺序从对象集合中逐一取出对象,并对对象进行解析,得到对象所对应的xml标签的java的实体类;
[0042] 执行器模块拿到工作流对象Listlist后先校验是否是正常的工作流对象,而后初始化环境变量,创建一个空的全局变量域,和一个空的全局常量域。
[0043] 步骤6:在执行器模块中建立每一个标签所对应的处理方法,执行器模块通过步骤5的方法获取到xml标签的java的实体类后,查找出xml标签对应的处理方法,并根据该处理方法执行xml标签;
[0044] 执行器模块用while(true)循环来遍历工作流,每取到一个工作流对象,则调用该对象相应的方法来处理该对象。本实施例下面以test.xml业务逻辑数据中的第一个for循环为例说明一下for循环的处理方式:
[0045] 第一个for循环对象:
[0046] ElementEntity(name=for,attr={c=$$i=1;$i lt 10;$i++},content=null,startIndex=5,endIndex=16,isStartTag=true,isBlockElem=true,parentElemUUID=a4664e96‑bb3c‑42a8‑b72c‑14fb296ce670,previousElemUUID=9a4938ac‑75d8‑4baa‑9dfb‑7b77b086111d,uuid=45707604‑9c48‑43f6‑b443‑a515dfbc3080)
[0047] 对应的标签语句是
[0048] 该对象对应的方法是:
[0049]
[0050]
[0051]
[0052] 当执行器拿到for开始标签对应的对象,就会执行for标签的startElem()方法,通过startElem()方法,初始化变量i=1,然后判断条件i<10是否成立,如果条件成立,则返回null,如果条件不成立,则跳过这层for循环,跳过的方法是elemMethod.setWorkStatus(EnumWorkStatus.GO_NEXT_ELEM);
[0053] 该方法将执行状态置为跳到下一个元素,执行器会根据状态修改工作流的计数器指针,从而跳过for循环体内部的所有元素。
[0054] 而当执行到闭合标签时,会先执行i++语句,然后再次判断条件,如果条件符合,跳转到for标签的开始标签处,跳转方法:elemMethod.setWorkStatus(EnumWorkStatus.GO_START_ELEM_NEXT);
[0055] 当条件判断不服务,则不会:
[0056] 最终会通过{"list":$list}标签对应的方法将返回值返回,返回值如下:
[0057]
[0058]
[0059] 步骤7:重复执行步骤5和步骤6的方法,直到工作流指针指向结束,执行器模块返回工作流的返回值;
[0060] 步骤8:变量作用域模块根据以下方法建立由执行器模块自行控制新建或释放的作用域:
[0061] 步骤B1:设定xml业务逻辑数据中包含其他标签的标签叫做块级标签,而不包含其他标签的叫内容标签;
[0062] 步骤B2:新建作用域的触发条件就是遇到了块级标签且该标签的作用域在当前环境变量中并不存在;
[0063] 步骤B3:每当新建一个作用域,就会标记当前作用域所属的对象;
[0064] 步骤B4:当工作流执行到步骤B3中所述对象的外层的时候,会因为当前获取的对象并非当前作用域所属的对象,则会触发释放作用域的条件,释放作用域会从当前作用域开始,一直释放到新的对象所属的作用域位置。
[0065] 优选的,所述系统中心服务器的底层系统采用java,主系统框架选用springboot,xml解析选用sax xml解析器,xml中字符语言采用spel表达式。
[0066] 优选的,在执行步骤3时,所述sax xml解析器解析所述xml业务逻辑数据的java的实体类时,首先建立用于存放xml业务逻辑数据的元素实体的list对象,然后建立用于暂存当前实体元素的变量,再然后设置父元素唯一标识,再然后建立用于建立元素的对应关系的元素实体栈,最后在元素实体栈中将每一个xml标签均转换成一个对象。
[0067] 本发明在接口系统的逻辑相对简单的抽象层上进一步抽象了一层,既:原子服务,连接器,对外的api服务,报文转换协议。其中,原子服务是接收必要参数,通过连接器调用第三方服务,不做任何数据处理,直接返回,而对外的API服务则是提供给调用者调用的服务,包括参数校验,和出参处理,而报文转换协议则是第三方的入参报文和出参报文规则,通过API服务来解析。
[0068] 本发明所述的一种xml业务逻辑映射到java业务逻辑的方法,解决了为了应对开发中繁琐的上线流程而实现业务逻辑与系统分离的技术问题,本发明在小规模下,系统搭建非常简单,只需要加载几个jar包就可以实现,且服务实现界面化管理,易于维护和测试,服务易于管理和维护。本发明由于服务的业务逻辑采用xml编写,与系统没有任何关系,所以可以把xml文件集中起来或者分散开管理都可以,而且可以直接把服务放到数据库里,在用管理界面实现更为直观的管理和维护,扩展灵活。