開放平臺運行腳本的方法和開放平臺系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供一種開放平臺運行腳本的方法和開放平臺系統(tǒng)。該方法包括:開放平臺獲取腳本;開放平臺對腳本進行預編譯,得到腳本的二進制文件;開放平臺確定二進制文件中是否存在腳本錯誤模式庫中的運行時錯誤,腳本錯誤模式庫包括至少一個運行時錯誤;若開放平臺確定二進制文件中存在腳本錯誤模式庫中的運行時錯誤,則不執(zhí)行所述二進制文件。本發(fā)明的技術(shù)方案,通過開放平臺在執(zhí)行腳本前對腳本中的運行時錯誤進行檢查,不需要提供獨立測試服務(wù)器就能實現(xiàn)腳本中的運行時錯誤的檢測,以提高開放平臺的系統(tǒng)穩(wěn)定性,避免開放平臺因為運行有運行時錯誤的腳本而造成的業(yè)務(wù)服務(wù)能力下降。
【專利說明】
開放平臺運行腳本的方法和開放平臺系統(tǒng)
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及信息技術(shù)領(lǐng)域,尤其涉及開放平臺運行腳本的方法和開放平臺系統(tǒng)。
【背景技術(shù)】
[0002] 開放平臺可以通過公開軟件系統(tǒng)的應(yīng)用程序編程接口(Application Programming Interface,API)或函數(shù)(function)來使外部的程序可以增加該軟件系統(tǒng)的 功能或使用該軟件系統(tǒng)的資源,而不需要更改該軟件系統(tǒng)的源代碼。開放平臺也可以稱為 能力開放平臺。
[0003] 開放平臺在整合和利用現(xiàn)有軟件系統(tǒng)資源的基礎(chǔ)上,采用統(tǒng)一的多層級的開放接 口來開放軟件系統(tǒng)的能力,聚集互聯(lián)網(wǎng)上有潛力、有創(chuàng)造力的開發(fā)者,讓開發(fā)者能利用這些 能力不斷地創(chuàng)造出更好的商業(yè)應(yīng)用和服務(wù),實現(xiàn)開發(fā)者的無限的創(chuàng)造能力,形成一大批新 的移動互聯(lián)網(wǎng)應(yīng)用及服務(wù)。
[0004] 使用開放平臺的能力的過程為:開發(fā)者開發(fā)腳本,部署到開放平臺;終端用戶調(diào)用 腳本的統(tǒng)一資源定位符(Uniform Resource Locator,URL);開放平臺運行腳本。
[0005] 但是開發(fā)者可能會在開放平臺上部署包括運行時錯誤的腳本,這會導致開放平臺 執(zhí)行腳本時,影響開放平臺的穩(wěn)定性。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明提供一種開放平臺運行腳本的方法和開放平臺系統(tǒng),能夠提高開放平臺的 系統(tǒng)穩(wěn)定性,避免開放平臺因為運行有運行時錯誤的腳本而造成的業(yè)務(wù)服務(wù)能力下降。
[0007] 第一方面,提供一種開放平臺運行腳本的方法,包括:所述開放平臺獲取腳本;所 述開放平臺對所述腳本進行預編譯,得到所述腳本的二進制文件;所述開放平臺確定所述 二進制文件中是否存在腳本錯誤模式庫中的運行時錯誤,所述腳本錯誤模式庫包括至少一 個運行時錯誤;若所述開放平臺確定所述二進制文件中存在所述腳本錯誤模式庫中的運行 時錯誤,則不執(zhí)行所述二進制文件。
[0008] 本發(fā)明實施例中,開放平臺根據(jù)腳本錯誤模式庫,在執(zhí)行腳本前對腳本中的運行 時錯誤進行檢查,不需要提供獨立測試服務(wù)器就能實現(xiàn)腳本中的運行時錯誤的檢測,以提 高開放平臺的系統(tǒng)穩(wěn)定性,避免開放平臺因為運行有運行時錯誤的腳本而造成的業(yè)務(wù)服務(wù) 能力下降。
[0009] 在一種可能的實現(xiàn)方式中,所述腳本錯誤模式庫包括死循環(huán)錯誤的錯誤特征;其 中,所述開放平臺確定所述二進制文件中是否存在腳本錯誤模式庫中的運行時錯誤,包括: 所述開放平臺根據(jù)所述二進制文件中存在所述錯誤特征,確定所述二進制文件中存在所述 死循環(huán)錯誤。
[0010] 本發(fā)明實施例中,在腳本執(zhí)行之前判斷出腳本存在死循環(huán),從而禁止死循環(huán)腳本 運行,避免資源被完全占用,從而避免影響其他腳本程序運行。
[0011] 在一種可能的實現(xiàn)方式中,所述死循環(huán)錯誤的錯誤特征包括循環(huán)標識、循環(huán)條件 值為真和循環(huán)體中無退出語句;其中,所述開放平臺根據(jù)所述二進制文件中存在所述錯誤 特征,確定所述二進制文件中存在所述死循環(huán)錯誤,包括:所述開放平臺檢查所述二進制文 件中是否存在所述循環(huán)標識;所述開放平臺檢查所述二進制文件中存在所述循環(huán)標識時, 檢查所述二進制文件中所述循環(huán)標識對應(yīng)的循環(huán)的循環(huán)條件值是否為真;所述開放平臺檢 查所述二進制文件中所述循環(huán)的循環(huán)條件值為真時,檢查所述循環(huán)的循環(huán)體中是否有退出 循環(huán)的語句;所述開放平臺檢查所述循環(huán)的循環(huán)體中無退出循環(huán)的語句時,確定所述二進 制文件中存在所述死循環(huán)錯誤。
[0012] 在一種可能的實現(xiàn)方式中,所述方法還包括:所述開放平臺確定所述二進制文件 中存在所述腳本錯誤模式庫中的運行時錯誤時,生成錯誤提示信息。
[0013] 本發(fā)明實施例中,開放平臺檢測出腳本中存在運行時錯誤時,提示該錯誤,從而可 以使得開發(fā)者或終端用戶了解不執(zhí)行腳本的原因,提高開發(fā)者或終端用戶的滿意度。
[0014] 在一種可能的實現(xiàn)方式中,所述方法還包括:若所述開放平臺確定所述二進制文 件中不存在所述腳本錯誤模式庫中的運行時錯誤,則執(zhí)行所述二進制文件。
[0015] 本發(fā)明實施例中,執(zhí)行不存在運行時錯誤的腳本,以保證正確腳本的功能能夠?qū)?現(xiàn),滿足開發(fā)者或終端用戶的需求。
[0016] 在一種可能的實現(xiàn)方式中,所述腳本為使用MVEL編寫的腳本。
[0017] 第二方面,提供一種開放平臺系統(tǒng),包括:獲取模塊,用于獲取腳本;預編譯模塊, 用于對所述腳本進行預編譯,得到所述腳本的二進制文件;確定模塊,用于確定所述二進制 文件中是否存在腳本錯誤模式庫中的運行時錯誤,所述腳本錯誤模式庫包括至少一個運行 時錯誤;執(zhí)行模塊,用于在所述確定模塊確定所述二進制文件中存在所述腳本錯誤模式庫 中的運行時錯誤時,不執(zhí)行所述二進制文件。
[0018] 本發(fā)明實施例中,開放平臺系統(tǒng)根據(jù)腳本錯誤模式庫,在執(zhí)行腳本前對腳本中的 運行時錯誤進行檢查,不需要提供獨立測試服務(wù)器就能實現(xiàn)腳本中的運行時錯誤的檢測, 以提高開放平臺系統(tǒng)的穩(wěn)定性,避免開放平臺系統(tǒng)因為運行有運行時錯誤的腳本而造成的 業(yè)務(wù)服務(wù)能力下降。
[0019] 在一種可能的實現(xiàn)方式中,所述腳本錯誤模式庫包括死循環(huán)錯誤的錯誤特征;其 中,所述確定模塊具體用于根據(jù)所述二進制文件中存在所述錯誤特征,確定所述二進制文 件中存在所述死循環(huán)錯誤;所述執(zhí)行模塊具體用于在所述確定模塊確定所述二進制文件中 存在所述死循環(huán)錯誤時,不執(zhí)行所述二進制文件。
[0020] 本發(fā)明實施例中,在腳本執(zhí)行之前判斷出腳本存在死循環(huán),從而禁止死循環(huán)腳本 運行,避免資源被完全占用,從而避免影響其他腳本程序運行。
[0021] 在一種可能的實現(xiàn)方式中,所述死循環(huán)錯誤的錯誤特征包括循環(huán)標識、循環(huán)條件 值為真和循環(huán)體中無退出語句;其中,所述確定模塊具體用于:檢查所述二進制文件中是否 存在所述循環(huán)標識;在所述二進制文件中存在所述循環(huán)標識時,檢查所述二進制文件中所 述循環(huán)標識對應(yīng)的循環(huán)的循環(huán)條件值是否為真;在所述二進制文件中所述循環(huán)的循環(huán)條件 值為真時,檢查所述循環(huán)的循環(huán)體中是否有退出循環(huán)的語句;在所述循環(huán)的循環(huán)體中無退 出循環(huán)的語句時,確定所述二進制文件中存在所述死循環(huán)錯誤。
[0022] 在一種可能的實現(xiàn)方式中,所述開放平臺系統(tǒng)還包括錯誤提示模塊,用于在所述 確定模塊確定所述二進制文件中存在所述腳本錯誤模式庫中的運行時錯誤時,生成錯誤提 示信息。
[0023] 本發(fā)明實施例中,開放平臺檢測出腳本中存在運行時錯誤時,提示該錯誤,從而可 以使得開發(fā)者或終端用戶了解不執(zhí)行腳本的原因,提高開發(fā)者或終端用戶的滿意度。
[0024] 在一種可能的實現(xiàn)方式中,所述執(zhí)行模塊還用于在所述確定模塊確定所述二進制 文件中不存在所述腳本錯誤模式庫中的運行時錯誤時,執(zhí)行所述二進制文件。
[0025]本發(fā)明實施例中,執(zhí)行不存在運行時錯誤的腳本,以保證正確腳本的功能能夠?qū)?現(xiàn),滿足開發(fā)者或終端用戶的需求。
[0026]在一種可能的實現(xiàn)方式中,所述腳本為使用MVEL編寫的腳本。
[0027]第三方面,提供了一種開放平臺系統(tǒng),包括輸入接口、輸出接口、至少一個處理器、 存儲器,所述處理器用于執(zhí)行所述存儲器中的代碼,當所述代碼被執(zhí)行時,所述處理器實現(xiàn) 第一方面中的方法。
[0028] 第四方面,提供了一種計算機可讀介質(zhì),所述計算機可讀介質(zhì)存儲用于在開放平 臺中運行腳本的程序代碼,所述程序代碼包括用于執(zhí)行第一方面中的方法的指令。
【附圖說明】
[0029] 為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對本發(fā)明實施例中所需要使 用的附圖作簡單地介紹,顯而易見地,下面所描述的附圖僅僅是本發(fā)明的一些實施例,對于 本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他 的附圖。
[0030] 圖1是現(xiàn)有技術(shù)中開放平臺運行腳本的方法的示意性流程圖。
[0031] 圖2是本發(fā)明實施例的開放平臺運行腳本的方法的示意性流程圖。
[0032] 圖3是本發(fā)明實施例的開放平臺運行腳本的方法的示意性流程圖。
[0033] 圖4是本發(fā)明實施例的開放平臺系統(tǒng)的示意性結(jié)構(gòu)圖。
[0034] 圖5是本發(fā)明實施例的開放平臺系統(tǒng)的示意性結(jié)構(gòu)圖。
【具體實施方式】
[0035]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完 整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā) 明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施 例,都屬于本發(fā)明保護的范圍。
[0036]為了更好地理解本發(fā)明實施例,下面先介紹本發(fā)明實施例中的一些術(shù)語。
[0037] 腳本是批處理文件的延伸,是一種純文本保存的程序,一般來說的計算機腳本程 序是確定的一系列控制計算機進行運算操作動作的組合,在其中可以實現(xiàn)一定的邏輯分支 等。
[0038] 簡單地說,腳本就是一條條的文字命令,這些文字命令是可以看到的(如可以用記 事本打開查看、編輯),腳本程序在執(zhí)行時,是由系統(tǒng)的一個解釋器,將其一條條的翻譯成機 器可識別的指令,并按程序順序執(zhí)行。因為腳本在執(zhí)行時多了一道翻譯的過程,所以它比二 進制程序執(zhí)行效率要稍低一些。
[0039] 運行時錯誤與語法錯誤不同,其是指運行時才有可能產(chǎn)生的問題,并且這些問題 可以進行處理,從而避免中斷程序,產(chǎn)生不好得用戶體驗。
[0040]為了更好地理解本發(fā)明實施例于現(xiàn)有技術(shù)中的開放平臺運行腳本的方法的區(qū)別, 下面先結(jié)合圖1介紹現(xiàn)有技術(shù)中開放平臺運行腳本的方法。
[0041 ]圖1是現(xiàn)有技術(shù)中開放平臺運行腳本的方法的示意性結(jié)構(gòu)圖。
[0042] S102,開放平臺獲取腳本。
[0043 ] S104,開放平臺對腳本進行預編譯,得到二進制文件。
[0044] S106,開放平臺執(zhí)行預編譯得到的二進制文件,得到執(zhí)行結(jié)果。
[0045] 有上述步驟可以看出,開放平臺對腳本預編譯成功,得到二進制文件后即執(zhí)行該 二進制文件,這樣會導致腳本中存在如死循環(huán)之類的錯誤時,造成資源被完全占用,影響其 他腳本程序運行,即導致開放平臺的資源被不合理使用。
[0046] 現(xiàn)有技術(shù)里解決上述問題的方法是在獨立的測試服務(wù)器上運行該腳本,確認該腳 本沒有如死循環(huán)的運行時錯誤時,再將腳本部署到開放平臺上,由開放平臺運行。但這種解 決方法需要提供與開放平臺相同的運行環(huán)境等額外資源。
[0047] 針對上述問題,本發(fā)明實施例提出了一種開放平臺運行腳本的方法,既不需要提 供額外獨立的資源,又能確保開放平臺不會運行存在運行時錯誤的腳本。
[0048]圖2是本發(fā)明實施例的開放平臺運行腳本的方法的示意性流程圖。應(yīng)理解,圖2示 出了開放平臺運行腳本的方法的詳細步驟或操作,但這些步驟或操作僅是示例,本發(fā)明實 施例中還可以執(zhí)行其他操作或者圖2中的各個操作的變形。此外,圖2中的部分步驟可以按 照與圖1呈現(xiàn)的不同的順序來執(zhí)行,并且有可能并非要執(zhí)行圖2中的全部操作。
[0049] S202,開放平臺獲取腳本。本發(fā)明實施例中的開放平臺為開放平臺系統(tǒng)中的組成 部分,該開放平臺系統(tǒng)還包括運行該開放平臺的物理裝置,本發(fā)明實施例中的開放平臺均 是在開放平臺系統(tǒng)的物理裝置上來完成該步驟及后續(xù)步驟的。開放平臺獲取的腳本可以是 開發(fā)者在開放平臺上使用開放平臺支持的語言編寫的腳本,也可以是開發(fā)者在其他平臺上 編寫后,部署到開放平臺上的腳本。
[0050] 本發(fā)明實施例中,可以是終端用戶調(diào)用該腳本的邏輯接口,觸發(fā)開放平臺獲取該 腳本,以便于執(zhí)行后續(xù)操作。
[0051 ] S204,開放平臺對腳本進行預編譯,得到腳本的二進制文件。開放平臺對腳本進行 預編譯時,可以檢查腳本中的語法錯誤等。
[0052] S206,開放平臺確定二進制文件中是否存在腳本錯誤模式庫中的運行時錯誤,所 述腳本錯誤模式庫包括至少一個運行時錯誤。
[0053]開放平臺對腳本進行預編譯成功后(如沒有檢查出語法錯誤),可以根據(jù)腳本錯誤 模式庫對預編譯所得的二進制文件進行檢查,以確定該二進制文件中是否存在腳本錯誤模 式庫中包括的一個或多個運行時錯誤。
[0054]開放平臺對腳本進行預編譯不成功,則不再繼續(xù)執(zhí)行步驟S206及后續(xù)的步驟。此 時,開放平臺可以退出腳本的運行過程。
[0055] S208,開放平臺確定二進制文件中不存在腳本錯誤模式庫中的運行時錯誤時,運 行該二進制文件。此時,由于開放平臺運行的二進制文件經(jīng)過步驟S206的檢查,確定無運行 時錯誤,因此開放平臺運行二進制文件的過程中不會出現(xiàn)諸如死循環(huán)之類的錯誤。
[0056] S210,開放平臺確定二進制文件中存在腳本錯誤模式庫中的運行時錯誤時,不運 行該二進制文件。
[0057] 開放平臺確定二進制文件中存在腳本錯誤模式庫中的運行時錯誤時,不再運行該 二進制文件,以避免出現(xiàn)錯誤。此時,開放平臺可以退出腳本的運行過程,也可以生成錯誤 提示信息,向開發(fā)者或終端用戶提示該錯誤,以便于開發(fā)者更改錯誤,或終端用戶終止該腳 本的運行。
[0058] 本發(fā)明實施例中,開放平臺根據(jù)腳本錯誤模式庫,在執(zhí)行腳本前對腳本中的運行 時錯誤進行檢查,不需要提供獨立測試服務(wù)器就能實現(xiàn)腳本中的運行時錯誤的檢測,以提 高開放平臺的系統(tǒng)穩(wěn)定性,避免開放平臺因為運行有運行時錯誤的腳本而造成的業(yè)務(wù)服務(wù) 能力下降。
[0059] 本發(fā)明實施例中,腳本錯誤模式庫中具體可以包括運行時錯誤的錯誤特征。如腳 本錯誤模式庫中可以包括死循環(huán)錯誤的錯誤特征。此時,開放平臺確定二進制文件中是否 存在腳本錯誤模式庫中的運行時錯誤的【具體實施方式】為:開放平臺根據(jù)二進制文件中存在 腳本錯誤模式庫中的錯誤特征,確定二進制文件中存在死循環(huán)錯誤。
[0060] 本發(fā)明實施中,腳本錯誤模式庫中用于表示死循環(huán)錯誤的錯誤特征可以包括循環(huán) 標識(如"while")、循環(huán)條件值為真(如"true")和循環(huán)體中無退出語句,即包括循環(huán)標識的 腳本中,若該循環(huán)標識對應(yīng)的循環(huán)的條件值為真時,其循環(huán)體中沒有催出語句,則說明該循 環(huán)為死循環(huán)。
[0061] 此時,開放平臺根據(jù)二進制文件中存在錯誤特征,確定二進制文件中存在死循環(huán) 錯誤的【具體實施方式】為:開放平臺檢查二進制文件中是否存在循環(huán)標識;開放平臺檢查二 進制文件中存在循環(huán)標識時,繼續(xù)檢查二進制文件中所述循環(huán)標識對應(yīng)的循環(huán)的循環(huán)條件 值是否為真;開放平臺檢查二進制文件中所述循環(huán)的循環(huán)條件值為真時,繼續(xù)檢查循環(huán)的 循環(huán)體中是否有退出循環(huán)的語句;開放平臺檢查所述循環(huán)的循環(huán)體中無退出循環(huán)的語句 時,確定二進制文件中存在死循環(huán)錯誤。
[0062] 下面根據(jù)一個具體的腳本例子來介紹本發(fā)明實施例中確定腳本中是否存在死循 環(huán)錯誤的方法。
[0063] 如腳本錯誤模式庫中包括的死循環(huán)錯誤的特征為:模式名(死循環(huán)檢測),循環(huán)標 識(whi 1 e),條件為常量(true)和循環(huán)體無退出語句。
[0064] 開發(fā)者部署在開放平臺上的腳本中包括以下語句: while (trae) {
[0065] i=i+l;
[0066] 則在開放平臺對腳本預編譯成功得到二進制文件后,取出腳本錯誤模式庫中的死 循環(huán)檢測的"循環(huán)標識(while)",并在二進制文件中進行匹配。在二進制文件中匹配到 "while"后,繼續(xù)取出"條件為常量(true)"在二進制文件中進行匹配,在二進制文件的上述 "while"循環(huán)中匹配其條件是否為"true";在二進制文件中的上述"while"循環(huán)中匹配到其 條件為"true"后,在二進制文件中的上述"whi 1 e"循環(huán)中查找有無退出語句;
[0067] 若上述"while"循環(huán)中無退出語句,則說明該循環(huán)為死循環(huán),即該二進制文件中存 在死循環(huán)錯誤;若上述"while"循環(huán)中有退出語句,則說明該循環(huán)不是循環(huán),即該二進制文 件中不存在死循環(huán)錯誤。
[0068] 本發(fā)明實施例中,開放平臺運行的腳本可以是MVFLEX表達式語言(MVFLEX Expression Language,MVEL)編寫的。MVEL是一個功能強大的基于Java應(yīng)用程序的表達式 語言,是一種動態(tài)/靜態(tài)的可嵌入的表達式語言和為Java平臺提供運行時(Runtime)的語 言。
[0069] 圖3是本發(fā)明實施例的開放平臺運行腳本的方法的示意性流程圖。圖3中與圖1中 相同的標記表示的含義相同,此處不再贅述。但是根據(jù)圖1與圖3中不同的標記S103可知,本 發(fā)明實施例的開放平臺運行腳本的方法與現(xiàn)有技術(shù)中開放平臺運行腳本的方法的不同之 處在于:開放平臺對腳本進行預編譯后,在執(zhí)行腳本前,根據(jù)腳本錯誤模式庫檢查腳本中的 運行時錯誤,且在確定腳本中不存在運行時錯誤時才執(zhí)行腳本的二進制文件。
[0070] 因此,本發(fā)明實施例的開放平臺運行腳本的方法不需要提供獨立測試服務(wù)器就能 實現(xiàn)腳本中的運行時錯誤的檢測,以提高開放平臺的系統(tǒng)穩(wěn)定性,避免開放平臺因為運行 有運行時錯誤的腳本而造成的業(yè)務(wù)服務(wù)能力下降。
[0071] 圖4是本發(fā)明實施例的開放平臺系統(tǒng)的示意性結(jié)構(gòu)圖。應(yīng)理解,圖4中的開放平臺 系統(tǒng)400中的各個模塊可以部署在同一個物理設(shè)備上,也可以部署在不同的物理設(shè)備上。圖 2中的方法中的開放平臺為開放平臺系統(tǒng)400的組成部分。
[0072]獲取模塊410,用于獲取腳本。
[0073]預編譯模塊420,用于對所述腳本進行預編譯,得到所述腳本的二進制文件。
[0074]確定模塊430,用于確定所述二進制文件中是否存在腳本錯誤模式庫中的運行時 錯誤,所述腳本錯誤模式庫包括至少一個運行時錯誤。
[0075]執(zhí)行模塊440,用于在所述確定模塊430確定所述二進制文件中存在所述腳本錯誤 模式庫中的運行時錯誤時,不執(zhí)行所述二進制文件。
[0076] 本發(fā)明實施例中,開放平臺系統(tǒng)根據(jù)腳本錯誤模式庫,在執(zhí)行腳本前對腳本中的 運行時錯誤進行檢查,不需要提供獨立測試服務(wù)器就能實現(xiàn)腳本中的運行時錯誤的檢測, 以提高開放平臺系統(tǒng)的穩(wěn)定性,避免開放平臺因為運行有運行時錯誤的腳本而造成的業(yè)務(wù) 服務(wù)能力下降。
[0077] 可選地,所述腳本錯誤模式庫包括死循環(huán)錯誤的錯誤特征;其中,所述確定模塊具 體用于根據(jù)所述二進制文件中存在所述錯誤特征,確定所述二進制文件中存在所述死循環(huán) 錯誤;所述執(zhí)行模塊具體用于在所述確定模塊確定所述二進制文件中存在所述死循環(huán)錯誤 時,不執(zhí)行所述二進制文件。
[0078] 本發(fā)明實施例中,在腳本執(zhí)行之前判斷出腳本存在死循環(huán),從而禁止死循環(huán)腳本 運行,避免資源被完全占用,從而避免影響其他腳本程序運行。
[0079] 可選地,所述死循環(huán)錯誤的錯誤特征包括循環(huán)標識、循環(huán)條件值為真和循環(huán)體中 無退出語句;其中,所述確定模塊具體用于:檢查所述二進制文件中是否存在所述循環(huán)標 識;在所述二進制文件中存在所述循環(huán)標識時,檢查所述二進制文件中所述循環(huán)標識對應(yīng) 的循環(huán)的循環(huán)條件值是否為真;在所述二進制文件中所述循環(huán)的循環(huán)條件值為真時,檢查 所述循環(huán)的循環(huán)體中是否有退出循環(huán)的語句;在所述循環(huán)的循環(huán)體中無退出循環(huán)的語句 時,確定所述二進制文件中存在所述死循環(huán)錯誤。
[0080] 可選地,所述開放平臺系統(tǒng)還包括錯誤提示模塊,用于在所述確定模塊430確定所 述二進制文件中存在所述腳本錯誤模式庫中的運行時錯誤時,生成錯誤提示信息。
[0081] 本發(fā)明實施例中,開放平臺檢測出腳本中存在運行時錯誤時,提示該錯誤,從而可 以使得開發(fā)者或終端用戶了解不執(zhí)行腳本的原因,提高開發(fā)者或終端用戶的滿意度。
[0082] 可選地,所述執(zhí)行模塊還用于在所述開放平臺確定所述二進制文件中不存在所述 腳本錯誤模式庫中的運行時錯誤時,執(zhí)行所述二進制文件。
[0083]本發(fā)明實施例中,執(zhí)行不存在運行時錯誤的腳本,以保證正確腳本的功能能夠?qū)?現(xiàn),滿足開發(fā)者或終端用戶的需求。
[0084] 可選地,所述腳本為使用MVEL編寫的腳本。
[0085] 圖5是本發(fā)明實施例的開放平臺系統(tǒng)的示意性結(jié)構(gòu)圖。圖5的開放平臺系統(tǒng)500包 括輸入接口 510、至少一個處理器520、存儲器530和輸出接口 540。
[0086] 輸入接口 510,用于接收終端用戶發(fā)送的指示開放平臺系統(tǒng)運行腳本的信息。
[0087] 至少一個處理器520,用于對所述腳本進行預編譯,得到所述腳本的二進制文件。
[0088]存儲器530,用于存儲腳本錯誤模式庫,所述腳本錯誤模式庫包括至少一個運行時 錯誤。
[0089]至少一個處理器520還用于確定所述二進制文件中是否存在腳本錯誤模式庫中的 運行時錯誤。
[0090] 至少一個處理器520還用于在確定所述二進制文件中存在所述腳本錯誤模式庫中 的運行時錯誤時,不執(zhí)行所述二進制文件。
[0091] 本發(fā)明實施例中,開放平臺系統(tǒng)根據(jù)腳本錯誤模式庫,在執(zhí)行腳本前對腳本中的 運行時錯誤進行檢查,不需要提供獨立測試服務(wù)器就能實現(xiàn)腳本中的運行時錯誤的檢測, 以提高開放平臺系統(tǒng)的穩(wěn)定性,避免開放平臺因為運行有運行時錯誤的腳本而造成的業(yè)務(wù) 服務(wù)能力下降。
[0092]可選地,所述腳本錯誤模式庫包括死循環(huán)錯誤的錯誤特征;其中,至少一個處理器 520具體用于根據(jù)所述二進制文件中存在所述錯誤特征,確定所述二進制文件中存在所述 死循環(huán)錯誤;以及在所述確定模塊確定所述二進制文件中存在所述死循環(huán)錯誤時,不執(zhí)行 所述二進制文件。
[0093] 本發(fā)明實施例中,在腳本執(zhí)行之前判斷出腳本存在死循環(huán),從而禁止死循環(huán)腳本 運行,避免資源被完全占用,從而避免影響其他腳本程序運行。
[0094] 可選地,所述死循環(huán)錯誤的錯誤特征包括循環(huán)標識、循環(huán)條件值為真和循環(huán)體中 無退出語句;其中,至少一個處理器520具體用于:檢查所述二進制文件中是否存在所述循 環(huán)標識;在所述二進制文件中存在所述循環(huán)標識時,檢查所述二進制文件中所述循環(huán)標識 對應(yīng)的循環(huán)的循環(huán)條件值是否為真;在所述二進制文件中所述循環(huán)的循環(huán)條件值為真時, 檢查所述循環(huán)的循環(huán)體中是否有退出循環(huán)的語句;在所述循環(huán)的循環(huán)體中無退出循環(huán)的語 句時,確定所述二進制文件中存在所述死循環(huán)錯誤。
[0095]可選地,至少一個處理器520還用于在所述確定模塊確定所述二進制文件中存在 所述腳本錯誤模式庫中的運行時錯誤時,生成錯誤提示信息。此時,輸出接口 540用于向終 端用戶輸出該提示信息。
[0096]本發(fā)明實施例中,開放平臺系統(tǒng)檢測出腳本中存在運行時錯誤時,提示該錯誤,從 而可以使得開發(fā)者或終端用戶了解不執(zhí)行腳本的原因,提高開發(fā)者或終端用戶的滿意度。
[0097] 可選地,至少一個處理器520還用于在確定所述二進制文件中不存在所述腳本錯 誤模式庫中的運行時錯誤時,執(zhí)行所述二進制文件。
[0098]本發(fā)明實施例中,執(zhí)行不存在運行時錯誤的腳本,以保證正確腳本的功能能夠?qū)?現(xiàn),滿足開發(fā)者或終端用戶的需求。
[0099] 可選地,所述腳本為使用MVEL編寫的腳本。
[0100] 本發(fā)明實施例中,開放平臺系統(tǒng)根據(jù)腳本錯誤模式庫,在執(zhí)行腳本前對腳本中的 運行時錯誤進行檢查,不需要提供獨立測試服務(wù)器就能實現(xiàn)腳本中的運行時錯誤的檢測, 以提高開放平臺的系統(tǒng)穩(wěn)定性,避免開放平臺因為運行有運行時錯誤的腳本而造成的業(yè)務(wù) 服務(wù)能力下降。
[0101] 本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單 元及算法步驟,能夠以電子硬件、或者計算機軟件和電子硬件的結(jié)合來實現(xiàn)。這些功能究竟 以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員 可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認為超出 本發(fā)明的范圍。
[0102] 所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng)、 裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
[0103] 在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以 通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的 劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件 可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或 討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦 合或通信連接,可以是電性,機械或其它的形式。
[0104] 所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯 示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個 網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目 的。
[0105] 另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以 是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。
[0106] 所述功能如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以 存儲在一個計算機可讀取存儲介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說 對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計 算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個 人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。 而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(R0M,Read-0nly Memory)、隨機存取存 儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0107]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護范圍并不局限于此,任何 熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵 蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)所述以權(quán)利要求的保護范圍為準。
【主權(quán)項】
1. 一種開放平臺運行腳本的方法,其特征在于,包括: 所述開放平臺獲取腳本; 所述開放平臺對所述腳本進行預編譯,得到所述腳本的二進制文件; 所述開放平臺確定所述二進制文件中是否存在腳本錯誤模式庫中的運行時錯誤,所述 腳本錯誤模式庫包括至少一個運行時錯誤; 若所述開放平臺確定所述二進制文件中存在所述腳本錯誤模式庫中的運行時錯誤,則 不執(zhí)行所述二進制文件。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述腳本錯誤模式庫包括死循環(huán)錯誤的錯 誤特征; 其中,所述開放平臺確定所述二進制文件中是否存在腳本錯誤模式庫中的運行時錯 誤,包括: 所述開放平臺根據(jù)所述二進制文件中存在所述錯誤特征,確定所述二進制文件中存在 所述死循環(huán)錯誤。3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述死循環(huán)錯誤的錯誤特征包括循環(huán)標 識、循環(huán)條件值為真和循環(huán)體中無退出語句; 其中,所述開放平臺根據(jù)所述二進制文件中存在所述錯誤特征,確定所述二進制文件 中存在所述死循環(huán)錯誤,包括: 所述開放平臺檢查所述二進制文件中是否存在所述循環(huán)標識; 所述開放平臺檢查所述二進制文件中存在所述循環(huán)標識時,檢查所述二進制文件中所 述循環(huán)標識對應(yīng)的循環(huán)的循環(huán)條件值是否為真; 所述開放平臺檢查所述二進制文件中所述循環(huán)的循環(huán)條件值為真時,檢查所述循環(huán)的 循環(huán)體中是否有退出循環(huán)的語句; 所述開放平臺檢查所述循環(huán)的循環(huán)體中無退出循環(huán)的語句時,確定所述二進制文件中 存在所述死循環(huán)錯誤。4. 根據(jù)權(quán)利要求1至3中任一項所述的方法,其特征在于,所述方法還包括: 所述開放平臺確定所述二進制文件中存在所述腳本錯誤模式庫中的運行時錯誤時,生 成錯誤提示信息。5. 根據(jù)權(quán)利要求1至4中任一項所述的方法,其特征在于,所述方法還包括: 若所述開放平臺確定所述二進制文件中不存在所述腳本錯誤模式庫中的運行時錯誤, 則執(zhí)行所述二進制文件。6. 根據(jù)權(quán)利要求1至5中任一項所述的方法,其特征在于,所述腳本為使用MVEL編寫的 腳本。7. -種開放平臺系統(tǒng),其特征在于,包括: 獲取模塊,用于獲取腳本; 預編譯模塊,用于對所述腳本進行預編譯,得到所述腳本的二進制文件; 確定模塊,用于確定所述二進制文件中是否存在腳本錯誤模式庫中的運行時錯誤,所 述腳本錯誤模式庫包括至少一個運行時錯誤; 執(zhí)行模塊,用于在所述確定模塊確定所述二進制文件中存在所述腳本錯誤模式庫中的 運行時錯誤時,不執(zhí)行所述二進制文件。8. 根據(jù)權(quán)利要求7所述的開放平臺系統(tǒng),其特征在于,所述腳本錯誤模式庫包括死循環(huán) 錯誤的錯誤特征; 其中,所述確定模塊具體用于根據(jù)所述二進制文件中存在所述錯誤特征,確定所述二 進制文件中存在所述死循環(huán)錯誤; 所述執(zhí)行模塊具體用于在所述確定模塊確定所述二進制文件中存在所述死循環(huán)錯誤 時,不執(zhí)行所述二進制文件。9. 根據(jù)權(quán)利要求8所述的開放平臺系統(tǒng),其特征在于,所述死循環(huán)錯誤的錯誤特征包括 循環(huán)標識、循環(huán)條件值為真和循環(huán)體中無退出語句; 其中,所述確定模塊具體用于: 檢查所述二進制文件中是否存在所述循環(huán)標識; 在所述二進制文件中存在所述循環(huán)標識時,檢查所述二進制文件中所述循環(huán)標識對應(yīng) 的循環(huán)的循環(huán)條件值是否為真; 在所述二進制文件中所述循環(huán)的循環(huán)條件值為真時,檢查所述循環(huán)的循環(huán)體中是否有 退出循環(huán)的語句; 在所述循環(huán)的循環(huán)體中無退出循環(huán)的語句時,確定所述二進制文件中存在所述死循環(huán) 錯誤。10. 根據(jù)權(quán)利要求7至9中任一項所述的開放平臺系統(tǒng),其特征在于,所述開放平臺系統(tǒng) 還包括錯誤提示模塊,用于在所述確定模塊確定所述二進制文件中存在所述腳本錯誤模式 庫中的運行時錯誤時,生成錯誤提示信息。11. 根據(jù)權(quán)利要求7至10中任一項所述的開放平臺系統(tǒng),其特征在于,所述執(zhí)行模塊還 用于在所述確定模塊確定所述二進制文件中不存在所述腳本錯誤模式庫中的運行時錯誤 時,執(zhí)行所述二進制文件。12. 根據(jù)權(quán)利要求7至11中任一項所述的開放平臺系統(tǒng),其特征在于,所述腳本為使用 MVEL編寫的腳本。
【文檔編號】G06F11/36GK105912468SQ201610220622
【公開日】2016年8月31日
【申請日】2016年4月11日
【發(fā)明人】朱繼先
【申請人】華為軟件技術(shù)有限公司