一种基于js的与企业***进行对接的方法及装置
技术领域
本发明涉及***对接领域,特别涉及一种基于js(javascript)的与企业***进行对接的方法及装置。
背景技术
SOA(Service-Oriented Architecture,面向服务的体系结构)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过在这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,其独立于实现服务的硬件平台、操作***和编程语言。这使得构建在各种各样的***中的服务可以使用一种统一和通用的方式进行交互。
SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S(Browser/Server,浏览器/服务器)模型、XML/Web Service(可扩展标记语言/Web服务)技术之后的自然延伸。
SOA技术本身存在以下问题:(1)SOA可以说是Web Service技术的延伸,数据传输常采用SOAP协议(xml),xml在数据传输过程中,较之json数据格式浪费了大量的带宽,没有json数据格式精简实用;(2)移动互联网HTML5应用无法解析xml的报文内容,需引入其他解析模块才能很好的支持xml解析,对json数据的解析HTML5应用原生支持;(3)以往访问控制只需要登录和验证;而在SOA环境中,由于一个应用软件的组件很容易去与不同域领域、不同***的其他组件进行对话,所以确保迥然不同又相互连接的***之间的安全性就会变得特别困难;(4)定义事务和数据的业务含义,一直是IT管理人员面临的最棘手问题。语义关系是设计良好SOA架构的核心要素。就目前而言,没有哪一项技术或软件产品能够真正解决语义问题。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述浪费带宽、无法解析报文内容、安全性没有保证、不能解决语义问题的缺陷,提供一种占用较少带宽、能解析报文内容、安全性有保证、能解决语义问题的基于js的与企业***进行对接的方法及装置。
本发明解决其技术问题所采用的技术方案是:构造一种基于js的与企业***进行对接的方法,包括如下步骤:
A)客户端通过http协议json(JavaScript Object Notation,一种轻量级的数据交换格式)的数据格式向jsse(JavaScript Service Engine,js服务引擎)发送请求并对所述请求进行处理;所 述jsse包括适配器组件和能力组件,所述适配器组件和能力组件具有API接口;
B)调用所述适配器组件或能力组件的API接口与所述企业***对接,来实现对企业***接口数据格式的转换。
在本发明所述的基于js的与企业***进行对接的方法中,所述jsse还包括主核心框架和js引擎。
在本发明所述的基于js的与企业***进行对接的方法中,所述步骤A)进一步包括:
A1)客户端按照符合http协议的json的数据格式向所述主核心框架发送请求;
A2)所述主核心框架对所述请求进行解析,并获取所述请求中携带的数据;
A3)所述主核心框架将所述js引擎加载到所述jsse中;
A4)所述主核心框架依据所述请求中携带的数据将指定的js逻辑文件内容加载到所述jsse中;
A5)所述主核心框架通过所述js引擎解析并执行所述js逻辑文件的内容;
A6)判断执行的js逻辑文件的内容中是否存在加载适配器组件或能力组件的脚本代码,如是,执行步骤A7);否则,不执行任何操作;
A7)所述主核心框架将指定的适配器组件或能力组件加载到所述jsse中。
在本发明所述的基于js的与企业***进行对接的方法中,所述步骤B)进一步包括:
B1)调用指定的适配器组件或能力组件的API接口与所述企业***进行对接;
B2)将调用结果返回给所述主核心框架;
B3)所述主核心框架按照符合http协议的json的数据格式将所述调用结果返回给所述客户端。
在本发明所述的基于js的与企业***进行对接的方法中,在执行完所述js逻辑文件的内容、响应完所述请求后或在所述jsse接收客户端请求并未确认客户端的合法性及客户端数据的完整性之前,所述js引擎进入或处于休眠状态。
本发明还涉及一种实现上述基于js的与企业***进行对接的方法的装置,包括:请求发送单元:用于使客户端通过http协议json的数据格式向jsse发送请求并对所述请求进行处理;所述jsse包括适配器组件和能力组件,所述适配器组件和能力组件具有API接口;
接口调用转换单元:用于调用所述适配器组件或能力组件的API接口与所述企业***对接, 来实现对企业***接口数据格式的转换。
在本发明所述的实现上述基于js的与企业***进行对接的方法的装置中,所述jsse还包括主核心框架和js引擎。
在本发明所述的实现上述基于js的与企业***进行对接的方法的装置中,所述请求发送单元进一步包括:
格式请求发送模块:用于使客户端按照符合http协议的json的数据格式向所述主核心框架发送请求;
解析模块:用于使所述主核心框架对所述请求进行解析,并获取所述请求中携带的数据;
引擎加载模块:用于使所述主核心框架将所述js引擎加载到所述jsse中;
逻辑文件加载模块:用于使所述主核心框架依据所述请求中携带的数据将指定的js逻辑文件内容加载到所述jsse中;
解析执行模块:用于使所述主核心框架通过所述js引擎解析并执行所述js逻辑文件的内容;
加载判断模块:用于判断执行的js逻辑文件的内容中是否存在加载适配器组件或能力组件的脚本代码;
指定加载模块:用于使所述主核心框架将指定的适配器组件或能力组件加载到所述jsse中。
在本发明所述的实现上述基于js的与企业***进行对接的方法的装置中,所述接口调用转换单元进一步包括:
调用对接模块:用于调用指定的适配器组件或能力组件的API接口与所述企业***进行对接;
调用结果返回模块:用于将调用结果返回给所述主核心框架;
调用结果格式返回模块:用于使所述主核心框架按照符合http协议的json的数据格式将所述调用结果返回给所述客户端。
在本发明所述的实现上述基于js的与企业***进行对接的方法的装置中,在执行完所述js逻辑文件的内容、响应完所述请求后或在所述jsse接收客户端请求并未确认客户端的合法性及客户端数据的完整性之前,所述js引擎进入或处于休眠状态。
实施本发明的基于js的与企业***进行对接的方法及装置,具有以下有益效果:由于客户端通过http协议json的数据格式向jsse发送请求并对请求进行处理;jsse包括适配器组件和能力组件,适配器组件和能力组件具有API接口;通过调用适配器组件或能力组件的API接口与所述企业***对接,来实现对企业***接口数据格式的转换,使用json数据格 式精简实用,所以占用较少带宽,移动互联网HTML5能对json数据进行解析;适配器组件和能力组件具有统一的API接口,很容易实现各接口的对接,所以安全性有保证,基于标准的javascript开发语言,简单编写具有逻辑的javascript文件,便可实现复杂的业务逻辑,不用太多的考虑语义问题,所以能解决语义问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明基于js的与企业***进行对接的方法及装置一个实施例中对接企业***的结构示意图;
图2为所述实施例中方法的流程图;
图3为所述实施例中客户端通过http协议json的数据格式向jsse发送请求并对请求进行处理的具体流程图;
图4为所述实施例中调用适配器组件或能力组件的API接口与企业***对接,来实现对企业***接口数据格式的转换的具体流程图;
图5为所述实施例中实现与企业***对接的时序图;
图6为所述实施例中装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明基于js的与企业***进行对接的方法及装置实施例中,其对接企业***的结构示意如图1所示。图1中,通过编写javascript脚本,调用API(已有或自定义)能力,便可完成对企业***的对接,从而实现新业务***功能。本实施例中,jsse包括适配器组件和能力组件,适配器组件和能力组件具有API接口,适配器组件包含多种适配器,能力组件有多种。jsse还包括主核心框架和js引擎。新的业务***通过http协议json的数据格式请求jsse,jsse通过适配器组件或能力组件与现有的企业***对接,来实现完成对现有的企业***接口数据格式的转换,从而实现预定义功能。使用js语言可快速上手,学习成本 低,提供强大的API支持,基于标准的javascript开发语言,通过简单编写具有逻辑的javscript文件,便可实现复杂的业务逻辑。
本实施例中,上述基于js的与企业***进行对接的方法的流程图如图2所示。图2中,该方法包括如下步骤:
步骤S01客户端通过http协议json的数据格式向jsse发送请求并对请求进行处理:本步骤中,客户端(请求方,也相当于图1中的新业务***)通过http协议json的数据格式向jsse发送请求并对请求进行处理,特别指出的是,jsse协议请求为http协议传输的数据格式为json。
步骤S02调用适配器组件或能力组件的API接口与企业***对接,来实现对企业***接口数据格式的转换:本步骤中,调用适配器组件或能力组件的API接口与企业***对接,来实现对企业***接口数据格式的转换。使用json数据格式精简实用,所以占用较少带宽,移动互联网HTML5能对json数据进行解析;适配器组件和能力组件具有统一的API接口,很容易实现各接口的对接,所以安全性有保证,基于标准的javascript开发语言,简单编写具有逻辑的javscript文件,便可实现复杂的业务逻辑,不用太多的考虑语义问题,所以能解决语义问题。
现有技术中,SOA通过所谓粗粒度服务接口和分级,确实提高了效率,实现流程化以后,也确实简化了开发难度。但是如果这个流程不适合企业的实际情况,还是需要个性化开发。在本实施例中,提供适配器组件和能力组件的开发标准,可自定义更具针对性的适配器或能力组件,并且各个适配器、能力组件之间可自由组装,并不依赖,可以很好的解决现有技术中的问题。
对于本实施例而言,上述步骤S01还可进一步细化,其细化后的流程图如图3所示。图3中,上述步骤S01进一步包括:
步骤S11客户端按照符合http协议的json的数据格式向主核心框架发送请求:本步骤中,客户端按照符合http协议的json的数据格式向主核心框架发送请求。
步骤S12主核心框架对请求进行解析,并获取请求中携带的数据:本步骤中,主核心框架对请求进行解析,并获取请求中携带的数据。
步骤S13主核心框架将js引擎加载到jsse中:本步骤中,主核心框架加载js引擎,并将js引擎加载到jsse中。
步骤S14主核心框架依据请求中携带的数据将指定的js逻辑文件内容加载到jsse中:本步骤中,主核心框架依据请求中携带的数据加载指定的js逻辑文件内容,并将指定 的js逻辑文件内容加载到jsse中。
步骤S15主核心框架通过js引擎解析并执行js逻辑文件的内容:本步骤中,主核心框架通过js引擎解析并执行js逻辑文件的内容。
步骤S16判断执行的js逻辑文件的内容中是否存在加载适配器组件或能力组件的脚本代码:本步骤中,判断执行的js逻辑文件的内容中是否存在加载适配器组件或能力组件的脚本代码,如果判断的结果为是,则执行步骤S18;否则,执行步骤S17。
步骤S17不执行任何操作:如果上述步骤S16的判断结果为否,则执行本步骤。本步骤中,不执行任何操作。
步骤S18主核心框架将指定的适配器组件或能力组件加载到jsse中:如果上述步骤S16的判断结果为是,则执行本步骤。本步骤中,主核心框架将指定的适配器组件或能力组件加载到jsse中。
对于本实施例而言,上述步骤S02还可进一步细化,其细化后的流程图如图4所示。图4中,上述步骤S02进一步包括:
步骤S21调用指定的适配器组件或能力组件的API接口与企业***进行对接:本步骤中,调用指定的适配器组件或能力组件的API接口与企业***进行对接。
步骤S22将调用结果返回给主核心框架:本步骤中,将调用结果返回给主核心框架。
步骤S23主核心框架按照符合http协议的json的数据格式将调用结果返回给客户端:本步骤中,主核心框架按照符合http协议的json的数据格式将调用结果返回给客户端。基于标准js语法,完成与现有的企业***的交互,实现***对接,并返回根据客户端(请求方)要求的数据格式及数据。这样就完成了对现有的企业***接口数据格式的转换,从而实现预定义功能。
下面介绍上述主核心框架、js引擎、适配器组件和能力组件等四个组件。主核心框架的主要功能职责有:接收、分解客户端的请求,并获取请求中携带的数据;加载js引擎至jsse中;根据请求数据,加载指定js逻辑文件的内容;通过js引擎解析并执行js逻辑文件的内容。若执行的javascript脚本中存在加载适配器或能力组件的脚本代码,主核心框架也将js逻辑文件中指定的适配器或能力组件加载至js引擎中。
js引擎是javascript解析和执行内核,本实施例中,js引擎采用Java jdk1.7中默认支持带有的Mozilla Rhino。Mozilla Rhino是一个完全使用java语言编写的开源js引擎实现,主要用于在java环境中执行js程序,为最终用户提供脚本化能力。
js引擎在整个jsse运行时态中存在几个状态,分别为休眠状态、初始状态和运行状态。程序初次启动,便会实现部分休眠态的js引擎实例,jsse执行完js逻辑文件的内容,响应完客户端(请求方)的请求后,js引擎便会重新进入休眠态。jsse在做***服务的对接时,当jsse接收请求方的请求,在未确认请求方的合法性及请求方数据的完整性之前,为了保障***资源的不浪费,js引擎是不会进行加载和准备执行的,此时js引擎将处于休眠态。
在初始状态时,当jsse确认了请求方的合法性及数据的完整性后,便会加载js引擎,并实现一些初始的加载及准备执行预备工作。在运行状态时,当jsse进行真正的***对接时,js引擎便会加载执行的js逻辑文件,并解析js逻辑文件预定义的逻辑,调用各个适配器或能力组件进行相关处理。
本实施例中,适配器组件及能力组件主要用于对现有企业***进行适配和对接的工作。适配器组件包含多种适配器,如SQLAdapter(数据库适配器),HTTPAdapter(HTTP协议适配器)和EmailAdapte(邮件适配器)等等;其中,SQLAdapter主要用于对数据库进行对接(Oracle,Sqlserver,DB2,Mysql…),HttpAdapter主要用于对接HTTP协议的相关接口(WebService、Http+Json、表单提交等),EmailAdapter支持标准的pop3和smtp协议进行邮件的收发,主要用于对邮件***进行对接。能力组件有多种,如FILEEnabler(文件能力组件)、DOCUMENTEnable(文档能力组件)、CODECEnabler(代码能力组件)和ZipEnabler(压缩能力组件)等等,其中,FileEnabler用于对文件协议的支持,支持对文件***进行操作,DocumentEnabler用于对office、pdf文档进行处理转换的操作,ZipEnabler用于压缩、解压缩的操作处理。另外除了上述列出来的适配器和能力组件,还有大量的适配器和能力组件在本实施例中就不一一进行列举了。
本实施例还涉及一种实现上述基于js的与企业***进行对接的方法的装置,其结构示意图如图6所示。图6中,该装置包括请求发送单元1和接口调用转换单元2;其中,请求发送单元1用于使客户端通过http协议json的数据格式向jsse发送请求并对所述请求进行处理;jsse包括适配器组件和能力组件,适配器组件和能力组件具有API接口;接口调用转换单元2用于调用适配器组件或能力组件的API接口与企业***对接,来实现对企业***接口数据格式的转换。本实施例中,jsse还包括主核心框架和js引擎。使用json数据格式精简实用,所以占用较少带宽,移动互联网HTML5能对json数据进行解析;适配器组件和能力组件具有统一的API接口,很容易实现各接口的对接,所以安全性有保证,基于标准的javascript开发语言,简单编写具有逻辑的javscript文件,便可实现复杂的业务逻辑,不用太多的考虑语义问题,所以能解决语义问题。
本实施例中,请求发送单元1进一步包括格式请求发送模块11、解析模块12、引擎加载模块13、逻辑文件加载模块14、解析执行模块15、加载判断模块16和指定加载模块17;其中,格式请求发送模块11用于使客户端按照符合http协议的json的数据格式向主核心框架发送请求;解析模块12用于使主核心框架对请求进行解析,并获取请求中携带的数据;引擎加载模块13用于使主核心框架将js引擎加载到jsse中;逻辑文件加载模块14用于使主核心框架依据请求中携带的数据将指定的js逻辑文件内容加载到jsse中;解析执行模块15用于使主核心框架通过js引擎解析并执行js逻辑文件的内容;加载判断模块16用于判断执行的js逻辑文件的内容中是否存在加载适配器组件或能力组件的脚本代码;指定加载模块17用于使主核心框架将指定的适配器组件或能力组件加载到jsse中。
本实施例中,接口调用转换单元2进一步包括调用对接模块21、调用结果返回模块22和调用结果格式返回模块23;其中,调用对接模块21用于调用指定的适配器组件或能力组件的API接口与企业***进行对接;调用结果返回模块22用于将调用结果返回给主核心框架;调用结果格式返回模块23用于使主核心框架按照符合http协议的json的数据格式将调用结果返回给客户端。
本实施例中,在执行完js逻辑文件的内容、响应完客户端的请求后或在jsse接收客户端请求并未确认客户端的合法性及客户端数据的完整性之前,js引擎进入或处于休眠状态。这样可以节省资源。
总之,在本实施例中,jsse本身能支撑对接现有的大部分的接口协议,并且jsse还开发自定义适配器和能力组件的API,如此便能针对现有企业***做更个性化的定制,具有更好的拓展性。由于使用js语言,其本局就具备跨平台特性,支持多种常见平台。jsse***的配置灵活多变,***部署成功后,***本身配置文件和业务程序的配置项都可与jsse***分离管理。***部署简单,性能优越,***可分布式多机部署。***支持热部署,配置文件修改后便立即生效,配置文件和***关联,但并不依赖。此外,***支持多种模式(开发模式和部署模式),易于开发调试和正式部署,拥有独立的日志***,日志以模块,***来划分。使用js语言,其编程面向对象,可以很好地降低代码冗余,其代码复用率较高,更利于团队开发人员有效的分工和管理代码,提高工作效率。js引擎对象池具有自动伸缩特性,可实现***的缓存,根据***忙闲情况实现对连接资源的自动调度管理。同时,对象池提供链路状态自动检测和重连机制。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。