專利名稱:翻譯器以及基于翻譯器的處理多業(yè)務(wù)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及基于呼叫處理語(yǔ)言(CPL)處理業(yè)務(wù)的技術(shù),尤其涉及一種基 于CPL的翻譯器以及基于翻譯器的處理多業(yè)務(wù)的系統(tǒng)和方法。
背景技術(shù):
在IP電話系統(tǒng)中,用來(lái)描述IP電話如何處理呼叫請(qǐng)求的語(yǔ)言為CPL, CPL 是基于擴(kuò)展性標(biāo)記語(yǔ)言(XML)的腳本語(yǔ)言,XML的擴(kuò)展性體現(xiàn)在允許業(yè)務(wù) 開(kāi)發(fā)者定義創(chuàng)建業(yè)務(wù)所需的標(biāo)簽。CPL獨(dú)立于信令協(xié)議,可在不同的信令協(xié)議 下執(zhí)行,信令協(xié)議包括公共交換電話網(wǎng)上的多媒體通信協(xié)議的數(shù)據(jù)流復(fù)用標(biāo)準(zhǔn) (H.323 )和會(huì)話發(fā)起協(xié)議(SIP )。
由于CPL與其描述的處理呼叫處理請(qǐng)求的動(dòng)作之間存在十分緊密的對(duì)應(yīng)關(guān) 系,因此,目前業(yè)務(wù)開(kāi)發(fā)者通過(guò)CPL編寫(xiě)CPL業(yè)務(wù)腳本來(lái)規(guī)定業(yè)務(wù)信息,進(jìn) 行業(yè)務(wù)開(kāi)發(fā)。CPL業(yè)務(wù)腳本以標(biāo)簽的形式對(duì)信息進(jìn)行標(biāo)記,CPL業(yè)務(wù)腳本中包 括兩種類型的信息輔助信息和呼叫處理的動(dòng)作,其中呼叫處理的動(dòng)作包括頂 層動(dòng)作和子動(dòng)作,也就是說(shuō),CPL業(yè)務(wù)腳本的標(biāo)簽中包括輔助信息或呼叫處理 動(dòng)作,其中,呼叫處理動(dòng)作為頂層動(dòng)作或子動(dòng)作。
頂層動(dòng)作指CPL業(yè)務(wù)腳本描述的業(yè)務(wù)服務(wù)器所觸發(fā)的動(dòng)作,包括呼入動(dòng)作 和呼出動(dòng)作兩種類型,其中,呼入動(dòng)作指呼叫到達(dá)該CPL業(yè)務(wù)腳本描述的業(yè)務(wù) 服務(wù)器時(shí)所產(chǎn)生的動(dòng)作;而呼出動(dòng)作指呼叫發(fā)自該CPL業(yè)務(wù)腳本描述的業(yè)務(wù)時(shí) 服務(wù)器產(chǎn)生的動(dòng)作。舉例子來(lái)說(shuō)頂層動(dòng)作即描述終端對(duì)業(yè)務(wù)服務(wù)器發(fā)出第一 個(gè)呼叫請(qǐng)求時(shí),所述業(yè)務(wù)服務(wù)器根據(jù)該請(qǐng)求進(jìn)行判斷后的處理動(dòng)作;所述業(yè)務(wù) 服務(wù)器經(jīng)過(guò)一系列處理動(dòng)作后,返回處理結(jié)果給所述終端的動(dòng)作也稱為頂層動(dòng) 作。
子動(dòng)作類似于C語(yǔ)言中函數(shù)的概念,指可以在其他動(dòng)作中調(diào)用的動(dòng)作。仍 沿用對(duì)頂層動(dòng)作描述中所舉的例子,子動(dòng)作即描述所述業(yè)務(wù)服務(wù)器執(zhí)行完頂層 動(dòng)作后,繼續(xù)進(jìn)行判斷,并選擇呼叫路由所進(jìn)行的一系列處理動(dòng)作。
頂層動(dòng)作與子動(dòng)作的區(qū)別在于頂層動(dòng)作描述在誰(shuí)與誰(shuí)之間建立呼叫連接, 為發(fā)起呼叫請(qǐng)求的終端與所述業(yè)務(wù)服務(wù)器之間的動(dòng)作,而子動(dòng)作是為了完成該 終端的呼叫請(qǐng)求,所述業(yè)務(wù)服務(wù)器所經(jīng)過(guò)的一系列處理動(dòng)作,包括代理轉(zhuǎn)發(fā), 重定向等。
通過(guò)CPL編寫(xiě)CPL業(yè)務(wù)腳本時(shí),CPL中描述的節(jié)點(diǎn)與CPL業(yè)務(wù)腳本中的 輔助信息以及呼叫處理動(dòng)作的對(duì)應(yīng)關(guān)系具體為 一個(gè)呼叫處理的動(dòng)作對(duì)應(yīng)于由 一組節(jié)點(diǎn)構(gòu)成的集合,這些節(jié)點(diǎn)用來(lái)描述所述業(yè)務(wù)服務(wù)器所進(jìn)行的各種判斷選 擇,以及相應(yīng)于判斷選擇完成的動(dòng)作。其中,節(jié)點(diǎn)指對(duì)應(yīng)于所述業(yè)務(wù)服務(wù)器中 進(jìn)行的判斷選擇操作,用CPL編寫(xiě)CPL業(yè)務(wù)腳本時(shí)設(shè)置的邏輯功能判斷點(diǎn)。 每個(gè)節(jié)點(diǎn)包含幾個(gè)參數(shù)和輸出,其中,參數(shù)描述了節(jié)點(diǎn)的精確的行為即設(shè)置一 些匹配條件,輔助信息與匹配條件相對(duì)應(yīng);輸出指在參數(shù)符合匹配條件的前提 下,節(jié)點(diǎn)將要做出的判斷以及釆取的動(dòng)作。這些節(jié)點(diǎn)從一個(gè)根節(jié)點(diǎn)出發(fā),根節(jié) 點(diǎn)的輸出與后續(xù)的子節(jié)點(diǎn)連接,組成一種樹(shù)狀結(jié)構(gòu)。
當(dāng)要執(zhí)行一個(gè)呼叫處理動(dòng)作時(shí),首先從頂層的根節(jié)點(diǎn)開(kāi)始執(zhí)行,即根據(jù)參 數(shù)的匹配條件所述業(yè)務(wù)服務(wù)器進(jìn)行判斷選擇,執(zhí)行相應(yīng)的頂層動(dòng)作并輸出一個(gè) 處理結(jié)果,然后將該處理結(jié)果輸入根節(jié)點(diǎn)下屬的子節(jié)點(diǎn),繼續(xù)執(zhí)行這種處理過(guò) 程直到某個(gè)子節(jié)點(diǎn)沒(méi)有輸出時(shí)為止。
綜上所述,現(xiàn)有技術(shù)為基于上述CPL處理業(yè)務(wù)的技術(shù),業(yè)務(wù)開(kāi)發(fā)者編寫(xiě) 好CPL業(yè)務(wù)腳本后,通過(guò)在終端與業(yè)務(wù)服務(wù)器之間傳送CPL業(yè)務(wù)腳本,在業(yè) 務(wù)服務(wù)器觸發(fā)并實(shí)現(xiàn)CPL業(yè)務(wù)腳本的機(jī)制,使業(yè)務(wù)服務(wù)器能對(duì)終端的呼叫請(qǐng)求 進(jìn)行控制和處理。
所采用的基于呼叫處理語(yǔ)言處理業(yè)務(wù)的系統(tǒng),包括相連的終端以及業(yè)務(wù)服 務(wù)器,業(yè)務(wù)服務(wù)器用于對(duì)獲取的CPL業(yè)務(wù)腳本進(jìn)行觸發(fā)并編譯,執(zhí)行CPL業(yè) 務(wù)腳本所描述的業(yè)務(wù)。如圖l所示,通過(guò)上述系統(tǒng),基于呼叫處理語(yǔ)言處理業(yè)務(wù)的方法包括以下
步驟
步驟101:業(yè)務(wù)開(kāi)發(fā)者在終端建立業(yè)務(wù)開(kāi)發(fā)環(huán)境,用CPL編寫(xiě)CPL業(yè)務(wù)腳 本,終端將封裝CPL業(yè)務(wù)腳本的信息發(fā)送給業(yè)務(wù)服務(wù)器,并在業(yè)務(wù)服務(wù)器上部 署呼叫業(yè)務(wù);
步驟102:業(yè)務(wù)服務(wù)器觸發(fā)CPL業(yè)務(wù)腳本,執(zhí)行呼叫業(yè)務(wù)。 CPL定義了四種標(biāo)簽,用來(lái)編寫(xiě)CPL業(yè)務(wù)腳本實(shí)現(xiàn)上述呼叫處理過(guò)程,包 括 判斷選擇標(biāo)簽,進(jìn)一步包括根據(jù)主叫或被叫的地址做出選擇的標(biāo)簽 (address-switch )、根據(jù)請(qǐng)求中的字符串做出選擇的標(biāo)簽(string-switch )、根據(jù) 語(yǔ)言做出選擇的標(biāo)簽(language-switch )、根據(jù)時(shí)間做出選擇的標(biāo)簽 (time-switch )、根據(jù)主叫的優(yōu)先級(jí)做出選擇的標(biāo)簽(priority-switch),上述標(biāo) 簽用來(lái)支持不同的選擇控制方式。
② 位置修改標(biāo)簽,從位置集合中添加或輸出記錄,包括鎖定位置記錄的標(biāo) 簽(location )、查找位置記錄的標(biāo)簽(lookup )、移去位置記錄的標(biāo)簽
(remove-location )。
③ 信令操作標(biāo)簽,引發(fā)底層信令協(xié)議的操作,進(jìn)一步包括引發(fā)底層協(xié)議的 轉(zhuǎn)發(fā)操作即向一個(gè)新的地址發(fā)送呼叫請(qǐng)求(proxy)、引發(fā)底層協(xié)議的重定向搡 作即通知主叫將呼叫重定向到一個(gè)新的地址(redirect )、以及引發(fā)底層協(xié)議的拒 絕操作即拒絕呼叫請(qǐng)求(reject )。
非信令操作標(biāo)簽引發(fā)與底層協(xié)議無(wú)關(guān)的操作,進(jìn)一步包括發(fā)送電子郵件 的搡作(mail)、記錄曰志的搡作(log)。
現(xiàn)有技術(shù)存在的缺點(diǎn)是僅通過(guò)業(yè)務(wù)服務(wù)器處理業(yè)務(wù)所花費(fèi)的時(shí)間較長(zhǎng), 而且用CPL編寫(xiě)的CPL業(yè)務(wù)腳本僅限于描述IP電話業(yè)務(wù)即業(yè)務(wù)服務(wù)器只能處 理呼叫業(yè)務(wù),不能處理定位、短信、彩信以及GIS等其他業(yè)務(wù),在用戶基于多 業(yè)務(wù)平臺(tái)發(fā)起業(yè)務(wù)請(qǐng)求的情況下,不能提供對(duì)多業(yè)務(wù)接入的支持,從而業(yè)務(wù)服 務(wù)器無(wú)法觸發(fā)并實(shí)現(xiàn)用戶的多種業(yè)務(wù)請(qǐng)求。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種基于擴(kuò)展CPL的翻譯器,降低 了通過(guò)業(yè)務(wù)服務(wù)器處理業(yè)務(wù)所花費(fèi)的時(shí)間,提高了業(yè)務(wù)服務(wù)器實(shí)現(xiàn)業(yè)務(wù)的效率。
本發(fā)明的又一目的在于提供一種基于擴(kuò)展CPL翻譯器的處理多業(yè)務(wù)的系
統(tǒng),提供了對(duì)多業(yè)務(wù)接入的支持,使業(yè)務(wù)服務(wù)器能觸發(fā)并實(shí)現(xiàn)用戶的多種業(yè)務(wù)請(qǐng)求。
本發(fā)明的再一目的在于提供一種基于擴(kuò)展CPL翻譯器的處理多業(yè)務(wù)的方 法,提供了對(duì)多業(yè)務(wù)接入的支持,使業(yè)務(wù)服務(wù)器能觸發(fā)并實(shí)現(xiàn)用戶的多種業(yè)務(wù) 請(qǐng)求。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的
一種基于擴(kuò)展呼叫處理語(yǔ)言CPL的翻譯器,翻譯器包括設(shè)置在翻譯器中的 系統(tǒng)總控模塊,所述系統(tǒng)總控模塊用于對(duì)獲取的擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯, 并創(chuàng)建配置模塊和翻譯總控模塊。
其中,該翻譯器還包括由所述系統(tǒng)總控模塊創(chuàng)建的配置模塊以及翻譯總控
模塊,配置模塊和翻譯總控模塊分別與所述系統(tǒng)總控模塊相連,且配置模塊與 翻譯總控模塊相連;
所述配置模塊用于以配置文件的方式從所述擴(kuò)展CPL業(yè)務(wù)腳本的信息中提 取配置信息,并獲取配置信息中的擴(kuò)展CPL業(yè)務(wù)腳本的路徑、消息類存放路徑
以及業(yè)務(wù)能力構(gòu)件類存放路徑;
所述翻譯總控模塊用于根據(jù)所述配置信息對(duì)所述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯。
其中,該翻譯器還包括依序相連的業(yè)務(wù)驗(yàn)證模塊、業(yè)務(wù)翻譯模塊、文件生 成模塊以及編譯模塊,業(yè)務(wù)驗(yàn)證模塊、業(yè)務(wù)翻譯模塊、文件生成模塊或編譯模 塊分別與所述翻譯總控模塊相連;
其中,業(yè)務(wù)驗(yàn)證模塊,用于對(duì)獲取的擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行詞法以及語(yǔ)法
業(yè)務(wù)翻譯模塊,用于根據(jù)所述配置信息以及所述擴(kuò)展CPL業(yè)務(wù)腳本中業(yè)務(wù)
描述文件所描述的信息,將擴(kuò)展CPL業(yè)務(wù)腳本編譯成可執(zhí)行的業(yè)務(wù)實(shí)例代碼;
文件生成模塊,用于根據(jù)所述業(yè)務(wù)實(shí)例代碼以及所述業(yè)務(wù)描述文件所描述
的信息,生成最終的業(yè)務(wù)實(shí)例文件;
編譯模塊,用于編譯所述業(yè)務(wù)實(shí)例文件,生成可部署在業(yè)務(wù)服務(wù)器上的代 碼壓縮包;
所述翻譯總控模塊用于具體以調(diào)度業(yè)務(wù)驗(yàn)證模塊、業(yè)務(wù)翻譯模塊、文件生 成模塊以及編譯模塊的方式對(duì)所述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯。
一種基于擴(kuò)展CPL翻譯器的處理多業(yè)務(wù)的系統(tǒng),該系統(tǒng)包括終端、基于擴(kuò) 展CPL的翻譯器以及業(yè)務(wù)服務(wù)器,終端通過(guò)基于擴(kuò)展CPL的翻譯器與業(yè)務(wù)服 務(wù)器相連;
所述基于擴(kuò)展CPL的翻譯器用于獲取從所述終端發(fā)送的擴(kuò)展CPL業(yè)務(wù)腳 本,對(duì)所述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯,翻譯成底層代碼并對(duì)其進(jìn)行編譯,進(jìn) 行批處理生成底層代碼壓縮包后轉(zhuǎn)發(fā)給所述業(yè)務(wù)服務(wù)器;所述業(yè)務(wù)服務(wù)器用于 執(zhí)行所述底層代碼,并實(shí)現(xiàn)與所述擴(kuò)展CPL業(yè)務(wù)腳本相應(yīng)的業(yè)務(wù)。
一種基于擴(kuò)展CPL翻譯器的處理多業(yè)務(wù)的方法,包括以下步驟
A、 在終端建立業(yè)務(wù)開(kāi)發(fā)環(huán)境,根據(jù)預(yù)設(shè)置的擴(kuò)展CPL編寫(xiě)擴(kuò)展CPL業(yè)務(wù) 腳本;
B、 終端將封裝所述擴(kuò)展CPL業(yè)務(wù)腳本的信息發(fā)送給基于擴(kuò)展CPL的翻譯 器,基于擴(kuò)展CPL的翻譯器翻譯擴(kuò)展CPL業(yè)務(wù)腳本并轉(zhuǎn)換成底層代碼;
C、 所述基于擴(kuò)展CPL的翻譯器將所述底層代碼發(fā)送給業(yè)務(wù)服務(wù)器,并在 業(yè)務(wù)服務(wù)器上部署業(yè)務(wù),業(yè)務(wù)服務(wù)器執(zhí)行底層代碼,并實(shí)現(xiàn)與所述擴(kuò)展CPL業(yè) 務(wù)腳本相應(yīng)的所述業(yè)務(wù)。
其中,步驟A中所述預(yù)設(shè)置擴(kuò)展CPL具體為以增加消息標(biāo)簽和增加多種 業(yè)務(wù)能力構(gòu)件標(biāo)簽的擴(kuò)展方式擴(kuò)展所述呼叫處理語(yǔ)言CPL。 其中,步驟B具體包括
Bl、所述基于擴(kuò)展CPL的翻譯器通過(guò)系統(tǒng)總控模塊創(chuàng)建配置模塊和翻譯總
控模塊,終端將封裝擴(kuò)展CPL業(yè)務(wù)腳本的信息發(fā)送給配置模塊,配置模塊從所 述信息中提取配置信息,所述配置信息包括所述擴(kuò)展CPL業(yè)務(wù)腳本的路徑、相 應(yīng)于所述消息標(biāo)簽的消息類存放路徑、以及相應(yīng)于所述業(yè)務(wù)能力構(gòu)件標(biāo)簽的業(yè)
務(wù)能力構(gòu)件類存放路徑;
B2、所述配置模塊將所述配置信息和所述擴(kuò)展CPL業(yè)務(wù)腳本發(fā)送給所述翻 譯總控模塊,翻譯總控模塊根據(jù)該配置信息對(duì)所述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯。
其中,步驟B2中所述翻譯總控模塊對(duì)所述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯為 以調(diào)度業(yè)務(wù)驗(yàn)證模塊、業(yè)務(wù)翻譯模塊、文件生成模塊以及編譯模塊的方式對(duì)所 述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯。
其中,步驟B2中對(duì)所述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯具體包括
B21、所述業(yè)務(wù)驗(yàn)證模塊對(duì)獲取的所述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行詞法及語(yǔ)法 校驗(yàn);
B22、所述業(yè)務(wù)翻譯模塊根據(jù)所述配置信息以及所述擴(kuò)展CPL業(yè)務(wù)腳本中 業(yè)務(wù)描述文件所描述的信息,將所述擴(kuò)展CPL業(yè)務(wù)腳本編譯成可執(zhí)行的業(yè)務(wù)實(shí) 例代碼;
B23、所述文件生成模塊根據(jù)所述業(yè)務(wù)翻譯模塊生成的所述業(yè)務(wù)實(shí)例代碼 以及所述業(yè)務(wù)描述文件所描述的信息,生成最終的業(yè)務(wù)實(shí)例文件;
B24、所述編譯模塊編譯所述業(yè)務(wù)實(shí)例文件,生成可部署在所述業(yè)務(wù)服務(wù) 器上的代碼壓縮包。
其中,所述步驟B22具體為
在編譯所述擴(kuò)展CPL業(yè)務(wù)腳本時(shí),所述業(yè)務(wù)翻譯模塊先根據(jù)擴(kuò)展CPL業(yè) 務(wù)腳本中所述標(biāo)簽的執(zhí)行順序生成與其對(duì)應(yīng)的標(biāo)簽節(jié)點(diǎn)樹(shù),然后以前序遍歷方 式查找標(biāo)簽節(jié)點(diǎn)樹(shù)上的標(biāo)簽節(jié)點(diǎn),根據(jù)查找的順序以及預(yù)先設(shè)置的標(biāo)簽轉(zhuǎn)換類 (converter)判斷當(dāng)前標(biāo)簽節(jié)點(diǎn)是否與預(yù)先設(shè)置的converter對(duì)應(yīng),如果是,則 調(diào)用當(dāng)前標(biāo)簽節(jié)點(diǎn)所對(duì)應(yīng)的converter進(jìn)行處理并轉(zhuǎn)換成所述底層代碼,并按照 査找的順序?qū)?dāng)前生成的底層代碼存儲(chǔ)在預(yù)先設(shè)置的存儲(chǔ)區(qū);如果否,則返回 異常信息后,繼續(xù)執(zhí)行所述查找以及所述判斷搡作;
其中,所述業(yè)務(wù)翻譯模塊生成標(biāo)簽節(jié)點(diǎn)樹(shù)具體為以用于實(shí)現(xiàn)簡(jiǎn)單應(yīng)用程 序編程接口 SAX解析技術(shù)的jdom方式生成與所述標(biāo)簽的執(zhí)行順序?qū)?yīng)的標(biāo)簽
節(jié)點(diǎn)樹(shù);
所述預(yù)先設(shè)置的存儲(chǔ)區(qū)為存儲(chǔ)作用域的堆棧;
存儲(chǔ)所述底層代碼具體為以壓棧的方式,將當(dāng)前生成的底層代碼存儲(chǔ)在
該底層代碼應(yīng)插入的所述存儲(chǔ)作用域的堆棧;相應(yīng)地,以出棧的方式調(diào)用該底
層代碼。
采用本發(fā)明基于擴(kuò)展CPL的翻譯器對(duì)從終端獲取的擴(kuò)展CPL業(yè)務(wù)腳本進(jìn) 行翻譯,翻譯成底層代碼并編譯,進(jìn)行批處理生成底層代碼壓縮包后,轉(zhuǎn)發(fā)給 業(yè)務(wù)服務(wù)器,降低了通過(guò)業(yè)務(wù)服務(wù)器處理業(yè)務(wù)的時(shí)間,提高了業(yè)務(wù)服務(wù)器實(shí)現(xiàn) 業(yè)務(wù)的效率;
在現(xiàn)有系統(tǒng)的終端與業(yè)務(wù)服務(wù)器之間增加基于擴(kuò)展CPL的翻譯器后構(gòu)成本 發(fā)明的系統(tǒng),在該系統(tǒng)上采用本發(fā)明的方法,通過(guò)增加消息標(biāo)簽對(duì)CPL進(jìn)行語(yǔ) 法上的擴(kuò)展,以及相應(yīng)地增加包括定位、短信、彩信以及GIS等多種業(yè)務(wù)的能 力構(gòu)件標(biāo)簽,對(duì)CPL進(jìn)行業(yè)務(wù)能力上的擴(kuò)展來(lái)增加多種業(yè)務(wù)類型,并由此基于 擴(kuò)展CPL編寫(xiě)的擴(kuò)展CPL業(yè)務(wù)腳本提供對(duì)多業(yè)務(wù)接入的支持;由于擴(kuò)展CPL 業(yè)務(wù)腳本不同于用于實(shí)現(xiàn)業(yè)務(wù)的底層代碼,屏蔽了底層代碼的具體實(shí)現(xiàn)細(xì)節(jié), 對(duì)業(yè)務(wù)進(jìn)行更抽象的描述,因此相應(yīng)地需要在終端與業(yè)務(wù)服務(wù)器之間增加基于 擴(kuò)展CPL的翻譯器,采用基于擴(kuò)展CPL的翻譯器翻譯擴(kuò)展CPL業(yè)務(wù)腳本并轉(zhuǎn) 換成底層代碼。
綜上所述,本發(fā)明采用基于擴(kuò)展CPL的翻譯器以及基于擴(kuò)展CPL翻譯器 的處理多業(yè)務(wù)的系統(tǒng)和方法,首先基于擴(kuò)展CPL編寫(xiě)擴(kuò)展CPL業(yè)務(wù)腳本,保 證多業(yè)務(wù)的接入,然后釆用基于擴(kuò)展CPL的翻譯器對(duì)擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行 翻譯,使業(yè)務(wù)服務(wù)器能觸發(fā)并實(shí)現(xiàn)用戶的多種業(yè)務(wù)請(qǐng)求。同時(shí)基于擴(kuò)展CPL業(yè) 務(wù)腳本屏蔽底層代碼的具體實(shí)現(xiàn)細(xì)節(jié)對(duì)業(yè)務(wù)進(jìn)行抽象描述,提高了業(yè)務(wù)開(kāi)發(fā)的 抽象層次,也就是說(shuō)業(yè)務(wù)開(kāi)發(fā)者無(wú)需專注于編寫(xiě)底層代碼,在不需要掌握深厚 電信知識(shí)和具有編程能力的情況下,也可根據(jù)需要抽象地描述多種業(yè)務(wù),方便
了業(yè)務(wù)開(kāi)發(fā)者創(chuàng)建和配置業(yè)務(wù),提高開(kāi)發(fā)業(yè)務(wù)的效率。
圖1為現(xiàn)有技術(shù)處理呼叫業(yè)務(wù)的實(shí)現(xiàn)流程圖2為本發(fā)明基于擴(kuò)展CPL的翻譯器的原理構(gòu)成示意圖3為本發(fā)明基于擴(kuò)展CPL的翻譯器的構(gòu)成示意圖4為本發(fā)明處理多業(yè)務(wù)方法的原理實(shí)現(xiàn)流程圖5為本發(fā)明通過(guò)基于擴(kuò)展CPL翻譯器處理多業(yè)務(wù)方法的實(shí)現(xiàn)流程圖6為本發(fā)明處理多業(yè)務(wù)方法中對(duì)擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯的實(shí)現(xiàn)流程
圖7為本發(fā)明處理多業(yè)務(wù)方法中一棵標(biāo)簽節(jié)點(diǎn)樹(shù)的示意圖。
具體實(shí)施例方式
本發(fā)明的核心思想為在基于擴(kuò)展CPL的翻譯器中設(shè)置系統(tǒng)總控模塊,對(duì) 從終端獲取的擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯,翻譯成底層代碼并編譯,進(jìn)行批處 理生成底層代碼壓縮包后,轉(zhuǎn)發(fā)給業(yè)務(wù)服務(wù)器;在現(xiàn)有系統(tǒng)的終端與業(yè)務(wù)服務(wù) 器之間增加所述基于擴(kuò)展CPL的翻譯器,即終端通過(guò)基于擴(kuò)展CPL的翻譯器 與業(yè)務(wù)服務(wù)器相連后構(gòu)成本發(fā)明的系統(tǒng),在本發(fā)明的系統(tǒng)上采用本發(fā)明的方法, 通過(guò)增加消息標(biāo)簽對(duì)CPL進(jìn)行語(yǔ)法上的擴(kuò)展,以及相應(yīng)增加包括定位、短信、 彩信以及GIS等多種業(yè)務(wù)的能力構(gòu)件標(biāo)簽,對(duì)CPL進(jìn)行業(yè)務(wù)能力上的擴(kuò)展來(lái)增 加多種業(yè)務(wù)類型,由此基于擴(kuò)展CPL編寫(xiě)的擴(kuò)展CPL業(yè)務(wù)腳本提供了對(duì)多業(yè) 務(wù)接入的支持;相應(yīng)的,需要在終端與業(yè)務(wù)服務(wù)器之間增加基于擴(kuò)展CPL的翻 譯器,釆用基于擴(kuò)展CPL的翻譯器對(duì)所述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯,即將 擴(kuò)展CPL業(yè)務(wù)腳本轉(zhuǎn)換成底層代碼,使業(yè)務(wù)服務(wù)器能觸發(fā)并實(shí)現(xiàn)用戶的多種業(yè) 務(wù)請(qǐng)求。
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下舉實(shí)施例并參照 附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
如圖2所示,本發(fā)明基于擴(kuò)展CPL的翻譯器包括設(shè)置在基于擴(kuò)展CPL 的翻譯器l中的系統(tǒng)總控模塊ll,系統(tǒng)總控模塊11用于對(duì)獲取的擴(kuò)展CPL業(yè) 務(wù)腳本進(jìn)行翻譯后轉(zhuǎn)換成底層代碼,并創(chuàng)建配置模塊和翻譯總控模塊。其中, 擴(kuò)展CPL業(yè)務(wù)腳本的生成方式為通過(guò)業(yè)務(wù)開(kāi)發(fā)者在終端建立業(yè)務(wù)開(kāi)發(fā)環(huán)境, 預(yù)設(shè)置以增加消息標(biāo)簽以及增加多種業(yè)務(wù)能力構(gòu)件標(biāo)簽的擴(kuò)展方式擴(kuò)展CPL; 根據(jù)預(yù)設(shè)置的擴(kuò)展CPL,基于擴(kuò)展CPL編寫(xiě)擴(kuò)展CPL業(yè)務(wù)腳本。
此時(shí),基于擴(kuò)展CPL的翻譯器對(duì)獲取的擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯的過(guò) 程為業(yè)務(wù)開(kāi)發(fā)者先在終端建立業(yè)務(wù)開(kāi)發(fā)環(huán)境,根據(jù)預(yù)設(shè)置的擴(kuò)展CPL編寫(xiě)擴(kuò) 展CPL業(yè)務(wù)腳本;終端再將封裝擴(kuò)展CPL業(yè)務(wù)腳本的信息發(fā)送給基于擴(kuò)展CPL 的翻譯器,基于擴(kuò)展CPL的翻譯器翻譯擴(kuò)展CPL業(yè)務(wù)腳本并轉(zhuǎn)換成底層代碼; 然后,基于擴(kuò)展CPL的翻譯器將底層代碼發(fā)送給業(yè)務(wù)服務(wù)器,并在業(yè)務(wù)服務(wù)器 上部署業(yè)務(wù),業(yè)務(wù)服務(wù)器執(zhí)行底層代碼實(shí)現(xiàn)與其相應(yīng)的所述業(yè)務(wù)。
基于圖2的原理,如圖3所示,基于擴(kuò)展CPL的翻譯器1進(jìn)一步包括由 系統(tǒng)總控模塊11創(chuàng)建的配置模塊111以及翻譯總控模塊112,配置模塊111和 翻譯總控模塊112分別與系統(tǒng)總控模塊11相連,且配置模塊111與翻譯總控模 塊112相連;
其中,配置模塊111用于以配置文件的方式從所述擴(kuò)展CPL業(yè)務(wù)腳本的信 息中提取配置信息,并獲取配置信息中的擴(kuò)展CPL業(yè)務(wù)腳本的路徑、消息類存 放路徑以及業(yè)務(wù)能力構(gòu)件類存放路徑;
翻譯總控模塊112用于根據(jù)所述配置信息對(duì)所述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯。
此時(shí),基于擴(kuò)展CPL的翻譯器對(duì)獲取的擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯的過(guò) 程為業(yè)務(wù)開(kāi)發(fā)者先在終端建立業(yè)務(wù)開(kāi)發(fā)環(huán)境,根據(jù)預(yù)設(shè)置的擴(kuò)展CPL基于擴(kuò) 展CPL編寫(xiě)擴(kuò)展CPL業(yè)務(wù)腳本;之后,包括兩個(gè)步驟
al、基于擴(kuò)展CPL的翻譯器通過(guò)系統(tǒng)總控模塊創(chuàng)建配置模塊和翻譯總控模 塊,終端將封裝擴(kuò)展CPL業(yè)務(wù)腳本的信息發(fā)送給配置模塊,配置模塊從所述信 息中提取配置信息供翻譯總控模塊使用,所述配置信息包括所述擴(kuò)展CPL業(yè)務(wù)
腳本的路徑、相應(yīng)于所述消息標(biāo)簽的消息類存放路徑以及相應(yīng)于所述業(yè)務(wù)能力 構(gòu)件標(biāo)簽的業(yè)務(wù)能力構(gòu)件類存放路徑;
bl、配置模塊將所述配置信息以及所述擴(kuò)展CPL業(yè)務(wù)腳本發(fā)送給翻譯總控 模塊,翻譯總控模塊根據(jù)配置信息對(duì)擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯。
步驟al和bl完成后,基于擴(kuò)展CPL的翻譯器將底層代碼發(fā)送給業(yè)務(wù)服務(wù) 器,并在業(yè)務(wù)服務(wù)器上部署業(yè)務(wù),業(yè)務(wù)服務(wù)器執(zhí)行底層代碼,并實(shí)現(xiàn)與與所述 擴(kuò)展CPL業(yè)務(wù)腳本相應(yīng)的業(yè)務(wù)。
其中,基于擴(kuò)展CPL的翻譯器1還包括依序相連的業(yè)務(wù)驗(yàn)證模塊1121、 業(yè)務(wù)翻譯模塊1122、文件生成模塊1123以及編譯模塊1124,業(yè)務(wù)驗(yàn)證模塊1121、 業(yè)務(wù)翻譯模塊U22、文件生成模塊1123或編譯模塊1124分別與翻譯總控模塊 112相連。
翻譯總控模塊112用于具體以調(diào)度業(yè)務(wù)驗(yàn)證模塊1121、業(yè)務(wù)翻譯模塊1122、 文件生成模塊1123以及編譯模塊1124的方式對(duì)所述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻 譯;業(yè)務(wù)驗(yàn)證模塊1121用于對(duì)獲取的擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行詞法以及語(yǔ)法校 驗(yàn);業(yè)務(wù)翻譯模塊1122用于根據(jù)所述配置信息以及所述擴(kuò)展CPL業(yè)務(wù)腳本中 業(yè)務(wù)描述文件所描述的信息,將擴(kuò)展CPL業(yè)務(wù)腳本編譯成可執(zhí)行的業(yè)務(wù)實(shí)例代 碼;文件生成模塊1123用于根據(jù)所述業(yè)務(wù)實(shí)例代碼以及所述業(yè)務(wù)描述文件所描 述的信息,生成最終的業(yè)務(wù)實(shí)例文件;編譯模塊1124用于編譯所述業(yè)務(wù)實(shí)例文 件,生成可部署在所述業(yè)務(wù)服務(wù)器上的代碼壓縮包。
此種情況下,基于擴(kuò)展CPL的翻譯器對(duì)獲取的擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻 譯的過(guò)程為業(yè)務(wù)開(kāi)發(fā)者先在終端建立業(yè)務(wù)開(kāi)發(fā)環(huán)境,根據(jù)預(yù)設(shè)置的擴(kuò)展CPL 基于擴(kuò)展CPL編寫(xiě)擴(kuò)展CPL業(yè)務(wù)腳本;之后,包括五個(gè)具體步驟
a2、基于擴(kuò)展CPL的翻譯器通過(guò)系統(tǒng)總控模塊創(chuàng)建配置模塊和翻譯總控模 塊,終端將封裝擴(kuò)展CPL業(yè)務(wù)腳本的信息發(fā)送給配置模塊,配置模塊從所述信 息中提取配置信息供翻譯總控模塊使用,所述配置信息包括所述擴(kuò)展CPL業(yè)務(wù) 腳本的路徑、相應(yīng)于所述消息標(biāo)簽的消息類存放路徑以及相應(yīng)于所述業(yè)務(wù)能力 構(gòu)件標(biāo)簽的業(yè)務(wù)能力構(gòu)件類存放路徑;
b2、業(yè)務(wù)驗(yàn)證模塊對(duì)獲取的擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行詞法以及語(yǔ)法校驗(yàn),比
如校驗(yàn)是否缺括號(hào);
c2、作為進(jìn)行翻譯核心模塊的業(yè)務(wù)翻譯模塊根據(jù)所述配置信息以及所述擴(kuò) 展CPL業(yè)務(wù)腳本中業(yè)務(wù)描述文件所描述的信息,將擴(kuò)展CPL業(yè)務(wù)腳本編譯成
可執(zhí)行的業(yè)務(wù)實(shí)例代碼;
d2、文件生成模塊根據(jù)業(yè)務(wù)翻譯模塊生成的業(yè)務(wù)實(shí)例代碼以及所述業(yè)務(wù)描
述文件所描述的信息,生成最終的業(yè)務(wù)實(shí)例文件;
e2、編譯模塊編譯業(yè)務(wù)實(shí)例文件,生成可部署在業(yè)務(wù)服務(wù)器上的代碼壓縮包。
步驟a2 e2執(zhí)行完畢后,基于擴(kuò)展CPL的翻譯器將底層代碼發(fā)送給業(yè)務(wù)服 務(wù)器,并在業(yè)務(wù)服務(wù)器上部署業(yè)務(wù),業(yè)務(wù)服務(wù)器執(zhí)行底層代碼實(shí)現(xiàn)與其相應(yīng)的 業(yè)務(wù)。
其中,步驟c2具體為
在編譯所述擴(kuò)展CPL業(yè)務(wù)腳本時(shí),首先根據(jù)擴(kuò)展CPL業(yè)務(wù)腳本中所述標(biāo) 簽的執(zhí)行順序生成與其對(duì)應(yīng)的標(biāo)簽節(jié)點(diǎn)樹(shù),標(biāo)簽節(jié)點(diǎn)樹(shù)上的標(biāo)簽節(jié)點(diǎn)為用于將 擴(kuò)展CPL業(yè)務(wù)腳本中的標(biāo)簽翻譯成底層代碼的節(jié)點(diǎn),然后以前序遍歷方式查找 標(biāo)簽節(jié)點(diǎn)樹(shù)上的標(biāo)簽節(jié)點(diǎn),根據(jù)查找的順序以及預(yù)先設(shè)置的converter判斷當(dāng)前 標(biāo)簽節(jié)點(diǎn)是否與預(yù)先設(shè)置的converter對(duì)應(yīng),如果是,則調(diào)用當(dāng)前標(biāo)簽節(jié)點(diǎn)所對(duì) 應(yīng)的converter進(jìn)行處理并轉(zhuǎn)換成所述底層代碼,比如當(dāng)標(biāo)簽節(jié)點(diǎn)為業(yè)務(wù)能力構(gòu) 件標(biāo)簽時(shí),則調(diào)用與其所對(duì)應(yīng)的converter,即業(yè)務(wù)能力構(gòu)件類進(jìn)行處理,并按 照查找的順序?qū)?dāng)前生成的底層代碼存儲(chǔ)在預(yù)先設(shè)置的存儲(chǔ)區(qū);否則,返回異 常信息后繼續(xù)執(zhí)行上述査找及判斷搡作。
本發(fā)明基于擴(kuò)展CPL翻譯器的處理多業(yè)務(wù)的系統(tǒng),包括終端、基于擴(kuò)展 CPL的翻譯器以及業(yè)務(wù)服務(wù)器,終端通過(guò)基于擴(kuò)展CPL的翻譯器與業(yè)務(wù)服務(wù)器 相連;基于擴(kuò)展CPL的翻譯器用于獲取從所述終端發(fā)送的擴(kuò)展CPL業(yè)務(wù)腳本, 對(duì)該擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯,翻譯成底層代碼并對(duì)其進(jìn)行編譯,進(jìn)行批處 理生成底層代碼壓縮包后轉(zhuǎn)發(fā)給所述業(yè)務(wù)服務(wù)器;所述業(yè)務(wù)服務(wù)器用于執(zhí)行所
述底層代碼實(shí)現(xiàn)與其相應(yīng)的業(yè)務(wù)。
如圖4所示,基于擴(kuò)展CPL翻譯器的處理多業(yè)務(wù)的方法包括以下步驟
步驟201、業(yè)務(wù)開(kāi)發(fā)者在終端建立業(yè)務(wù)開(kāi)發(fā)環(huán)境,根據(jù)預(yù)設(shè)置的擴(kuò)展CPL 基于擴(kuò)展CPL編寫(xiě)擴(kuò)展CPL業(yè)務(wù)腳本;
步驟202、終端將封裝擴(kuò)展CPL業(yè)務(wù)腳本的信息發(fā)送給基于擴(kuò)展CPL的翻 譯器,基于擴(kuò)展CPL的翻譯器翻譯擴(kuò)展CPL業(yè)務(wù)腳本并轉(zhuǎn)換成底層代碼;
步驟203、基于擴(kuò)展CPL的翻譯器將底層代碼發(fā)送給業(yè)務(wù)服務(wù)器,并在業(yè) 務(wù)服務(wù)器上部署業(yè)務(wù),業(yè)務(wù)服務(wù)器執(zhí)行底層代碼,并實(shí)現(xiàn)與所述擴(kuò)展CPL業(yè)務(wù) 腳本相應(yīng)的所述業(yè)務(wù)。
其中,所述步驟201中預(yù)設(shè)置擴(kuò)展CPL具體為以增加消息標(biāo)簽和增加多 種業(yè)務(wù)能力構(gòu)件標(biāo)簽的擴(kuò)展方式擴(kuò)展CPL。
具體來(lái)說(shuō),增加消息標(biāo)簽實(shí)現(xiàn)對(duì)CPL進(jìn)行本身語(yǔ)言機(jī)制上的擴(kuò)展,增加多 種業(yè)務(wù)能力構(gòu)件標(biāo)簽實(shí)現(xiàn)對(duì)CPL進(jìn)行附加功能即業(yè)務(wù)能力上的擴(kuò)展。
對(duì)CPL進(jìn)行本身語(yǔ)言機(jī)制上的擴(kuò)展主要基于現(xiàn)有的CPL語(yǔ)法增加支持多 個(gè)業(yè)務(wù)的接口,用于實(shí)現(xiàn)對(duì)多個(gè)業(yè)務(wù)接入的支持,包括以下標(biāo)簽
增加上報(bào)事件的標(biāo)簽;
增加變量聲明的標(biāo)簽,變量類型可以包括局部變量、全局變量、靜態(tài)變量;
對(duì)變量賦值的標(biāo)簽;
增加對(duì)傳入?yún)?shù)的聲明的標(biāo)簽;
增加判斷選擇類型的標(biāo)簽(switch),如整型數(shù)據(jù)的switch; 增加對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)標(biāo)簽;
對(duì)CPL進(jìn)行業(yè)務(wù)能力上的擴(kuò)展為相應(yīng)于業(yè)務(wù)以增加業(yè)務(wù)能力構(gòu)件標(biāo)簽的方 式進(jìn)行擴(kuò)展,包括用于實(shí)現(xiàn)定位、發(fā)送短信、發(fā)送彩信以及GIS等業(yè)務(wù)的業(yè)務(wù) 能力構(gòu)件標(biāo)簽。
基于上述對(duì)CPL進(jìn)行本身語(yǔ)言機(jī)制上的擴(kuò)展以及對(duì)CPL進(jìn)行業(yè)務(wù)能力上 的擴(kuò)展方式,具體擴(kuò)展的五種標(biāo)簽如下
①增加消息判斷選擇標(biāo)簽(message-switch), message-switch為判斷選擇類
型(switchType )。
由于接入多種業(yè)務(wù),因此擴(kuò)展CPL業(yè)務(wù)腳本執(zhí)行到message-switch時(shí)阻塞, 需等待外界消息上報(bào),根據(jù)獲取外界消息中下級(jí)標(biāo)簽中聲明的消息類型在 message-switch進(jìn)行判斷,即根據(jù)相應(yīng)的消息類型以及業(yè)務(wù)類型信息進(jìn)行分支處 理,選擇并執(zhí)行相應(yīng)業(yè)務(wù)。 message-switch格式如下
<xs:element name="message-switch" type="MessageSwitchType" substitutionGroupy switch'V〉
② 相應(yīng)的,增加消息類型標(biāo)簽(messageType)格式如下 <xs:complexTyp6 nam6=''M6SsagcType">
<xs:group ref="Node'V>
<xs:attribute name="is" type="xs:string" use="required"/> </xs:complexType>
③ 相應(yīng)的,增加消息判斷選擇類型標(biāo)簽(messageSwitchType)格式如下 <xs:complexType name="MessageSwitchType">
<xs: complexContent〉
<xs:extension base="SwitchType"> <xs:scqucnc6〉
<xs:element name="message" type="MessageType" minOccurs="0" maxOccurs="unbounded"/> <xs:sequence minOccurs="0">
<xs:element name="not-present" type="NotPresentAction7〉 <xs:element name="message" type="MessageType" minOccurs="0" maxOccurs="unbounded'V〉 </xs:scquence〉
<xs:element name="otherwise" type="OtherwiseAction" minOccurs=" 0 "/>
</xs:S6qucncc〉 </xs:extension>
</xs: complexC ontent〉 </xs:complexType〉 上述message-switch以及相應(yīng)增力口的messageType和messageSwitchType, 用來(lái)定義消息標(biāo)簽的屬性和子元素。messageType禾卩messageSwitchType是為 Message和MessageSwitch標(biāo)簽提供的格式模板(Schema), schema —般用來(lái)定 義XML文件的格式、定義元素的從屬關(guān)系、約東條件等等。 ④增加各種消息標(biāo)簽。
這些消息標(biāo)簽為messageType,在deploy—success\iispsce\msgcfg文件夾下有
對(duì)消息標(biāo)簽的詳細(xì)定義,格式如下
msgname=CalledPartyAnswerMsg package=edu.bupt.skl.cngi.service.common.msg 其中msgname為消息名,package為消息類所在包名。
增加業(yè)務(wù)能力構(gòu)件標(biāo)簽的聲明進(jìn)而增加業(yè)務(wù)能力構(gòu)件標(biāo)簽。 業(yè)務(wù)能力構(gòu)件標(biāo)簽的聲明中包括構(gòu)件的名稱、參數(shù)的名稱和類型、是否有 返回值、返回值的名稱、是否拋出異常、對(duì)構(gòu)件的調(diào)用是同步還是異步。增加 的業(yè)務(wù)能力構(gòu)件標(biāo)簽包括用于實(shí)現(xiàn)定位、發(fā)送短信、發(fā)送彩信以及GIS等業(yè)務(wù) 的業(yè)務(wù)能力構(gòu)件標(biāo)簽。
實(shí)施例一
短信定位業(yè)務(wù)指根據(jù)用戶發(fā)送的手機(jī)號(hào)碼,調(diào)用相應(yīng)的業(yè)務(wù)能力,將包括 手機(jī)所在地的經(jīng)度以及緯度的定位信息以短信或彩E的方式返回到用戶終端, 所使用的業(yè)務(wù)能力構(gòu)件為發(fā)送短信(sendSMS)、發(fā)送彩信(sendMulMail )、 定位(getLocation)以及創(chuàng)建地圖 (creatMap)。
基于圖4的原理,當(dāng)需部署在業(yè)務(wù)服務(wù)器上的業(yè)務(wù)為短信定位業(yè)務(wù)時(shí),本 實(shí)施例中對(duì)步驟201,即業(yè)務(wù)開(kāi)發(fā)者首先需要在終端建立業(yè)務(wù)開(kāi)發(fā)環(huán)境,然后 根據(jù)預(yù)設(shè)置的擴(kuò)展CPL,基于擴(kuò)展CPL以及業(yè)務(wù)邏輯編寫(xiě)擴(kuò)展CPL業(yè)務(wù)腳本 的實(shí)現(xiàn)具體包括兩個(gè)步驟
首先在終端建立業(yè)務(wù)生成環(huán)境的過(guò)程具體為
創(chuàng)建一個(gè)文件夾,名稱為CPL_***,其中***為年月日比如20060418,以 下的<根目錄〉均為此格式即盤(pán)符/CPL—***;先將iispsce文件夾拷貝到該根目 錄下;然后將iispsce文件夾下iisp.cfg內(nèi)的所有路徑改為自己機(jī)器對(duì)應(yīng)iispsce 文件夾的路徑;再將smslocation文件夾拷貝至盤(pán)符/CPL—***下,將文件夾名 smslocation改為自己定義的業(yè)務(wù)名稱,進(jìn)入servicescript文件夾下,將此xml 文件改為盒文件夾名稱相同的.xml文件,更改對(duì)應(yīng)的service.cfg中的配置路徑。
基于上述在終端建立業(yè)務(wù)生成環(huán)境的過(guò)程,其中對(duì)應(yīng)所述iispsce文件夾的 六個(gè)路徑如下
包括schema文件及參數(shù)表文件的see公用構(gòu)件配置文件的存放路徑即 sceapicfgfilepath二〈根目錄〉WiispsceWapicfgW;
see公用消息配置文件的存放路徑即scemsgcfgfilepath=<根目錄 >\\iispsce\\msgcfg\\;
log's configuration file 的存放路徑即 logcfgfilepath=<根目錄 >\\iispsce\\logcfg\\log—oam.xml;
編譯EJB所需要的庫(kù)文件的存放路徑即ejblib=<根目錄 >\\iispsce\\lib\\weblogic.jar; <根目錄〉WiispsceWlibWwebservices.jar;
翻譯所需要的公共庫(kù)文件的存放路徑即scelib=<根目錄 〉\\iispsce\\lib\\comlib.j ar;
業(yè)務(wù)bean包含的MANIFEST.MF文件路徑即servicemanifest二〈才艮目錄 >\\iispsce\\manifest\\service\\MANIFEST.MF。
基于上述在終端建立業(yè)務(wù)生成環(huán)境的過(guò)程,其中首先將smslocation文件夾 拷貝至盤(pán)符/CPLJ^下,然后更改對(duì)應(yīng)的service.cfg中的配置路徑中包括
擴(kuò)展CPL業(yè)務(wù)腳本路徑,即
servicescriptpath二〈根目錄〉WsmslocationWservicescriptW;
擴(kuò)展CPL業(yè)務(wù)腳本名稱servicescriptname=smslocation.xml;
工程的構(gòu)件配置文件的存放路徑,即
projectapicfgfilepath二〈根目錄〉WsmslocationWapicfgW;
工程的msg的配置文件的存放路徑,即
projectmsgcfgfilepath二〈根目錄〉WsmslocationWmsgcfgW;
總的輸出路徑即生成jar包、ear包的目錄在。/。outputpathy。Wdeployment outputpath二〈根目錄〉WsmslocationWoutputW。
在終端建立業(yè)務(wù)生成環(huán)境后,打開(kāi)擴(kuò)展CPL業(yè)務(wù)腳本.xml文件,進(jìn)行擴(kuò)展 CPL業(yè)務(wù)腳本的編寫(xiě)包括八個(gè)具體步驟
a3、在XML文檔開(kāi)頭進(jìn)行說(shuō)明;
b3、定義命名空間以及包括本實(shí)施例中使用到的所有標(biāo)簽所在的類庫(kù),本 實(shí)施例實(shí)現(xiàn)短信定位業(yè)務(wù)中使用了 cpl標(biāo)簽轉(zhuǎn)換類、定位標(biāo)簽轉(zhuǎn)換類(lbs)、短 信標(biāo)簽轉(zhuǎn)換類(sms)、彩信標(biāo)簽轉(zhuǎn)換類(mulmail),并定義引用類對(duì)應(yīng)schema 所在的位置;
c3、根據(jù)業(yè)務(wù)邏輯定義標(biāo)簽的具體內(nèi)容,首先由"notifySmsReceptionMsg" 中讀取對(duì)應(yīng)的短信定位業(yè)務(wù)的名稱即執(zhí)行頂層動(dòng)作,然后每當(dāng)執(zhí)行到標(biāo)簽所代 表每個(gè)具體業(yè)務(wù)即子動(dòng)作時(shí),則跳轉(zhuǎn)到包括該標(biāo)簽具體內(nèi)容的位置繼續(xù)執(zhí)行。 也就是說(shuō)對(duì)獲取的多個(gè)業(yè)務(wù),根據(jù)每個(gè)標(biāo)簽對(duì)應(yīng)的具體業(yè)務(wù)進(jìn)行判斷選擇執(zhí)行 分支處理,比如執(zhí)行到"getLocationSub"標(biāo)簽時(shí),根據(jù)"getLocationSub"所代表的 定位子動(dòng)作轉(zhuǎn)到相應(yīng)的包括定位標(biāo)簽具體內(nèi)容的位置繼續(xù)執(zhí)行;
d3、定義的業(yè)務(wù)能力構(gòu)件標(biāo)簽"getLocationSub"用來(lái)實(shí)現(xiàn)定位業(yè)務(wù),此時(shí)將 調(diào)用業(yè)務(wù)能力構(gòu)件getLocationAPI, getLocationAPI所填充的輸入?yún)?shù)的書(shū)寫(xiě)必 須要和schema以及API類中定義的相一致;
e3、需定義業(yè)務(wù)能力構(gòu)件標(biāo)簽"sendSMS—SuccessSub "用來(lái)實(shí)現(xiàn)發(fā)送短信成 功的子動(dòng)作,此時(shí)將調(diào)用業(yè)務(wù)能力構(gòu)件sendSMSAPI, sendSMSAPI所填充的 輸入?yún)?shù)的書(shū)寫(xiě)必須要和schema以及API類中定義的相 一致;
f3、定義業(yè)務(wù)能力構(gòu)件標(biāo)簽"sendSMS—FailureSub "用來(lái)實(shí)現(xiàn)發(fā)送短信失敗 的子動(dòng)作,此時(shí)將調(diào)用業(yè)務(wù)能力構(gòu)件sendSMSAPI, sendSMSAPI所填充的輸入 參數(shù)的書(shū)寫(xiě)必須要和schema以及API類中定義的相一致;
g3、定義業(yè)務(wù)能力構(gòu)件標(biāo)簽"sendSMS—createMapSub"用來(lái)實(shí)現(xiàn)在發(fā)送短信
時(shí)創(chuàng)建地圖的子動(dòng)作,此時(shí)將調(diào)用業(yè)務(wù)能力構(gòu)件createMapAPI, createMapAPI 所填充的輸入?yún)?shù)的書(shū)寫(xiě)必須要和schema以及API類中定義的相一致;
h3、定義業(yè)務(wù)能力構(gòu)件標(biāo)簽"sendMMSSub "用來(lái)實(shí)現(xiàn)發(fā)送彩信的子動(dòng)作, 此時(shí)將調(diào)用業(yè)務(wù)能力構(gòu)件createMapAPI, createMapAPI所填充的輸入?yún)?shù)的書(shū) 寫(xiě)必須要和schema以及API類中定義的相一致,至此,擴(kuò)展CPL業(yè)務(wù)腳本編 寫(xiě)完畢。
其中,實(shí)現(xiàn)步驟a3,即在XML文檔開(kāi)頭進(jìn)行說(shuō)明具體為 < xml version="1.0" encoding="UTF-8" > <!— edited w他XMLSPY —>
上述代碼即為輔助信息。
其中,實(shí)現(xiàn)步驟b3,即定義命名空間,定義包括本實(shí)施例使用到的所有標(biāo)簽 所在的類庫(kù)以及定義引用類對(duì)應(yīng)schema所在的位置具體為 <cpl xmlns:xsi=http:〃www. w3.org/2001/XMLSchema-instance
xmlns="urn:ietf:params:xml:ns:cpr xmlns:lbs="edu:bupt:skl:cngi:service:sce:api:lbs" xmlns: sms=" edu:bupt: ski: cngi: service: see: api: sms" xmlns:mulmail="edu:bupt:skl:cngi:service:sce:api:mulmail" xsi: schemaLocation="um: ietf:params :xml :ns: cpl
file:〃C:/cpl/iispsce/apischema/cpl.xsd edu:bupt:skl:cngi:service:sce:api:lbs file:〃C:/cpl/iispsce/apischema/GetLocation.xsd edu :bupt: ski: cngi: service: see: api: sms file :〃C :/cpl/iispsce/apischema/S endSMS .xsd edu:bupt: ski: cngi: service: see: api: mulmail file:〃C:/cpl/iispsce/apischema/SendMulMail.xsd "> 上述代碼用來(lái)描述標(biāo)簽的位置,例如
file:〃C:/cpl/iispsce/apischema/cpl.xsd edu:bupt:skl:cngi:service:sce:api:lbs 凈旨 定位業(yè)務(wù)標(biāo)簽的位置;
file:〃C:/cpl/iispsce/apischema/GetLocation.xsd edu:bupt:skl:cngi:service:sce:api:sms指
短信業(yè)務(wù)標(biāo)簽的位置。
其中實(shí)現(xiàn)步驟c3,即由"notifySmsRec印tionMsg"中讀取對(duì)應(yīng)的業(yè)務(wù)名稱, 根據(jù)"getLocationSub"轉(zhuǎn)到相應(yīng)的標(biāo)簽具體為 <incoming〉 <message-switch>
<message is="notifySmsReceptionMsg"〉
<sub ref="getLocationSub" /> </mess£ige> </message-switch>
</incoming>
其中實(shí)現(xiàn)步驟d3,即定義的業(yè)務(wù)能力構(gòu)件標(biāo)簽"getLocationSub"所包括的具
體內(nèi)容為
<subaction id="getLocationSub"> <lbs:getLocation
endUser="$(StringXserviceContext.getAttribute("sendAddress"))" accuracy="Medium"
requester="$(StringXserviceContext.getAttribute("sendAddress"))" chargedParty="$(String)(serviceContext.getAttribute("sendAddress"))"〉 <lbs:success><—!在定位成功的情況下讀取收到的觸發(fā)消息--〉 <string-switch field="$(String)(serviceContextgetAttribute("message"))"> <string is="r〉<—!如果消息為1,跳轉(zhuǎn)到標(biāo)簽"sendSMS—SuccessSub"陽(yáng)隱〉 <sub ref="sendSMS—SuccessSub" />
</string>
<string is="2"><—!如果消息為2,則跳轉(zhuǎn)到標(biāo)簽"createMapSub > <sub ref="createMapSub" /> </string〉 </string-switch〉 </lbs:success>
<lbs:failure><—!若定位失敗,則跳轉(zhuǎn)到標(biāo)簽"sendSMS—FailureSub"—〉<sub ref="sendSMS—FailureSub" /〉 </lbs:failure〉 </lbs:getLocation> </subaction〉 此時(shí),調(diào)用的業(yè)務(wù)能力構(gòu)件為getLocationAPI。
其中實(shí)現(xiàn)步驟e3,即定義的業(yè)務(wù)能力構(gòu)件標(biāo)簽"sendSMS—SuccessSub "所包
括的具體內(nèi)容為
<subaction id="sendSMS_SuccessSub"> <sms:sendSMS
destArrayOfEndUserldentifier="$(String)(serviceContext.getAttribute(''send Address")) "sende產(chǎn)"OOl" deliveryResultRequest="true" message="$"
您的經(jīng)緯度為:經(jīng)度
緯度""
chargedNumber="$(String)(serviceContext.getAttribute("sendAddress"))" /〉 </subaction〉 此時(shí),調(diào)用的業(yè)務(wù)能力構(gòu)件為sendSMSAPI。
其中實(shí)現(xiàn)步驟f3,即定義的業(yè)務(wù)能力構(gòu)件標(biāo)簽"sendSMS_FailureSub "所包 括的具體內(nèi)容為
<subaction id="sendSMS_FailureSub"〉 <sms:sendSMS
destArrayOffindUserIdentifier="$(String)(serviceContext.getAttribute("send Address"))—" sender="001" deliveryResultRequest="true" message="
您好,系統(tǒng)定位失敗,請(qǐng)重試。"
chargedNumber="$(String)(serviceContext.getAttribute("sendAddress"))" /> </subaction〉
此時(shí),調(diào)用業(yè)務(wù)能力構(gòu)件為sendSMSAPI。
其中實(shí)現(xiàn)步驟g3,即定義的業(yè)務(wù)能力構(gòu)件標(biāo)簽"sendSMS—createMapSub"
所包括的具體內(nèi)容為
<subaction id="createMapSub"〉 <lbs:createMap
centerX="$((edu.bupt.skl.cngi.protocol.lbs.padger.LocationInfo)(serviceCont extgetAttribute("locationInfo"))).getLongitude()"
center Y="$((edu.bupt.skl.cngi.protocol.lbs.padger.LocationInfo)(serviceCont ext.getAttribute("locationInfo"))).getLatitude()" MapScale="3" MapZoom="5" centerXl="0" centerYl="0" centerX2="0" centerY2="0" MapWidth="200" MapHeight="200" fikName="$this.mapName"> <lbs:success>
<goto ref="sendMMSSub" /> <—!跳轉(zhuǎn)至標(biāo)簽
"sendMMSSub"—> </lbs:success> </lbs:createMap> </subaction> 此時(shí),調(diào)用的業(yè)務(wù)能力構(gòu)件為createMapAPI。
其中實(shí)現(xiàn)步驟h3,即定義的業(yè)務(wù)能力構(gòu)件標(biāo)簽"sendMMSSub "所包括的具
體內(nèi)容為
<subaction id="sendMMSSub"> <mulmail: sendMulMail
sender="$(StringXserviceContext.getAttribute("sendAddress"))" destArrayOffindUserIdentifier="$(String)(serviceContext.getAttribute("send Address")) "
thirdPartyPayPhone=''$(String)(serviceContext.getAttribute("sendAddress"X) "feeCode="l" subject="This is the picture showing your location." fileName="$this.mapName" conditionType="l" /> </subaction>
</cpl>
此時(shí),調(diào)用的業(yè)務(wù)能力構(gòu)件為createMapAPI,至此擴(kuò)展CPL業(yè)務(wù)腳本編寫(xiě) 完畢。
基于圖4處理多業(yè)務(wù)方法的原理,參見(jiàn)圖5所示,所述步驟202中終端將 封裝擴(kuò)展CPL業(yè)務(wù)腳本的信息發(fā)送給基于擴(kuò)展CPL的翻譯器進(jìn)一步包括
步驟2021、基于擴(kuò)展CPL的翻譯器通過(guò)系統(tǒng)總控模塊創(chuàng)建配置模塊和翻譯 總控模塊,終端將封裝擴(kuò)展CPL業(yè)務(wù)腳本的信息發(fā)送給配置模塊,配置模塊從 所述信息中提取配置信息供翻譯總控模塊使用,所述配置信息包括所述擴(kuò)展 CPL業(yè)務(wù)腳本的路徑、相應(yīng)于所述消息標(biāo)簽的消息類存放路徑以及相應(yīng)于所述 業(yè)務(wù)能力構(gòu)件標(biāo)簽的業(yè)務(wù)能力構(gòu)件類存放路徑;
步驟2022、配置模塊將所述配置信息和所述擴(kuò)展CPL業(yè)務(wù)腳本發(fā)送給翻譯 總控模塊,翻譯總控模塊根據(jù)配置信息對(duì)擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯。
其中,步驟2022中作為翻譯核心模塊的翻譯總控模塊對(duì)所述擴(kuò)展CPL業(yè) 務(wù)腳本進(jìn)行翻譯為以調(diào)度業(yè)務(wù)驗(yàn)證模塊、業(yè)務(wù)翻譯模塊、文件生成模塊以及 編譯模塊的方式對(duì)擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯。
基于圖5處理多業(yè)務(wù)方法的原理,參見(jiàn)圖6,步驟2022中對(duì)擴(kuò)展CPL業(yè)務(wù) 腳本進(jìn)行翻譯具體包括
步驟20221、業(yè)務(wù)驗(yàn)證模塊對(duì)獲取的擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行詞法以及語(yǔ)法 校驗(yàn),比如校驗(yàn)是否缺括號(hào);
步驟20222、作為進(jìn)行翻譯核心模塊的業(yè)務(wù)翻譯模塊根據(jù)所述配置信息以 及所述擴(kuò)展CPL業(yè)務(wù)腳本中業(yè)務(wù)描述文件所描述的信息,將擴(kuò)展CPL業(yè)務(wù)腳 本編譯成可執(zhí)行的業(yè)務(wù)實(shí)例代碼;
步驟20223、文件生成模塊根據(jù)業(yè)務(wù)翻譯模塊生成的業(yè)務(wù)實(shí)例代碼以及所 述業(yè)務(wù)描述文件所描述的信息,生成最終的業(yè)務(wù)實(shí)例文件;
步驟20224、編譯模塊編譯業(yè)務(wù)實(shí)例文件,生成可部署在業(yè)務(wù)服務(wù)器上的 代碼壓縮包。
基于圖6處理多業(yè)務(wù)方法的原理,步驟20222的具體實(shí)現(xiàn)過(guò)程為在編譯所述擴(kuò)展CPL業(yè)務(wù)腳本時(shí),所述業(yè)務(wù)翻譯模塊先根據(jù)擴(kuò)展CPL業(yè) 務(wù)腳本中所述標(biāo)簽的執(zhí)行順序生成與其對(duì)應(yīng)的標(biāo)簽節(jié)點(diǎn)樹(shù),標(biāo)簽節(jié)點(diǎn)樹(shù)上的標(biāo) 簽節(jié)點(diǎn)為用于將擴(kuò)展CPL業(yè)務(wù)腳本中的標(biāo)簽翻譯成底層代碼的節(jié)點(diǎn),然后以前 序遍歷方式查找標(biāo)簽節(jié)點(diǎn)樹(shù)上的標(biāo)簽節(jié)點(diǎn),根據(jù)查找的順序以及預(yù)先設(shè)置的 converter判斷當(dāng)前標(biāo)簽節(jié)點(diǎn)是否與預(yù)先設(shè)置的converter對(duì)應(yīng),如果是,則調(diào)用 當(dāng)前標(biāo)簽節(jié)點(diǎn)所對(duì)應(yīng)的converter進(jìn)行處理并轉(zhuǎn)換成所述底層代碼,比如當(dāng)標(biāo)簽 節(jié)點(diǎn)為業(yè)務(wù)能力構(gòu)件標(biāo)簽,則調(diào)用與其所對(duì)應(yīng)的converter,即業(yè)務(wù)能力構(gòu)件類 進(jìn)行處理,并按照查找的順序?qū)?dāng)前生成的底層代碼存儲(chǔ)在預(yù)先設(shè)置的存儲(chǔ)區(qū); 如果否,則返回異常信息后繼續(xù)執(zhí)行上述查找以及判斷操作。
實(shí)施例二
在對(duì)所述擴(kuò)展CPL業(yè)務(wù)腳本的翻譯過(guò)程定義的類包括 Interpreter用于實(shí)現(xiàn)基于擴(kuò)展CPL的翻譯器對(duì)擴(kuò)展CPL業(yè)務(wù)腳本翻譯的核 心算法;
AbstractTab作為業(yè)務(wù)能力構(gòu)件的抽象類,指明了業(yè)務(wù)能力構(gòu)件需要提供的律自.
i 口 ,a、,
NodeTree用于存儲(chǔ)由所述擴(kuò)展CPL業(yè)務(wù)腳本文件生成的標(biāo)簽節(jié)點(diǎn)樹(shù); TabElement用于實(shí)現(xiàn)標(biāo)簽節(jié)點(diǎn)樹(shù)中的標(biāo)簽節(jié)點(diǎn);
ProgramSentence用于存儲(chǔ)一條生成的Java程序語(yǔ)句,并包含指向其上一條 Java語(yǔ)句和下 一 條Java語(yǔ)句的指針;
FuncRegion即作用域,例如一個(gè)函數(shù)、if-else模塊等。
FuncRegionStack即作用域堆棧,最上面的作用域是當(dāng)前語(yǔ)句需要插入的作 用域。
此種情況下,基于圖6的原理,以及步驟20222的具體實(shí)現(xiàn)過(guò)程,在本實(shí) 施例中對(duì)步驟20222的具體實(shí)現(xiàn)包括以下步驟
a4、業(yè)務(wù)開(kāi)發(fā)生成環(huán)境首先調(diào)用Interpreter對(duì)象的interpret函數(shù),將擴(kuò)展 CPL業(yè)務(wù)腳本文件的路徑傳給Interpreter對(duì)象;
b4、 Interpreter對(duì)象將XML格式的所述擴(kuò)展CPL業(yè)務(wù)腳本的文件內(nèi)容解析
成一棵標(biāo)簽節(jié)點(diǎn)樹(shù);
c4、 Interpreter對(duì)象生成 一 個(gè)作用域堆棧對(duì)象;
d4、Interpreter對(duì)象調(diào)用自身的initial函數(shù),生成一些基本固定的Java語(yǔ)句; e4、在initial函數(shù)中可以生成Java程序的第一條語(yǔ)句,這時(shí)候可以將 firstSentence賦值;
f4、調(diào)用NodeTree對(duì)象獲得標(biāo)簽節(jié)點(diǎn)樹(shù)的根節(jié)點(diǎn);
g4 、 Interpreter對(duì)象調(diào)用自身的interpreffilement函數(shù),把根節(jié)點(diǎn)及其此處
為空的父節(jié)點(diǎn)傳入函數(shù);
h4、在mterpretElement函數(shù)中,將對(duì)業(yè)務(wù)能力構(gòu)件標(biāo)簽進(jìn)行解析,生成新 的java語(yǔ)句,插入到作用域中,并改變作用域堆棧中的值;
i4、獲取標(biāo)簽節(jié)點(diǎn)的子節(jié)點(diǎn),然后返回步驟g4對(duì)子節(jié)點(diǎn)進(jìn)行遞歸調(diào)用處理, 將所述子節(jié)點(diǎn)及它們的父節(jié)點(diǎn)傳入mterpretElement函數(shù)中;
j4、處理完標(biāo)簽節(jié)點(diǎn)樹(shù)中所有的節(jié)點(diǎn)后,Interpreter對(duì)象調(diào)用自身的 writeToFile函數(shù)將生成的Java語(yǔ)句寫(xiě)到文件中。
基于圖6的原理,以及步驟20222的具體實(shí)現(xiàn)過(guò)程,在步驟20222中,所 述業(yè)務(wù)翻譯模塊生成標(biāo)簽節(jié)點(diǎn)樹(shù)的一個(gè)實(shí)例具體為以用于實(shí)現(xiàn)簡(jiǎn)單應(yīng)用程序 編程接口 SAX解析技術(shù)的jdom方式生成與所述標(biāo)簽的執(zhí)行順序?qū)?yīng)的標(biāo)簽節(jié) 點(diǎn)樹(shù)。預(yù)先設(shè)置的存儲(chǔ)區(qū)為存儲(chǔ)作用域的堆棧,存儲(chǔ)所述底層代碼具體為以 壓棧的方式,將當(dāng)前生成的底層代碼存儲(chǔ)在該底層代碼應(yīng)插入的所述存儲(chǔ)作用 域的堆棧;相應(yīng)地,以出棧的方式調(diào)用該底層代碼。
實(shí)施例三
基于圖6的原理,以及步驟20222的具體實(shí)現(xiàn)過(guò)程,并基于所述業(yè)務(wù)翻譯 模塊生成標(biāo)簽節(jié)點(diǎn)樹(shù)的一個(gè)實(shí)例,本實(shí)施例中,由于CPL基于XML, XML具 有用于XML的簡(jiǎn)單應(yīng)用程序編程接口 (SAX)和文檔對(duì)象模型(DOM)兩種 通用接口,對(duì)應(yīng)不同接口采用不同的XML解析技術(shù)。本實(shí)施例采用SAX解析 技術(shù),jdom是實(shí)現(xiàn)了 SAX的java開(kāi)發(fā)包,jdom用于先將XML轉(zhuǎn)換成一棵節(jié)
點(diǎn)樹(shù),再對(duì)節(jié)點(diǎn)樹(shù)進(jìn)行搡作。因此,本實(shí)施例中,首先以jdom方式,根據(jù)擴(kuò)展
CPL業(yè)務(wù)腳本中所述標(biāo)簽的執(zhí)行順序生成與該標(biāo)簽執(zhí)行順序?qū)?yīng)的標(biāo)簽節(jié)點(diǎn)
相應(yīng)于預(yù)先設(shè)置的converter,在擴(kuò)展CPL業(yè)務(wù)腳本中定義的標(biāo)簽除了包括 特殊標(biāo)簽即cpl標(biāo)簽、incoming標(biāo)簽、subaction標(biāo)簽以及message-swith標(biāo)簽之 外,還包括在message-switch標(biāo)簽中定義的標(biāo)簽即默認(rèn)標(biāo)簽(default)、其他標(biāo) 簽(otherwise )、同步且產(chǎn)生條件判斷標(biāo)簽、同步且不產(chǎn)生條件判斷標(biāo)簽、同步 后繼標(biāo)簽、異步標(biāo)簽、異步后繼標(biāo)簽、switch類型標(biāo)簽以及switch后繼標(biāo)簽。
其中,特殊標(biāo)簽用于首先根據(jù)業(yè)務(wù)類型信息進(jìn)行業(yè)務(wù)處理,在査找時(shí)遇到 所述特殊標(biāo)簽對(duì)應(yīng)的標(biāo)簽節(jié)點(diǎn)時(shí)需要進(jìn)行判斷選擇,執(zhí)行分支處理。
其他標(biāo)簽用于經(jīng)由特殊標(biāo)簽對(duì)應(yīng)的標(biāo)簽節(jié)點(diǎn)處理后,根據(jù)業(yè)務(wù)類型的屬性 信息進(jìn)行業(yè)務(wù)處理,舉例如下
例如當(dāng)遇到cpl標(biāo)簽節(jié)點(diǎn)時(shí)根據(jù)業(yè)務(wù)類型信息需要判定業(yè)務(wù)請(qǐng)求的觸發(fā) 方式;
遇到incoming標(biāo)簽節(jié)點(diǎn)及message-swith標(biāo)簽節(jié)點(diǎn)時(shí),根據(jù)業(yè)務(wù)類型信息 需要判定具體觸發(fā)業(yè)務(wù),比如判定是呼叫業(yè)務(wù)還是發(fā)送短信業(yè)務(wù);
遇到subaction標(biāo)簽節(jié)點(diǎn)時(shí),根據(jù)業(yè)務(wù)類型信息需要判定具體觸發(fā)業(yè)務(wù)對(duì)應(yīng) 的觸發(fā)內(nèi)容,不同觸發(fā)業(yè)務(wù)對(duì)應(yīng)不同觸發(fā)內(nèi)容。對(duì)于其他標(biāo)簽來(lái)說(shuō),同一個(gè)業(yè) 務(wù)有不同屬性,以同步和異步兩種屬性為例,同步指觸發(fā)業(yè)務(wù)后無(wú)需等待返回 消息就可以進(jìn)行處理,而異步需要等待返回消息。
其中,特殊標(biāo)簽中包括的cpl標(biāo)簽節(jié)點(diǎn),在業(yè)務(wù)腳本中是作為業(yè)務(wù)邏輯的 入口點(diǎn)。在標(biāo)準(zhǔn)的CPL業(yè)務(wù)腳本里,業(yè)務(wù)邏輯的觸發(fā)僅僅是通過(guò)呼叫業(yè)務(wù)的呼 入消息和呼出消息觸發(fā)的,并不需要在遇到cpl標(biāo)簽節(jié)點(diǎn)時(shí)進(jìn)行判斷。
然而在擴(kuò)展CPL業(yè)務(wù)腳本里,業(yè)務(wù)邏輯的觸發(fā)來(lái)自協(xié)議網(wǎng)關(guān)層上報(bào)的消息, 除了呼叫消息,包括發(fā)送短信、彩信等其他網(wǎng)絡(luò)承載能力消息,網(wǎng)絡(luò)承載能力 指接入的不同網(wǎng)絡(luò)融合后,在融合的網(wǎng)絡(luò)中當(dāng)提供多種業(yè)務(wù)時(shí)網(wǎng)絡(luò)能承載業(yè)務(wù) 運(yùn)行的能力,也包括從互聯(lián)網(wǎng)客戶端的的用戶界面觸發(fā)的用戶自定義消息。此
時(shí),遇到cpl標(biāo)簽節(jié)點(diǎn)時(shí)需要進(jìn)行判斷,cpl標(biāo)簽節(jié)點(diǎn)是標(biāo)簽節(jié)點(diǎn)樹(shù)的根節(jié)點(diǎn)。 subaction標(biāo)簽節(jié)點(diǎn)針對(duì)所述子動(dòng)作觸發(fā)的業(yè)務(wù)處理。如果incoming標(biāo)簽節(jié)點(diǎn)下 緊跟著message-switch標(biāo)簽節(jié)點(diǎn)即代表需進(jìn)行多種業(yè)務(wù)選擇,說(shuō)明業(yè)務(wù)邏輯是 通過(guò)協(xié)議網(wǎng)關(guān)層或互聯(lián)網(wǎng)客戶端的上報(bào)消息觸發(fā)的;如果incoming標(biāo)簽節(jié)點(diǎn)下 緊跟的不是message-switch標(biāo)簽節(jié)點(diǎn),則默認(rèn)為該業(yè)務(wù)邏輯是通過(guò)呼叫的被叫 號(hào)碼進(jìn)行觸發(fā)的。
為了使擴(kuò)展CPL業(yè)務(wù)腳本能有一個(gè)較好的擴(kuò)展性,使業(yè)務(wù)開(kāi)發(fā)人員根據(jù)自 己的需求能夠簡(jiǎn)便地開(kāi)發(fā)出合適的能力標(biāo)簽,擴(kuò)展CPL業(yè)務(wù)腳本的基于擴(kuò)展 CPL的翻譯器應(yīng)該有一個(gè)通用的規(guī)則,對(duì)除了 cpl標(biāo)簽等幾個(gè)較為特殊的標(biāo)簽 之外的其他標(biāo)簽應(yīng)都能適用。在翻譯過(guò)程中就使用了一個(gè)通用的規(guī)則。為了實(shí) 現(xiàn)這個(gè)通用的規(guī)則,需要對(duì)應(yīng)業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn)的業(yè)務(wù)能力構(gòu)件類提供一 些信息即描述所述業(yè)務(wù)類型的屬性信息,具體包括以下六類屬性信息
業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn)是否產(chǎn)生條件判斷,當(dāng)一個(gè)業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn) 下的子節(jié)點(diǎn)需要判斷進(jìn)行條件判斷時(shí),就要將它預(yù)先設(shè)置成產(chǎn)生條件判斷的屬 性。例如string-switch標(biāo)簽節(jié)點(diǎn),其下面的子節(jié)點(diǎn)string會(huì)進(jìn)行條件判斷,則 string-switch標(biāo)簽節(jié)點(diǎn)就需要設(shè)置成產(chǎn)生條件判斷的屬性。再例如proxy標(biāo)簽節(jié) 點(diǎn),其下面的子節(jié)點(diǎn)是消息標(biāo)簽,并需要對(duì)這些消息標(biāo)簽的名字進(jìn)行判斷,則 proxy標(biāo)簽節(jié)點(diǎn)需要設(shè)置成產(chǎn)生條件判斷的屬性。
業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn)是否有默認(rèn)操作,有些業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn)可能 會(huì)有一些默認(rèn)搡作,比如proxy標(biāo)簽節(jié)點(diǎn)。
業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn)是否是異步的,有些業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn)在執(zhí)行 完自身的操作后需要等待外界的輸入才能使擴(kuò)展CPL業(yè)務(wù)腳本繼續(xù)運(yùn)行,這時(shí) 就需要將該業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn)置成異步的,其他的情況就只需要置成同步 的即可。例如proxy標(biāo)簽節(jié)點(diǎn),擴(kuò)展CPL業(yè)務(wù)腳本在執(zhí)行proxy標(biāo)簽節(jié)點(diǎn)后, 需要等待呼叫網(wǎng)關(guān)返回呼叫轉(zhuǎn)接的結(jié)果才能繼續(xù)運(yùn)行,因此proxy標(biāo)簽節(jié)點(diǎn)是 異步的。
業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn)是否是一個(gè)操作, 一些業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn)具有
條件判斷的功能,例如string標(biāo)簽節(jié)點(diǎn),而消息類型的業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn) 也會(huì)產(chǎn)生條件判斷,這時(shí)基于擴(kuò)展CPL的翻譯器就需要根據(jù)該業(yè)務(wù)能力構(gòu)件標(biāo) 簽節(jié)點(diǎn)是否是一個(gè)操作來(lái)決定在翻譯的代碼里是否加入調(diào)用業(yè)務(wù)能力構(gòu)件標(biāo)簽 節(jié)點(diǎn)對(duì)應(yīng)業(yè)務(wù)能力構(gòu)件類的搡作的語(yǔ)句。
業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn)是否有返回值,也表示業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn)是否 會(huì)向serviceContext里存入其處理的結(jié)果,如果業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn)有返回 值,則需要給出能力標(biāo)簽結(jié)果存入senvceContext的鍵值。
在擴(kuò)展業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn)時(shí)應(yīng)能正確配置標(biāo)簽的這些信息,如果配置 的信息與功能標(biāo)簽節(jié)點(diǎn)的設(shè)計(jì)功能不符,那么生成的業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn)可 能無(wú)法達(dá)到預(yù)期的功能。對(duì)于default標(biāo)簽節(jié)點(diǎn)需要進(jìn)行特別處理。
其中,對(duì)default標(biāo)簽節(jié)點(diǎn)的處理具體為
default標(biāo)簽節(jié)點(diǎn) 一般都會(huì)有兄弟節(jié)點(diǎn),此時(shí)default的子樹(shù)翻譯出的代碼應(yīng) 包含在一個(gè)elseU作用域中;但也可能會(huì)出現(xiàn)default標(biāo)簽節(jié)點(diǎn)單獨(dú)存在而沒(méi)有 其他兄弟節(jié)點(diǎn)的情況,此時(shí)default標(biāo)簽節(jié)點(diǎn)的子樹(shù)翻譯出的代碼就不需要包含 在一個(gè)elseU作用域中;
有時(shí)候一些業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn)有默認(rèn)操作,但在擴(kuò)展CPL業(yè)務(wù)腳本里, 該業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn)的子節(jié)點(diǎn)不包含default標(biāo)簽節(jié)點(diǎn),這時(shí)基于擴(kuò)展CPL 的翻譯器就需要自動(dòng)將一個(gè)default標(biāo)簽節(jié)點(diǎn)加為該業(yè)務(wù)能力構(gòu)件標(biāo)簽節(jié)點(diǎn)的最 后一個(gè)子節(jié)點(diǎn);
在default標(biāo)簽節(jié)點(diǎn)下可能沒(méi)有子節(jié)點(diǎn),這時(shí)基于擴(kuò)展CPL的翻譯器就只 需要插入調(diào)用default父節(jié)點(diǎn)對(duì)應(yīng)的業(yè)務(wù)能力構(gòu)件標(biāo)簽的默認(rèn)搡作即可。
當(dāng)遇到異步標(biāo)簽節(jié)點(diǎn)需要生成新的處理函數(shù)時(shí),新的處理函數(shù)的命名方式 采用從根節(jié)點(diǎn)到A節(jié)點(diǎn)路徑上的所有節(jié)點(diǎn)名稱的組合方式。
總之,基于本實(shí)施例中上述對(duì)標(biāo)簽節(jié)點(diǎn)處理的原理,以前序遍歷方式將標(biāo) 簽節(jié)點(diǎn)樹(shù)上所有的節(jié)點(diǎn)都遍歷后,實(shí)現(xiàn)調(diào)用當(dāng)前的標(biāo)簽節(jié)點(diǎn)所對(duì)應(yīng)的converter 進(jìn)行處理,并轉(zhuǎn)換成所述底層代碼。
其中,調(diào)用當(dāng)前的標(biāo)簽節(jié)點(diǎn)所對(duì)應(yīng)的converter進(jìn)行處理,并轉(zhuǎn)換成所述底層代碼的實(shí)現(xiàn)方法具體為每次遇到標(biāo)簽節(jié)點(diǎn)都會(huì)査找并調(diào)用相應(yīng)的converter, converter采用的構(gòu)造方法是一個(gè)靜態(tài)方法。例如當(dāng)遇到標(biāo)簽〈Aatfabc"〉時(shí), 加入的語(yǔ)句是"A.proc(abc);"。
每個(gè)converter都有同步或異步之分,同步是指業(yè)務(wù)應(yīng)用層向協(xié)議網(wǎng)關(guān)層發(fā) 送調(diào)用請(qǐng)求調(diào)用converter后直接返回結(jié)果的情況;而異步是指業(yè)務(wù)應(yīng)用層向協(xié) 議網(wǎng)關(guān)層發(fā)送調(diào)用請(qǐng)求調(diào)用converter后需先返回給協(xié)議網(wǎng)關(guān)層,而此后業(yè)務(wù)應(yīng) 用層還需等待協(xié)議網(wǎng)關(guān)層上報(bào)消息的情況。如果標(biāo)簽節(jié)點(diǎn)對(duì)應(yīng)的converter是同 步的,則直接調(diào)用converter中的函數(shù);如果是異步的,并且該異步標(biāo)簽下還有 子節(jié)點(diǎn),說(shuō)明業(yè)務(wù)應(yīng)用層需要等待協(xié)議網(wǎng)關(guān)層的上報(bào)消息,則需要生成一個(gè)新 的函數(shù)專門(mén)處理上報(bào)消息。
例如遇到A標(biāo)簽節(jié)點(diǎn),且它下面還有子節(jié)點(diǎn),就需要插入以下代碼"ret =A.proc(); ret.fillContext(context); return ret;"。
如果該異步標(biāo)簽下面的標(biāo)簽節(jié)點(diǎn)是葉節(jié)點(diǎn)即最小的子節(jié)點(diǎn),則插入返回值 語(yǔ)句,并結(jié)東當(dāng)前作用域。
如果遇至U subAction標(biāo)簽,直接生成一個(gè)函數(shù)private iMessage subActionld(iMessage msg),標(biāo)簽里的內(nèi)容按照前面所述的方法進(jìn)行翻譯。
當(dāng)節(jié)點(diǎn)下面有多個(gè)子節(jié)點(diǎn)的時(shí)候,表明該節(jié)點(diǎn)之后有一個(gè)條件判斷,此時(shí) 以前序遍歷方式對(duì)每個(gè)子節(jié)點(diǎn)及其子樹(shù)生成一個(gè)ifU語(yǔ)句塊,同理對(duì)子樹(shù)的處 理也是一樣。
如圖7所示的標(biāo)簽節(jié)點(diǎn)樹(shù),根據(jù)上述調(diào)用當(dāng)前的標(biāo)簽節(jié)點(diǎn)所對(duì)應(yīng)的
converter進(jìn)行處理,并轉(zhuǎn)換成所述底層代碼的實(shí)現(xiàn)方法的原理,將標(biāo)簽節(jié)點(diǎn)樹(shù)
的標(biāo)簽節(jié)點(diǎn)進(jìn)行轉(zhuǎn)換生成的j ava代碼如下所示
Private iMessage procAInl (iMessage msg){ iMessage ret = null; A a = new A(); ret = a.proc(); ret. fillContext(context); if (conditionlsB) { B b = new B();ret = b.proc();
ret. fillContext(context);
if (conditionlsC) {
C c = new C();
ret = c.proc();
ret.fillContext(context);
return ret;
else if (conditionIsD)( D d = new D(); ret = d.proc(); ret.fillContext(context); return ret;
else if (conditionIsE){ E e = new E(); ret = e.procO; ret.fillContext(context); return ret;
以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范
權(quán)利要求
1、一種基于擴(kuò)展呼叫處理語(yǔ)言CPL的翻譯器,其特征在于,該翻譯器包括設(shè)置在翻譯器中的系統(tǒng)總控模塊,所述系統(tǒng)總控模塊用于對(duì)獲取的擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯,并創(chuàng)建配置模塊和翻譯總控模塊。
2、 根據(jù)權(quán)利要求1所述的基于擴(kuò)展CPL的翻譯器,其特征在于,該翻譯器還包括由所述系統(tǒng)總控模塊創(chuàng)建的配置模塊以及翻譯總控模塊,配置模塊和 翻譯總控模塊分別與所述系統(tǒng)總控模塊相連,且配置模塊與翻譯總控模塊相連;所述配置模塊用于以配置文件的方式從所述擴(kuò)展CPL業(yè)務(wù)腳本的信息中提 取配置信息,并獲取配置信息中的擴(kuò)展CPL業(yè)務(wù)腳本的路徑、消息類存放路徑 以及業(yè)務(wù)能力構(gòu)件類存放路徑;所述翻譯總控模塊用于根據(jù)所述配置信息對(duì)所述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯。
3、 根據(jù)權(quán)利要求2所述的基于擴(kuò)展CPL的翻譯器,其特征在于,該翻譯 器還包括依序相連的業(yè)務(wù)驗(yàn)證模塊、業(yè)務(wù)翻譯模塊、文件生成模塊以及編譯模 塊,業(yè)務(wù)驗(yàn)證模塊、業(yè)務(wù)翻譯模塊、文件生成模塊或編譯模塊分別與所述翻譯 總控模塊相連;其中,業(yè)務(wù)驗(yàn)證模塊,用于對(duì)獲取的擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行詞法以及語(yǔ)法校驗(yàn);業(yè)務(wù)翻譯模塊,用于根據(jù)所述配置信息以及所述擴(kuò)展CPL業(yè)務(wù)腳本中業(yè)務(wù) 描述文件所描述的信息,將擴(kuò)展CPL業(yè)務(wù)腳本編譯成可執(zhí)行的業(yè)務(wù)實(shí)例代碼;文件生成模塊,用于根據(jù)所述業(yè)務(wù)實(shí)例代碼以及所述業(yè)務(wù)描述文件所描述 的信息,生成最終的業(yè)務(wù)實(shí)例文件;編譯模塊,用于編譯所述業(yè)務(wù)實(shí)例文件,生成可部署在業(yè)務(wù)服務(wù)器上的代 碼壓縮包;所述翻譯總控模塊用于具體以調(diào)度業(yè)務(wù)驗(yàn)證模塊、業(yè)務(wù)翻譯模塊、文件生 成模塊以及編譯模塊的方式對(duì)所述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯。
4. 一種基于擴(kuò)展CPL翻譯器的處理多業(yè)務(wù)的系統(tǒng),其特征在于,該系統(tǒng) 包括終端、基于擴(kuò)展CPL的翻譯器以及業(yè)務(wù)服務(wù)器,終端通過(guò)基于擴(kuò)展CPL 的翻譯器與業(yè)務(wù)服務(wù)器相連;所述基于擴(kuò)展CPL的翻譯器用于獲取從所述終端發(fā)送的擴(kuò)展CPL業(yè)務(wù)腳 本,對(duì)所述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯,翻譯成底層代碼并對(duì)其進(jìn)行編譯,進(jìn) 行批處理生成底層代碼壓縮包后轉(zhuǎn)發(fā)給所述業(yè)務(wù)服務(wù)器;所述業(yè)務(wù)服務(wù)器用于 執(zhí)行所述底層代碼,并實(shí)現(xiàn)與所述擴(kuò)展CPL業(yè)務(wù)腳本相應(yīng)的業(yè)務(wù)。
5、 一種基于擴(kuò)展CPL翻譯器的處理多業(yè)務(wù)的方法,其特征在于,包括以 下步驟A、 在終端建立業(yè)務(wù)開(kāi)發(fā)環(huán)境,根據(jù)預(yù)設(shè)置的擴(kuò)展CPL編寫(xiě)擴(kuò)展CPL業(yè)務(wù) 腳本;B、 終端將封裝所述擴(kuò)展CPL業(yè)務(wù)腳本的信息發(fā)送給基于擴(kuò)展CPL的翻譯 器,基于擴(kuò)展CPL的翻譯器翻譯擴(kuò)展CPL業(yè)務(wù)腳本并轉(zhuǎn)換成底層代碼;C、 所述基于擴(kuò)展CPL的翻譯器將所述底層代碼發(fā)送給業(yè)務(wù)服務(wù)器,并在 業(yè)務(wù)服務(wù)器上部署業(yè)務(wù),業(yè)務(wù)服務(wù)器執(zhí)行底層代碼,并實(shí)現(xiàn)與所述擴(kuò)展CPL業(yè) 務(wù)腳本相應(yīng)的所述業(yè)務(wù)。
6、 根據(jù)權(quán)利要求5所述的基于擴(kuò)展CPL翻譯器的處理多業(yè)務(wù)的方法,其 特征在于,步驟A中所述預(yù)設(shè)置擴(kuò)展CPL具體為以增加消息標(biāo)簽和增加多種 業(yè)務(wù)能力構(gòu)件標(biāo)簽的擴(kuò)展方式擴(kuò)展所述呼叫處理語(yǔ)言CPL。
7、 根據(jù)權(quán)利要求6所述的基于擴(kuò)展CPL翻譯器的處理多業(yè)務(wù)的方法,其 特征在于,步驟B具體包括B1、所述基于擴(kuò)展CPL的翻譯器通過(guò)系統(tǒng)總控模塊創(chuàng)建配置模塊和翻譯總 控模塊,終端將封裝擴(kuò)展CPL業(yè)務(wù)腳本的信息發(fā)送給配置模塊,配置模塊從所 述信息中提取配置信息,所述配置信息包括所述擴(kuò)展CPL業(yè)務(wù)腳本的路徑、相 應(yīng)于所述消息標(biāo)簽的消息類存放路徑、以及相應(yīng)于所述業(yè)務(wù)能力構(gòu)件標(biāo)簽的業(yè) 務(wù)能力構(gòu)件類存放路徑;B2、所述配置模塊將所述配置信息和所述擴(kuò)展CPL業(yè)務(wù)腳本發(fā)送給所述翻 譯總控模塊,翻譯總控模塊根據(jù)該配置信息對(duì)所述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯。
8、 根據(jù)權(quán)利要求7所述的基于擴(kuò)展CPL翻譯器的處理多業(yè)務(wù)的方法,其 特征在于,步驟B2中所述翻譯總控模塊對(duì)所述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯為 以調(diào)度業(yè)務(wù)驗(yàn)證模塊、業(yè)務(wù)翻譯模塊、文件生成模塊以及編譯模塊的方式對(duì)所 述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯。
9、 根據(jù)權(quán)利要求8所述的基于擴(kuò)展CPL翻譯器的處理多業(yè)務(wù)的方法,其 特征在于,步驟B2中對(duì)所述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯具體包括B21、所述業(yè)務(wù)驗(yàn)證模塊對(duì)獲取的所述擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行詞法及語(yǔ)法 校驗(yàn);B22、所述業(yè)務(wù)翻譯模塊根據(jù)所述配置信息以及所述擴(kuò)展CPL業(yè)務(wù)腳本中 業(yè)務(wù)描述文件所描述的信息,將所述擴(kuò)展CPL業(yè)務(wù)腳本編譯成可執(zhí)行的業(yè)務(wù)實(shí) 例代碼;B23、所述文件生成模塊根據(jù)所述業(yè)務(wù)翻譯模塊生成的所述業(yè)務(wù)實(shí)例代碼 以及所述業(yè)務(wù)描述文件所描述的信息,生成最終的業(yè)務(wù)實(shí)例文件;B24、所述編譯模塊編譯所述業(yè)務(wù)實(shí)例文件,生成可部署在所述業(yè)務(wù)服務(wù) 器上的代碼壓縮包。
10、 根據(jù)權(quán)利要求9所述的基于擴(kuò)展CPL翻譯器的處理多業(yè)務(wù)的方法,其 特征在于,所述步驟B22具體為在編譯所述擴(kuò)展CPL業(yè)務(wù)腳本時(shí),所述業(yè)務(wù)翻譯模塊先根據(jù)擴(kuò)展CPL業(yè) 務(wù)腳本中所述標(biāo)簽的執(zhí)行順序生成與其對(duì)應(yīng)的標(biāo)簽節(jié)點(diǎn)樹(shù),然后以前序遍歷方 式查找標(biāo)簽節(jié)點(diǎn)樹(shù)上的標(biāo)簽節(jié)點(diǎn),根據(jù)查找的順序以及預(yù)先設(shè)置的標(biāo)簽轉(zhuǎn)換類 converter判斷當(dāng)前標(biāo)簽節(jié)點(diǎn)是否與預(yù)先設(shè)置的converter對(duì)應(yīng),如果是,則調(diào)用 當(dāng)前標(biāo)簽節(jié)點(diǎn)所對(duì)應(yīng)的converter進(jìn)行處理并轉(zhuǎn)換成所述底層代碼,并按照查找 的順序?qū)?dāng)前生成的底層代碼存儲(chǔ)在預(yù)先設(shè)置的存儲(chǔ)區(qū);如果否,則返回異常 信息后,繼續(xù)執(zhí)行所述查找以及所述判斷操作;其中,所述業(yè)務(wù)翻譯模塊生成標(biāo)簽節(jié)點(diǎn)樹(shù)具體為以用于實(shí)現(xiàn)簡(jiǎn)單應(yīng)用程 序編程接口 SAX解析技術(shù)的jdom方式生成與所述標(biāo)簽的執(zhí)行順序?qū)?yīng)的標(biāo)簽 節(jié)點(diǎn)樹(shù);所述預(yù)先設(shè)置的存儲(chǔ)區(qū)為存儲(chǔ)作用域的堆棧;存儲(chǔ)所述底層代碼具體為以壓棧的方式,將當(dāng)前生成的底層代碼存儲(chǔ)在 該底層代碼應(yīng)插入的所述存儲(chǔ)作用域的堆棧;相應(yīng)地,以出棧的方式調(diào)用該底 層代碼。
全文摘要
本發(fā)明公開(kāi)了一種基于擴(kuò)展呼叫處理語(yǔ)言(CPL)的翻譯器,包括系統(tǒng)總控模塊,用于對(duì)獲取的擴(kuò)展CPL業(yè)務(wù)腳本進(jìn)行翻譯,并創(chuàng)建配置模塊和翻譯總控模塊。在本發(fā)明系統(tǒng)上采用的方法包括以下步驟在終端建立業(yè)務(wù)開(kāi)發(fā)環(huán)境,根據(jù)預(yù)設(shè)置的擴(kuò)展CPL,基于擴(kuò)展CPL編寫(xiě)擴(kuò)展CPL業(yè)務(wù)腳本;終端將封裝擴(kuò)展CPL業(yè)務(wù)腳本的信息發(fā)送給翻譯器,翻譯器翻譯擴(kuò)展CPL業(yè)務(wù)腳本并轉(zhuǎn)換成底層代碼;翻譯器將底層代碼發(fā)送給業(yè)務(wù)服務(wù)器,并在業(yè)務(wù)服務(wù)器上部署業(yè)務(wù),業(yè)務(wù)服務(wù)器執(zhí)行底層代碼實(shí)現(xiàn)與其相應(yīng)的所述業(yè)務(wù)。采用本發(fā)明的翻譯器以及系統(tǒng)、方法,提供了對(duì)多業(yè)務(wù)接入的支持,使業(yè)務(wù)服務(wù)器能觸發(fā)并實(shí)現(xiàn)用戶的多種業(yè)務(wù)請(qǐng)求。
文檔編號(hào)H04L29/02GK101106604SQ200710099028
公開(kāi)日2008年1月16日 申請(qǐng)日期2007年5月9日 優(yōu)先權(quán)日2007年5月9日
發(fā)明者劉玉璇, 孟祥武, 宮云戰(zhàn), 泳 彭, 陳俊亮 申請(qǐng)人:北京郵電大學(xué)