指令前端系統及相應的指令前端交互方法【專利摘要】本發明涉及計算機指令前端交互領域,提供了一種指令前端系統以及相應的指令前端交互方法,所述指令前端系統利用JavaScript腳本語言實現,采用多窗口框架,所述多窗口框架包括工具欄、窗口欄以及狀態欄。本發明完全采用網頁腳本語言JavaScript編寫了指令前端系統,具備比較好的瀏覽器兼容性,可運行在各主流瀏覽器中,且對操作系統沒有限制和要求,提高了用戶的使用便利性和用戶體驗;同時,該系統實現了對于主機系統的兩種主要指令類型,即普通命令行交互式指令和全屏填空式指令的完全支持。本系統作為民航CRS、ICS、DCS主機的指令交互終端,可以完全支持民航機票分銷業務、航空公司航班控制和離港業務;并可以適用于以指令交互為主要作業模式的其他行業,例如銀行業、保險業、證券業等。【專利說明】指令前端系統及相應的指令前端交互方法【
技術領域:
】[0001]本發明涉及計算機指令前端交互領域,提供了一種指令前端系統以及相應的指令前端交互方法。【
背景技術:
】[0002]在民航業中,機票分銷代理人常常使用eTerm軟件進行機票的訂票和出票,該軟件即為C/S結構的指令前端系統,代理人通過該前端系統可處理機票分銷業務,但是要使用該軟件,必須預先在代理人的電腦上安裝軟件應用程序,這種預先安裝才能使用的客戶端軟件不便于業務的移動辦理,因而引發了B/S結構的指令前端系統的研發,在網頁瀏覽器中模擬eTerm的指令交互行為,以便代理人快速使用和移動辦公。但是當前這種網頁版的指令前端系統,大多數是采用ActiveX控件的實現形式,只能運行在InternetExplorer內核的瀏覽器中,不能兼容其他類型的瀏覽器,且因InternetExplorer瀏覽器版本的不同和Windows操作系統版本的不同,也會出現各種不能使用的問題;還有部分指令前端系統也采用了輕量級的腳本語言編寫實現,提高了瀏覽器兼容性,但只是從局部模仿了eTerm的行為或者僅僅是訂票的輔助工具,只是支持主機系統的部分指令類型,不能完成所有的訂票工作,也沒有保持eTerm用戶的使用習慣。【
發明內容】[0003]為了克服現有技術的不足,本發明提供了具備較好的兼容性、結構小巧的指令前端系統及相應的指令前端交互方法。[0004]本發明提供的指令前端系統,所述指令前端系統利用JavaScript腳本語言實現,采用多窗口框架,所述多窗口框架包括工具欄、窗口欄以及狀態欄;所述工具欄為指令前端系統快捷操作按鈕的安置面板,包括系統快捷按鈕:橫向分屏按鈕、豎向分屏按鈕、新建窗口按鈕、指令提示開關按鈕、增強顯示開關按鈕、輸入指令提示符按鈕、提交指令按鈕和/或批量導入指令行按鈕,并支持將常用指令集制作成自定義快捷按鈕;所述窗口欄為窗口控件的容器,允許多個窗口控件并存,允許新建和/或刪除窗口控件,并在多個窗口控件之間自由切換,所述窗口控件為指令輸入的編輯區和執行結果的展示區,并根據指令類型自動選擇普通模式控件或全屏模式控件作為執行結果展示的渲染引擎;所述狀態欄為指令前端系統狀態信息的提示面板,包括:窗口是否允許輸入、主機執行時間、網絡傳輸時間、用戶剩余指令流量。[0005]進一步地,其中:所述普通模式控件為主機命令行交互式指令的控制和渲染引擎,支持命令行式的交互指令,支持純文本數據的展示;所述全屏模式控件為主機全屏填空式指令的控制和渲染引擎,支持全屏填空式的指令交互行為,支持結構化數據的展示。[0006]進一步地,其中,所述普通模式控件為窗口控件的一種顯示引擎,當服務器返回普通文本式指令數據時,啟用普通模式控件作為顯示引擎。[0007]進一步地,所述普通模式控件允許在任意位置輸入指令,在執行指令提交操作時,提取光標提示符之前最接近光標提示符的指令或指令集并發送給服務器;普通模式控件對所述服務器返回響應結果的數據進行HTML特殊字符轉義,系統特殊符號轉義。[0008]進一步地,其中,所述全屏模式控件為窗口控件的一種顯示引擎,當服務器返回全屏填空式的指令數據時,啟用全屏模式控件作為顯示引擎。[0009]進一步地,所述全屏模式控件允許在可編輯單元中進行編輯操作,并禁止在非可編輯單元中進行編輯操作。[0010]當指令前端系統工作在普通模式時,支持命令行式的普通交互指令,允許用戶在窗口任意位置輸入指令,可用F12鍵、或者Shift+Enter組合鍵、或者鼠標雙擊等方式提交所輸入的指令,提取光標提示符之前最靠近光標提示符的指令或指令集并發送給服務器。普通模式控件對服務器返回的數據進行HTML特殊字符轉義,系統特殊符號的轉義。前端系統與服務器之間的數據用純文本進行交互。[0011]當指令前端系統工作在全屏模式時,支持全屏填空式的全屏交互指令,允許用戶在可編輯單元中進行編輯操作,并禁止用戶在非可編輯單元中進行編輯操作。用戶可使用鼠標雙擊或指定功能鍵作為提交方式,對編輯的數據單元提交至服務器進行處理。指令前端系統與服務器之間的數據用XML格式文本進行交互。全屏數據被分割成若干數據單元,每個數據單元擁有若干屬性,如是否可編輯、在全屏區域中的行號和列號、是否密碼型數據、是否為占位符等。全屏顯示引擎根據數據單元的行列號將數據單元顯示在全屏區域的特定行列位置;根據編輯屬性設置數據單元是否允許編輯;對密碼型數據不顯示真正文本,以若干星號代替;占位符用指定符號顯示,提示其后的數據單元為可編輯單元。[0012]本發明還提供了與上述指令前端系統對應的指令前端交互方法,包括以下步驟:步驟1,打開包含所述指令前端系統的網頁,所述指令前端系統初始化;步驟2,所述指令前端系統進入普通模式,使用普通模式顯示引擎;步驟3,輸入指令;步驟4,提交指令;步驟5,所述指令前端系統提取光標提示符之前最接近光標提示符的指令,并判斷是單條指令還是多條指令,在發送給服務器之前作指令格式化操作;步驟6,所述指令前端系統將格式化指令發送至服務器并接收服務器的響應結果數據;步驟7,如果服務器返回的是普通數據,則進入步驟2;如果服務器返回的是全屏數據,則進入步驟8;步驟8,所述指令前端系統進入全屏模式,使用全屏模式顯示引擎,解析服務器返回的響應結果數據,生成數據單元并設置數據單元的編輯屬性;步驟9,編輯可編輯的數據單元;步驟10,所述指令前端系統將可編輯數據單元組裝成特定的XML格式數據,進入步驟6。[0013]進一步地,步驟1-10中,關閉網頁,則退出所述指令前端系統。[0014]進一步地,步驟3中,輸入單條指令或者輸入指令集。[0015]進一步地,步驟5中所述指令前端系統提取光標提示符之前最接近光標提示符的指令,進一步包括:步驟5.1,獲取光標標記元素,作為指令文本的結束位置;步驟5.2,獲取光標標記前的指令文本,利用寬度優先策略搜索編輯窗口的子孫元素:步驟5.3,如果指令文本不包含指令提示符,則此次指令提交操作無效;否則,利用指令提示符,對指令文本進行字符串分割;步驟5.4,將分割后的指令文本的最后一項作為提交指令;步驟5.5,對提交指令進行格式化。[0016]進一步地,步驟5.2進一步包括:a)設置指令文本為空,將編輯窗口本身所屬的DIV元素作為根元素;b)寬度優先搜索根元素的子元素;c)如果子元素就是光標標記元素,則進入步驟f;否則,進入步驟d;d)如果子元素是光標標記的父輩元素,則將該子元素作為根元素,進行下一次搜索,進入步驟b;否則,進入步驟e;e)將該子元素包含的文本拼接到指令文本,進入步驟b;f)輸出指令文本。[0017]進一步地,步驟5.5進一步包括:如果提交指令是多行指令,則在每個換行符之后再增加一個換行符;對于每行指令,如果每行指令長度大于80個字符,則按每80個字符一組,用兩個換行符和減號字符進行分離。[0018]進一步地,步驟10中所述特定的XML格式數據包括“XMLData”元素,所述“XMLData”元素的“XmitRow”和“XmitCol”屬性表示光標默認顯示的行列位置或者光標提交時的行列位置;“XMLData”元素由若干個“Object”元素組成,每個“Object”元素表示一個數據單元,其在全屏區域中的位置由“Row”屬性和“Col”屬性確定,“EditNo”屬性表示可編輯單元的編號;“Text”元素為數據單元顯示的文本內容。[0019]進一步地,所述“XMLData”元素的“FulIScreen”屬性表示是否為全屏數據,“EraseScreen”屬性表示是否需要清理屏幕內容;數據單元的“Password”屬性表示本數據單元是否為密碼型數據,“Readonly”屬性表示本數據單元是否僅可讀,“TabStop”表示本數據單元是否為占位符。[0020]本發明完全采用網頁腳本語言JavaScript編寫了指令前端系統,因為各種瀏覽器均支持該腳本語言,所以具備比較好的瀏覽器兼容性,可運行在各主流瀏覽器中,且對操作系統沒有限制和要求,不會強制要求用戶使用特定的瀏覽器和特定的操作系統,極大地提高了用戶的使用便利性和用戶體驗。同時,該系統實現了對于主機系統的兩種主要指令類型,即普通命令行交互式指令和全屏填空式指令的完全支持。本系統作為CRS主機的指令前端,可以完全支持民航分銷代理人的機票分銷業務,作為ICS和DCS主機的指令前端,可以完全支持航空公司的航班控制和離港業務,并可以適用于以指令交互為主要作業模式的其他行業,例如銀行業、保險業、證券業等。【專利附圖】【附圖說明】[0021]圖1所示為本發明指令前端系統架構;圖2所示為本發明指令前端交互流程圖;圖3所示為普通命令行模式的指令提取流程圖;圖4所示為本發明指令前端系統實例應用圖;圖5所示為本發明指令前端系統普通命令行交互指令應用圖;圖6所示為本發明指令前端系統全屏填空式指令應用圖。【具體實施方式】[0022]本發明的指令前端系統由JavaScript腳本語言編寫而成,可隨意嵌入HTML網頁之中。能夠在InternetExplorer、Firefox、Chrome、Opera、Safari等瀏覽器中正常運行,且對操作系統無任何限制;并能夠在智能移動設備的瀏覽器中使用,如裝有Android、IOS或WindowsPhone系統的移動設備。[0023]本系統采用多窗口界面,包括:多窗口框架,工具欄,狀態欄,窗口欄,窗口控件,普通模式控件和全屏模式控件等主要Π部件,如圖1所示。工具欄、窗口欄、狀態欄分別由三個DIV元素自上而下排列而成。工具欄的快捷按鈕由若干button元素組成,自左向右依次排列在工具欄區域當中,如果超過工具欄區域的可見寬度,則自動隱藏,此時系統會在末尾自動添加一個“更多”按鈕,點擊可呼出隱藏的快捷按鈕列表。窗口控件放置于窗口欄的DIV當中,多個窗口控件放置于同一個DIV中,由JavaScript代碼控制其可見性,保持當前激活的窗口控件為可見窗口。狀態欄由若干span元素組成,從左向右依次排列于狀態欄區域中,每個span元素顯示一種狀態。普通模式控件和全屏模式控件根據顯示的數據類型,自動被選擇為窗口的顯示引擎。[0024]與本系統對應的指令前端交互流程如圖2所示,描述如下:步驟1,打開網頁,進入系統;步驟2,系統默認進入普通模式,使用普通模式顯示引擎;步驟3,輸入指令,既可輸入單條指令,也可輸入指令集,(即多條指令,以換行符作為分隔),在提交操作時,會自動提取光標處的指令;步驟4,提交指令,可用F12鍵、或者Shift+Enter組合鍵、或者鼠標雙擊等快捷方式執行提交操作;步驟5,提取光標提示符之前最靠近光標提示符的指令,并判斷是單條指令還是多條指令,在發送給服務器(主機)之前做指令格式規范化操作;步驟6,將指令或數據發送至服務器(主機)并接收服務器(主機)的響應結果數據;步驟7,如果服務器(主機)返回的是普通數據,則進入步驟2;如果服務器(主機)返回的是全屏數據,則進入步驟8;步驟8,進入全屏模式,使用全屏模式顯示引擎,解析服務器(主機)的響應數據,生成數據單元并設置數據單元的編輯屬性。[0025]步驟9,修改全屏數據,根據需要編輯可編輯的數據單元;步驟10,使用鼠標雙擊或全屏指定功能鍵來提交全屏數據,將可編輯數據單元組裝成特定的XML格式數據,進入步驟6;步驟11,任何階段,關閉網頁,退出系統。[0026]本系統的窗口編輯區采用可編輯的DIV元素作為載體,設置其contentEditable屬性為true,即可實現基本的可編輯功能,普通模式下即為此設置。在需要禁止用戶輸入時,設置contentEditable屬性為false,即可實現只讀功能。[0027]本系統工作在普通命令行模式時,支持命令行式的交互指令,允許用戶在窗口任意位置輸入指令,可用F12鍵、或者Shift+Enter組合鍵、或者鼠標雙擊等方式提交所輸入的指令,提取光標提示符之前最靠近光標提示符的指令或指令集并發送給服務器。在可編輯DIV中準確獲取輸入光標的文本位置的方法因瀏覽器不同而不同,本系統采用一種統一的方法,能夠方便快捷地達到這一目的:在光標位置變動時,本系統會在光標處插入一個特殊id的無內容的span元素,作為光標標記,以標示光標的位置,在視覺上此span元素不會造成任何障礙。每當提交指令時,獲取該標記并拼接標記之前的所有元素的文本串,然后根據指令提示符進行分割,獲取最靠近標記的指令或指令集。[0028]普通模式下,指令提取過程如圖3所示,步驟如下:步驟1,獲取光標標記元素,作為指令文本的結束位置;步驟2,獲取光標標記前的指令文本,利用寬度優先策略搜索編輯窗口的子孫元素:1)設置指令文本為空,將編輯窗口本身所屬的DIV元素作為根元素;2)寬度優先搜索根元素的子元素;3)如果子元素就是光標標記元素,則進入6);否則,進入4);4)如果子元素是光標標記的父輩元素,則將該子元素作為根元素,進行下一次搜索,進入2);否則,進入5);5)將該子元素包含的文本拼接到指令文本,進入2);6)輸出指令文本,結束。[0029]步驟3,如果指令文本不包含指令提示符,則此次指令提交操作無效;否則,利用指令提示符,對指令文本進行字符串分割;步驟4,將分割后的指令文本的最后一項作為提交指令;步驟5,對提交指令進行規范化。如果提交指令是多行指令(即有換行符相分隔的字符串),則在每個換行符之后再增加一個換行符(主機系統的多行指令用兩個換行符分離)。對于每行指令,如果指令長度大于80個字符,則按每80個字符一組,用兩個換行符和減號字符(即進行分離(主機系統支持單行指令最多不超過80個字符,如果超過80個字符,則需要分割成兩行指令,并在第二行指令的首部用減號字符標注其為第一行指令的延續)。[0030]本系統工作在全屏模式時,支持填空式的交互指令,允許用戶在可編輯單元中進行編輯操作,并禁止編輯非可編輯單元。此時,窗口所屬的DIV元素的contentEditable屬性被設置成false,窗口整體上屬于只讀狀態。而可編輯單元由類型為text的input元素組成,非可編輯單元由span元素組成,這樣就實現了數據單元的可編輯與否的自然分離。[0031]全屏模式時,前端系統與主機采用XML格式進行數據交互,格式如下:<XMLDataFullScreen=〃l〃EraseScreen=〃l〃XmitRow=〃0〃XmitCol=〃0〃>〈ObjectRow="l〃Col="l"EditNo="l"Readonly="。"Password="。"〉<Text>Textl</Text>〈/Object〉〈ObjectRow=〃l〃Col=〃5〃Readonly=〃l〃TabStop=〃0〃Password=〃0〃><Text>Text2</Text>〈/Object〉〈/XMLData>其中,“XMLData”元素的“FullScreen”屬性表示是否為全屏數據,“EraseScreen”屬性表示是否需要清理屏幕內容,“XmitRow”和“XmitCol”屬性表示光標默認顯示的行列位置或者光標提交時的行列位置,“XMLData”元素由若干個“Object”元素組成;每個“Object”元素表示一個數據單元,其在全屏區域中的位置由“Row”屬性(行號)和“Col”屬性(列號)確定,“EditNo”屬性表示可編輯單元的編號,“Password”屬性表示本數據單元是否為密碼型數據(如果是,則用星號代替顯示),“Readonly”屬性表示本數據單元是否僅可讀(如果否,則表示可編輯),“TabStop”表示本數據單元是否為占位符(如果是,則本數據單元用一個特殊符號(如圓點)顯示,提示其后的數據單元為可編輯單元);“Text”元素為數據單元顯示的文本內容。前端系統向主機提交全屏數據時,“XMLData”元素的屬性可只填寫“XmitRow”和“XmitCol”,表示提交時光標所在的行列位置;只將具有“EditNo”屬性的數據單元進行組裝,忽略只讀數據單元,可減少網絡數據流量;數據單元(即“Object”元素)的屬性可只填寫“Row”、“CoI”和“EditNo”,其他屬性可忽略。[0032]根據本發明的指令前端系統,在民航業的實際應用如圖4、圖5、圖6所示。用戶訂票的典型處理過程包括如下步驟:步驟1,用戶打開含有本系統的網頁,本系統即完成初始化;步驟2,輸入$$0PENTIPC3指令,進入中國民航CRS系統;執行SI指令,輸入工作號和密碼,進行身份驗證;步驟3,輸入航班查詢指令如AV,選擇目的航班;步驟4,輸入乘客相關信息,并輸入@指令提交PNR信息;步驟5,輸入票價計算相關指令,支付票價;步驟6,提取已經訂立的PNR,輸入etdz指令,實現出票;步驟7,輸入SO指令,退出CRS系統;步驟8,關閉網頁,可退出本系統。[0033]以上所述僅是本發明的優選實施方式,應當指出,對于本【
技術領域:
】的普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發明的保護范圍。【權利要求】1.一種指令前端系統,所述指令前端系統利用JavaScript腳本語言實現,采用多窗口框架,所述多窗口框架包括工具欄、窗口欄以及狀態欄,其特征在于:所述工具欄為指令前端系統快捷操作按鈕的安置面板,包括系統快捷按鈕:橫向分屏按鈕、豎向分屏按鈕、新建窗口按鈕、指令提示開關按鈕、增強顯示開關按鈕、輸入指令提示符按鈕、提交指令按鈕和/或批量導入指令行按鈕,并支持將常用指令集制作成自定義快捷按鈕;所述窗口欄為窗口控件的容器,允許多個窗口控件并存,允許新建和/或刪除窗口控件,并在多個窗口控件之間自由切換,所述窗口控件為指令輸入的編輯區和執行結果的展示區,并根據指令類型自動選擇普通模式控件或全屏模式控件作為執行結果展示的渲染引擎;所述狀態欄為指令前端系統狀態信息的提示面板,包括窗口是否允許輸入、主機指令執行時間、網絡傳輸時間和/或用戶剩余指令流量。2.如權利要求1所述的指令前端系統,其中:所述普通模式控件為主機命令行交互式指令的控制和渲染引擎,支持命令行式的交互指令,支持純文本數據的展示;所述全屏模式控件為主機全屏填空式指令的控制和渲染引擎,支持全屏填空式的交互指令,支持結構化數據的展示。3.如權利要求1所述的指令前端系統,其中,所述普通模式控件為窗口控件的一種顯示引擎,當服務器返回普通文本式指令數據時,啟用普通模式控件作為顯示引擎。4.如權利要求3所述的指令前端系統,所述普通模式控件允許在任意位置輸入指令,在執行指令提交操作時,提取光標提示符之前最接近光標提示符的指令或指令集并發送給服務器;普通模式控件對所述服務器返回響應結果的數據進行HTML特殊字符轉義,系統特殊符號轉義。5.如權利要求1所述的指令前端系統,其中,所述全屏模式控件為窗口控件的一種顯示引擎,當服務器返回全屏填空式的指令數據時,啟用全屏模式控件作為顯示引擎。6.如權利要求5所述的指令前端系統,所述全屏模式控件允許在可編輯單元中進行編輯操作,并禁止在非可編輯單元中進行編輯操作。7.—種如權利要求1-6之一所述的指令前端系統的指令前端交互方法,其特征在于包括以下步驟:步驟1,打開包含所述指令前端系統的網頁,所述指令前端系統初始化;步驟2,所述指令前端系統進入普通模式,使用普通模式顯示引擎;步驟3,輸入指令;步驟4,提交指令;步驟5,所述指令前端系統提取光標提示符之前最接近光標提示符的指令,并判斷是單條指令還是多條指令,在發送給服務器之前作指令格式化操作;步驟6,所述指令前端系統將格式化指令發送至服務器并接收服務器的響應結果數據;步驟7,如果服務器返回的是普通數據,則進入步驟2;如果服務器返回的是全屏數據,則進入步驟8;步驟8,所述指令前端系統進入全屏模式,使用全屏模式顯示引擎,解析服務器返回的響應結果數據,生成數據單元并設置數據單元的編輯屬性;步驟9,編輯可編輯的數據單元;步驟10,所述指令前端系統將可編輯數據單元組裝成特定的XML格式數據,進入步驟6。8.如權利要求7所述的方法,步驟1-10中,關閉網頁,則退出所述指令前端系統。9.如權利要求7所述的方法,步驟3中,輸入單條指令或者輸入指令集。10.如權利要求7所述的方法,步驟5中所述指令前端系統提取光標提示符之前最接近光標提示符的指令,進一步包括:步驟5.1,獲取光標標記元素,作為指令文本的結束位置;步驟5.2,獲取光標標記前的指令文本,利用寬度優先策略搜索編輯窗口的子孫元素:步驟5.3,如果指令文本不包含指令提示符,則此次指令提交操作無效;否則,利用指令提示符,對指令文本進行字符串分割;步驟5.4,將分割后的指令文本的最后一項作為提交指令;步驟5.5,對提交指令進行格式化。11.如權利要求10所述的方法,步驟5.2進一步包括:a)設置指令文本為空,將編輯窗口本身所屬的DIV元素作為根元素;b)寬度優先搜索根元素的子元素;c)如果子元素就是光標標記元素,則進入步驟f;否則,進入步驟d;d)如果子元素是光標標記的父輩元素,則將該子元素作為根元素,進行下一次搜索,進入步驟b;否則,進入步驟e;e)將該子元素包含的文本拼接到指令文本,進入步驟b;f)輸出指令文本。12.如權利要求10所述的方法,步驟5.5進一步包括:如果提交指令是多行指令,則在每個換行符之后再增加一個換行符;對于每行指令,如果每行指令長度大于80個字符,則按每80個字符一組,用兩個換行符和減號字符進行分離’以適應主機指令格式要求。13.如權利要求7所述的方法,步驟10中所述特定的XML格式數據包括“XMLData”元素,所述“XMLData”元素的“XmitRow”和“XmitCol”屬性表示光標默認顯示的行列位置或者光標提交時的行列位置;“XMLData”元素由若干個“Object”元素組成,每個“Object”元素表示一個數據單元,其在全屏區域中的位置由“Row”屬性和“Col”屬性確定,“EditNo”屬性表示可編輯單元的編號;“Text”元素為數據單元顯示的文本內容。14.如權利要求13所述的方法,所述“XMLData”元素的“FullScreen”屬性表示是否為全屏數據,“EraseScreen”屬性表示是否需要清理屏幕內容;數據單元的“Password”屬性表示本數據單元是否為密碼型數據,“Readonly”屬性表示本數據單元是否僅可讀,“TabStop”表示本數據單元是否為占位符。【文檔編號】G06F9/44GK104020996SQ201410262935【公開日】2014年9月3日申請日期:2014年6月13日優先權日:2014年6月13日【發明者】黃鍵,楊永凱,云雄,王永剛,丁崢,孫首乙,吳華申請人:中國民航信息網絡股份有限公司