一種基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法及裝置制造方法
【專利摘要】本發(fā)明提出了一種基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法,包括如下步驟:客戶端通過(guò)http協(xié)議json的數(shù)據(jù)格式向jsse發(fā)送請(qǐng)求并對(duì)所述請(qǐng)求進(jìn)行處理;所述jsse包括適配器組件和能力組件,所述適配器組件和能力組件具有API接口;調(diào)用所述適配器組件或能力組件的API接口與所述企業(yè)系統(tǒng)對(duì)接,來(lái)實(shí)現(xiàn)對(duì)企業(yè)系統(tǒng)接口數(shù)據(jù)格式的轉(zhuǎn)換。本發(fā)明還涉及一種實(shí)現(xiàn)上述基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法的裝置。實(shí)施本發(fā)明的基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法及裝置,具有以下有益效果:占用較少帶寬、能解析報(bào)文內(nèi)容、安全性有保證、能解決語(yǔ)義問(wèn)題。
【專利說(shuō)明】一種基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及系統(tǒng)對(duì)接領(lǐng)域,特別涉及一種基于js (javascript)的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法及裝置。
【背景技術(shù)】
[0002]SOA (Service-Oriented Architecture,面向服務(wù)的體系結(jié)構(gòu))是一個(gè)組件模型,它將應(yīng)用程序的不同功能單元(稱為服務(wù))通過(guò)在這些服務(wù)之間定義良好的接口和契約聯(lián)系起來(lái)。接口是采用中立的方式進(jìn)行定義的,其獨(dú)立于實(shí)現(xiàn)服務(wù)的硬件平臺(tái)、操作系統(tǒng)和編程語(yǔ)言。這使得構(gòu)建在各種各樣的系統(tǒng)中的服務(wù)可以使用一種統(tǒng)一和通用的方式進(jìn)行交互。
[0003]SOA是一種粗粒度、松耦合服務(wù)架構(gòu),服務(wù)之間通過(guò)簡(jiǎn)單、精確定義接口進(jìn)行通訊,不涉及底層編程接口和通訊模型。SOA可以看作是B/S (Browser/Server,瀏覽器/服務(wù)器)模型、XML/Web Service (可擴(kuò)展標(biāo)記語(yǔ)言/Web服務(wù))技術(shù)之后的自然延伸。
[0004]SOA技術(shù)本身存在以下問(wèn)題:(I) SOA可以說(shuō)是Web Service技術(shù)的延伸,數(shù)據(jù)傳輸常采用SOAP協(xié)議(xml),xml在數(shù)據(jù)傳輸過(guò)程中,較之json數(shù)據(jù)格式浪費(fèi)了大量的帶寬,沒(méi)有json數(shù)據(jù)格式精簡(jiǎn)實(shí)用;(2)移動(dòng)互聯(lián)網(wǎng)HTML5應(yīng)用無(wú)法解析xml的報(bào)文內(nèi)容,需引入其他解析模塊才能很好的支持xml解析,對(duì)json數(shù)據(jù)的解析HTML5應(yīng)用原生支持;(3)以往訪問(wèn)控制只需要登錄和驗(yàn)證;而在SOA環(huán)境中,由于一個(gè)應(yīng)用軟件的組件很容易去與不同域領(lǐng)域、不同系統(tǒng)的其他組件進(jìn)行對(duì)話,所以確保迥然不同又相互連接的系統(tǒng)之間的安全性就會(huì)變得特別困難;(4)定義事務(wù)和數(shù)據(jù)的業(yè)務(wù)含義,一直是IT管理人員面臨的最棘手問(wèn)題。語(yǔ)義關(guān)系是設(shè)計(jì)良好SOA架構(gòu)的核心要素。就目前而言,沒(méi)有哪一項(xiàng)技術(shù)或軟件產(chǎn)品能夠真正解決語(yǔ)義問(wèn)題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明要解決的技術(shù)問(wèn)題在于,針對(duì)現(xiàn)有技術(shù)的上述浪費(fèi)帶寬、無(wú)法解析報(bào)文內(nèi)容、安全性沒(méi)有保證、不能解決語(yǔ)義問(wèn)題的缺陷,提供一種占用較少帶寬、能解析報(bào)文內(nèi)容、安全性有保證、能解決語(yǔ)義問(wèn)題的基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法及裝置。
[0006]本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:構(gòu)造一種基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法,包括如下步驟:
A)客戶端通過(guò)http協(xié)議json(JavaScript Object Notation,—種輕量級(jí)的數(shù)據(jù)交換格式)的數(shù)據(jù)格式向jsse (JavaScript Service Engine, js服務(wù)引擎)發(fā)送請(qǐng)求并對(duì)所述請(qǐng)求進(jìn)行處理;所述jsse包括適配器組件和能力組件,所述適配器組件和能力組件具有API接口 ;
B)調(diào)用所述適配器組件或能力組件的API接口與所述企業(yè)系統(tǒng)對(duì)接,來(lái)實(shí)現(xiàn)對(duì)企業(yè)系統(tǒng)接口數(shù)據(jù)格式的轉(zhuǎn)換。
[0007]在本發(fā)明所述的基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法中,所述jsse還包括主核心框架和js引擎。
[0008]在本發(fā)明所述的基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法中,所述步驟A)進(jìn)一步包括:
Al)客戶端按照符合http協(xié)議的json的數(shù)據(jù)格式向所述主核心框架發(fā)送請(qǐng)求;
A2)所述主核心框架對(duì)所述請(qǐng)求進(jìn)行解析,并獲取所述請(qǐng)求中攜帶的數(shù)據(jù);
A3)所述主核心框架將所述js引擎加載到所述jsse中;
A4)所述主核心框架依據(jù)所述請(qǐng)求中攜帶的數(shù)據(jù)將指定的js邏輯文件內(nèi)容加載到所述jsse中;
A5)所述主核心框架通過(guò)所述js引擎解析并執(zhí)行所述js邏輯文件的內(nèi)容;
A6)判斷執(zhí)行的js邏輯文件的內(nèi)容中是否存在加載適配器組件或能力組件的腳本代碼,如是,執(zhí)行步驟A7);否則,不執(zhí)行任何操作;
A7)所述主核心框架將指定的適配器組件或能力組件加載到所述jsse中。
[0009]在本發(fā)明所述的基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法中,所述步驟B)進(jìn)一步包括:
BI)調(diào)用指定的適配器組件或能力組件的API接口與所述企業(yè)系統(tǒng)進(jìn)行對(duì)接;
B2)將調(diào)用結(jié)果返回給所述主核心框架;
B3)所述主核心框架按照符合http協(xié)議的json的數(shù)據(jù)格式將所述調(diào)用結(jié)果返回給所述客戶端。
[0010]在本發(fā)明所述的基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法中,在執(zhí)行完所述js邏輯文件的內(nèi)容、響應(yīng)完所述請(qǐng)求后或在所述jsse接收客戶端請(qǐng)求并未確認(rèn)客戶端的合法性及客戶端數(shù)據(jù)的完整性之前,所述js引擎進(jìn)入或處于休眠狀態(tài)。
[0011]本發(fā)明還涉及一種實(shí)現(xiàn)上述基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法的裝置,包括:請(qǐng)求發(fā)送單元:用于使客戶端通過(guò)http協(xié)議json的數(shù)據(jù)格式向jsse發(fā)送請(qǐng)求并對(duì)所述請(qǐng)求進(jìn)行處理;所述jsse包括適配器組件和能力組件,所述適配器組件和能力組件具有API接口 ;
接口調(diào)用轉(zhuǎn)換單元:用于調(diào)用所述適配器組件或能力組件的API接口與所述企業(yè)系統(tǒng)對(duì)接,來(lái)實(shí)現(xiàn)對(duì)企業(yè)系統(tǒng)接口數(shù)據(jù)格式的轉(zhuǎn)換。
[0012]在本發(fā)明所述的實(shí)現(xiàn)上述基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法的裝置中,所述jsse還包括主核心框架和js引擎。
[0013]在本發(fā)明所述的實(shí)現(xiàn)上述基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法的裝置中,所述請(qǐng)求發(fā)送單元進(jìn)一步包括:
格式請(qǐng)求發(fā)送模塊:用于使客戶端按照符合http協(xié)議的json的數(shù)據(jù)格式向所述主核心框架發(fā)送請(qǐng)求;
解析模塊:用于使所述主核心框架對(duì)所述請(qǐng)求進(jìn)行解析,并獲取所述請(qǐng)求中攜帶的數(shù)
據(jù);
引擎加載模塊:用于使所述主核心框架將所述js引擎加載到所述jsse中;
邏輯文件加載模塊:用于使所述主核心框架依據(jù)所述請(qǐng)求中攜帶的數(shù)據(jù)將指定的js邏輯文件內(nèi)容加載到所述jsse中;
解析執(zhí)行模塊:用于使所述主核心框架通過(guò)所述js引擎解析并執(zhí)行所述js邏輯文件的內(nèi)容;
加載判斷模塊:用于判斷執(zhí)行的js邏輯文件的內(nèi)容中是否存在加載適配器組件或能力組件的腳本代碼;
指定加載模塊:用于使所述主核心框架將指定的適配器組件或能力組件加載到所述jsse 中ο
[0014]在本發(fā)明所述的實(shí)現(xiàn)上述基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法的裝置中,所述接口調(diào)用轉(zhuǎn)換單元進(jìn)一步包括:
調(diào)用對(duì)接模塊:用于調(diào)用指定的適配器組件或能力組件的API接口與所述企業(yè)系統(tǒng)進(jìn)行對(duì)接;
調(diào)用結(jié)果返回模塊:用于將調(diào)用結(jié)果返回給所述主核心框架;
調(diào)用結(jié)果格式返回模塊:用于使所述主核心框架按照符合http協(xié)議的json的數(shù)據(jù)格式將所述調(diào)用結(jié)果返回給所述客戶端。
[0015]在本發(fā)明所述的實(shí)現(xiàn)上述基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法的裝置中,在執(zhí)行完所述js邏輯文件的內(nèi)容、響應(yīng)完所述請(qǐng)求后或在所述jsse接收客戶端請(qǐng)求并未確認(rèn)客戶端的合法性及客戶端數(shù)據(jù)的完整性之前,所述js引擎進(jìn)入或處于休眠狀態(tài)。
[0016]實(shí)施本發(fā)明的基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法及裝置,具有以下有益效果:由于客戶端通過(guò)http協(xié)議json的數(shù)據(jù)格式向jsse發(fā)送請(qǐng)求并對(duì)請(qǐng)求進(jìn)行處理;jsse包括適配器組件和能力組件,適配器組件和能力組件具有API接口 ;通過(guò)調(diào)用適配器組件或能力組件的API接口與所述企業(yè)系統(tǒng)對(duì)接,來(lái)實(shí)現(xiàn)對(duì)企業(yè)系統(tǒng)接口數(shù)據(jù)格式的轉(zhuǎn)換,使用json數(shù)據(jù)格式精簡(jiǎn)實(shí)用,所以占用較少帶寬,移動(dòng)互聯(lián)網(wǎng)HTML5能對(duì)json數(shù)據(jù)進(jìn)行解析;適配器組件和能力組件具有統(tǒng)一的API接口,很容易實(shí)現(xiàn)各接口的對(duì)接,所以安全性有保證,基于標(biāo)準(zhǔn)的javascript開(kāi)發(fā)語(yǔ)言,簡(jiǎn)單編寫(xiě)具有邏輯的javascript文件,便可實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)邏輯,不用太多的考慮語(yǔ)義問(wèn)題,所以能解決語(yǔ)義問(wèn)題。
【專利附圖】
【附圖說(shuō)明】
[0017]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0018]圖1為本發(fā)明基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法及裝置一個(gè)實(shí)施例中對(duì)接企業(yè)系統(tǒng)的結(jié)構(gòu)示意圖;
圖2為所述實(shí)施例中方法的流程圖;
圖3為所述實(shí)施例中客戶端通過(guò)http協(xié)議json的數(shù)據(jù)格式向jsse發(fā)送請(qǐng)求并對(duì)請(qǐng)求進(jìn)行處理的具體流程圖;
圖4為所述實(shí)施例中調(diào)用適配器組件或能力組件的API接口與企業(yè)系統(tǒng)對(duì)接,來(lái)實(shí)現(xiàn)對(duì)企業(yè)系統(tǒng)接口數(shù)據(jù)格式的轉(zhuǎn)換的具體流程圖;
圖5為所述實(shí)施例中實(shí)現(xiàn)與企業(yè)系統(tǒng)對(duì)接的時(shí)序圖;
圖6為所述實(shí)施例中裝置的結(jié)構(gòu)示意圖。【具體實(shí)施方式】
[0019]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0020]在本發(fā)明基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法及裝置實(shí)施例中,其對(duì)接企業(yè)系統(tǒng)的結(jié)構(gòu)示意如圖1所示。圖1中,通過(guò)編寫(xiě)javascript腳本,調(diào)用API (已有或自定義)能力,便可完成對(duì)企業(yè)系統(tǒng)的對(duì)接,從而實(shí)現(xiàn)新業(yè)務(wù)系統(tǒng)功能。本實(shí)施例中,jsse包括適配器組件和能力組件,適配器組件和能力組件具有API接口,適配器組件包含多種適配器,能力組件有多種。jsse還包括主核心框架和js引擎。新的業(yè)務(wù)系統(tǒng)通過(guò)http協(xié)議json的數(shù)據(jù)格式請(qǐng)求jsse, jsse通過(guò)適配器組件或能力組件與現(xiàn)有的企業(yè)系統(tǒng)對(duì)接,來(lái)實(shí)現(xiàn)完成對(duì)現(xiàn)有的企業(yè)系統(tǒng)接口數(shù)據(jù)格式的轉(zhuǎn)換,從而實(shí)現(xiàn)預(yù)定義功能。使用js語(yǔ)言可快速上手,學(xué)習(xí)成本低,提供強(qiáng)大的API支持,基于標(biāo)準(zhǔn)的javascript開(kāi)發(fā)語(yǔ)言,通過(guò)簡(jiǎn)單編寫(xiě)具有邏輯的javscript文件,便可實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)邏輯。
[0021]本實(shí)施例中,上述基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法的流程圖如圖2所示。圖2中,該方法包括如下步驟:
步驟SOl客戶端通過(guò)http協(xié)議json的數(shù)據(jù)格式向jsse發(fā)送請(qǐng)求并對(duì)請(qǐng)求進(jìn)行處理:本步驟中,客戶端(請(qǐng)求方,也相當(dāng)于圖1中的新業(yè)務(wù)系統(tǒng))通過(guò)http協(xié)議json的數(shù)據(jù)格式向jsse發(fā)送請(qǐng)求并對(duì)請(qǐng)求進(jìn)行處理,特別指出的是,jsse協(xié)議請(qǐng)求為http協(xié)議傳輸?shù)臄?shù)據(jù)格式為json。
[0022]步驟S02調(diào)用適配器組件或能力組件的API接口與企業(yè)系統(tǒng)對(duì)接,來(lái)實(shí)現(xiàn)對(duì)企業(yè)系統(tǒng)接口數(shù)據(jù)格式的轉(zhuǎn)換:本步驟中,調(diào)用適配器組件或能力組件的API接口與企業(yè)系統(tǒng)對(duì)接,來(lái)實(shí)現(xiàn)對(duì)企業(yè)系統(tǒng)接口數(shù)據(jù)格式的轉(zhuǎn)換。使用json數(shù)據(jù)格式精簡(jiǎn)實(shí)用,所以占用較少帶寬,移動(dòng)互聯(lián)網(wǎng)HTML5能對(duì)json數(shù)據(jù)進(jìn)行解析;適配器組件和能力組件具有統(tǒng)一的API接口,很容易實(shí)現(xiàn)各接口的對(duì)接,所以安全性有保證,基于標(biāo)準(zhǔn)的javascript開(kāi)發(fā)語(yǔ)言,簡(jiǎn)單編寫(xiě)具有邏輯的javscript文件,便可實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)邏輯,不用太多的考慮語(yǔ)義問(wèn)題,所以能解決語(yǔ)義問(wèn)題。
[0023]現(xiàn)有技術(shù)中,SOA通過(guò)所謂粗粒度服務(wù)接口和分級(jí),確實(shí)提高了效率,實(shí)現(xiàn)流程化以后,也確實(shí)簡(jiǎn)化了開(kāi)發(fā)難度。但是如果這個(gè)流程不適合企業(yè)的實(shí)際情況,還是需要個(gè)性化開(kāi)發(fā)。在本實(shí)施例中,提供適配器組件和能力組件的開(kāi)發(fā)標(biāo)準(zhǔn),可自定義更具針對(duì)性的適配器或能力組件,并且各個(gè)適配器、能力組件之間可自由組裝,并不依賴,可以很好的解決現(xiàn)有技術(shù)中的問(wèn)題。
[0024]對(duì)于本實(shí)施例而言,上述步驟SOl還可進(jìn)一步細(xì)化,其細(xì)化后的流程圖如圖3所示。圖3中,上述步驟SOl進(jìn)一步包括:
步驟Sll客戶端按照符合http協(xié)議的json的數(shù)據(jù)格式向主核心框架發(fā)送請(qǐng)求:本步驟中,客戶端按照符合http協(xié)議的json的數(shù)據(jù)格式向主核心框架發(fā)送請(qǐng)求。
[0025]步驟S12主核心框架對(duì)請(qǐng)求進(jìn)行解析,并獲取請(qǐng)求中攜帶的數(shù)據(jù):本步驟中,主核心框架對(duì)請(qǐng)求進(jìn)行解析,并獲取請(qǐng)求中攜帶的數(shù)據(jù)。
[0026]步驟S13主核心框架將js引擎加載到j(luò)sse中:本步驟中,主核心框架加載js引擎,并將js引擎加載到j(luò)sse中。
[0027]步驟S14主核心框架依據(jù)請(qǐng)求中攜帶的數(shù)據(jù)將指定的js邏輯文件內(nèi)容加載到j(luò)sse中:本步驟中,主核心框架依據(jù)請(qǐng)求中攜帶的數(shù)據(jù)加載指定的js邏輯文件內(nèi)容,并將指定的js邏輯文件內(nèi)容加載到j(luò)sse中。
[0028]步驟S15主核心框架通過(guò)js引擎解析并執(zhí)行js邏輯文件的內(nèi)容:本步驟中,主核心框架通過(guò)js引擎解析并執(zhí)行js邏輯文件的內(nèi)容。
[0029]步驟S16判斷執(zhí)行的js邏輯文件的內(nèi)容中是否存在加載適配器組件或能力組件的腳本代碼:本步驟中,判斷執(zhí)行的js邏輯文件的內(nèi)容中是否存在加載適配器組件或能力組件的腳本代碼,如果判斷的結(jié)果為是,則執(zhí)行步驟S18 ;否則,執(zhí)行步驟S17。
[0030]步驟S17不執(zhí)行任何操作:如果上述步驟S16的判斷結(jié)果為否,則執(zhí)行本步驟。本步驟中,不執(zhí)行任何操作。
[0031]步驟S18主核心框架將指定的適配器組件或能力組件加載到j(luò)sse中:如果上述步驟S16的判斷結(jié)果為是,則執(zhí)行本步驟。本步驟中,主核心框架將指定的適配器組件或能力組件加載到j(luò)sse中。
[0032]對(duì)于本實(shí)施例而言,上述步驟S02還可進(jìn)一步細(xì)化,其細(xì)化后的流程圖如圖4所示。圖4中,上述步驟S02進(jìn)一步包括:
步驟S21調(diào)用指定的適配器組件或能力組件的API接口與企業(yè)系統(tǒng)進(jìn)行對(duì)接:本步驟中,調(diào)用指定的適配器組件或能力組件的API接口與企業(yè)系統(tǒng)進(jìn)行對(duì)接。
[0033]步驟S22將調(diào)用結(jié)果返回給主核心框架:本步驟中,將調(diào)用結(jié)果返回給主核心框架。
[0034]步驟S23主核心框架按照符合http協(xié)議的json的數(shù)據(jù)格式將調(diào)用結(jié)果返回給客戶端:本步驟中,主核心框架按照符合http協(xié)議的json的數(shù)據(jù)格式將調(diào)用結(jié)果返回給客戶端?;跇?biāo)準(zhǔn)js語(yǔ)法,完成與現(xiàn)有的企業(yè)系統(tǒng)的交互,實(shí)現(xiàn)系統(tǒng)對(duì)接,并返回根據(jù)客戶端(請(qǐng)求方)要求的數(shù)據(jù)格式及數(shù)據(jù)。這樣就完成了對(duì)現(xiàn)有的企業(yè)系統(tǒng)接口數(shù)據(jù)格式的轉(zhuǎn)換,從而實(shí)現(xiàn)預(yù)定義功能。
[0035]下面介紹上述主核心框架、js引擎、適配器組件和能力組件等四個(gè)組件。主核心框架的主要功能職責(zé)有:接收、分解客戶端的請(qǐng)求,并獲取請(qǐng)求中攜帶的數(shù)據(jù);加載js引擎至jsse中;根據(jù)請(qǐng)求數(shù)據(jù),加載指定js邏輯文件的內(nèi)容;通過(guò)js引擎解析并執(zhí)行js邏輯文件的內(nèi)容。若執(zhí)行的javascript腳本中存在加載適配器或能力組件的腳本代碼,主核心框架也將js邏輯文件中指定的適配器或能力組件加載至js引擎中。
[0036]js引擎是javascript解析和執(zhí)行內(nèi)核,本實(shí)施例中,js引擎采用Java jdkl.7中默認(rèn)支持帶有的Mozilla Rhino。Mozilla Rhino是一個(gè)完全使用java語(yǔ)言編寫(xiě)的開(kāi)源js引擎實(shí)現(xiàn),主要用于在java環(huán)境中執(zhí)行js程序,為最終用戶提供腳本化能力。
[0037]js引擎在整個(gè)jsse運(yùn)行時(shí)態(tài)中存在幾個(gè)狀態(tài),分別為休眠狀態(tài)、初始狀態(tài)和運(yùn)行狀態(tài)。程序初次啟動(dòng),便會(huì)實(shí)現(xiàn)部分休眠態(tài)的js引擎實(shí)例,jsse執(zhí)行完js邏輯文件的內(nèi)容,響應(yīng)完客戶端(請(qǐng)求方)的請(qǐng)求后,js引擎便會(huì)重新進(jìn)入休眠態(tài)。jsse在做系統(tǒng)服務(wù)的對(duì)接時(shí),當(dāng)jsse接收請(qǐng)求方的請(qǐng)求,在未確認(rèn)請(qǐng)求方的合法性及請(qǐng)求方數(shù)據(jù)的完整性之前,為了保障系統(tǒng)資源的不浪費(fèi),js引擎是不會(huì)進(jìn)行加載和準(zhǔn)備執(zhí)行的,此時(shí)js引擎將處于休眠態(tài)。[0038]在初始狀態(tài)時(shí),當(dāng)jsse確認(rèn)了請(qǐng)求方的合法性及數(shù)據(jù)的完整性后,便會(huì)加載js引擎,并實(shí)現(xiàn)一些初始的加載及準(zhǔn)備執(zhí)行預(yù)備工作。在運(yùn)行狀態(tài)時(shí),當(dāng)jsse進(jìn)行真正的系統(tǒng)對(duì)接時(shí),js引擎便會(huì)加載執(zhí)行的js邏輯文件,并解析js邏輯文件預(yù)定義的邏輯,調(diào)用各個(gè)適配器或能力組件進(jìn)行相關(guān)處理。
[0039]本實(shí)施例中,適配器組件及能力組件主要用于對(duì)現(xiàn)有企業(yè)系統(tǒng)進(jìn)行適配和對(duì)接的工作。適配器組件包含多種適配器,如SQLAdapter (數(shù)據(jù)庫(kù)適配器),HTTPAdapter (HTTP協(xié)議適配器)和EmailAdapte (郵件適配器)等等;其中,SQLAdapter主要用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行對(duì)接(Oracle, Sqlserver, DB2, Mysql...), HttpAdapter 主要用于對(duì)接 HTTP 協(xié)議的相關(guān)接口(WebService、Http+Json、表單提交等),EmailAdapter 支持標(biāo)準(zhǔn)的 pop3 和 smtp 協(xié)議進(jìn)行郵件的收發(fā),主要用于對(duì)郵件系統(tǒng)進(jìn)行對(duì)接。能力組件有多種,如FILEEnabler (文件能力組件)、DOCUMENTEnable (文檔能力組件)、CODECEnabler (代碼能力組件)和ZipEnabler(壓縮能力組件)等等,其中,F(xiàn)ileEnabler用于對(duì)文件協(xié)議的支持,支持對(duì)文件系統(tǒng)進(jìn)行操作,DocumentEnabIer用于對(duì)office、pdf文檔進(jìn)行處理轉(zhuǎn)換的操作,ZipEnabler用于壓縮、解壓縮的操作處理。另外除了上述列出來(lái)的適配器和能力組件,還有大量的適配器和能力組件在本實(shí)施例中就不一一進(jìn)行列舉了。
[0040]本實(shí)施例還涉及一種實(shí)現(xiàn)上述基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法的裝置,其結(jié)構(gòu)示意圖如圖6所示。圖6中,該裝置包括請(qǐng)求發(fā)送單元I和接口調(diào)用轉(zhuǎn)換單元2 ;其中,請(qǐng)求發(fā)送單元I用于使客戶端通過(guò)http協(xié)議json的數(shù)據(jù)格式向jsse發(fā)送請(qǐng)求并對(duì)所述請(qǐng)求進(jìn)行處理;jSSe包括適配器組件和能力組件,適配器組件和能力組件具有API接口 ;接口調(diào)用轉(zhuǎn)換單元2用于調(diào)用適配器組件或能力組件的API接口與企業(yè)系統(tǒng)對(duì)接,來(lái)實(shí)現(xiàn)對(duì)企業(yè)系統(tǒng)接口數(shù)據(jù)格式的轉(zhuǎn)換。本實(shí)施例中,jsse還包括主核心框架和js引擎。使用json數(shù)據(jù)格式精簡(jiǎn)實(shí)用,所以占用較少帶寬,移動(dòng)互聯(lián)網(wǎng)HTML5能對(duì)json數(shù)據(jù)進(jìn)行解析;適配器組件和能力組件具有統(tǒng)一的API接口,很容易實(shí)現(xiàn)各接口的對(duì)接,所以安全性有保證,基于標(biāo)準(zhǔn)的javascript開(kāi)發(fā)語(yǔ)言,簡(jiǎn)單編寫(xiě)具有邏輯的javscript文件,便可實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)邏輯,不用太多的考慮語(yǔ)義問(wèn)題,所以能解決語(yǔ)義問(wèn)題。
[0041]本實(shí)施例中,請(qǐng)求發(fā)送單元I進(jìn)一步包括格式請(qǐng)求發(fā)送模塊11、解析模塊12、弓丨擎加載模塊13、邏輯文件加載模塊14、解析執(zhí)行模塊15、加載判斷模塊16和指定加載模塊17 ;其中,格式請(qǐng)求發(fā)送模塊11用于使客戶端按照符合http協(xié)議的json的數(shù)據(jù)格式向主核心框架發(fā)送請(qǐng)求;解析模塊12用于使主核心框架對(duì)請(qǐng)求進(jìn)行解析,并獲取請(qǐng)求中攜帶的數(shù)據(jù);引擎加載模塊13用于使主核心框架將js引擎加載到j(luò)sse中;邏輯文件加載模塊14用于使主核心框架依據(jù)請(qǐng)求中攜帶的數(shù)據(jù)將指定的js邏輯文件內(nèi)容加載到j(luò)sse中;解析執(zhí)行模塊15用于使主核心框架通過(guò)js引擎解析并執(zhí)行js邏輯文件的內(nèi)容;加載判斷模塊16用于判斷執(zhí)行的js邏輯文件的內(nèi)容中是否存在加載適配器組件或能力組件的腳本代碼;指定加載模塊17用于使主核心框架將指定的適配器組件或能力組件加載到j(luò)sse中。
[0042]本實(shí)施例中,接口調(diào)用轉(zhuǎn)換單元2進(jìn)一步包括調(diào)用對(duì)接模塊21、調(diào)用結(jié)果返回模塊22和調(diào)用結(jié)果格式返回模塊23 ;其中,調(diào)用對(duì)接模塊21用于調(diào)用指定的適配器組件或能力組件的API接口與企業(yè)系統(tǒng)進(jìn)行對(duì)接;調(diào)用結(jié)果返回模塊22用于將調(diào)用結(jié)果返回給主核心框架;調(diào)用結(jié)果格式返回模塊23用于使主核心框架按照符合http協(xié)議的json的數(shù)據(jù)格式將調(diào)用結(jié)果返回給客戶端。[0043]本實(shí)施例中,在執(zhí)行完js邏輯文件的內(nèi)容、響應(yīng)完客戶端的請(qǐng)求后或在jsse接收客戶端請(qǐng)求并未確認(rèn)客戶端的合法性及客戶端數(shù)據(jù)的完整性之前,js引擎進(jìn)入或處于休眠狀態(tài)。這樣可以節(jié)省資源。
[0044]總之,在本實(shí)施例中,jsse本身能支撐對(duì)接現(xiàn)有的大部分的接口協(xié)議,并且jsse還開(kāi)發(fā)自定義適配器和能力組件的API,如此便能針對(duì)現(xiàn)有企業(yè)系統(tǒng)做更個(gè)性化的定制,具有更好的拓展性。由于使用js語(yǔ)言,其本局就具備跨平臺(tái)特性,支持多種常見(jiàn)平臺(tái)。jsse系統(tǒng)的配置靈活多變,系統(tǒng)部署成功后,系統(tǒng)本身配置文件和業(yè)務(wù)程序的配置項(xiàng)都可與jsse系統(tǒng)分離管理。系統(tǒng)部署簡(jiǎn)單,性能優(yōu)越,系統(tǒng)可分布式多機(jī)部署。系統(tǒng)支持熱部署,配置文件修改后便立即生效,配置文件和系統(tǒng)關(guān)聯(lián),但并不依賴。此外,系統(tǒng)支持多種模式(開(kāi)發(fā)模式和部署模式),易于開(kāi)發(fā)調(diào)試和正式部署,擁有獨(dú)立的日志系統(tǒng),日志以模塊,系統(tǒng)來(lái)劃分。使用js語(yǔ)言,其編程面向?qū)ο?,可以很好地降低代碼冗余,其代碼復(fù)用率較高,更利于團(tuán)隊(duì)開(kāi)發(fā)人員有效的分工和管理代碼,提高工作效率。js引擎對(duì)象池具有自動(dòng)伸縮特性,可實(shí)現(xiàn)系統(tǒng)的緩存,根據(jù)系統(tǒng)忙閑情況實(shí)現(xiàn)對(duì)連接資源的自動(dòng)調(diào)度管理。同時(shí),對(duì)象池提供鏈路狀態(tài)自動(dòng)檢測(cè)和重連機(jī)制。
[0045]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法,其特征在于,包括如下步驟: A)客戶端通過(guò)http協(xié)議json的數(shù)據(jù)格式向jsse發(fā)送請(qǐng)求并對(duì)所述請(qǐng)求進(jìn)行處理;所述jsse包括適配器組件和能力組件,所述適配器組件和能力組件具有API接口; B)調(diào)用所述適配器組件或能力組件的API接口與所述企業(yè)系統(tǒng)對(duì)接,來(lái)實(shí)現(xiàn)對(duì)企業(yè)系統(tǒng)接口數(shù)據(jù)格式的轉(zhuǎn)換。
2.根據(jù)權(quán)利要求1所述的基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法,其特征在于,所述jsse還包括主核心框架和js引擎。
3.根據(jù)權(quán)利要求2所述的基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法,其特征在于,所述步驟A)進(jìn)一步包括: Al)客戶端按照符合http協(xié)議的json的數(shù)據(jù)格式向所述主核心框架發(fā)送請(qǐng)求; A2)所述主核心框架對(duì)所述請(qǐng)求進(jìn)行解析,并獲取所述請(qǐng)求中攜帶的數(shù)據(jù); A3)所述主核心框架將所述js引擎加載到所述jsse中; A4)所述主核心框架依據(jù)所述請(qǐng)求中攜帶的數(shù)據(jù)將指定的js邏輯文件內(nèi)容加載到所述jsse中; A5)所述主核心框架通過(guò)所述js引擎解析并執(zhí)行所述js邏輯文件的內(nèi)容; A6)判斷執(zhí)行的js邏輯文件的內(nèi)容中是否存在加載適配器組件或能力組件的腳本代碼,如是,執(zhí)行步驟A7);否則,不執(zhí)行任何操作; A7)所述主核心框架將指定的適配器組件或能力組件加載到所述jsse中。
4.根據(jù)權(quán)利要求3所述的基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法,其特征在于,所述步驟B)進(jìn)一步包括: BI)調(diào)用指定的適配器組件或能力組件的API接口與所述企業(yè)系統(tǒng)進(jìn)行對(duì)接; B2)將調(diào)用結(jié)果返回給所述主核心框架; B3)所述主核心框架按照符合http協(xié)議的json的數(shù)據(jù)格式將所述調(diào)用結(jié)果返回給所述客戶端。
5.根據(jù)權(quán)利要求2至4任意一項(xiàng)所述的基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法,其特征在于,在執(zhí)行完所述js邏輯文件的內(nèi)容、響應(yīng)完所述請(qǐng)求后或在所述jsse接收客戶端請(qǐng)求并未確認(rèn)客戶端的合法性及客戶端數(shù)據(jù)的完整性之前,所述js引擎進(jìn)入或處于休眠狀態(tài)。
6.一種實(shí)現(xiàn)如權(quán)利要求1所述的基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法的裝置,其特征在于,包括: 請(qǐng)求發(fā)送單元:用于使客戶端通過(guò)http協(xié)議json的數(shù)據(jù)格式向jsse發(fā)送請(qǐng)求并對(duì)所述請(qǐng)求進(jìn)行處理;所述jsse包括適配器組件和能力組件,所述適配器組件和能力組件具有API 接口 ; 接口調(diào)用轉(zhuǎn)換單元:用于調(diào)用所述適配器組件或能力組件的API接口與所述企業(yè)系統(tǒng)對(duì)接,來(lái)實(shí)現(xiàn)對(duì)企業(yè)系統(tǒng)接口數(shù)據(jù)格式的轉(zhuǎn)換。
7.根據(jù)權(quán)利要求6所述的實(shí)現(xiàn)上述基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法的裝置,其特征在于,所述jsse還包括主核心框架和js引擎。
8.根據(jù)權(quán)利要求7所述的實(shí)現(xiàn)上述基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法的裝置,其特征在于,所述請(qǐng)求發(fā)送單元進(jìn)一步包括: 格式請(qǐng)求發(fā)送模塊:用于使客戶端按照符合http協(xié)議的json的數(shù)據(jù)格式向所述主核心框架發(fā)送請(qǐng)求; 解析模塊:用于使所述主核心框架對(duì)所述請(qǐng)求進(jìn)行解析,并獲取所述請(qǐng)求中攜帶的數(shù)據(jù); 引擎加載模塊:用于使所述主核心框架將所述js引擎加載到所述jsse中; 邏輯文件加載模塊:用于使所述主核心框架依據(jù)所述請(qǐng)求中攜帶的數(shù)據(jù)將指定的js邏輯文件內(nèi)容加載到所述jsse中; 解析執(zhí)行模塊:用于使所述主核心框架通過(guò)所述js引擎解析并執(zhí)行所述js邏輯文件的內(nèi)容; 加載判斷模塊:用于判斷執(zhí)行的js邏輯文件的內(nèi)容中是否存在加載適配器組件或能力組件的腳本代碼; 指定加載模塊:用于使所述主核心框架將指定的適配器組件或能力組件加載到所述jsse 中ο
9.根據(jù)權(quán)利要求8所述的實(shí)現(xiàn)上述基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法的裝置,其特征在于,所述接口調(diào)用轉(zhuǎn)換單元進(jìn)一步包括: 調(diào)用對(duì)接模塊:用于調(diào)用指定的適配器組件或能力組件的API接口與所述企業(yè)系統(tǒng)進(jìn)行對(duì)接; 調(diào)用結(jié)果返回模塊:用于將調(diào)用結(jié)果返回給所述主核心框架; 調(diào)用結(jié)果格式返回模塊:用于使所述主核心框架按照符合http協(xié)議的json的數(shù)據(jù)格式將所述調(diào)用結(jié)果返回給所述客戶端。
10.根據(jù)權(quán)利要求7至9任意一項(xiàng)所述的實(shí)現(xiàn)上述基于js的與企業(yè)系統(tǒng)進(jìn)行對(duì)接的方法的裝置,其特征在于,在執(zhí)行完所述js邏輯文件的內(nèi)容、響應(yīng)完所述請(qǐng)求后或在所述jsse接收客戶端請(qǐng)求并未確認(rèn)客戶端的合法性及客戶端數(shù)據(jù)的完整性之前,所述js引擎進(jìn)入或處于休眠狀態(tài)。
【文檔編號(hào)】H04L29/06GK103716310SQ201310705811
【公開(kāi)日】2014年4月9日 申請(qǐng)日期:2013年12月19日 優(yōu)先權(quán)日:2013年12月19日
【發(fā)明者】鄒保琪, 廖炳才, 王付國(guó), 劉志強(qiáng), 何志明 申請(qǐng)人:深圳市邁橋科技有限公司