一種應用系統內嵌腳本的方法和裝置制造方法
【專利摘要】本發明公開一種內嵌腳本的方法,在所述應用系統中配置預先設定的腳本配置文件,以及為每種腳本語言類型配置相應的轉換模型;根據腳本配置文件中的配置信息,獲取各腳本語言程序包的存放路徑,并在所述應用系統內部獲取與所述各腳本語言類型相應的動態鏈接庫;根據所述各轉換模型,對各動態鏈接庫完成初始化后,各動態鏈接庫按照各腳本語言程序包的存放路徑找到與其對應的腳本語言程序包,并對所述腳本語言程序包進行解析;根據所述各轉換模型和所述腳本配置文件中的配置信息,在所述各動態鏈接庫中植入與其相應的方法名和參數;所述應用系統調用所述動態鏈接庫,執行所述動態鏈接庫中植入的方法名和參數,返回執行結果。
【專利說明】一種應用系統內嵌腳本的方法和裝置
【技術領域】
[0001] 本發明涉及一種內嵌腳本的方法和裝置,具體地涉及一種應用系統內嵌外部腳本 的方法和裝置。
【背景技術】
[0002] 近年IT業迅猛發展,多種大型綜合軟件在各行業中涌現,大型綜合軟件會承載多 種業務,為了方便用戶根據自身業務特點撰寫不同的業務邏輯,提高系統靈活性,很多大型 綜合軟件提供了對外的API接口,專供用戶調用,可執行用戶自己編寫不同業務邏輯的外 部腳本。所謂外部腳本,就是在系統既定的業務范圍外,用戶還需要其他輔助業務需要處 理,或者針對系統處理的內部數據,還需要精細加工或者特殊處理,而自行編寫的程序化腳 本。該腳本能夠獨立依賴自身的腳本語言執行。當系統調用這些外部腳本后,根據腳本植 入系統配置的位置而依次調用。這樣結合系統的業務功能和邏輯,就可以實現這種靈活的 功能或者業務擴展。內嵌方式不僅僅可以實現用戶的自增邏輯擴展,同時也實現系統對外 部腳本的可控化,同時從性能角度出發,提升的效率也非常可觀。
[0003] 這種給用戶提供調用自編腳本接口的方式,極大提高了系統的靈活性,但同時也 帶來了一系列問題。其一由于用戶編程語言習慣的不同可能會采用不同的語言撰寫腳本, 當用戶調用API接口試圖運行這些腳本語言時,會調用系統資源執行其腳本,直接導致系 統處理效率降低,影響系統性能。其二,現有系統運行這些用戶自編外部腳本的方式為通過 系統C程序調用SHELL腳本語言,SHELL語言再指向用戶自編腳本程序包,這樣幾層調用關 系,會導致系統多語言混亂調用,降低系統處理能力,且調用語言腳本運行不可控,也無法 跟蹤腳本程序包的運行情況。
【發明內容】
[0004] 本發明提供了一種將用戶根據業務需求自撰的腳本語言程序包內嵌入應用系統 執行的方法,提高了應用系統執行外部程序包的效率和可控性,同時避免了多重語言調用 出現的復雜易出錯的弊端。
[0005] -種應用系統內嵌腳本的方法,其特征在于,所述方法包括:
[0006] 根據已編寫好的外部各腳本語言程序包在所述應用系統中配置預先設定的腳本 配置文件,以及為每種腳本語言類型配置相應的轉換模型;
[0007] 所述應用系統加載所述腳本配置文件,根據所述腳本配置文件中的配置信息,獲 取各腳本語言程序包的存放路徑,并在所述應用系統內部獲取與所述各腳本語言類型相應 的動態鏈接庫;
[0008] 根據所述各轉換模型,對與轉換模型相同腳本語言類型的動態鏈接庫完成初始化 后,所述各動態鏈接庫按照所述各腳本語言程序包的存放路徑找到與其對應的腳本語言程 序包,并對所述腳本語言程序包進行解析;
[0009] 根據所述各轉換模型和所述腳本配置文件中的配置信息,在所述各動態鏈接庫中 植入與其相應的方法名和參數;
[0010] 所述應用系統調用所述動態鏈接庫,執行所述動態鏈接庫中植入的方法名和參 數,返回執行結果。
[0011] 優選的,在所述通用語言動態鏈接庫執行所述解析后的與其對應的腳本語言程序 包后,所述方法還包括:
[0012] 清除所述動態鏈接庫本次解析的內容,釋放其所占系統資源。
[0013] 具體的,所述配置預先設定的腳本配置文件的方法具體為:
[0014] 在所述腳本配置文件中配置各腳本語言程序包的編寫語言類型、存放路徑、方法 名和執行該方法所需的參數,將每個腳本語言程序包的信息配置為一條記錄。
[0015] 具體的:在每個所述轉換模型中配置一種腳本語言類型的轉換規則,所述轉換規 則包括與該腳本語言類型相應的動態鏈接庫初始化方法、生成解析器方法、外部傳遞參數 方法、返回值方法。
[0016] 優選的,在所述動態鏈接庫初始化之前,所述方法還包括:
[0017] 根據所述腳本配置文件中配置各腳本語言程序包的方法名,與所述腳本程序包中 的所有方法名進行比對校驗,如有方法名錯誤或未找到則提示錯誤報告并退出步驟。
[0018] 具體的,根據所述轉換規則中記載的動態鏈接庫初始化方法對與該轉換規則腳本 語言類型相應的動態鏈接庫進行初始化;
[0019] 讀取所述腳本配置文件中記載的所述該腳本語言類型方法名和執行該方法所需 的參數,通過所述轉換規則中的外部傳遞參數方法,將所述方法名和執行該方法所需的參 數植入相應的動態鏈接庫。
[0020] 具體的,所述腳本語言類型包括PERL語言、SHELL語言、PYTHON語言、LUA語言;
[0021 ] 在所述應用系統內部獲取與所述各腳本語言類型相應的動態鏈接庫。
[0022] 優選的,當出現新的腳本語言程序包時,可在腳本配置文件中增加新的記錄,所述 應用系統周期性讀取所述腳本配置文件中的信息,可根據實際操作需求設定應用系統的讀 取周期。
[0023] 本發明還公開一種應用系統內嵌腳本的裝置,其特征在于,所述裝置包括:
[0024] 配置模塊,用于根據已編寫好的外部各腳本語言程序包在應用系統中預置腳本配 置文件,以及為每種腳本語言類型配置相應的轉換模型;
[0025] 獲取模塊,用于加載所述配置模塊預置的腳本配置文件,根據所述腳本配置文件 中的配置信息,獲取各腳本語言程序包的存放路徑,并在所述應用系統內部獲取與所述各 腳本語言類型相應的動態鏈接庫;
[0026] 解析模塊,用于根據所述配置模塊配置的轉換模型,對所述獲取模塊獲取的與轉 換模型相同腳本語言類型的動態鏈接庫完成初始化后,所述各動態鏈接庫按照所述各腳本 語言程序包的存放路徑找到與其對應的腳本語言程序包,并對所述腳本語言程序包進行解 析;
[0027] 植入模塊,用于根據所述配置模塊配置的轉換模型和所述腳本配置文件中的配置 信息,在所述解析模塊中對腳本語言程序包進行解析后的動態鏈接庫中植入與其相應的方 法名和參數;
[0028] 執行模塊,用于調用所述解析模塊中的動態鏈接庫,執行植入模塊在所述動態鏈 接庫中植入的方法名和參數。
[0029] 優選的,所述裝置還包括:
[0030] 資源釋放模塊,用于在執行模塊執行完成后,清除所述解析模塊中本次解析的內 容。
[0031] 具體的,所述配置模塊在所述腳本配置文件中配置各腳本語言程序包的編寫語言 類型、存放路徑、方法名和執行該方法所需的參數,將每個腳本語言程序包的信息配置為一 條記錄。
[0032] 具體的,所述配置模塊在每個所述轉換模型中配置一種腳本語言類型的轉換規 貝1J,所述轉換規則包括與該腳本語言類型相應的動態鏈接庫初始化方法、生成解析器方法、 外部傳遞參數方法、返回值方法。
[0033] 優選的,所述裝置還包括:
[0034] 校驗模塊,用于在解析模塊對動態鏈接庫進行初始化之前,根據所述腳本配置文 件中配置各腳本語言程序包的方法名,與所述腳本程序包中的所有方法名進行比對校驗, 如有方法名錯誤或未找到則提示錯誤報告并退出步驟。
[0035] 具體的,所述解析模塊根據所述轉換規則中記載的動態鏈接庫初始化方法對與該 轉換規則腳本語言類型相應的動態鏈接庫進行初始化;
[0036] 所述植入模塊讀取所述腳本配置文件中記載的所述該腳本語言類型方法名和執 行該方法所需的參數,通過所述轉換規則中的外部傳遞參數方法,將所述方法名和執行該 方法所需的參數植入相應的動態鏈接庫。
[0037] 具體的,當出現新的腳本語言程序包時,所述配置模塊可在腳本配置文件中增加 新的記錄;
[0038] 所述獲取模塊周期性讀取所述腳本配置文件中的信息,可根據實際操作需求設定 應用系統的讀取周期。
[0039] 本發明通過腳本配置文件,將用戶自撰不同腳本語言類型的腳本語言程序在應用 系統中記載,通過預先設定的轉換模型調用應用系統中與各腳本語言類型的動態鏈接庫, 通過動態鏈接庫執行與其相應的腳本語言程序包中的方法,將外部腳本語言程序包內嵌到 應用系統中來,這種方式摒棄了不同腳本語言類型的腳本語言程序包在系統中的差異,系 統直接調用自身的動態鏈接庫,即可完成對外部腳本語言的執行,避免系統經過C程序調 用SHELL腳本,SHELL再指向用戶自編程序包復雜的調用過程,在不改變使用者編寫習慣的 同時提高了應用系統對外部腳本語言包的處理能力;應用系統通過自身動態鏈接庫執行解 析好的腳本語言程序包,不用占用系統內部資源去直接執行外部腳本語言程序包,節約了 應用系統寶貴的資源;同時還可在腳本配置文件中設定各語言程序包中本次需要執行的方 法名,不用將腳本配置文件中所有的方法執行一遍,提高了效率的同時也增強了應用系統 對外部腳本運行的可控性,使用者能清楚獲知本次執行的方法名稱、數量等,進而提高應用 系統對自撰腳本語言程序包的可執行性。
【專利附圖】
【附圖說明】
[0040] 圖1為本發明實施例 種應用系統內嵌腳本的方法流程圖;
[0041] 圖2為本發明實施例二的方法流程圖;
[0042]圖3為本發明實施例三一種應用系統內嵌腳本的裝置結構示意圖;
【具體實施方式】
[0043] 以下將配合圖式及實施例來詳細說明本發明的實施方式,藉此對本發明如何應用 技術手段來解決技術問題并達成技術功效的實現過程能充分理解并據以實施。
[0044] 在現有的大型應用系統中,由于接入系統的不同廠家設備多樣化,業務的復雜化, 為了方便用戶根據自身業務特點靈活的實現不同的業務邏輯,很多廠家都開放了可供用戶 調用的接口,用戶可根據各自的業務邏輯運用其熟悉的編程語言撰寫腳本,來實現業務邏 輯,這些腳本語言程序包即稱為外部腳本。本發明的關鍵點在于,將這些不同編程語言撰 寫的腳本語言程序包通過預先配置、應用系統讀取并解析、加載執行的方式完成應用系統 內嵌腳本的過程,腳本語言程序包完成內嵌后,應用系統調用其自身的動態鏈接庫對其進 行執行,占用較少的系統資源,且在執行過程中不用通過多種語言層層調用的方式,安全迅 速,提高了系統執行腳本語言程序包的效率和可控性。
[0045] 如圖1所示,本發明實施例一公開一種應用系統內嵌腳本的方法,包括以下步驟。 [0046] 步驟S101 :根據已編寫好的外部各腳本語言程序包在所述應用系統中配置預先 設定的腳本配置文件,以及為每種腳本語言類型配置相應的轉換模型。
[0047] 預先設定的腳本配置文件是用來描述在應用系統中內嵌腳本語言程序包的文件, 通過腳本配置文件,相當于把將要內嵌在應用系統中的腳本語言程序包的一些信息通知給 應用系統。
[0048] 在所述腳本配置文件中配置各腳本語言程序包的編寫語言類型、存放路徑、方法 名和執行該方法所需的參數,將每個腳本語言程序包的信息配置為一條記錄,當有新的腳 本語言程序包需要內嵌時,只需要在腳本配置文件中增加一條記錄即可。
[0049] 為每種腳本語言類型配置相應的轉換模型,由于不同腳本語言類型的編程語法、 方法名、參數等都不相同,因此需要為每種腳本語言類型設置轉換模型,以便應用系統能夠 為不同的腳本語言類型配置與其相應的動態鏈接庫。
[0050] 在每個轉換模型中配置一種腳本語言類型的轉換規則,所述轉換規則包括與該腳 本語言類型相應的動態鏈接庫初始化方法、生成解析器方法、外部傳遞參數方法、返回值方 法。
[0051] 如果出現了新的腳本語言類型,只需要為新的腳本語言類型設置相應的轉換模型 即可完成轉換。
[0052] 步驟S102 :所述應用系統加載所述腳本配置文件,根據所述腳本配置文件中的配 置信息,獲取各腳本語言程序包的存放路徑,并在所述應用系統內部獲取與所述各腳本語 言類型相應的動態鏈接庫。
[0053] 腳本配置文件中的配置信息,主要包含腳本語言程序包的腳本語言類型、腳本語 言程序包的存放路徑、本次需要執行的腳本語言程序包中的方法名稱(簡稱方法名)、以及 執行這些方法所需要用到的參數名稱(簡稱參數)。
[0054] 現在常用的腳本語言包括perl、python、lua、shell等。
[0055] 在腳本配置文件配置好后,應用系統加載腳本配置文件,即可獲得其中包含的信 息,包括腳本語言程序包的編寫語言類型、各腳本語言包的存放路徑、本次需要執行的方法 名、以及執行方法所需的參數信息等。
[0056] 動態鏈接庫英文為DLL,是DynamicLinkLibrary的縮寫形式,是一個包含可由多 個程序同時使用的代碼和數據的庫。動態鏈接提供了一種方法,使進程可以調用不屬于其 可執行代碼的函數。是一個包含可由多個程序同時使用的代碼和數據的庫。
[0057] 在應用系統中,對于現有技術中常用的這些腳本語言類型,均有與其對應的動態 鏈接庫,如perl動態鏈接庫、shell動態鏈接庫、python動態鏈接庫、lua動態鏈接庫,這些 動態鏈接庫中包含著與腳本語言類型方法對應的函數。
[0058] 步驟S103 :根據所述各轉換模型,對與轉換模型相同腳本語言類型的動態鏈接庫 完成初始化后,所述各動態鏈接庫按照所述各腳本語言程序包的存放路徑找到與其對應的 腳本語言程序包,并對所述腳本語言程序包進行解析。
[0059] 對動態鏈接庫完成初始化的過程,即為該動態鏈接庫生成解析器,按照與動態鏈 接庫相同腳本語言類型的轉換模型中描述的初始化方法、生成解析器方法,完成生成解析 器的工作。動態鏈接庫按照腳本配置文件中所示的各腳本語言程序包的存放路徑,找到與 其對應的腳本語言程序包,解析器根據動態鏈接庫中記載的該腳本語言類型方法對應的函 數,對腳本語言程序包中的各個方法進行解析,其解析的過程就是翻譯的過程,將腳本語言 程序包中的各個方法按照動態鏈接庫中對應的函數,翻譯成應用系統可識別的方法。
[0060] 步驟S104:根據所述各轉換模型和所述腳本配置文件中的配置信息,在所述各動 態鏈接庫中植入與其相應的方法名和參數。
[0061] 在腳本配置文件中的配置信息里,記載了執行腳本語言程序包中的方法名以及執 行該方法名所需要的參數,根據轉換模型中記載的外部傳遞參數方法將這些信息植入到動 態鏈接中,以便應用系統調用動態鏈接庫執行相應方法。
[0062] 步驟S105:所述應用系統調用所述動態鏈接庫,執行所述動態鏈接庫中植入的方 法名和參數,返回執行結果。
[0063]應用系統調用動態鏈接庫,執行動態鏈接庫中植入的方法名和參數,根據轉換模 型中設置的返回值的方法,返回執行結果。
[0064]本發明通過系統調用自身內部的動態鏈接庫執行用戶自撰腳本語言程序包,省去 了現有技術中通過C程序調用SHELL腳本語言,然后再通過SHELL語言指向其他語言程序 包的復雜調用過程,使應用系統省去了多語言的混亂調用;通過動態鏈接庫執行內嵌腳本 語言程序包的方式提高了系統的處理性能;執行動態鏈接庫中植入的方法名和參數,提高 了對腳本語言程序包的運行過程可控性。
[0065]為進一步提高應用系統執行效率和準確率,節約系統資源,特給出本發明的實施 例二,以具體的perl語言程序包pm說明其內嵌的過程,如圖2所示,包括步驟:
[0066] 步驟S201 :根據已編寫好的外部各腳本語言程序包在所述應用系統中配置預先 設定的腳本配置文件,以及為每種腳本語言類型配置相應的轉換模型。
[0067]下述為腳本配置文件模板實例,腳本配置文件可以.Xml文件形式存在,也可以應 用系統可識別的其他形式存在。
[0068]
【權利要求】
1. 一種應用系統內嵌腳本的方法,其特征在于,所述方法包括: 根據已編寫好的外部各腳本語言程序包在所述應用系統中配置預先設定的腳本配置 文件,以及為每種腳本語言類型配置相應的轉換模型; 所述應用系統加載所述腳本配置文件,根據所述腳本配置文件中的配置信息,獲取各 腳本語言程序包的存放路徑,并在所述應用系統內部獲取與所述各腳本語言類型相應的動 態鏈接庫; 根據所述各轉換模型,對與轉換模型相同腳本語言類型的動態鏈接庫完成初始化后, 所述各動態鏈接庫按照所述各腳本語言程序包的存放路徑找到與其對應的腳本語言程序 包,并對所述腳本語言程序包進行解析; 根據所述各轉換模型和所述腳本配置文件中的配置信息,在所述各動態鏈接庫中植入 與其相應的方法名和參數; 所述應用系統調用所述動態鏈接庫,執行所述動態鏈接庫中植入的方法名和參數,返 回執行結果。
2. 根據權利要求1所述的方法,其特征在于,在所述通用語言動態鏈接庫執行所述解 析后的與其對應的腳本語言程序包后,所述方法還包括: 清除所述動態鏈接庫本次解析的內容,釋放其所占系統資源。
3. 根據權利要求1所述的方法,其特征在于,所述配置預先設定的腳本配置文件的方 法具體為: 在所述腳本配置文件中配置各腳本語言程序包的編寫語言類型、存放路徑、方法名和 執行該方法所需的參數,將每個腳本語言程序包的信息配置為一條記錄。
4. 根據權利要求1-3中任一所述的方法,其特征在于: 在每個所述轉換模型中配置一種腳本語言類型的轉換規則,所述轉換規則包括與該腳 本語言類型相應的動態鏈接庫初始化方法、生成解析器方法、外部傳遞參數方法、返回值方 法。
5. 根據權利要求4之一所述的方法,其特征在于,在所述動態鏈接庫初始化之前,所述 方法還包括: 根據所述腳本配置文件中配置各腳本語言程序包的方法名,與所述腳本程序包中的所 有方法名進行比對校驗,如有方法名錯誤或未找到則提示錯誤報告并退出步驟。
6. 根據權利要求5所述的方法,其特征在于: 根據所述轉換規則中記載的動態鏈接庫初始化方法對與該轉換規則腳本語言類型相 應的動態鏈接庫進行初始化; 讀取所述腳本配置文件中記載的所述該腳本語言類型方法名和執行該方法所需的參 數,通過所述轉換規則中的外部傳遞參數方法,將所述方法名和執行該方法所需的參數植 入相應的動態鏈接庫。
7. 根據權利要求5所述的方法,其特征在于: 所述腳本語言類型包括PERL語言、SHELL語言、PYTHON語言、LUA語言; 在所述應用系統內部獲取與所述各腳本語言類型相應的動態鏈接庫。
8. 根據權利要求6所述的方法,其特征在于: 當出現新的腳本語言程序包時,可在腳本配置文件中增加新的記錄,所述應用系統周 期性讀取所述腳本配置文件中的信息,可根據實際操作需求設定應用系統的讀取周期。
9. 一種應用系統內嵌腳本的裝置,其特征在于,所述裝置包括: 配置模塊,用于根據已編寫好的外部各腳本語言程序包在應用系統中預置腳本配置文 件,以及為每種腳本語言類型配置相應的轉換模型; 獲取模塊,用于加載所述配置模塊預置的腳本配置文件,根據所述腳本配置文件中的 配置信息,獲取各腳本語言程序包的存放路徑,并在所述應用系統內部獲取與所述各腳本 語言類型相應的動態鏈接庫; 解析模塊,用于根據所述配置模塊配置的轉換模型,對所述獲取模塊獲取的與轉換模 型相同腳本語言類型的動態鏈接庫完成初始化后,所述各動態鏈接庫按照所述各腳本語言 程序包的存放路徑找到與其對應的腳本語言程序包,并對所述腳本語言程序包進行解析; 植入模塊,用于根據所述配置模塊配置的轉換模型和所述腳本配置文件中的配置信 息,在所述解析模塊中對腳本語言程序包進行解析后的動態鏈接庫中植入與其相應的方法 名和參數; 執行模塊,用于調用所述解析模塊中的動態鏈接庫,執行植入模塊在所述動態鏈接庫 中植入的方法名和參數。
10. 根據權利要求9所述的裝置,其特征在于,所述裝置還包括: 資源釋放模塊,用于在執行模塊執行完成后,清除所述解析模塊中本次解析的內容。
11. 根據權利要求10所述的裝置,其特征在于: 所述配置模塊在所述腳本配置文件中配置各腳本語言程序包的編寫語言類型、存放路 徑、方法名和執行該方法所需的參數,將每個腳本語言程序包的信息配置為一條記錄。
12. 據權利要求9-11中任一所述的裝置,其特征在于: 所述配置模塊在每個所述轉換模型中配置一種腳本語言類型的轉換規則,所述轉換規 則包括與該腳本語言類型相應的動態鏈接庫初始化方法、生成解析器方法、外部傳遞參數 方法、返回值方法。
13. 根據權利要求12所述的裝置,其特征在于,所述裝置還包括: 校驗模塊,用于在解析模塊對動態鏈接庫進行初始化之前,根據所述腳本配置文件中 配置各腳本語言程序包的方法名,與所述腳本程序包中的所有方法名進行比對校驗,如有 方法名錯誤或未找到則提示錯誤報告并退出步驟。
14. 根據權利要求13所述的裝置,其特征在于: 所述解析模塊根據所述轉換規則中記載的動態鏈接庫初始化方法對與該轉換規則腳 本語言類型相應的動態鏈接庫進行初始化; 所述植入模塊讀取所述腳本配置文件中記載的所述該腳本語言類型方法名和執行該 方法所需的參數,通過所述轉換規則中的外部傳遞參數方法,將所述方法名和執行該方法 所需的參數植入相應的動態鏈接庫。
15. 根據權利要求14所述的裝置,其特征在于: 當出現新的腳本語言程序包時,所述配置模塊可在腳本配置文件中增加新的記錄; 所述獲取模塊周期性讀取所述腳本配置文件中的信息,可根據實際操作需求設定應用 系統的讀取周期。
【文檔編號】G06F9/445GK104423986SQ201310390995
【公開日】2015年3月18日 申請日期:2013年9月2日 優先權日:2013年9月2日
【發明者】陳丹, 張濤, 張彥文 申請人:北京億陽信通科技有限公司, 億陽信通股份有限公司