本發(fā)明的doxml語言屬于應(yīng)用軟件系統(tǒng)高級語言。
背景技術(shù):
::隨著互聯(lián)網(wǎng)快速發(fā)展,全球正經(jīng)歷一場新技術(shù)革命、商業(yè)革命、社會革命,全球?qū)Ω鞣N應(yīng)用系統(tǒng)的需求越來越大、越來越迫切。但目前的應(yīng)用開發(fā),尤其是web應(yīng)用系統(tǒng)開發(fā):1)方法傳統(tǒng)、效能低下;2)編碼民工、人海戰(zhàn)術(shù);3)溝通困難、做非所需,用戶滿意度非常低。根本原因?yàn)閮蓚€方面:1、html語言對互聯(lián)網(wǎng)貢獻(xiàn)巨大,但html對應(yīng)用系統(tǒng)存在基因不足。html語言的誕生創(chuàng)造了互聯(lián)網(wǎng),促進(jìn)了互聯(lián)網(wǎng)的快速推廣應(yīng)用。一種集文本、圖形、音樂、鏈接等于一體的超文本語言,一種全球開放統(tǒng)一的標(biāo)記語言,通過互聯(lián)網(wǎng)將人們連接在一起,將各個地區(qū)、各個領(lǐng)域連接在一起,并實(shí)現(xiàn)了越來越多的互聯(lián)網(wǎng)應(yīng)用,貢獻(xiàn)巨大。但html主要設(shè)計(jì)目標(biāo)是面向跨平臺的內(nèi)容展示,隨著互聯(lián)網(wǎng)的普及與web應(yīng)用系統(tǒng)的需要,html存在越來越多的不足,如:動態(tài)界面控制能力較差、缺乏動態(tài)數(shù)據(jù)自主處理能力、缺乏業(yè)務(wù)邏輯處理能力、缺乏對數(shù)據(jù)的自動展示、交互、存儲、流轉(zhuǎn)處理能力,因此它離不開javascript、c#或第三方插件,無法擺脫傳統(tǒng)的編程工作。而且由于界面與程序的分離導(dǎo)致培訓(xùn)、調(diào)試、部署、維護(hù)更復(fù)雜。盡管html5在構(gòu)建web應(yīng)用系統(tǒng)提供了大量的控件、更好的展示與交互性,但仍然沒有改變超文本(以展示界面為導(dǎo)向)的基本思路,導(dǎo)致html5對于應(yīng)用系統(tǒng)的開發(fā)與運(yùn)行支撐存在基因上的不足。2、軟件開發(fā)主要由程序編碼人員負(fù)責(zé),方法傳統(tǒng),效能低下。目前全球的應(yīng)用系統(tǒng)開發(fā),主流技術(shù)路線為j2ee或.net,開發(fā)語言為java、c++、vb、objectc或objectpascal等,基于各種框架、sdk或技術(shù)平臺,基于各種數(shù)據(jù)庫及中間件系統(tǒng)。一個開發(fā)人員既要懂客戶端的開發(fā),又需要懂應(yīng)用服務(wù)器及后臺數(shù)據(jù)庫的開發(fā),還需要掌握多層開發(fā)技術(shù);既要懂需求,又要會交流,還要面對維護(hù)問題及需求的快速變化。開發(fā)人員成年的忙、累、委屈是常態(tài)。雖然很多軟件企業(yè)有了自己的開發(fā)平臺,但不具備開放性,沒有清晰的邊界(平臺該做什么不該做什么),反而因?yàn)殚_發(fā)平臺,不利于新人的快速上手,不利于業(yè)務(wù)組件自主獨(dú)立,束縛了業(yè)務(wù)應(yīng)用系統(tǒng)的靈活開發(fā)與快速升級。doxml本質(zhì)目標(biāo)是將應(yīng)用與技術(shù)分離,主要面向?qū)ο蟛皇情_發(fā)人員,而是需求、設(shè)計(jì)與實(shí)施人員,甚至一些懂信息技術(shù)的直接用戶。當(dāng)必須編程時才需要開發(fā)人員,但工作量占比不高于20%。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的是提出一種doxml高級語言。doxml是完全基于xml語法,類似html的一種擴(kuò)展標(biāo)記語言,用該語言可以完整描述各種應(yīng)用軟件系統(tǒng)的業(yè)務(wù)組件,而且計(jì)算機(jī)能夠準(zhǔn)確理解和執(zhí)行該語言。本發(fā)明的doxml語言,基本不需要、不依賴任何低級計(jì)算機(jī)語言(如java、c++、objectpascal、c#、vbscript,甚至匯編語言),就可以滿足各種應(yīng)用需要。而且實(shí)現(xiàn)平臺無關(guān)性,即一種語言描述的應(yīng)用軟件,可以運(yùn)行在各種軟硬件平臺,包括各種pc機(jī)、各種移動終端等,甚至未來的智能物聯(lián)網(wǎng)終端設(shè)備。doxml分為六部分進(jìn)行定義:第一部分:組件屬性。說明某個業(yè)務(wù)組件的名稱(name)、標(biāo)題(caption)、父組件名(parent)等。標(biāo)簽名<doxml>。第二部分:元數(shù)據(jù)內(nèi)容。依次說明每個數(shù)據(jù)表(數(shù)據(jù)集)的屬性以及字段的屬性。1)數(shù)據(jù)對象屬性,包括數(shù)據(jù)表名(name)、名稱(caption)、視圖名(viewname)、數(shù)據(jù)表類型(tablekind)、創(chuàng)建者(creatable)、頁行數(shù)(rowspp)。用標(biāo)簽<table>。2)數(shù)據(jù)字段屬性,包括字段名(name)、字段標(biāo)題(caption)、數(shù)據(jù)類型(dataypte)、字段長度(size)、關(guān)鍵字(key)、允許為空(nullable)、字段類別(fieldkind)、外鍵表(fktable)、外鍵字段(fkfield)等。用標(biāo)簽<field>第三部分:界面描述。界面以一個窗體構(gòu)件(頁面)為容器,構(gòu)件標(biāo)簽為<form>,手機(jī)構(gòu)件標(biāo)簽為<mform>。界面描述目前包括26種標(biāo)準(zhǔn)構(gòu)件及若干種擴(kuò)展組件,每種組件又按用途、風(fēng)格進(jìn)行分類,通過設(shè)置構(gòu)件屬性可以形成豐富的界面。1)窗體構(gòu)件(頁面)包括一系列屬性,包括:名稱(name)、標(biāo)題(caption)、類型(style)、組件主表名(mastertable)等;屬性主要用于形成各種需求的豐富的用戶界面。2)窗體構(gòu)件(頁面)包括一系列事件,包括:新窗體創(chuàng)建事件(oncreate)、鼠標(biāo)點(diǎn)擊事件(onclick)、數(shù)據(jù)成功保存事件(onsaved)、數(shù)據(jù)成功刪除(ondeleted)等事件。事件主要用于解決客戶端界面交互的問題。3)窗體構(gòu)件(頁面)包括一系列方法,包括:登錄系統(tǒng)login(),保存數(shù)據(jù)到服務(wù)器serversave(),調(diào)用服務(wù)器數(shù)據(jù)serverload(),關(guān)閉close()等40多個方法函數(shù),函數(shù)的調(diào)用,極大的方便了開發(fā)效率。其它一些構(gòu)件及屬性可以參見圖1,效果可以參見圖2。第四部分:用戶與權(quán)限數(shù)據(jù)描述。標(biāo)簽<rights>。參見圖1。第五部分:工作流描述。標(biāo)簽<wordflow>。參見圖1。第六部分:程序腳本描述。標(biāo)簽<program>。參見圖1。為求統(tǒng)一,程序腳本仍然基于xml的語法。doxml的數(shù)據(jù)類型有8種,如下表:這些數(shù)據(jù)類型,不同于c++、java或其它。而是比較接近于數(shù)據(jù)庫系統(tǒng)。同時又增加了addfile的非結(jié)構(gòu)化數(shù)據(jù)的處理。doxml基于這些數(shù)據(jù)類型,可以定義常量、變量及各種表達(dá)式。doxml中的變量可以直接引用各種對象的屬性。doxml語言還定義了函數(shù)以及語句語法。主要標(biāo)簽及語義如下:<var>,定義變量語句標(biāo)簽;<set>,賦值變量語句標(biāo)簽;<if>,條件語句標(biāo)簽,還配合<else>;<while>,條件循環(huán)語句標(biāo)簽;包括<break\>、<continue\>標(biāo)簽。<for>,計(jì)數(shù)循環(huán)語句標(biāo)簽;包括<break\>、<continue\>標(biāo)簽。<execute>,調(diào)用函數(shù)標(biāo)簽。doxml特別定制了兩個系統(tǒng)對象,一個是so,是客戶端的系統(tǒng)變量;一個是do,是服務(wù)器端的系統(tǒng)變量。so及do主要用于處理前臺后跨系統(tǒng)跨組件的公共變量與方法。附圖說明圖1是doop2-d1設(shè)計(jì)開發(fā)集成平臺的doxml編碼界面;圖2是doop-d1設(shè)計(jì)開發(fā)集成平臺的ui設(shè)計(jì)界面;圖3是doop2server應(yīng)用服務(wù)器的應(yīng)用屬性設(shè)置界面;圖4是doop瀏覽器的app主頁;圖5是一個doxml普通應(yīng)用組件在doop2瀏覽器中的展示效果。具體實(shí)施方式下面我們用doxml語言來開發(fā)完成一個應(yīng)用系統(tǒng),然后看看系統(tǒng)是如何運(yùn)行在各種平臺上的。如圖1、圖2,通過可視化開發(fā)工具(圖中為doop2-d1開發(fā)平臺,也可以基于doxml自己開發(fā)),我們可以根據(jù)業(yè)務(wù)組件的需要,在窗體構(gòu)件(頁面)中使用各種構(gòu)件,通過正確設(shè)置構(gòu)件的屬性,來完成各種需要的界面。每個組件的設(shè)計(jì),不需要記住很多東西,設(shè)計(jì)工作就象搭積木。所有業(yè)務(wù)組件設(shè)計(jì)完成,可以建立組件間的調(diào)用關(guān)系,并最終搭建出整個應(yīng)用系統(tǒng)。這樣,該工作完全由懂應(yīng)用的需求人員、設(shè)計(jì)人員或?qū)嵤┤藛T完成即可,不需要必須懂程序開發(fā)的編碼人員即可完成。系統(tǒng)開發(fā)完成后,生成若干個doxml文件(一個組件一個doxml文件,組件與文件一一對應(yīng)),打開每個doxml文件,發(fā)現(xiàn)每個doxml是按照doxml的標(biāo)簽、規(guī)則定義的,而且是可以直接編輯的文本文件。實(shí)際上,我們完全可以不需要任何開發(fā)工具,直接用文本方式書寫一個doxml,只是需要記住各種標(biāo)簽與規(guī)則。系統(tǒng)搭建完成后,我們需要將其作為一個應(yīng)用部署到服務(wù)器上,圖3為部署到doop2server的過程:這樣,我們所有能夠連接到該服務(wù)器(doop2server)的客戶端pc或手機(jī)就能夠訪問我們的應(yīng)用系統(tǒng)了。具體過程:首先,我們在前臺打開瀏覽器,輸入服務(wù)器地址。此時客戶端發(fā)現(xiàn)連接請求到服務(wù)器。服務(wù)器偵聽到連接后,將根據(jù)附圖3的設(shè)置中的主頁組件名,發(fā)送doxml文件到客戶端。瀏覽接收到doxml文件,將根據(jù)doxml的描述,生成界面,并調(diào)入數(shù)據(jù),如附圖4。點(diǎn)擊界面中某一個菜單或按鈕或某個連接的控件,將會觸發(fā)一個事件(這個事件用doxml描述在剛過來的doxml文件中)。假設(shè)這個事件是調(diào)入另一個組件doxml,則客戶端會向服務(wù)發(fā)送接收需要調(diào)入的doxml文件的請求。服務(wù)器將doxml發(fā)送到客戶端??蛻舳擞中纬尚碌慕M件界面,如圖5,同時需要調(diào)入數(shù)據(jù),于是瀏覽器又會向服務(wù)器請求數(shù)據(jù)(doxml描述了需要什么數(shù)據(jù),多少數(shù)據(jù))。服務(wù)器根據(jù)請求解析doxml,連接到數(shù)據(jù)庫服務(wù)器,取出數(shù)據(jù)并返回數(shù)據(jù)到客戶端??蛻舳藢?shù)據(jù)放到各個綁定的構(gòu)件中(綁定關(guān)系在doxml文件中說明),顯示出來??蛻舳擞脩舨僮?,比如修改數(shù)據(jù)。修改完成,點(diǎn)擊【保存】按鈕,客戶端會產(chǎn)生一個事件,調(diào)用保存函數(shù)(doxml文件中調(diào)用了保存函數(shù)),系統(tǒng)將自動提交保存數(shù)據(jù)的命令到服務(wù)器。服務(wù)器同意接收??蛻舳税l(fā)送變化的數(shù)據(jù)(xml)包給服務(wù)器。服務(wù)器解析doxml并直接連接到數(shù)據(jù)庫服務(wù)器,將數(shù)據(jù)存儲。成功后發(fā)送成功信息到客戶端。客戶端瀏覽器產(chǎn)生【保存成功】事件,根據(jù)doxml文件中關(guān)于此事件的處理,提示保存成功,關(guān)閉對話框等等處理。不同的平臺,會有不同的doop2server及客戶端瀏覽器(或虛擬機(jī)),以適應(yīng)不同的操作系統(tǒng)。但是doxml的開發(fā)者不需要考慮各種環(huán)境,一個doxml應(yīng)用系統(tǒng)在各個平臺上的效果基本相同。開發(fā)者不僅更只需要開發(fā)一遍,而且開發(fā)doxml系統(tǒng)更簡單了。效率相比html,可以提高10倍以上的開發(fā)效率。當(dāng)前第1頁12當(dāng)前第1頁12