本發(fā)明涉及軟件工程領(lǐng)域,具體而言,涉及一種腳本的處理方法及系統(tǒng)。
背景技術(shù):
腳本是批處理文件的延伸,其為一種純文本保存的程序,通常而言的計算機(jī)腳本程序是確定的一系列控制計算機(jī)進(jìn)行運(yùn)算操作動作的組合,在其中可以實(shí)現(xiàn)一定的邏輯分支等。在計算機(jī)相關(guān)的工作中,往往需要開發(fā)編寫腳本來執(zhí)行一些功能操作并以此來提高工作效率。在開發(fā)實(shí)現(xiàn)具體功能邏輯的腳本時,通常需要根據(jù)執(zhí)行腳本的用戶輸入的參數(shù)進(jìn)行對應(yīng)的邏輯處理;而用戶需要通過命令行的方式進(jìn)行腳本的執(zhí)行,操作繁瑣;并且,腳本的執(zhí)行需要本地計算機(jī)系統(tǒng)安裝并預(yù)先配置完成相應(yīng)的腳本解釋器以及相關(guān)功能庫等環(huán)境。除非腳本開發(fā)者增加工作量專門對腳本參數(shù)說明進(jìn)行額外處理,否則用戶將無法直觀地看到腳本需要輸入的參數(shù)說明和規(guī)則等信息。
由此可見,在相關(guān)技術(shù)中所提供的響應(yīng)用戶輸入腳本的方式中,不同的用戶在執(zhí)行一個相同的腳本時,存在以下問題:
(1)腳本的執(zhí)行需要在本地安裝相應(yīng)的腳本解釋器和相關(guān)功能庫等環(huán)境,每個用戶的系統(tǒng)都需要進(jìn)行相關(guān)配置,由此需要耗費(fèi)較大成本。
(2)用戶在執(zhí)行腳本時無法直觀地看到腳本需要的參數(shù)說明和規(guī)則等信息。
(3)腳本內(nèi)部代碼需要對用戶輸入?yún)?shù)進(jìn)行相關(guān)的處理,即腳本開發(fā)者需要針對腳本所使用到的參數(shù)單獨(dú)寫一段代碼來展示如何使用該腳本,通常是在用戶執(zhí)行腳本時,后帶一個名為“help”的字符串;以python腳本為例,腳本文件的名稱為demo.py,那么用戶通常通過python demo.py help來查看腳本參數(shù)使用信息,然后在控制臺輸出腳本使用到的各個參數(shù)的含義,由此易產(chǎn)生較多的冗余代碼,從而降低腳本的構(gòu)建效率。
針對上述的問題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種腳本的處理方法及系統(tǒng),以至少解決相關(guān)技術(shù)中所提供的腳本構(gòu)建方式需要耗費(fèi)較高成本且構(gòu)建效率較低的技術(shù)問題。
根據(jù)本發(fā)明實(shí)施例的一個方面,提供了一種腳本的處理方法,包括:客戶端接收用戶輸入的與待執(zhí)行腳本對應(yīng)的腳本執(zhí)行參數(shù)信息的設(shè)置內(nèi)容;客戶端將設(shè)置內(nèi)容推送至服務(wù)器,并接收服務(wù)器返回的待執(zhí)行腳本的執(zhí)行結(jié)果。
可選地,在客戶端接收與待執(zhí)行腳本對應(yīng)的腳本執(zhí)行參數(shù)信息的設(shè)置內(nèi)容之前,還包括:客戶端根據(jù)腳本配置參數(shù)信息生成腳本模板,其中,腳本配置參數(shù)信息為預(yù)先配置完成,存儲于服務(wù)器中并由服務(wù)器為腳本配置參數(shù)信息分配腳本標(biāo)識信息;客戶端接收與腳本模板匹配的處理邏輯代碼,并根據(jù)處理邏輯代碼和預(yù)設(shè)類型變量的取值生成待執(zhí)行腳本,其中,預(yù)設(shè)類型變量包含在腳本模板的預(yù)設(shè)函數(shù)內(nèi)。
可選地,客戶端根據(jù)腳本配置參數(shù)信息使用預(yù)設(shè)類型腳本語言在顯示頁面中生成腳本模板;或者,客戶端通過預(yù)設(shè)網(wǎng)絡(luò)傳輸協(xié)議接收由服務(wù)器傳遞的腳本模板,其中,腳本模板是由服務(wù)器根據(jù)腳本配置參數(shù)信息生成的。
可選地,在客戶端將設(shè)置內(nèi)容推送至服務(wù)器之后,還包括:服務(wù)器根據(jù)待執(zhí)行腳本的內(nèi)容生成臨時腳本文件;服務(wù)器將設(shè)置內(nèi)容重新生成預(yù)設(shè)類型變量,并導(dǎo)入至預(yù)設(shè)函數(shù);服務(wù)器執(zhí)行預(yù)設(shè)函數(shù)并將執(zhí)行結(jié)果返回至客戶端。
可選地,在客戶端將設(shè)置內(nèi)容推送至服務(wù)器之后,還包括:服務(wù)器在執(zhí)行預(yù)設(shè)函數(shù)的過程中捕獲在執(zhí)行期間發(fā)生的異常,或者,在預(yù)設(shè)函數(shù)的執(zhí)行時間超過預(yù)設(shè)時長的情況下,向用戶發(fā)出提示信息。
可選地,客戶端接收與待執(zhí)行腳本對應(yīng)的腳本執(zhí)行參數(shù)信息的設(shè)置內(nèi)容包括:客戶端將腳本執(zhí)行參數(shù)信息渲染至顯示頁面,其中,顯示頁面中包含有腳本執(zhí)行參數(shù)信息中每個參數(shù)對應(yīng)的描述信息;客戶端按照腳本執(zhí)行參數(shù)信息中每個參數(shù)的參數(shù)類型設(shè)置對應(yīng)的顯示控件;客戶端接收用戶在顯示控件中輸入的設(shè)置內(nèi)容。
可選地,在客戶端將設(shè)置內(nèi)容推送至服務(wù)器之前,還包括:客戶端根據(jù)顯示控件對應(yīng)的參數(shù)類型對設(shè)置內(nèi)容進(jìn)行有效性判斷。
根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種腳本的處理系統(tǒng),包括:客戶端;客戶端包括:獲取模塊,用于接收用戶輸入的與待執(zhí)行腳本對應(yīng)的腳本執(zhí)行參數(shù)信息的設(shè)置內(nèi)容;處理模塊,用于將設(shè)置內(nèi)容推送至服務(wù)器,并接收服務(wù)器返回的待執(zhí)行腳本的執(zhí)行結(jié)果。
可選地,客戶端還包括:第一生成模塊,用于根據(jù)腳本配置參數(shù)信息生成腳本模板,其中,腳本配置參數(shù)信息為預(yù)先配置完成,存儲于服務(wù)器中并由服務(wù)器為腳本配置參數(shù)信息分配腳本標(biāo)識信息;第二生成模塊,用于接收與腳本模板匹配的處理邏輯代碼,并根據(jù)處理邏輯代碼和預(yù)設(shè)類型變量的取值生成待執(zhí)行腳本,其中,預(yù)設(shè)類型變量包含在腳本模板的預(yù)設(shè)函數(shù)內(nèi)。
可選地,第一生成模塊,用于根據(jù)腳本配置參數(shù)信息使用預(yù)設(shè)類型腳本語言在顯示頁面中生成腳本模板。
可選地,上述系統(tǒng)還包括:服務(wù)器;服務(wù)器包括:第三生成模塊,用于根據(jù)待執(zhí)行腳本的內(nèi)容生成臨時腳本文件;第四生成模塊,用于將設(shè)置內(nèi)容重新生成預(yù)設(shè)類型變量,并導(dǎo)入至預(yù)設(shè)函數(shù);執(zhí)行模塊,用于執(zhí)行預(yù)設(shè)函數(shù)并將執(zhí)行結(jié)果返回至客戶端。
可選地,服務(wù)器還包括:監(jiān)控模塊,用于在執(zhí)行預(yù)設(shè)函數(shù)的過程中捕獲在執(zhí)行期間發(fā)生的異常,或者,在預(yù)設(shè)函數(shù)的執(zhí)行時間超過預(yù)設(shè)時長的情況下,向用戶發(fā)出提示信息。
可選地,獲取模塊包括:渲染單元,用于將腳本執(zhí)行參數(shù)信息渲染至顯示頁面,其中,顯示頁面中包含有腳本執(zhí)行參數(shù)信息中每個參數(shù)對應(yīng)的描述信息;設(shè)置單元,用于按照腳本執(zhí)行參數(shù)信息中每個參數(shù)的參數(shù)類型設(shè)置對應(yīng)的顯示控件;接收單元,用于接收用戶在顯示控件中輸入的設(shè)置內(nèi)容。
可選地,客戶端還包括:判斷模塊,用于根據(jù)顯示控件對應(yīng)的參數(shù)類型對設(shè)置內(nèi)容進(jìn)行有效性判斷。
在本發(fā)明實(shí)施例中,采用客戶端接收用戶輸入的與待執(zhí)行腳本對應(yīng)的腳本執(zhí)行參數(shù)信息的設(shè)置內(nèi)容,再將設(shè)置內(nèi)容推送至服務(wù)器,并接收服務(wù)器返回的待執(zhí)行腳本的執(zhí)行結(jié)果的方式,由于用戶只需要在瀏覽器頁面中輸入?yún)?shù)的值,而腳本的具體執(zhí)行過程是在服務(wù)器端來進(jìn)行的,由此可以避免執(zhí)行腳本的用戶需要在客戶端本地安裝解釋器和相關(guān)功能庫環(huán)境,從而實(shí)現(xiàn)了降低腳本的構(gòu)建成本,提高腳本的構(gòu)建效率的技術(shù)效果,進(jìn)而解決了相關(guān)技術(shù)中所提供的腳本構(gòu)建方式需要耗費(fèi)較高成本且構(gòu)建效率較低的技術(shù)問題。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
圖1是根據(jù)本發(fā)明實(shí)施例的腳本的處理方法的流程圖;
圖2是根據(jù)本發(fā)明優(yōu)選實(shí)施例的通過頁面快速構(gòu)建響應(yīng)用戶輸入的腳本方法的執(zhí)行過程示意圖;
圖3是根據(jù)本發(fā)明實(shí)施例的腳本的處理系統(tǒng)的流程圖;
圖4是根據(jù)本發(fā)明優(yōu)選實(shí)施例的腳本的處理系統(tǒng)的流程圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
根據(jù)本發(fā)明實(shí)施例,提供了一種腳本的處理方法的實(shí)施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機(jī)可執(zhí)行指令的計算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
圖1是根據(jù)本發(fā)明實(shí)施例的腳本的處理方法的流程圖,如圖1所示,該方法包括如下步驟:
步驟S10,客戶端接收用戶輸入的與待執(zhí)行腳本對應(yīng)的腳本執(zhí)行參數(shù)信息的設(shè)置內(nèi)容;
步驟S12,客戶端將設(shè)置內(nèi)容推送至服務(wù)器,并接收服務(wù)器返回的待執(zhí)行腳本的執(zhí)行結(jié)果。
通過上述步驟,采用客戶端接收用戶輸入的與待執(zhí)行腳本對應(yīng)的腳本執(zhí)行參數(shù)信息的設(shè)置內(nèi)容,再將設(shè)置內(nèi)容推送至服務(wù)器,并接收服務(wù)器返回的待執(zhí)行腳本的執(zhí)行結(jié)果的方式,由于用戶只需要在瀏覽器頁面中輸入?yún)?shù)的值,而腳本的具體執(zhí)行過程是在服務(wù)器端來進(jìn)行的,由此可以避免執(zhí)行腳本的用戶需要在客戶端本地安裝解釋器和相關(guān)功能庫環(huán)境,從而實(shí)現(xiàn)了降低腳本的構(gòu)建成本,提高腳本的構(gòu)建效率的技術(shù)效果,進(jìn)而解決了相關(guān)技術(shù)中所提供的腳本構(gòu)建方式需要耗費(fèi)較高成本且構(gòu)建效率較低的技術(shù)問題。
可選地,在步驟S10,客戶端接收與待執(zhí)行腳本對應(yīng)的腳本執(zhí)行參數(shù)信息的設(shè)置內(nèi)容之前,還可以包括以下執(zhí)行步驟:
步驟S13,客戶端根據(jù)腳本配置參數(shù)信息生成腳本模板,其中,腳本配置參數(shù)信息為預(yù)先配置完成,存儲于服務(wù)器中并由服務(wù)器為腳本配置參數(shù)信息分配腳本標(biāo)識信息;
步驟S14,客戶端接收與腳本模板匹配的處理邏輯代碼,并根據(jù)處理邏輯代碼和預(yù)設(shè)類型變量的取值生成待執(zhí)行腳本,其中,預(yù)設(shè)類型變量包含在腳本模板的預(yù)設(shè)函數(shù)內(nèi)。
在優(yōu)選實(shí)施例中,可以在客戶端上通過網(wǎng)頁配置上述腳本配置參數(shù)信息,并將配置完成的腳本配置參數(shù)信息保存至服務(wù)器,其中,存儲的方式可以包括但不限于:內(nèi)存,文件,數(shù)據(jù)庫;腳本配置參數(shù)信息可以包括但不限于:參數(shù)名稱、參數(shù)類型、參數(shù)變量名、參數(shù)描述。
腳本模板是包含相關(guān)導(dǎo)入庫的腳本代碼段;特別地,代碼段內(nèi)包含一個規(guī)定名稱的函數(shù),該函數(shù)接收一個包含參數(shù)信息的字典類型變量;
其中,上述代碼段即為一段腳本代碼;規(guī)定名稱的函數(shù)(相當(dāng)于上述預(yù)設(shè)函數(shù))表示不限定函數(shù)的具體名稱,只要是合法函數(shù)名稱即可,規(guī)定名稱的目的在于:服務(wù)端在執(zhí)行腳本時能夠正確的執(zhí)行到腳本開發(fā)的功能邏輯;字典類型變量(相當(dāng)于上述預(yù)設(shè)類型變量)是編程語言的一種基本數(shù)據(jù)類型;
例如,上述腳本參數(shù)基本信息包括:字符串類型的參數(shù)和列表類型的參數(shù):
那么,此處提到的字典類型變量即為:
其中,xxx為用戶輸入的值。
在生成的腳本模板的規(guī)定名稱函數(shù)中,根據(jù)腳本邏輯需要(即研發(fā)人員在編寫腳本時需要完成的特定功能)從字典類型變量中提取出相應(yīng)的參數(shù)變量名的值來編寫相應(yīng)的腳本邏輯,并將編輯后的腳本保存到服務(wù)器,其保存的方式可以包括但不限于:內(nèi)存、文件或者數(shù)據(jù)庫;另外,上述規(guī)定名稱可以是任何合法的函數(shù)變量名。
在通常情況下,腳本的執(zhí)行流程是接收用戶的輸入,然后根據(jù)不同的輸入分別進(jìn)行不同的處理,例如:當(dāng)前存在一個腳本能夠查詢用戶的基本信息,那么,該腳本會接收使用腳本的用戶所提供的參數(shù),例如:姓名或是員工號,然后腳本具體邏輯便會根據(jù)用戶提供的信息去數(shù)據(jù)庫查詢相關(guān)的數(shù)據(jù),最后反饋給用戶。
可選地,在步驟S13中,客戶端根據(jù)腳本配置參數(shù)信息使用預(yù)設(shè)類型腳本語言在顯示頁面中生成腳本模板;或者,客戶端通過預(yù)設(shè)網(wǎng)絡(luò)傳輸協(xié)議接收由服務(wù)器傳遞的腳本模板,其中,腳本模板是由服務(wù)器根據(jù)腳本配置參數(shù)信息生成的。
在優(yōu)選實(shí)施過程中,可以在web前端使用javascript腳本根據(jù)上述腳本參數(shù)信息在網(wǎng)頁中生成腳本模板;或者,可以由服務(wù)端根據(jù)腳本基本參數(shù)信息生成,然后通過超文本傳輸協(xié)議(http)請求或ajax方式傳遞至前端web頁面進(jìn)行展示。
可選地,在步驟S12,客戶端將設(shè)置內(nèi)容推送至服務(wù)器之后,還可以包括以下執(zhí)行步驟:
步驟S15,服務(wù)器根據(jù)待執(zhí)行腳本的內(nèi)容生成臨時腳本文件;
步驟S16,服務(wù)器將設(shè)置內(nèi)容重新生成預(yù)設(shè)類型變量,并導(dǎo)入至預(yù)設(shè)函數(shù);
步驟S17,服務(wù)器執(zhí)行預(yù)設(shè)函數(shù)并將執(zhí)行結(jié)果返回至客戶端。
用戶通過頁面設(shè)置相應(yīng)的參數(shù)執(zhí)行服務(wù)端腳本時,服務(wù)端根據(jù)先前存儲的編輯后的腳本內(nèi)容生成臨時腳本文件,并在響應(yīng)用戶執(zhí)行腳本的請求中動態(tài)導(dǎo)入該臨時腳本文件內(nèi)的規(guī)定名稱函數(shù)以及執(zhí)行該函數(shù),最后將函數(shù)的執(zhí)行結(jié)果呈現(xiàn)在頁面,反饋給用戶。
可選地,在步驟S12,客戶端將設(shè)置內(nèi)容推送至服務(wù)器之后,還可以包括以下執(zhí)行步驟:
步驟S18,服務(wù)器在執(zhí)行預(yù)設(shè)函數(shù)的過程中捕獲在執(zhí)行期間發(fā)生的異常,或者,在預(yù)設(shè)函數(shù)的執(zhí)行時間超過預(yù)設(shè)時長的情況下,向用戶發(fā)出提示信息。
在優(yōu)選實(shí)施例中,為了避免上述預(yù)設(shè)函數(shù)在執(zhí)行期間發(fā)生異常導(dǎo)致程序崩潰,可以將該預(yù)設(shè)函數(shù)的執(zhí)行過程設(shè)置在異常捕獲塊中,以增強(qiáng)腳本執(zhí)行的健壯性。另外,為了避免上述預(yù)設(shè)函數(shù)執(zhí)行一些耗時特別長,甚至是無盡模式的腳本邏輯,可以通過多線程處理等方式對該預(yù)設(shè)函數(shù)進(jìn)行超時處理,如果出現(xiàn)超時處理,則反饋用戶腳本執(zhí)行超時,從而增強(qiáng)腳本執(zhí)行的健壯性。
可選地,在步驟S10中,客戶端接收與待執(zhí)行腳本對應(yīng)的腳本執(zhí)行參數(shù)信息的設(shè)置內(nèi)容可以包括以下執(zhí)行步驟:
步驟S101,客戶端將腳本執(zhí)行參數(shù)信息渲染至顯示頁面,其中,顯示頁面中包含有腳本執(zhí)行參數(shù)信息中每個參數(shù)對應(yīng)的描述信息;
步驟S102,客戶端按照腳本執(zhí)行參數(shù)信息中每個參數(shù)的參數(shù)類型設(shè)置對應(yīng)的顯示控件;
步驟S103,客戶端接收用戶在顯示控件中輸入的設(shè)置內(nèi)容。
在優(yōu)選實(shí)施例中,可以將保存到服務(wù)器的腳本配置參數(shù)信息渲染到顯示頁面提供給用戶,以便接收執(zhí)行腳本的用戶編輯的與待執(zhí)行腳本對應(yīng)的腳本執(zhí)行參數(shù)信息的設(shè)置內(nèi)容,此處的與待執(zhí)行腳本對應(yīng)的腳本執(zhí)行參數(shù)信息的設(shè)置內(nèi)容可以包括但不限于:參數(shù)變量名、參數(shù)類型、參數(shù)的取值。
上述渲染是指在web前端通過javascript腳本所實(shí)現(xiàn)的一套邏輯(并非每新建一個腳本就需要重寫一遍)。根據(jù)參數(shù)的不同類型顯示不同的web頁面控件來獲得用戶的輸入,并在相應(yīng)的控件旁邊顯示參數(shù)的描述等信息。
例如:如果參數(shù)類型為是字符串型,那么頁面便會顯示一個編輯框來獲得這個參數(shù)的用戶輸入值,并在該編輯框旁邊顯示該參數(shù)的描述等信息。
由于用戶在瀏覽器的web頁面使用腳本的時候,便可以直觀地觀察腳本執(zhí)行需要的參數(shù)描述等信息,輸入?yún)?shù)后即可執(zhí)行腳本,由此可以避免在執(zhí)行腳本時無法直觀地觀察到腳本需要的參數(shù)說明和規(guī)則等信息。
此外,由于腳本參數(shù)已經(jīng)通過web前端完成了展示和用戶輸入值的獲取,且不需要每新建一個腳本都重編寫一遍參數(shù)的展示與獲取的邏輯,腳本開發(fā)人員只需在提供的腳本模板中規(guī)定的函數(shù)中提取參數(shù)進(jìn)行相關(guān)的邏輯功能的編寫即可,因此,腳本的開發(fā)人員無需關(guān)注用戶的輸入問題,從而可以集中精力關(guān)注如何實(shí)現(xiàn)相關(guān)邏輯,而并不會因需要對用戶輸入?yún)?shù)進(jìn)行相關(guān)處理產(chǎn)生較多的冗余代碼。
可選地,在步驟S12,客戶端將設(shè)置內(nèi)容推送至服務(wù)器之前,還可以包括以下執(zhí)行步驟:
步驟S19,客戶端根據(jù)顯示控件對應(yīng)的參數(shù)類型對設(shè)置內(nèi)容進(jìn)行有效性判斷。
在優(yōu)選實(shí)施例中,web前端頁面可以根據(jù)參數(shù)的類型對用戶輸入進(jìn)行有效性判斷,例如:當(dāng)參數(shù)為整型(int)時,可以在web前端通過javascript腳本檢查用戶輸入的數(shù)據(jù)是否為整型,從而判斷用戶輸入是否有效,以避免將錯誤或者無效的參數(shù)值傳給服務(wù)器,造成網(wǎng)絡(luò)資源的浪費(fèi)。
下面將結(jié)合圖2所示的優(yōu)選實(shí)施方式對上述優(yōu)選實(shí)施過程作進(jìn)一步地描述。
圖2是根據(jù)本發(fā)明優(yōu)選實(shí)施例的通過頁面快速構(gòu)建響應(yīng)用戶輸入的腳本方法的執(zhí)行過程示意圖。如圖2所示,該方法包括以下步驟:
步驟S201,腳本開發(fā)人員通過網(wǎng)頁配置腳本參數(shù)基本信息(相當(dāng)于上述腳本配置參數(shù)信息),并將配置完成的腳本參數(shù)基本信息保存至服務(wù)器;
在優(yōu)選實(shí)施過程中,上述腳本參數(shù)基本信息可以包括但不限于:參數(shù)名稱、參數(shù)類型、參數(shù)變量名、參數(shù)描述;
可選地,在步驟S201中,需要在web前端提供參數(shù)名稱和參數(shù)變量名以及參數(shù)描述的編輯入口,用以配置相關(guān)數(shù)據(jù);而參數(shù)類型可以是腳本語言的預(yù)設(shè)數(shù)據(jù)類型或者是自定義的數(shù)據(jù)類型,作為參數(shù)類型列表或者參數(shù)類型選項供開發(fā)人員進(jìn)行選擇,或者由開發(fā)人員直接編輯填寫數(shù)據(jù)類型;
可選地,在步驟S201中,當(dāng)腳本參數(shù)基本信息被存儲至服務(wù)器時,需要關(guān)聯(lián)一個腳本標(biāo)識(ID),用以區(qū)分不同的腳本,其中,腳本ID既可以是數(shù)據(jù)庫自增的整型數(shù)值,也可以是其他能夠區(qū)分不同的腳本的字符串,例如:全局唯一標(biāo)識符;
可選地,在步驟S201中,腳本參數(shù)基本信息存儲的方式可以包括但不限于:內(nèi)存、文件、數(shù)據(jù)庫等計算機(jī)相關(guān)存儲。
步驟S202,生成腳本模板,即可以在web前端使用javascript腳本根據(jù)上述存儲的腳本參數(shù)基本信息在網(wǎng)頁中生成腳本模板,用于腳本開發(fā)人員編輯腳本內(nèi)容;
可選地,在步驟S202中,腳本模板是包含相關(guān)導(dǎo)入庫的腳本代碼段,特別地,代碼段內(nèi)包含一個規(guī)定名稱的函數(shù),該函數(shù)接收一個包含參數(shù)信息的字典類型變量;在該優(yōu)選實(shí)施例中,該規(guī)定名稱的函數(shù)被命名為run,但其并不構(gòu)成對本發(fā)明的不當(dāng)限制,其可以是其他任何滿足函數(shù)命名規(guī)則的名稱;
可選地,在步驟S202中,腳本模板可以是在web前端通過javascript腳本根據(jù)上述腳本基本參數(shù)信息生成并直接在頁面上展示,或者,由服務(wù)端根據(jù)腳本基本參數(shù)信息生成,然后通過超文本傳輸協(xié)議(http)請求或ajax方式傳遞至前端web頁面進(jìn)行展示。
步驟S203,腳本的編輯與存儲,開發(fā)人員在步驟S202生成的腳本模板中名稱為run的函數(shù)內(nèi),根據(jù)腳本邏輯需要從run函數(shù)的字典類型變量中選取相應(yīng)的參數(shù)變量名的值來編寫相應(yīng)的腳本邏輯,并將編寫完畢的腳本存儲至服務(wù)器;
可選地,在步驟S203中,開發(fā)人員可以在web前端對腳本模板直接修改,然后將其保存到服務(wù)器;當(dāng)然,也可以是開發(fā)人員將腳本模板拷貝到本地進(jìn)行修改,然后將修改后的腳本文件保存到服務(wù)器;
可選地,在步驟S203中,腳本的存儲方式可以包括但不限于:內(nèi)存、文件、數(shù)據(jù)庫。
步驟S204,腳本參數(shù)的設(shè)置,服務(wù)器將存儲至自身的參數(shù)信息渲染頁面顯示提供給用戶,以便接收執(zhí)行腳本的用戶編輯的參數(shù)信息(相當(dāng)于上述與待執(zhí)行腳本對應(yīng)的腳本執(zhí)行參數(shù)信息的設(shè)置內(nèi)容);
可選地,在步驟S204中,用戶能夠觀察到腳本所需各個參數(shù)的描述,且web前端頁面可以根據(jù)參數(shù)類型的不同,使用不同的web控件來接收用戶的輸入,以便于用戶對腳本參數(shù)的設(shè)置;
可選地,在步驟S204中,web前端頁面可以根據(jù)參數(shù)的類型對用戶輸入進(jìn)行有效性判斷,例如:當(dāng)參數(shù)為整型(int)時,可以在web前端通過javascript腳本檢查用戶輸入的數(shù)據(jù)是否為整型,從而判斷用戶輸入是否有效,以避免將錯誤或者無效的參數(shù)值傳給服務(wù)器;
可選地,在步驟S204中,上述參數(shù)信息可以包括但不限于:參數(shù)變量名、參數(shù)類型以及參數(shù)的值。
步驟S205,腳本的執(zhí)行與反饋,服務(wù)器根據(jù)用戶提交的腳本參數(shù)信息執(zhí)行腳本,并將執(zhí)行結(jié)果返回至web前端;
可選地,在步驟S205中,服務(wù)器根據(jù)步驟S203中保存到服務(wù)器的腳本內(nèi)容生成一個臨時腳本文件,然后根據(jù)用戶提交的參數(shù)信息生成步驟S202提到的包含參數(shù)信息的字典類型變量,并動態(tài)導(dǎo)入名為run的函數(shù),最后將上述字典類型變量作為參數(shù),調(diào)用run函數(shù),然后將函數(shù)的返回結(jié)果返回給前端頁面;
可選地,在步驟S205中,為了避免run函數(shù)發(fā)生異常導(dǎo)致程序崩潰,可以將run函數(shù)的執(zhí)行設(shè)置在異常捕獲塊中,以增強(qiáng)腳本執(zhí)行的健壯性;
可選地,在步驟S205中,為了避免run函數(shù)執(zhí)行一些耗時特別長,甚至是無盡模式的腳本邏輯,可以通過多線程處理等方式對run函數(shù)進(jìn)行超時處理,如果出現(xiàn)超時處理,則反饋用戶腳本執(zhí)行超時,從而增強(qiáng)腳本執(zhí)行的健壯性。
根據(jù)本發(fā)明實(shí)施例,還提供了一種腳本的處理系統(tǒng)的實(shí)施例。圖3是根據(jù)本發(fā)明實(shí)施例的腳本的處理系統(tǒng)的流程圖,如圖3所示,該系統(tǒng)可以包括:客戶端1;客戶端1可以包括:獲取模塊10,用于接收用戶輸入的與待執(zhí)行腳本對應(yīng)的腳本執(zhí)行參數(shù)信息的設(shè)置內(nèi)容;處理模塊12,用于將設(shè)置內(nèi)容推送至服務(wù)器,并接收服務(wù)器返回的待執(zhí)行腳本的執(zhí)行結(jié)果。
可選地,圖4是根據(jù)本發(fā)明優(yōu)選實(shí)施例的腳本的處理系統(tǒng)的流程圖,如圖4所示,客戶端1還可以包括:第一生成模塊14,用于根據(jù)腳本配置參數(shù)信息生成腳本模板,其中,腳本配置參數(shù)信息為預(yù)先配置完成,存儲于服務(wù)器中并由服務(wù)器為腳本配置參數(shù)信息分配腳本標(biāo)識信息;第二生成模塊16,用于接收與腳本模板匹配的處理邏輯代碼,并根據(jù)處理邏輯代碼和預(yù)設(shè)類型變量的取值生成待執(zhí)行腳本,其中,預(yù)設(shè)類型變量包含在腳本模板的預(yù)設(shè)函數(shù)內(nèi)。
在優(yōu)選實(shí)施例中,可以在客戶端上通過網(wǎng)頁配置上述腳本配置參數(shù)信息,并將配置完成的腳本配置參數(shù)信息保存至服務(wù)器,其中,存儲的方式可以包括但不限于:內(nèi)存,文件,數(shù)據(jù)庫;腳本配置參數(shù)信息可以包括但不限于:參數(shù)名稱、參數(shù)類型、參數(shù)變量名、參數(shù)描述。
在生成的腳本模板的規(guī)定名稱函數(shù)(相當(dāng)于上述預(yù)設(shè)函數(shù))中,根據(jù)腳本邏輯需要(即研發(fā)人員在編寫腳本時需要完成的特定功能)從字典類型變量(相當(dāng)于上述預(yù)設(shè)類型變量)中提取出相應(yīng)的參數(shù)變量名的值來編寫相應(yīng)的腳本邏輯,并將編輯后的腳本保存到服務(wù)器,其保存的方式可以包括但不限于:內(nèi)存、文件或者數(shù)據(jù)庫;另外,上述規(guī)定名稱可以是任何合法的函數(shù)變量名。
可選地,第一生成模塊14,用于根據(jù)腳本配置參數(shù)信息使用預(yù)設(shè)類型腳本語言在顯示頁面中生成腳本模板。
在優(yōu)選實(shí)施過程中,可以在web前端使用javascript腳本根據(jù)上述腳本參數(shù)信息在網(wǎng)頁中生成腳本模板;或者,可以由服務(wù)端根據(jù)腳本基本參數(shù)信息生成,然后通過超文本傳輸協(xié)議(http)請求或ajax方式傳遞至前端web頁面進(jìn)行展示。
可選地,如圖4所示,上述系統(tǒng)還可以包括:服務(wù)器2;服務(wù)器2可以包括:第三生成模塊20,用于根據(jù)待執(zhí)行腳本的內(nèi)容生成臨時腳本文件;第四生成模塊22,用于將設(shè)置內(nèi)容重新生成預(yù)設(shè)類型變量,并導(dǎo)入至預(yù)設(shè)函數(shù);執(zhí)行模塊24,用于執(zhí)行預(yù)設(shè)函數(shù)并將執(zhí)行結(jié)果返回至客戶端。
用戶通過頁面設(shè)置相應(yīng)的參數(shù)執(zhí)行服務(wù)端腳本時,服務(wù)端根據(jù)先前存儲的編輯后的腳本內(nèi)容生成臨時腳本文件,并在響應(yīng)用戶執(zhí)行腳本的請求中動態(tài)導(dǎo)入該臨時腳本文件內(nèi)的規(guī)定名稱函數(shù)以及執(zhí)行該函數(shù),最后將函數(shù)的執(zhí)行結(jié)果呈現(xiàn)在頁面,反饋給用戶。
可選地,如圖4所示,服務(wù)器20還可以包括:監(jiān)控模塊26,用于在執(zhí)行預(yù)設(shè)函數(shù)的過程中捕獲在執(zhí)行期間發(fā)生的異常,或者,在預(yù)設(shè)函數(shù)的執(zhí)行時間超過預(yù)設(shè)時長的情況下,向用戶發(fā)出提示信息。
在優(yōu)選實(shí)施例中,為了避免上述預(yù)設(shè)函數(shù)在執(zhí)行期間發(fā)生異常導(dǎo)致程序崩潰,可以將該預(yù)設(shè)函數(shù)的執(zhí)行過程設(shè)置在異常捕獲塊中,以增強(qiáng)腳本執(zhí)行的健壯性。另外,為了避免上述預(yù)設(shè)函數(shù)執(zhí)行一些耗時特別長,甚至是無盡模式的腳本邏輯,可以通過多線程處理等方式對該預(yù)設(shè)函數(shù)進(jìn)行超時處理,如果出現(xiàn)超時處理,則反饋用戶腳本執(zhí)行超時,從而增強(qiáng)腳本執(zhí)行的健壯性。
可選地,如圖4所示,獲取模塊10可以包括:渲染單元100,用于將腳本執(zhí)行參數(shù)信息渲染至顯示頁面,其中,顯示頁面中包含有腳本執(zhí)行參數(shù)信息中每個參數(shù)對應(yīng)的描述信息;設(shè)置單元102,用于按照腳本執(zhí)行參數(shù)信息中每個參數(shù)的參數(shù)類型設(shè)置對應(yīng)的顯示控件;接收單元104,用于接收用戶在顯示控件中輸入的設(shè)置內(nèi)容。
在優(yōu)選實(shí)施例中,可以將保存到服務(wù)器的腳本配置參數(shù)信息渲染到顯示頁面提供給用戶,以便接收執(zhí)行腳本的用戶編輯的與待執(zhí)行腳本對應(yīng)的腳本執(zhí)行參數(shù)信息的設(shè)置內(nèi)容,此處的與待執(zhí)行腳本對應(yīng)的腳本執(zhí)行參數(shù)信息的設(shè)置內(nèi)容可以包括但不限于:參數(shù)變量名、參數(shù)類型、參數(shù)的取值。
由于用戶在瀏覽器的web頁面使用腳本的時候,便可以直觀地觀察腳本執(zhí)行需要的參數(shù)描述等信息,輸入?yún)?shù)后即可執(zhí)行腳本,由此可以避免在執(zhí)行腳本時無法直觀地觀察到腳本需要的參數(shù)說明和規(guī)則等信息。
此外,由于腳本參數(shù)已經(jīng)通過web前端完成了展示和用戶輸入值的獲取,且不需要每新建一個腳本都重編寫一遍參數(shù)的展示與獲取的邏輯,腳本開發(fā)人員只需在提供的腳本模板中規(guī)定的函數(shù)中提取參數(shù)進(jìn)行相關(guān)的邏輯功能的編寫即可,因此,腳本的開發(fā)人員無需關(guān)注用戶的輸入問題,從而可以集中精力關(guān)注如何實(shí)現(xiàn)相關(guān)邏輯,而并不會因需要對用戶輸入?yún)?shù)進(jìn)行相關(guān)處理產(chǎn)生較多的冗余代碼。
可選地,如圖4所示,客戶端1還可以包括:判斷模塊18,用于根據(jù)顯示控件對應(yīng)的參數(shù)類型對設(shè)置內(nèi)容進(jìn)行有效性判斷。
在優(yōu)選實(shí)施例中,web前端頁面可以根據(jù)參數(shù)的類型對用戶輸入進(jìn)行有效性判斷,例如:當(dāng)參數(shù)為int時,可以在web前端通過javascript腳本檢查用戶輸入的數(shù)據(jù)是否為整型,從而判斷用戶輸入是否有效,以避免將錯誤或者無效的參數(shù)值傳給服務(wù)器,造成網(wǎng)絡(luò)資源的浪費(fèi)。
上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
在本發(fā)明的上述實(shí)施例中,對各個實(shí)施例的描述都各有側(cè)重,某個實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
在本申請所提供的幾個實(shí)施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個實(shí)施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可為個人計算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。