本發明涉及文件接口開發領域,尤其涉及一種文件接口系統。
背景技術:
現有的文件接口系統,其文件接口調度策略都是由crontab管理,具有以下缺點:
1、每當遇到一級客服文件接口需求時,開發人員都需要重新編寫相同的代碼,復用率低;
2、文件接口調度策略由crontab管理,導致crontab配置文件過多十分混亂,且執行順序容易出錯;
3、操作日志存儲混亂,不利于監控,缺乏統一的管理方案;
4、文件接口沒有統一的技術規范,接口程序技術架構混亂,上線后維護困難。
技術實現要素:
本發明所要解決的技術問題是針對現有技術的不足,提供一種文件接口系統。
本發明解決上述技術問題的技術方案如下:
一種文件接口系統,包括主函數模塊和函數庫,其中:
所述主函數模塊用于獲取接口編號,根據所述接口編號從接口參數配置表中讀取需要調用的函數庫名和執行步驟,并根據所述函數庫名加載相應的函數庫;
所述函數庫用于存儲封裝過的功能模塊,并根據所述執行步驟執行相應的功能模塊。
本發明的有益效果是:本發明提供的一種文件接口系統,包括主函數模塊和函數庫,并通過主函數模塊獲取接口編號,根據接口編號從接口參數配置表中讀取需要調用的函數庫名和執行步驟,并根據函數庫名加載相應的函數庫,調用函數庫中存儲的功能模塊,實現不同的文件接口功能,該系統具有以下優點:
當遇到一級客服文件接口需求時,開發人員不需要重新編寫相同的代碼,代碼復用率高;
解決文件接口調度策略由crontab來管理,導致crontab配置文件過多十分混亂,且執行順序容易出錯的問題,將調度策略改為可配置,可以動態靈活按配置步驟順序執行;
文件接口技術規范統一,維護人員僅需掌握sqlplus、sqlldr工具使用方式就可以達到維護的目的,維護方便。
在上述技術方案的基礎上,本發明還可以做如下改進。
進一步地,所述功能模塊包括:
采集模塊,用于采集客服數據,并將所述客服數據寫入接口表。
進一步地,所述功能模塊還包括:
生成模塊,用于從所述接口表中讀取所述客服數據,并從所述接口參數配置表中讀取文件命名規則,將所述接口表中的客服數據按所述文件命名規則生成客服文件,并將所述客服文件存儲到文件目錄下。
進一步地,所述功能模塊還包括:
傳輸模塊,用于傳輸所述客服文件。
進一步地,所述傳輸模塊包括:
上傳單元,用于將所述客服文件上傳到上級服務器;
下載單元,用于將所述上級服務器中的文件下載到本地服務器。
進一步地,所述功能模塊還包括:
掃描入庫模塊,用于掃描所述客服文件,判斷是否存在符合所述文件命名規則的客服文件,并將所述客服文件中的客服數據寫入實體表中。
進一步地,所述掃描入庫模塊包括:
掃描單元,用于掃描文件目錄下是否存在符合所述文件命名規則的客服文件,如果不存在則發出警告信息;
入庫單元,用于當文件目錄下存在符合所述文件命名規則的客服文件時,判斷所述客服文件是否配置了入庫前存儲過程,如果配置了,則調用所述入庫前存儲過程,對所述接口表進行清理或初始化,并將所述客服文件導入到所述接口表中,并判斷所述客服文件是否配置了入庫后存儲過程,如果配置了,則輸出所述接口表中的客服文件到實體表。
進一步地,所述功能模塊還包括:
后臺程序啟動模塊,用于獲取需要執行的后臺程序,并直接啟動所述后臺程序。
進一步地,所述功能模塊還用于當所述函數庫在根據所述執行步驟執行相應的功能模塊時,自動生成相應功能模塊的操作日志,并存儲在數據庫日志表中。
采用上述進一步方案的有益效果是:解決日志存儲混亂的不利于監控的問題,將程序執行結果輸出到數據庫或文件服務器,輸出成統一格式的日志,便于根據執行結果添加監控和告警。
進一步地,所述主函數模塊和所述功能模塊均為shell腳本。
進一步地,所述功能模塊可以根據需求進行增加或刪除。
進一步地,所述函數庫名為函數庫的版本,所述函數庫的版本不同,其庫內的功能模塊數量和類型也可以不同。
本發明附加的方面的優點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發明實踐了解到。
附圖說明
圖1為本發明實施例提供的一種文件接口系統的結構框架圖。
具體實施方式
以下結合附圖對本發明的原理和特征進行描述,所舉實例只用于解釋本發明,并非用于限定本發明的范圍。
如圖1所示,為本發明實施例提供的一種文件接口系統的結構框架圖,該系統包括主函數模塊110和函數庫120,其中:
主函數模塊110用于獲取接口編號,根據接口編號從接口參數配置表中讀取需要調用的函數庫名和執行步驟,并根據函數庫名加載相應的函數庫120,其中,接口編號是接口的唯一標識,在待接入接口的程序啟動時傳入,函數庫名就是接口編號所對應的文件接口所要加載的函數庫120的版本信息,執行步驟就是接口編號所對應的文件接口要執行的功能模塊的步驟;
函數庫120用于存儲封裝過的功能模塊,并根據執行步驟執行相應的功能模塊,開發者需要將公共代碼封裝成shell腳本函數庫120,并將shell腳本函數庫120以腳本文件的形式上傳至服務器,然后將函數庫名寫入接口參數配置表與接口編號對應的字段。
例如,當接口編號為0001時,執行步驟op_step的字段值為4,1,2,3,主函數讀取需要調用的模塊為生成模塊、掃描入庫模塊和傳輸模塊,所需要執行的順序為:
開始→上傳/下載→掃描文件→解析入庫→生成文件→結束。
上述調用的模塊和需要執行的步驟可以根據實際需求自由配置,其執行的模塊順序和數量、執行的功能順序和數量沒有固定地限制。
上述實施例提供的一種文件接口系統,包括主函數模塊110和函數庫120,并通過主函數模塊110獲取接口編號,根據接口編號從接口參數配置表中讀取需要調用的函數庫名和執行步驟,并根據函數庫名加載相應的函數庫120,調用函數庫120中存儲的功能模塊,實現不同的文件接口功能,該系統具有以下優點:
當遇到一級客服文件接口需求時,開發人員不需要重新編寫相同的代碼,代碼復用率高;
解決文件接口調度策略由crontab來管理,導致crontab配置文件過多十分混亂,且執行順序容易出錯的問題,將調度策略改為可配置,可以動態靈活按配置步驟順序執行;
文件接口技術規范統一,維護人員僅需掌握sqlplus、sqlldr工具使用方式就可以達到維護的目的,維護方便。
進一步,功能模塊具體包括:
采集模塊121,用于通過sql腳本采集客服數據,并將客服數據寫入接口表,其中,sql腳本為業務模塊,由開發者預先寫好。
采集模塊121需要從接口參數配置表中讀取以下數據:
接口編號:接口的唯一標識,在待接入接口的程序啟動時傳入;
文件命名規則:客服文件的文件命名規則;
文件名:客服文件的文件名格式;
文件類型:根據文件類型生成不同的文件頭和文件名后綴;
接口表:存儲采集到的客服數據;
文件內容分隔符:內容分隔符,通常情況下分隔符為‘|’;
文件頭檢驗規則:檢測文件頭是否存在;
校驗文件檢驗規則:檢測校驗文件是否存在;
文件命名規則檢驗規則:檢測文件命名規則是否正確;
采集數據用存儲過程:主函數模塊110要調用采集數據用存儲過程來采集客服數據,將采集好的客服數據寫入到接口表中。
生成模塊122,用于從接口表中讀取客服數據,客服數據可以為采集模塊121采集到的數據,或預存于接口表中的數據,并從接口參數配置表中讀取文件命名規則,通過sqlplus腳本將接口表中的客服數據按文件命名規則生成客服文件,并將客服文件存儲到磁盤文件的文件目錄下,其中,sqlplus腳本為業務模塊,由開發者預先寫好。
傳輸模塊123,用于通過ftp腳本傳輸客服文件,其中,ftp腳本為業務模塊,由開發者預先寫好,傳輸模塊123具體包括:
上傳單元,用于將客服文件上傳到上級服務器;
下載單元,用于將上級服務器中的文件下載到本地服務器。
傳輸模塊123還需要從接口參數配置表中讀取以下數據:
ip地址、端口號:遠程要訪問的上級服務器的主機ip地址和端口號;
登錄用戶名、密碼:上級服務器的主機的登錄用戶名和密碼;
遠程路徑:上級服務器的主機存放文件的路徑和位置;
本地路徑:本地服務器的主機存放文件的路徑和位置;
操作類型:上傳或下載。
掃描入庫模塊124,用于掃描客服文件,判斷是否存在符合文件命名規則的客服文件,并將客服文件中的客服數據寫入實體表中,掃描入庫模塊124具體包括:
掃描單元,用于掃描文件目錄下是否存在符合文件命名規則的客服文件,如果不存在則發出警告信息;
入庫單元,用于當文件目錄下存在符合文件命名規則的客服文件時,判斷客服文件是否配置了入庫前存儲過程,如果配置了,則調用入庫前存儲過程,對接口表進行清理或初始化,并調用sqlldr腳本將客服文件導入到接口表中,并判斷客服文件是否配置了入庫后存儲過程,如果配置了,則輸出接口表中的客服文件到實體表。
掃描入庫模塊124還需要從接口參數配置表中讀取以下數據:
掃描文件告警短息發送規則:當客服文件不存在時,判斷是否需要下發告警短信;
控制文件:將客服文件導入到接口表時要用到的sqlldr腳本;
入庫前存儲過程:該字段是存儲過程名,如果該字段配置了相應的存儲過程名,則客服文件導入到接口表之前,主函數模塊110會調用此存儲過程來完成初始化的動作;
入庫后存儲過程:該字段是存儲過程名,如果該字段配置了相應的存儲過程名,則在客服文件導入到接口表時,主函數模塊110會調用此存儲過程來執行導入操作。
后臺程序啟動模塊125,用于獲取需要執行的后臺程序,并通過主函數模塊110調用shell腳本直接啟動后臺程序。
后臺程序啟動模塊125還需要從接口參數配置表中讀取以下數據:
后臺程序名:主函數模塊110啟動時后臺程序的文件名。
進一步,功能模塊還用于當函數庫120在根據執行步驟執行相應的功能模塊時,自動生成相應功能模塊的操作日志,并存儲在數據庫日志表中。
進一步,主函數模塊110和功能模塊均為shell腳本。
進一步,功能模塊可以根據需求進行增加或刪除,例如,還可以增加監控檢測模塊,用于對文件接口系統的故障進行監控和監測,并及時反饋故障。
進一步,函數庫名為函數庫120的版本,函數庫120的版本不同,其庫內的功能模塊數量和類型也可以不同,例如,當函數庫名為函數庫2.0時,其功能模塊可以包括采集模塊121、生成模塊122和傳輸模塊123;當函數庫名為函數庫3.0時,其功能模塊可以包括采集模塊121、生成模塊122、傳輸模塊123、掃描入庫模塊124和后臺程序啟動模塊125。
本申請提供的另一種實施例如下:
以調用采集模塊的功能為例,對本發明進行進一步的解釋與說明。
啟動主函數模塊,初始化文件接口系統,加載系統初始化的配置參數;
獲取配置參數中的接口編號,根據接口編號從接口參數配置表中讀取需要調用的函數庫名和執行步驟,執行步驟為只執行采集模塊;
根據函數庫名加載函數庫,調用采集模塊;
根據接口編號查找采集數據需要用的采集數據用存儲過程;
根據采集數據用存儲過程,將統計、分析后形成的客服數據按照文件內容分隔符寫入到接口表中,例如,接口表中的數據可以為1|02|20160909|001001|03|02|01…..;
將采集數據的操作日志記錄到數據庫日志表中。
本申請提供的另一種實施例如下:
以調用生成模塊的功能為例,對本發明進行進一步的解釋與說明。
啟動主函數模塊,初始化文件接口系統,加載系統初始化的配置參數;
獲取配置參數中的接口編號,根據接口編號從接口參數配置表中讀取需要調用的函數庫名和執行步驟,執行步驟為只執行生成模塊;
根據函數庫名加載函數庫,調用生成模塊;
根據接口編號從接口參數配置表中調用接口表、文件命名規則和sqlplus腳本;
通過sqlplus腳本將接口表中的客服數據按文件命名規則生成客服文件;
將客服文件存儲到磁盤文件的文件目錄下;
將生成模塊的操作日志記錄到數據庫日志表中。
本申請提供的另一種實施例如下:
以調用傳輸模塊的功能為例,對本發明進行進一步的解釋與說明。
啟動主函數模塊,初始化文件接口系統,加載系統初始化的配置參數;
獲取配置參數中的接口編號,根據接口編號從接口參數配置表中讀取需要調用的函數庫名和執行步驟,執行步驟為只執行傳輸模塊;
根據函數庫名加載函數庫,調用傳輸模塊;
讀取接口文件配置表中的操作類型,如果是上傳操作,則執行上傳單元,根據ip地址和端口號訪問上級服務器,按照遠程路徑上傳客服文件;
如果是下載操作,則執行下載單元,根據ip地址和端口號訪問上級服務器,根據登錄用戶名和密碼登錄上級服務器中的主機,從主機中獲取需要下載的文件,將文件按照本地路徑存儲到本地服務器中;
將傳輸模塊的操作日志記錄到數據庫日志表中。
本申請提供的另一種實施例如下:
以調用掃描入庫模塊的功能為例,對本發明進行進一步的解釋與說明。
啟動主函數模塊,初始化文件接口系統,加載系統初始化的配置參數;
獲取配置參數中的接口編號,根據接口編號從接口參數配置表中讀取需要調用的函數庫名和執行步驟,執行步驟為只執行掃描入庫模塊;
根據函數庫名加載函數庫,調用掃描入庫模塊;
掃描文件目錄下是否存在符合文件命名規則的文件;
如果不存在,根據掃描文件告警短息發送規則判斷是否需要下發告警短信,如果需要下發告警短信,則根據接口編號和預留號碼下發告警短信;
如果存在則繼續執行入庫單元;
根據文件命名規則判斷客服文件是否存在,如果存在且客服文件配置了入庫前存儲過程,則調用入庫前存儲過程,對接口表進行清理或初始化;
調用sqlldr腳本將客服文件導入到接口表中;
如果配置了入庫后存儲過程,則輸出接口表中的客服文件到實體表;
將掃描入庫模塊的操作日志記錄到數據庫日志表中。
本申請提供的另一種實施例如下:
以調用后臺程序啟動模塊的功能為例,對本發明進行進一步的解釋與說明,需事先將需要執行的后臺程序上傳到指定目錄下,指定目錄由開發人員事先定義;
啟動主函數模塊,初始化文件接口系統,加載系統初始化的配置參數;
獲取配置參數中的接口編號,根據接口編號從接口參數配置表中讀取需要調用的函數庫名和執行步驟,執行步驟為只執行后臺程序啟動模塊;
根據函數庫名加載函數庫,調用后臺程序啟動模塊;
讀取接口參數配置表中的start_backrun字段;
根據start_backrun字段獲取需要執行的后臺程序名;
通過shell腳本直接啟動后臺程序;
將后臺程序啟動模塊的操作日志記錄到數據庫日志表中。
在本申請所提供的幾個實施例中,應該理解到,所揭露的系統和方法,可以通過其它的方式實現。例如,以上所描述的系統實施例僅僅是示意性的,例如,模塊的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個模塊或組件可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另外,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口、裝置或模塊的間接耦合或通信連接,也可以是電的,機械的或其它的形式連接。
以上所述僅為本發明的較佳實施例,并不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。