專利名稱:用于訪問數(shù)據(jù)庫的計(jì)算機(jī)程序的產(chǎn)品、記錄介質(zhì)以及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于訪問數(shù)據(jù)庫的計(jì)算機(jī)程序產(chǎn)品,其上記錄有程序的計(jì)算機(jī)可讀記錄介質(zhì),以及數(shù)據(jù)庫操作方法。本發(fā)明特別涉及易于應(yīng)用于s適于營業(yè)(business operation)程序(process)的數(shù)據(jù)庫訪問程序產(chǎn)品,在其上記錄該程序的計(jì)算機(jī)可讀記錄介質(zhì),以及數(shù)據(jù)庫操作方法。
背景技術(shù):
通常,在使用計(jì)算機(jī)進(jìn)行系統(tǒng)開發(fā)的過程中,縮減開發(fā)成本,縮短交付周期,和改進(jìn)質(zhì)量,這些都是重要的目的。為了實(shí)現(xiàn)這些目的,進(jìn)行如下努力,如從以程序?yàn)橹行牡脑O(shè)計(jì)方法轉(zhuǎn)變到以數(shù)據(jù)為中心的設(shè)計(jì)方法,采用RAD(快速應(yīng)用程序開發(fā))方法,和組件編程(component programming),并且已經(jīng)獲得的一些結(jié)果。
例如,通過采用以數(shù)據(jù)為中心的設(shè)計(jì)方法,生產(chǎn)能力獲得了很大程度的改進(jìn)。依照RAD方法,通過依照用戶需求構(gòu)建原型,同時(shí)以原型制作的結(jié)果為基礎(chǔ)而更明確地反映用戶的需求,進(jìn)而改進(jìn)該原型,可以縮短開發(fā)周期。由此,在采用該RAD方法的系統(tǒng)中,大體上可以實(shí)現(xiàn)縮短外部設(shè)計(jì)和詳細(xì)設(shè)計(jì)的周期,和成本的降低。由此,程序生成階段在整個(gè)系統(tǒng)開發(fā)中所占的比例相對(duì)變大了。
最近,使用企業(yè)內(nèi)部互聯(lián)網(wǎng)作為公司骨干系統(tǒng)的開發(fā)平臺(tái)的情況的數(shù)量在增長。在聯(lián)網(wǎng)的公司,通過使用應(yīng)用程序服務(wù)器來構(gòu)造骨干系統(tǒng)是十分有效的。在應(yīng)用程序服務(wù)器的系統(tǒng)開發(fā)中,通常使用作為HTML(HyperTextMarkup Language)(超文本鏈接標(biāo)示語言)的擴(kuò)展的標(biāo)簽語言。該標(biāo)簽語言易于學(xué)習(xí)并且被評(píng)價(jià)為具有高生產(chǎn)力的企業(yè)內(nèi)部互聯(lián)網(wǎng)開發(fā)工具。
然而,隨著公司環(huán)境變得更加復(fù)雜,對(duì)系統(tǒng)開發(fā)的要求也變得更高。具體地說,由于公司的商業(yè)周期正在變短,這就要求交付周期進(jìn)一步的縮短。公司可以以較低的成本提供產(chǎn)品,這是十分有利的。
由于程序生成階段在系統(tǒng)開發(fā)中的比例相對(duì)較大,因此在該階段改進(jìn)生產(chǎn)力是十分重要的。推動(dòng)組件編程似乎是最有效的。
組件編程減少了系統(tǒng)開發(fā)所必須的過程數(shù)量,并且從縮減系統(tǒng)開發(fā)所必須的周期以及縮減系統(tǒng)開發(fā)成本的觀點(diǎn)來看,其有助于增強(qiáng)系統(tǒng)開發(fā)的競爭力。僅通過使用十分可靠的程序作為組件,組件編程可以有助于改進(jìn)系統(tǒng)的質(zhì)量。因此,有效地執(zhí)行組件編程以及通過有效結(jié)合由組件編程準(zhǔn)備的組件來構(gòu)建應(yīng)用程序是十分重要的。
然而,用于企業(yè)內(nèi)部互聯(lián)網(wǎng)系統(tǒng)開發(fā)的標(biāo)簽語言的組件編程的功能通常是很弱的。因此,在使用傳統(tǒng)的標(biāo)簽語言時(shí),顯然就不能期望生產(chǎn)力有大的改進(jìn)。
圖18是一個(gè)結(jié)構(gòu)圖,示出了使用數(shù)據(jù)庫(DB)的企業(yè)內(nèi)部互聯(lián)網(wǎng)的通用系統(tǒng)的配置。參考圖18,通用企業(yè)內(nèi)部互聯(lián)網(wǎng)600包括應(yīng)用程序服務(wù)器612,數(shù)據(jù)庫服務(wù)器614,以及多個(gè)客戶PC616,該多個(gè)客戶PC616可以經(jīng)由網(wǎng)絡(luò)610,通過使用被稱為HTTP(Hyper Text Transfer Protocol)(超文本傳輸協(xié)議)的協(xié)議進(jìn)行互相通訊。
在客戶PC616上,運(yùn)行有通用瀏覽器630。
在數(shù)據(jù)庫服務(wù)器614上,運(yùn)行有RDBMS(Relational DataBase ManagementSystem)(關(guān)系型數(shù)據(jù)庫管理系統(tǒng))622。
在應(yīng)用程序服務(wù)器612上,運(yùn)行有WWW服務(wù)器618?!癢WW”是“World WideWeb”的縮寫。WWW服務(wù)器618實(shí)際是Java(R)小服務(wù)程序引擎(servletengine)620。Java(R)小服務(wù)程序引擎620,依照經(jīng)由網(wǎng)絡(luò)610從客戶PC616的瀏覽器630給出的需求,將用于形成屏幕的信息(HTML源)提供給瀏覽器630,該屏幕信息用于訪問RDBMS 622。瀏覽器630顯示該屏幕,并且將由用戶輸入的信息返回給Java(R)小服務(wù)程序引擎620。Java(R)小服務(wù)程序引擎620依照給定的信息訪問RDBMS 622,并且將用于顯示結(jié)果的該HTML源返回到瀏覽器630。瀏覽器630顯示該結(jié)果,從而響應(yīng)用戶需求。
以這種方式,企業(yè)內(nèi)部互聯(lián)網(wǎng)600通過WWW服務(wù)器618處理來自多個(gè)客戶PC616的需求,該WWW服務(wù)器618在應(yīng)用程序服務(wù)器612上運(yùn)行,并且將結(jié)果返回到每一個(gè)客戶的瀏覽器上,從而使用RDBMS 622執(zhí)行商業(yè)活動(dòng)(business process)。
在開發(fā)適合許多商業(yè)活動(dòng)的程序的情況下,屏幕不得不一個(gè)接一個(gè)的生成以便在瀏覽器上顯示。假如這樣的話,通過復(fù)制已生成的商業(yè)程序中的必要部分,并通過只修改不同的部分,可以生成另一個(gè)商業(yè)程序。然而,如果在原始商業(yè)程序中發(fā)現(xiàn)有程序錯(cuò)誤,那么為了消除該程序錯(cuò)誤而不得不被檢驗(yàn)所有已生成的商業(yè)程序。
為了避免這個(gè)問題,商業(yè)程序的通用組件作為模塊被使用,并且被當(dāng)作所謂的子程序來調(diào)用。在將通用組件作為模塊使用的情況下,僅僅糾正包括該程序錯(cuò)誤的模塊就足夠了,而不必糾正使用模塊的高級(jí)商業(yè)程序(higher-order)。
然而,程序通常以用于訪問RDBMS 622的一系列過程為基礎(chǔ)單元,被設(shè)計(jì)成模塊,這些過程諸如用于顯示屏幕的過程,該屏幕通常用于輸入訪問的條件,以輸入的條件為基礎(chǔ)訪問RDBMS 622的過程,以及顯示作為此次訪問結(jié)果所獲得的數(shù)據(jù)的過程。當(dāng)一系列過程作為模塊設(shè)計(jì)時(shí),模塊的用途將受這一系列過程的限制,且出現(xiàn)諸如不能獲得一般通用性的問題。
雖然也可以將一系列的過程分成多個(gè)部分,且這些部分分別被模塊化以提供一般通用性,但是生成模塊的數(shù)量增加了,并且這引起了諸如使生成商業(yè)程序的效率下降的問題。
發(fā)明內(nèi)容
本發(fā)明已實(shí)現(xiàn)了解決上述問題的目的,本發(fā)明的目的在于提供一種通過組合通用模塊來生成的數(shù)據(jù)庫訪問程序產(chǎn)品。
本發(fā)明的另一目的是提供一個(gè)具有更高效的開發(fā)效率的數(shù)據(jù)庫訪問程序產(chǎn)品。
本發(fā)明的另一目的在于提供一種易于應(yīng)付變化的數(shù)據(jù)庫訪問程序產(chǎn)品。
本發(fā)明的又一目的在于提供一種易于操作數(shù)據(jù)庫的數(shù)據(jù)庫操作方法。
為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,通過允許計(jì)算機(jī)執(zhí)行多個(gè)屏幕組件來訪問數(shù)據(jù)庫的數(shù)據(jù)庫訪問程序產(chǎn)品,包括指定將由計(jì)算機(jī)執(zhí)行的多個(gè)屏幕組件的順序的步驟。多個(gè)屏幕組件中的每一個(gè)組件都包括如下步驟除第一部分外,依照從外部給出的每一個(gè)屏幕組件的定義來生成第二部分,該第二部分用來指定在訪問數(shù)據(jù)庫的命令中將被處理的數(shù)據(jù);生成用于輸入和/或輸出數(shù)據(jù)的屏幕;以及依照從外部給出的每一個(gè)屏幕組件的定義來生成第一部分,該部分用來指定在訪問數(shù)據(jù)庫的命令中將被處理的數(shù)據(jù)。
依照本發(fā)明,指定了將由計(jì)算機(jī)執(zhí)行的多個(gè)屏幕組件的順序。多個(gè)屏幕組件的每一個(gè)組件都依照指定的順序來執(zhí)行,包括以下步驟除第一部分外,依照從外部給出的每一個(gè)屏幕組件的定義來生成第二部分,第二部分用來指定訪問數(shù)據(jù)庫的命令中將要被處理的數(shù)據(jù);生成用于輸入和/或輸出數(shù)據(jù)的屏幕;以及依照從外部給出的用于每一個(gè)屏幕組件的定義來生成第一部分,該部分用來指定在訪問數(shù)據(jù)庫的命令中將要被處理的數(shù)據(jù)。由于這些步驟依照從外部給出的定義進(jìn)行處理,故屏幕組件作為數(shù)據(jù)庫訪問程序的一部分,可以被其它數(shù)據(jù)庫訪問程序使用。由此,可以通過通用屏幕組件獲得數(shù)據(jù)庫訪問程序產(chǎn)品,并且提供了用來存儲(chǔ)上述程序的計(jì)算機(jī)可讀記錄介質(zhì)。由于數(shù)據(jù)庫訪問程序可以通過組合通用屏幕組件來生成,故可以提高數(shù)據(jù)庫訪問程序的開發(fā)效率。
屏幕生成步驟,更適宜地依照從外部給出的每一個(gè)屏幕組件的數(shù)據(jù)庫項(xiàng)目,來生成屏幕。因此,不必提供屏幕組件中的數(shù)據(jù)庫項(xiàng)目,以便于進(jìn)一步增加了該屏幕組件的多功能性。
該程序產(chǎn)品更適宜地進(jìn)一步包括,用于指定將要執(zhí)行的這些步驟的順序的步驟,這些步驟包含于該多個(gè)屏幕組件的每一個(gè)組件中,以便于這些步驟在該多個(gè)屏幕組件的所有組件中都以相同的順序執(zhí)行。
依照本發(fā)明,由于包含在多個(gè)屏幕組件中的每一個(gè)組件的這些步驟,被指定成在該多個(gè)屏幕組件中的任何組件中都以相同的順序來執(zhí)行,因此不必考慮這些包含于屏幕組件中的步驟的執(zhí)行順序。因此,可以縮減用于開發(fā)數(shù)據(jù)庫訪問程序的過程的數(shù)量。
多個(gè)屏幕組件的每一個(gè)組件更適宜進(jìn)一步包括檢查所獲得的數(shù)據(jù)的步驟,其依照從外部給出的每一個(gè)屏幕組件的數(shù)據(jù)庫項(xiàng)目。
依照本發(fā)明,該多個(gè)屏幕組件的每一個(gè)組件,依照從外部給出的用于每一個(gè)屏幕組件的數(shù)據(jù)庫項(xiàng)目,檢查所獲得的數(shù)據(jù)。由于需要進(jìn)行檢查的該數(shù)據(jù)庫項(xiàng)目是從外部給出的,故不必在屏幕組件中提供該數(shù)據(jù)庫項(xiàng)目。由此,該屏幕組件易于應(yīng)用到其它數(shù)據(jù)庫訪問程序中。
更適宜地,在生成第一部分的步驟中,生成當(dāng)下一個(gè)屏幕組件由計(jì)算機(jī)實(shí)現(xiàn)時(shí)所執(zhí)行的命令中的第一部分。
依照本發(fā)明,在生成第一部分的步驟中,生成當(dāng)下一個(gè)屏幕組件由計(jì)算機(jī)實(shí)現(xiàn)時(shí)所執(zhí)行的命令中的第一部分。其中,用于生成由計(jì)算機(jī)其次執(zhí)行的指令中的第一部分的數(shù)據(jù),經(jīng)由生成的屏幕輸入,當(dāng)該屏幕改變時(shí),生成第一部分的步驟也不得不改變。由于涉及該屏幕中的變化而改變的其它部分,包含于單一的屏幕組件中,故為一個(gè)變化而僅僅改變一個(gè)屏幕組件就足夠了。由此,可以提高該數(shù)據(jù)庫訪問程序產(chǎn)品易于應(yīng)付變化的能力。
在生成第一部分的步驟中,該命令中的第一部分更適宜以于檢查步驟中檢查過的數(shù)據(jù)為基礎(chǔ)來生成。
依照本發(fā)明,在生成第一部分的步驟中,命令中的第一部分是以于檢查步驟中檢查過的數(shù)據(jù)為基礎(chǔ)來生成的。當(dāng)要被檢查的數(shù)據(jù)改變時(shí),生成第一部分的步驟也不得不改變。由于涉及將被檢查的數(shù)據(jù)的變化而進(jìn)行改變的其它部分,被包含于單一的屏幕組件中,故為響應(yīng)一個(gè)變化而僅僅改變一個(gè)屏幕組件就足夠了。由此,可以提高該數(shù)據(jù)庫訪問程序產(chǎn)品易于應(yīng)付變化的能力。
生成第二部分的步驟更適宜包括那些不生成第二部分的過程。
依照本發(fā)明,甚至在不必訪問數(shù)據(jù)庫的情況下,用于生成訪問數(shù)據(jù)庫命令中的第二部分,也依然包含于該屏幕組件中。因此,相同的過程可以由所有的屏幕組件來定義。
該檢查步驟更適宜包括那些不檢查任何數(shù)據(jù)的過程。
依照本發(fā)明,甚至在不必檢查數(shù)據(jù)的情況下,該檢查步驟也依然包含于屏幕組件中。因此,相同的過程可以由所有的屏幕組件來定義。
生成第一部分的步驟更適宜包括那些不生成第一部分的過程。
依照本發(fā)明,甚至在不存在將要其次執(zhí)行的屏幕組件的情況下,生成該命令中第一部分的過程也依然包含于該屏幕組件中。由此,相同的過程可以由所有的屏幕組件來定義。
依照本發(fā)明的另一個(gè)方面,通過允許計(jì)算機(jī)執(zhí)行多個(gè)屏幕組件的數(shù)據(jù)庫操作方法,包括指定將由計(jì)算機(jī)執(zhí)行的該多個(gè)屏幕組件的順序的步驟。該多個(gè)屏幕組件的每一個(gè)組件都包括以下步驟除第一部分外,依照從外部給出的每一個(gè)屏幕組件的定義來生成第二部分,第二部分用來指定訪問數(shù)據(jù)庫的命令中將被執(zhí)行的數(shù)據(jù);生成用于輸入和/或輸出數(shù)據(jù)的屏幕;以及依照從外部給出的每一個(gè)屏幕組件的定義來生成第一部分,該部分指定訪問數(shù)據(jù)庫的命令中將要執(zhí)行的數(shù)據(jù)。
依照本發(fā)明,由于這些步驟依照從外部給出的定義來進(jìn)行處理,故該屏幕組件作為該數(shù)據(jù)庫訪問程序的一部分,可以由其它數(shù)據(jù)庫訪問程序來使用。因此,僅僅通過指定該多個(gè)屏幕組件的執(zhí)行順序,就可以操作數(shù)據(jù)庫。由此,可以提供給該數(shù)據(jù)庫操作方法易于進(jìn)行數(shù)據(jù)庫操作的能力。
本發(fā)明的前述以及其它的目的、特性、方面以及有益效果,將在以下通過結(jié)合附圖對(duì)本發(fā)明進(jìn)行詳細(xì)的描述時(shí),變得更加清楚。
圖1是本發(fā)明一個(gè)實(shí)施例中的服務(wù)器的外視圖;圖2是示出了根據(jù)本發(fā)明的服務(wù)器配置情況的結(jié)構(gòu)圖;圖3是用于說明在該實(shí)施例中于服務(wù)器里執(zhí)行數(shù)據(jù)庫訪問程序的概念的圖;圖4是示出了在實(shí)施例中,當(dāng)程序模式由服務(wù)器執(zhí)行時(shí),各處理過程執(zhí)行的流程的流程圖;圖5A和5B是示出了由涉及上述過程的程序模式來定義的各處理過程的例子的圖;圖6是示出了在圖4步驟S14中,屏幕組件調(diào)用執(zhí)行的過程的流程的流程圖;圖7A和7B是示出了當(dāng)該程序模式被執(zhí)行時(shí),被輸出的屏幕的例子的圖;圖8是示出了使用三個(gè)屏幕組件的程序模式的具體例子的圖;圖9A、9B和9C是示出了通過調(diào)用屏幕組件來顯示這些屏幕的例子的圖;圖10是用于說明項(xiàng)目對(duì)象(item objects)概念的示意圖;圖11是從數(shù)據(jù)庫定義信息中提取項(xiàng)目對(duì)象的工具的結(jié)構(gòu)圖;圖12是示出數(shù)據(jù)庫定義文件的例子的圖;圖13是示出了項(xiàng)目對(duì)象的數(shù)據(jù)定義文件的例子的圖;圖14是用于從該數(shù)據(jù)庫定義文件生成項(xiàng)目對(duì)象的數(shù)據(jù)定義文件的過程的流程圖;圖15是示出了當(dāng)屏幕組件使用項(xiàng)目對(duì)象,按照本發(fā)明的實(shí)施例進(jìn)行操作時(shí),項(xiàng)目對(duì)象和屏幕組件之間關(guān)系的圖;圖16是示出了編寫主程序代碼的例子的一部分的圖;圖17是用于實(shí)現(xiàn)窗體組件的處理的流程圖;圖18是示出了由常規(guī)的企業(yè)內(nèi)部互聯(lián)網(wǎng)構(gòu)建的系統(tǒng)配置例子的圖。
具體實(shí)施例方式
在下文中,本發(fā)明的實(shí)施例將參考附圖來說明。在隨后的說明中,相同的組件利用相同的標(biāo)號(hào)來標(biāo)識(shí),并且其名稱和功能都相同。因此,將不再重復(fù)提供它們的詳細(xì)說明。
圖1是本發(fā)明實(shí)施例中服務(wù)器的外視圖。如下所述,服務(wù)器10由通用個(gè)人計(jì)算機(jī)來構(gòu)成。
參考圖1,服務(wù)器10包括計(jì)算機(jī)100,計(jì)算機(jī)上有CD-ROM(Compact DiscRead-Only Memory)驅(qū)動(dòng)器110以及FD(F1exible Disk軟盤)驅(qū)動(dòng)器112,該服務(wù)器還包括顯示器102,打印機(jī)104,鍵盤106以及鼠標(biāo)108。
圖2是示出了服務(wù)器10的配置的結(jié)構(gòu)圖。如圖2所示,服務(wù)器10除包括CD-ROM驅(qū)動(dòng)器110以及FD驅(qū)動(dòng)器112以外,還包括CPU(CentralProcessing Unit)(中央處理單元)116,ROM(Read Only Memory)(只讀存儲(chǔ)器)118,其存儲(chǔ)有操作系統(tǒng)等等的引導(dǎo)裝入程序,RAM(Random AccessMemory)(隨機(jī)存取存儲(chǔ)器)120,用于裝載將要執(zhí)行的程序并存儲(chǔ)正在執(zhí)行的程序數(shù)據(jù),還包括以非易失性方式來存儲(chǔ)已生成的程序等的硬盤114,以及用于連接計(jì)算機(jī)100與網(wǎng)絡(luò)132的網(wǎng)絡(luò)接口130。這些組件被連接到總線126上。CD-ROM 122被插入到CD-ROM驅(qū)動(dòng)器110中。FD 124被插入到FD驅(qū)動(dòng)器112中。
如上所述,在該服務(wù)器中,數(shù)據(jù)庫記錄在硬盤114中,并且由CPU 116執(zhí)行數(shù)據(jù)庫訪問程序,從而運(yùn)行該數(shù)據(jù)庫。通常,這樣的數(shù)據(jù)庫訪問程序存儲(chǔ)于諸如CD-ROM 122或FD 124這樣的記錄介質(zhì)上,以被存儲(chǔ)的形式分布,從CD-ROM驅(qū)動(dòng)器110、FD驅(qū)動(dòng)器112等來讀取該程序,并臨時(shí)存儲(chǔ)在硬盤114上。此外,該數(shù)據(jù)庫訪問程序從硬盤114讀到RAM 120上并由CPU 116來執(zhí)行。如圖1和圖2所示服務(wù)器10的硬件本身,是通用硬件。因此,本發(fā)明最重要的部分是存儲(chǔ)于諸如CD-ROM 112、FD 124或硬盤114這樣的記錄介質(zhì)上的數(shù)據(jù)庫訪問程序。
記錄介質(zhì)并不僅限于CD-ROM 122、FD 124以及硬盤114。可以固定地裝載程序的媒體都可以利用,諸如磁帶、盒式磁帶、光盤(MO(Magnetic OpticalDisc)磁光盤),MD(Mini Disc)或DVD(Dital Versatile Disc)、IC卡(包括記憶卡)、光卡(optical card),以及諸如掩模ROM、EPROM、EEPROM的半導(dǎo)體存儲(chǔ)器等等。
程序是這樣一個(gè)概念,其不僅包括由CPU 116直接執(zhí)行的程序,還應(yīng)該包括源程序格式的程序,壓縮后程序,加密后程序等等。
由于圖1和圖2所示的計(jì)算機(jī)的操作是眾所周知的,故而在此不再重復(fù)地給予詳細(xì)說明。
圖3是用于說明在該實(shí)施例中,由服務(wù)器10來執(zhí)行數(shù)據(jù)庫訪問程序這一概念的圖表。參考圖3,服務(wù)器10包括用于處理來自運(yùn)行于客戶PC上的瀏覽器253等的需求的程序模式310;作為屏幕組件的第一屏幕320以及第二屏幕322,當(dāng)程序模式310執(zhí)行時(shí),該屏幕組件被調(diào)用;程序定義文件312,其由已調(diào)用屏幕組件320和322來引用(refer);以及數(shù)據(jù)庫314。
程序定義文件312是記錄定義程序所必須的信息的文件,并且其使用例如XML(eXtensible Markup Language)或CSV(Comma Separated Values)來描述。程序定義文件312的細(xì)節(jié)將在后面說明。
數(shù)據(jù)庫314是關(guān)系型數(shù)據(jù)庫,包括用于定義數(shù)據(jù)庫結(jié)構(gòu)的定義文件,并且其被記錄于諸如硬盤114等的存儲(chǔ)器單元上。雖然在此實(shí)施例中,利用關(guān)系型數(shù)據(jù)庫作為例子來說明,但是數(shù)據(jù)庫的類型并不僅限于此,其還可以是其它類型的數(shù)據(jù)庫。
程序模式310,程序定義文件312以及屏幕組件320和322被初步生成,并記錄在服務(wù)器10中的諸如硬盤114這樣的存儲(chǔ)器單元上。數(shù)據(jù)庫訪問程序由程序模式310、程序定義文件312以及屏幕組件320和322來構(gòu)造。將多個(gè)程序模式310以及多個(gè)屏幕組件320和322以通用形式來配置。只有通過依照將要處理的商業(yè)活動(dòng)來形成程序定義文件312,該數(shù)據(jù)庫訪問程序才可以根據(jù)該事物被生成。這將會(huì)進(jìn)行更清楚的說明。
程序模式310是用來說明訪問數(shù)據(jù)庫314的過程的程序。訪問數(shù)據(jù)庫314的過程,是在數(shù)據(jù)庫314中注冊(register)的數(shù)據(jù)上完成處理的過程,并且其可以被分類成,例如,引用(refer)已注冊數(shù)據(jù)的引用過程,重新注冊數(shù)據(jù)到數(shù)據(jù)庫314中的注冊過程,更新已注冊的數(shù)據(jù)的更新過程,以及刪除已注冊的數(shù)據(jù)的刪除過程的四個(gè)過程。
可以結(jié)合在數(shù)據(jù)庫314中定義的多個(gè)表所涉及的數(shù)據(jù)來說明該引用過程、注冊過程、更新過程或刪除過程。如上所述,通過使訪問數(shù)據(jù)庫314的處理過程標(biāo)準(zhǔn)化來說明該程序模式。
用于執(zhí)行該引用過程的程序模式將作為例子描述。在該引用過程中,(1)輸入數(shù)據(jù)的過程作為引用數(shù)據(jù)的關(guān)鍵字的服務(wù),(2)從數(shù)據(jù)庫提取對(duì)應(yīng)于該關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)據(jù),和顯示已提取的數(shù)據(jù)列表的過程,以及(3)顯示在數(shù)據(jù)列表中被定義的特定數(shù)據(jù)的詳細(xì)數(shù)據(jù)的過程。用于執(zhí)行該引用過程的程序模式被定義,以便使這些過程將以此順序來執(zhí)行。
每一個(gè)過程都需要一個(gè)屏幕來輸入數(shù)據(jù)或輸出數(shù)據(jù)。屏幕組件定義用于顯示該屏幕的過程,并且上文已經(jīng)更清楚地說明了涉及該屏幕的處理。
在該程序模式中,只有通過對(duì)所使用的屏幕組件的指定的定義和調(diào)用已指定的屏幕組件的順序,才可以定義數(shù)據(jù)庫314的一系列的引用過程、注冊過程、更新過程以及刪除過程。
屏幕組件320和322定義由該程序模式讀取的多個(gè)過程。多個(gè)被定義的過程是(1)生成部分(第二部分)的過程,該部分是除了在用于訪問數(shù)據(jù)庫的指令中用于指定將要處理的數(shù)據(jù)的部分之外的部分,(2)生成屏幕的過程,(3)用于檢測數(shù)據(jù)的過程,以及(4)生成部分(第一部分)的過程,該部分用于在訪問數(shù)據(jù)庫的指令中指定將要處理的數(shù)據(jù)。
接下來,用于在訪問數(shù)據(jù)庫的指令中指定要處理的數(shù)據(jù)的部分,被稱為第一部分,并且除了第一部分之外的部分稱為第二部分。
更具體地說,(1)生成訪問數(shù)據(jù)庫的命令中第二部分的過程,是生成除了SQL(Structured Query Language)語句中“where”子句的部分的過程。訪問數(shù)據(jù)庫的命令中的第二部分,由程序定義文件312來定義,該程序定義文件312將在后面說明。
在生成第二部分的過程中,可以定義不生成任何部分的過程。假如這樣,即使生成第二部分的過程從程序模式310中調(diào)用,則除了該SQL語句中的“where”子句的部分,不生成其它部分。例如,在引用過程中,在顯示輸入關(guān)鍵字?jǐn)?shù)據(jù)的屏幕的屏幕組件中,作為生成第二部分的過程,可被定義為不生成任何部分的過程。
在(2)生成屏幕的過程中,例如,當(dāng)執(zhí)行該SQL語句時(shí),生成包括作為結(jié)果而獲得的數(shù)據(jù)的屏幕。當(dāng)該SQL語句未執(zhí)行時(shí),生成輸入數(shù)據(jù)的屏幕。在屏幕的產(chǎn)生過程中,用于指定將包含于該屏幕上的數(shù)據(jù)的數(shù)據(jù)庫項(xiàng)目,以及用于指定將被輸入的數(shù)據(jù)的數(shù)據(jù)庫項(xiàng)目,都由程序定義文件312來定義。
在(3)檢測數(shù)據(jù)的過程中,檢測經(jīng)由已生成的屏幕獲得的數(shù)據(jù)。由程序定義文件312來定義用于指定將要被檢測的數(shù)據(jù)的數(shù)據(jù)庫項(xiàng)目。在檢測數(shù)據(jù)的過程中,如果該檢測是不必要的,則可以定義該過程不檢測任何數(shù)據(jù)。假如這樣,即使該檢測數(shù)據(jù)過程從程序模式中調(diào)用,則也不檢測任何數(shù)據(jù)。
在(4)生成訪問數(shù)據(jù)庫314的指令的第一部分的過程中,生成SQL語句中的“where”子句。當(dāng)存在已檢測的數(shù)據(jù)時(shí),“where”子句依照程序定義文件312的定義,并以上述已檢測數(shù)據(jù)為基礎(chǔ)來生成。作為生成第一部分的過程,可以被定義成不生成任何數(shù)據(jù)的過程。不生成任何數(shù)據(jù)的過程,在不存在下一步將要執(zhí)行的SQL語句的這種情況下,例如,在不存在下一步將要執(zhí)行的屏幕組件的情況下被定義。假如這樣,即使生成第一部分的過程從程序模式310中調(diào)用,則也不生成SQL語句中的“where”子句。
如上所述,每一個(gè)屏幕組件320和322都以組(set)來定義訪問數(shù)據(jù)庫的命令中的第二部分的生成,定義將要輸出的屏幕的生成,定義涉及已輸出屏幕所獲得的數(shù)據(jù)的檢查,以及定義訪問數(shù)據(jù)庫命令中的第一部分的生成。也就是說,每一個(gè)屏幕組件320和322,都以涉及將要輸出屏幕的組來定義四個(gè)過程。
因此,當(dāng)該輸出屏幕出現(xiàn)變化時(shí),檢測經(jīng)由該屏幕所輸入的數(shù)據(jù)的過程,和在以被檢測數(shù)據(jù)為基礎(chǔ)所生成的該命令的第一部分的過程,都不得不被糾正。然而,由于這些過程在單一的屏幕組件中定義,因此容易進(jìn)行維護(hù)。
將更具體的說明用于指定設(shè)計(jì)SQL語句中將要處理的數(shù)據(jù)的部分(第一部分),以及其它部分(第二部分)。
<引用>
以下將示出使用SQL語句來引用數(shù)據(jù)的例子。
SELECT userid,username,pronunciationFROM empWHERE user id=’sumitomol’在該SQL語句中,第3行對(duì)應(yīng)于第一部分,并且第一和第二行對(duì)應(yīng)于第二部分。第一和第二行由程序定義文件312來定義。因此,生成第二部分的過程是讀取程序定義文件312的定義的過程。第3行對(duì)應(yīng)于第一部分,且以由程序定義文件312定義的數(shù)據(jù)庫的字段“userid”,和已輸入的數(shù)據(jù)“sumitomol”為基礎(chǔ)來生成。
<注冊>
以下將說明使用SQL語句來注冊數(shù)據(jù)的例子。
INSERT INTO emp (userid,username,pronunciation)VALUES(‘sumitomol’,’TARO SUMITOMO’,’taro sumitomo’)該SQL語句不包括第一部分。既然這樣,因此不生成第一部分。第一以及第二行對(duì)應(yīng)于第二部分,并且以由程序定義文件312定義的數(shù)據(jù)庫的表“emp”和字段“userid”、“username”和“pronunciation”,以及所輸入的數(shù)據(jù)“sumitomol”、“TARO SUMITOMO”、“taro sumitomo”為基礎(chǔ)來生成的。
<更新>
以下將示出使用SQL語句來更新數(shù)據(jù)的例子。
UPDATE emp SET username=’TARO SUMITOMO’,pronuncation=’tarosumitomo’WHERE userid=’sumitomol’在該SQL語句中,第二行對(duì)應(yīng)于第一部分,且第一行對(duì)應(yīng)于第二部分。第一行所對(duì)應(yīng)的第二部分以由程序定義文件312定義的數(shù)據(jù)庫的表“emp”以及字段“username”、“pronuncation”,以及所輸入的數(shù)據(jù)“TARO SUMITOMO”、“taro sumitomo”為基礎(chǔ)來生成。第二行所對(duì)應(yīng)的第一部分以由程序定義文件312定義的數(shù)據(jù)庫的字段“userid”,以及所輸入的數(shù)據(jù)“sumitomol”為基礎(chǔ)生成。
<刪除>
以下將示出在刪除數(shù)據(jù)的時(shí)候使用SQL語句的例子。
DELETE FROM empWHERE userid=’sumitomol’在該SQL語句中,第二行對(duì)應(yīng)于第一部分,且第一行對(duì)應(yīng)于第二部分。第一行所對(duì)應(yīng)的第二部分由程序定義文件312來定義。因此,生成第二部分的過程以由程序定義文件312定義的數(shù)據(jù)庫的表“emp”為基礎(chǔ)來生成。第二行所對(duì)應(yīng)的第一部分以由程序定義文件312定義的數(shù)據(jù)庫的字段“userid”,和已輸入的數(shù)據(jù)“sumitomol”為基礎(chǔ)來生成。
程序定義文件312是當(dāng)由屏幕組件320或322定義的過程被執(zhí)行時(shí)所引用的文件。在程序定義文件312中,定義如下內(nèi)容例如,訪問數(shù)據(jù)庫314的命令(SQL語句)中使用的數(shù)據(jù)庫項(xiàng)目,顯示于已生成的屏幕上的數(shù)據(jù)庫項(xiàng)目,用于檢查數(shù)據(jù)的數(shù)據(jù)庫項(xiàng)目,以及用于生成“where”子句的數(shù)據(jù)庫項(xiàng)目。
如上所述,用于操作數(shù)據(jù)庫314的功能(引用、注冊、更新、刪除等等)的邏輯部分,通過程序模式310來定義。因此,屏幕組件也可以由完成其它功能的程序模式使用,以便于屏幕組件可以有效的重復(fù)使用。
由于上述四個(gè)過程都在該屏幕組件中定義,故在生成程序模式的時(shí)候,以預(yù)定的順序來調(diào)用該屏幕組件所有的四個(gè)過程就足夠了。因此,不必考慮這些過程是否依照屏幕組件被調(diào)用,且不必考慮調(diào)用這些過程的順序。由此,當(dāng)生成程序模式310的時(shí)候,可以使調(diào)用該屏幕組件的方法標(biāo)準(zhǔn)化,并且可以提高生成程序模式的效率。
此外,在通過使用程序模式310來生成用于操作數(shù)據(jù)庫314的商業(yè)程序的情況下,依照程序模式310,將于數(shù)據(jù)庫314中定義的項(xiàng)目定義到程序定義文件312中就足夠了。因此,這提高了開發(fā)商業(yè)程序的效率。
此外,由于在屏幕組件320和322中定義的過程所需要的關(guān)于數(shù)據(jù)庫314的信息,在程序定義文件312中定義,故屏幕組件320和322可不依賴于數(shù)據(jù)庫314的結(jié)構(gòu)。因此,可以在不考慮數(shù)據(jù)庫314結(jié)構(gòu)的情況下,于屏幕組件320和322內(nèi)定義這些過程。
雖然在此實(shí)施例中,四個(gè)過程在屏幕組件320和322的每一個(gè)組件中都被定義,例如,除了該數(shù)據(jù)檢查過程(3)之外的3個(gè)過程都可以在屏幕組件中定義。假如這樣的話,這3個(gè)過程將在其它所有的屏幕組件中的每個(gè)組件中定義。
圖4示出了在此實(shí)施例中,當(dāng)程序模式由服務(wù)器執(zhí)行時(shí),所執(zhí)行過程的流程的流程圖。參考圖4,程序模式310接收頁面轉(zhuǎn)換信號(hào),該信號(hào)要求從瀏覽器253(步驟S11)中顯示。該頁面轉(zhuǎn)換信號(hào)指示所要顯示的網(wǎng)頁的頁數(shù)。程序模式310接收該頁面轉(zhuǎn)換信號(hào),顯示該頁面轉(zhuǎn)換信號(hào)(步驟S12)相應(yīng)的標(biāo)題,顯示菜單(步驟S13),調(diào)用屏幕組件(步驟S14),并且顯示頁腳(步驟S15)。在這種情況下,網(wǎng)頁以HTML生成并傳送到瀏覽器253。
每次接收來自瀏覽器的頁面轉(zhuǎn)換信號(hào)的時(shí)候,程序模式310執(zhí)行如圖4所示的處理過程。圖4所示的處理過程是與每一個(gè)頁面轉(zhuǎn)換信號(hào)相一致所確定的過程,并且依照該頁面轉(zhuǎn)換信號(hào)而改變。因此,依照該頁面轉(zhuǎn)換信號(hào)可以改變將要顯示的標(biāo)題,將要顯示的菜單,將要調(diào)用的屏幕組件,以及將要顯示的頁腳。
為了更具體的說明在步驟S14中執(zhí)行的該屏幕組件調(diào)用過程,將描述該引用過程的程序模式的例子。圖5A和5B分別地示出了第一和第二屏幕320和322,第一和第二屏幕作為在此使用的屏幕組件。圖5A示出了于第一屏幕320中定義的處理過程,而圖5B示出了于第二屏幕322中示出的處理過程。
參考圖5A,在第一屏幕320中,(1)將不生成任何部分的過程定義為生成訪問數(shù)據(jù)庫的命令(SQL語句)中的第二部分的過程。(2)將生成檢索關(guān)鍵字的輸入屏幕的過程定義為生成屏幕的過程。該檢索關(guān)鍵字于程序定義文件312中定義。(3)作為數(shù)據(jù)檢查過程,該過程檢測作為檢索關(guān)鍵字輸入的數(shù)值型或字符型的數(shù)據(jù)的樣式是否與數(shù)據(jù)庫314的定義匹配。(4)將利用輸入的檢索關(guān)鍵字來操作該數(shù)據(jù)庫從而生成“where”子句的過程定義為生成訪問數(shù)據(jù)庫的命令(SQL語句)中的第一部分的過程。
參考圖5B,在第二屏幕322中,(1)將以程序定義文件為基礎(chǔ)來生成第二部分的過程定義為生成訪問該數(shù)據(jù)庫的命令(SQL語句)中的第二部分的過程。(2)將用于顯示通過執(zhí)行SQL語句而獲得的數(shù)據(jù)的屏幕的過程定義為屏幕生成過程。將要顯示的項(xiàng)目于程序定義文件312中定義。(3)將不檢測任何數(shù)據(jù)的過程定義為數(shù)據(jù)檢查過程。(4)將不生成任何部分的過程定義為生成訪問該數(shù)據(jù)庫的命令(SQL語句)中的第一部分的過程。
圖6示出了于圖4步驟S14中執(zhí)行的該屏幕組件調(diào)用過程的流程的流程圖。以下將說明如圖5A和5B中所示的第一和第二屏幕320和322被調(diào)用的情況。在這種情況下,第一屏幕320是對(duì)應(yīng)于第一頁面的屏幕組件,而第二屏幕322是對(duì)應(yīng)于第二頁面的屏幕組件。
參考圖6,在屏幕組件調(diào)用過程中,確定該頁面轉(zhuǎn)換信號(hào)是否是需求顯示第一頁面的信號(hào)(步驟S21)。如果“是”,則程序前進(jìn)到步驟S22。如果“否”,則程序前進(jìn)到步驟S26。在這種情況下,第一頁面就對(duì)應(yīng)于“first page(第一頁面)”。
在步驟S22中,給出了執(zhí)行生成SQL語句中第二部分的過程的指令,且該過程由對(duì)應(yīng)于第一頁面的屏幕組件定義。生成SQL語句中第二部分的過程在此執(zhí)行,該過程由對(duì)應(yīng)于第一頁面的第一屏幕320定義。由于在第一屏幕320中規(guī)定,將生成SQL語句第二部分的過程,定義為不生成任何部分的過程,故其在此不生成任何部分。
在步驟S23中,執(zhí)行存儲(chǔ)在由屏幕組件320和322共享的存儲(chǔ)器中的公共區(qū)域的該SQL語句。由于該SQL語句的第二部分沒有在步驟S22中生成,故該SQL語句沒有寫入存儲(chǔ)器的公共區(qū)域,并且沒有執(zhí)行。因此,沒有訪問數(shù)據(jù)庫314。
在此之后,給出了用于執(zhí)行屏幕生成過程的指令(步驟S24),該過程在對(duì)應(yīng)于第一頁面的屏幕組件中定義。在這種情況下,生成于第一屏幕320中定義的檢索關(guān)鍵字輸入屏幕。生成的檢索關(guān)鍵字輸入屏幕254被輸出到瀏覽器253(步驟S25)。在程序模式中,生成對(duì)應(yīng)于第一頁面并以HTML描述的屏幕(網(wǎng)頁),且其被傳送到瀏覽器253上。在此之后,過程結(jié)束,且程序返回到該程序模式的步驟S15。
如上所述,在第一屏幕320中定義的生成SQL語句中第二部分的過程,以及屏幕生成過程被按順序指定。由于在第一屏幕320中定義了不執(zhí)行任何內(nèi)容的SQL語句,故在該屏幕組件調(diào)用過程中,只調(diào)用生成該SQL語句的第二部分的過程就足夠了,而不必考慮該SQL語句的第二部分是否已經(jīng)生成。因此,可以使該屏幕組件調(diào)用過程標(biāo)準(zhǔn)化,并且可以被有效的生成。
圖7A和7B的每一個(gè)圖都示出了當(dāng)執(zhí)行該程序模式時(shí),所輸出的屏幕的例子。圖7A示出了于第一屏幕320中定義的檢索關(guān)鍵字輸入屏幕的圖。顯示了包括輸入了作為檢索關(guān)鍵字的段(section)ID的項(xiàng)目的屏幕。
再次參考圖6,當(dāng)在步驟S21中確定該頁面轉(zhuǎn)換信號(hào)不指向第一頁面時(shí),給出由對(duì)應(yīng)于當(dāng)前頁面的屏幕組件所定義的執(zhí)行錯(cuò)誤檢測過程的指令(步驟S26)。該當(dāng)前頁面表示當(dāng)前在瀏覽器253上顯示的頁面。
例如,當(dāng)有第二頁面作為頁面轉(zhuǎn)換信號(hào)被接收時(shí),則該當(dāng)前頁面就是第一頁面,而下一個(gè)頁面就是第二頁面。現(xiàn)舉例說明將第二頁面作為頁面轉(zhuǎn)換信號(hào)來接收的情況。給出了執(zhí)行錯(cuò)誤檢測過程的指令,該錯(cuò)誤檢測過程在對(duì)應(yīng)于當(dāng)前頁面、也就是第一頁面的第一屏幕320中定義。當(dāng)該過程執(zhí)行時(shí),在對(duì)應(yīng)于第一頁面的第一屏幕320中定義的屏幕(圖7A),就在此時(shí)顯示于瀏覽器253上。
因此,作為關(guān)鍵字?jǐn)?shù)據(jù),段ID經(jīng)由圖7A所示的屏幕被鍵入。同從瀏覽器253輸入的該段ID一起,該頁面轉(zhuǎn)換信號(hào)(第二頁面)也被接收。就該段ID而論,作為已收到的關(guān)鍵字?jǐn)?shù)據(jù),無論該數(shù)值、字符等等的類型是否正確,都要進(jìn)行檢查。當(dāng)該段ID的數(shù)值或字符的類型不正確時(shí),則生成包括用于再次登錄段ID的消息框的屏幕,并且將其傳送到瀏覽器253。
以被檢查過的關(guān)鍵字?jǐn)?shù)據(jù)為基礎(chǔ),給出用于執(zhí)行生成SQL語句第一部分(“where”子句)的過程的指令(步驟S27),該過程在對(duì)應(yīng)于該當(dāng)前頁面(第一頁面)的第一屏幕320中定義。在這種情況下,以被檢查的數(shù)據(jù)為基礎(chǔ),生成該SQL語句中的“where”子句。所生成的該“where”子句存儲(chǔ)在RAM 120中的由屏幕組件320和322共享的區(qū)域中。
在隨后的步驟S28中,給出用于執(zhí)行生成該SQL語句中第二部分的過程的指令,該過程由對(duì)應(yīng)于下一個(gè)頁面的屏幕組件來定義。在這種情況下,執(zhí)行生成SQL語句中的第二部分的過程,該過程在對(duì)應(yīng)于第二頁面的第二屏幕322中定義。由第二屏幕322定義的,生成該SQL語句的第二部分的過程,依照該程序定義文件312的定義而產(chǎn)生。生成該SQL語句中的第二部分(“select”語句),其用于提取與所輸入的段ID相匹配的數(shù)據(jù)。所生成的第二部分,存儲(chǔ)在RAM 120中由屏幕組件320和322共享的區(qū)域上。通過于步驟S27中生成的該SQL語句的第一部分(“where”子句)以及通過于步驟S28中生成的該SQL語句的第二部分(“select”語句),來完成該SQL語句,并且將其存儲(chǔ)在RAM 120中由屏幕組件320和322共享的區(qū)域上。
在此之后,執(zhí)行存儲(chǔ)在RAM 120中由屏幕組件320和322共享的區(qū)域上的該SQL語句(步驟29)。
為了輸出作為執(zhí)行結(jié)果而獲得的數(shù)據(jù),給出了用于執(zhí)行屏幕生成過程的指令(步驟S30),該過程由對(duì)應(yīng)于下一個(gè)頁面(第二頁面)的屏幕組件(第二屏幕組件322)來定義。已生成的屏幕256輸出到瀏覽器253(步驟S31)上。在此之后,過程結(jié)束,并且該程序返回到程序模式的步驟S15。
圖7B示出了由第二屏幕組件322生成的屏幕的例子,且示出了與如圖7A所示的屏幕上登錄的段ID所對(duì)應(yīng)的一列段名。
如上所述,在屏幕組件調(diào)用過程中,于該屏幕組件中定義的過程,依照頁面轉(zhuǎn)換信號(hào)并以預(yù)定的順序來執(zhí)行。因此,可以使該屏幕組件調(diào)用過程標(biāo)準(zhǔn)化,并且可以有效生成該程序模式。
不生成SQL語句的第一部分和第二部分的過程,可以同樣作為在該屏幕組件中定義的過程來定義,并且還可以定義不檢測任何數(shù)據(jù)的錯(cuò)誤檢測過程。通過定義如上所述的偽程序過程,可以為所有屏幕組件的每一個(gè)組件都定義這四個(gè)過程。由此,該程序模式可以調(diào)用每個(gè)屏幕組件中定義的所有的過程,以便于該程序模式可以有效地生成。
雖然在此實(shí)施例中,執(zhí)行該SQL語句的過程(步驟S23和S29)被包含于該屏幕組件調(diào)用過程中,但是這些過程可以分別地包含于屏幕組件320和322中。假如是這樣的話,則在這種情況下來定義在生成該屏幕組件中用于訪問數(shù)據(jù)庫的命令第二部分的過程中,生成第二部分,并且在此之后,完成執(zhí)行該SQL語句的過程的操作。類似地,雖然輸出屏幕的過程(步驟S25和S31)被包含于該屏幕組件調(diào)用過程中,但是這些過程可以分別地包含于屏幕組件320和322中。假如這樣的話,則在這種情況下來定義在該屏幕組件中的屏幕生成過程中,生成屏幕,并且在此之后,執(zhí)行輸出已生成屏幕的過程。
圖8示出了程序模式的部分的具體例子的圖,該程序模式定義了所使用的三個(gè)屏幕組件。參考圖8,定義了用于顯示檢索屏幕的屏幕組件“PtnScrSearch”,定義了用于以在該檢索屏幕上輸入的關(guān)鍵字?jǐn)?shù)據(jù)為基礎(chǔ),取回相應(yīng)的數(shù)據(jù)以及用于顯示該數(shù)據(jù)的列表的屏幕組件“PtnScrList”,還定義了用于顯示在上述列表中所顯示出的數(shù)據(jù)片的詳細(xì)數(shù)據(jù)的屏幕組件“PtnScrDetail”。該程序模式使用面向?qū)ο蟮恼Z言,并且不僅包括用于定義所使用的屏幕組件的部分,還包括以預(yù)定順序調(diào)用包含于該屏幕組件中的上述四個(gè)過程的部分。該程序模式可以與其它程序模式共享該以預(yù)定順序調(diào)用包含于該屏幕組件中的四個(gè)過程的部分。因此,在該程序模式生成過程中,僅定義將要使用的該屏幕組件就足夠了。
圖9A到9C示出了當(dāng)屏幕組件被調(diào)用時(shí)所顯示的屏幕的例子的圖。圖9A示出了當(dāng)屏幕組件“PtnScrSearch”被調(diào)用時(shí),所顯示的第十頁面的屏幕的例子。該圖示出了包含有用于登錄用戶ID的框的屏幕。
當(dāng)接收到第十頁面的頁面轉(zhuǎn)換信號(hào)時(shí),調(diào)用該屏幕組件“PtnScrSearch”以執(zhí)行該SQL語句,并且輸出如圖9A所示的第十頁面的屏幕。當(dāng)接收到第十一頁面的頁面轉(zhuǎn)換信號(hào)時(shí),執(zhí)行檢查所輸入的用戶ID的過程以及執(zhí)行生成第十一頁面的“where”子句的過程。
當(dāng)接收到第十一頁面的頁面轉(zhuǎn)換信號(hào)時(shí),該屏幕組件“PtnScrList”執(zhí)行該SQL語句并且輸出如圖9B所示的第十一頁面的屏幕。在如圖9A所示的屏幕上輸入“s*”這種情況作為例子在此示出。參考圖9B,其顯示出了每個(gè)都以“s”作為第一個(gè)字符的多個(gè)用戶ID的數(shù)據(jù)列表。當(dāng)接收到第十二頁面的頁面轉(zhuǎn)換信號(hào)時(shí),執(zhí)行用于檢查在第十一頁面上輸出的任何用戶ID的過程,以及執(zhí)行用于生成第十二頁面中的“where”子句的過程。作為檢查用戶ID的過程,由于以下原因而設(shè)置成不執(zhí)行任何檢查的過程。由于所顯示的用戶ID是從數(shù)據(jù)庫中取出并顯示的,因此不必檢查其用戶ID。
當(dāng)接收到第十二頁面的頁面轉(zhuǎn)換信號(hào)時(shí),該屏幕組件“PtnScrDetail”執(zhí)行該SQL語句,并輸出如圖9C所示的第十二頁面的屏幕。參考圖9C,其顯示出了與圖9B中所顯示的數(shù)據(jù)中、該用戶ID“sumitomol”相對(duì)應(yīng)的詳細(xì)數(shù)據(jù)。
將不執(zhí)行任何檢查的過程定義為該屏幕組件“PtnScrDetail”的檢查過程和生成SQL語句的第一部分(“where”子句)的過程中的每一個(gè)。
如上所述,在程序模式的屏幕組件調(diào)用過程中,將要被調(diào)用的屏幕組件可以依照頁面轉(zhuǎn)換信號(hào)而改變,以便于可以為每一個(gè)頁面轉(zhuǎn)換信號(hào)定義屏幕組件。
由于屏幕組件是為每一個(gè)所顯示的屏幕而定義的,因此對(duì)于每一個(gè)屏幕來說,調(diào)用該屏幕組件就足夠了,并且這可以易于完成屏幕的轉(zhuǎn)換。
此外,由于屏幕組件是為每一個(gè)屏幕而定義的,因而兩個(gè)屏幕可以很容易的進(jìn)行組合,并且這可以通過組合這兩個(gè)屏幕來獲得而不必重新生成屏幕。例如,僅僅通過生成關(guān)于顯示設(shè)計(jì)數(shù)據(jù)的屏幕的屏幕組件,以及生成關(guān)于顯示涉及該具體數(shù)據(jù)的詳細(xì)數(shù)據(jù)的屏幕的屏幕組件,可以通過相繼調(diào)用而使這兩個(gè)屏幕組件而進(jìn)行組合。
現(xiàn)在將要說明在此例中,當(dāng)程序模式在服務(wù)器10中執(zhí)行時(shí),用于生成屏幕的項(xiàng)目對(duì)象。由本申請的申請人所申請的,申請?zhí)枮镹o.2001-325098的日本專利對(duì)該項(xiàng)目對(duì)象進(jìn)行了詳細(xì)的說明。申請?zhí)枮镹o.2001-325098的日本專利中所記載的內(nèi)容在此一并作為參考。
參考圖10,項(xiàng)目對(duì)象150是與數(shù)據(jù)庫項(xiàng)目一致而設(shè)置的對(duì)象。項(xiàng)目對(duì)象150A作為項(xiàng)目對(duì)象的例子,其以取數(shù)據(jù)操作的順序(in an order receivingwork)對(duì)應(yīng)于“order number”數(shù)據(jù)項(xiàng)。項(xiàng)目對(duì)象150A在程序開發(fā)過程中的對(duì)象類里。當(dāng)程序執(zhí)行時(shí),生成項(xiàng)目對(duì)象150A的實(shí)例,并用于執(zhí)行該程序。
如圖10所示,由于項(xiàng)目對(duì)象150A在該對(duì)象類中,除項(xiàng)目名稱(例如,“OrderNum”)作為屬性之外,還提供了項(xiàng)目名(日文名、英文名、其它語言的名稱等等),當(dāng)數(shù)據(jù)項(xiàng)被表示成摘要,提供了將要準(zhǔn)備的諸如數(shù)據(jù)長度、數(shù)據(jù)類型(數(shù)值型、字符串型等等)、輸入窗體(文本框、單選按鈕、檢查框、下拉列表、下拉菜單、組合框、滑尺),相應(yīng)的數(shù)據(jù)庫列名的常規(guī)屬性;以及提供了形成無論所輸入的數(shù)據(jù)正確與否(例如,當(dāng)數(shù)據(jù)類型是數(shù)值型時(shí),無論所輸入的數(shù)據(jù)是數(shù)值型或不是數(shù)值型,也不論數(shù)字的位數(shù)在數(shù)據(jù)長度范圍中或不在數(shù)據(jù)長度范圍中等等)而進(jìn)行檢查的方法的程序代碼。
表1示出了上述項(xiàng)目對(duì)象的屬性、方法等等。
表1
在表1中,“項(xiàng)目名稱”在程序編碼期間用來引用數(shù)據(jù)項(xiàng)的名稱。通常,在數(shù)據(jù)庫中使用對(duì)應(yīng)于該項(xiàng)目對(duì)象的列名,且僅由字母表和部分符號(hào)構(gòu)成。
由于在表1中顯示的其它要素的意義對(duì)本領(lǐng)域技術(shù)人員來說是顯而易見的,故在此將不作出更詳細(xì)的說明。
在此實(shí)施例的程序開發(fā)系統(tǒng)中,項(xiàng)目對(duì)象以源程序的形式并以文本格式來準(zhǔn)備,該源程序是Java(R)語言的類定義的源程序。由于該項(xiàng)目對(duì)象已經(jīng)與數(shù)據(jù)庫緊密關(guān)聯(lián),因此使得直接從數(shù)據(jù)庫執(zhí)行對(duì)該項(xiàng)目對(duì)象的數(shù)據(jù)定義更加方便。
圖11示出了在這種情況下的程序開發(fā)系統(tǒng)的結(jié)構(gòu)示意圖。顯然,該系統(tǒng)在實(shí)際中可以通過如圖1和圖2所示的普通個(gè)人計(jì)算機(jī)來實(shí)現(xiàn)。
參考圖11,該系統(tǒng)由數(shù)據(jù)庫生成工具162構(gòu)成,該生成工具162用于執(zhí)行如下過程從以文本格式準(zhǔn)備的數(shù)據(jù)庫定義信息160中生成數(shù)據(jù)庫166;以文本格式輸出數(shù)據(jù)定義168,它按照與來自數(shù)據(jù)庫定義信息160的數(shù)據(jù)庫166中每一個(gè)項(xiàng)目相對(duì)應(yīng)的項(xiàng)目對(duì)象定義的原型輸出;通過使用了顯示器102、鍵盤106以及鼠標(biāo)108的交互式過程,來修改數(shù)據(jù)定義168的內(nèi)容;并且輸出Java(R)源文件164,該Java(R)源文件164用于從已修改的數(shù)據(jù)定義168中定義該項(xiàng)目對(duì)象的類。
圖12示出了數(shù)據(jù)庫定義信息160中內(nèi)容的例子。圖13示出了數(shù)據(jù)定義168的例子。如圖13所示的數(shù)據(jù)定義168,在圖12所示的數(shù)據(jù)庫定義信息160中“/RECORD”語句之后,從具有“ORDER RECEPTION NUMBER”的字符串行直接摘錄的信息為基礎(chǔ)而生成。此外,必要的項(xiàng)目稍后由程序員添加到數(shù)據(jù)定義168中。每一行由表明屬性的關(guān)鍵字構(gòu)成(例如,“/LANG”、“/INPUTTYPE”等等),并且該屬性的內(nèi)容與該關(guān)鍵字相對(duì)應(yīng)。將對(duì)應(yīng)于數(shù)據(jù)檢查方法的程序編碼原型,添加到數(shù)據(jù)定義168的內(nèi)容中的過程,也在此時(shí)執(zhí)行。
通過從數(shù)據(jù)庫定義信息160生成數(shù)據(jù)定義168,可以使生成項(xiàng)目對(duì)象的過程的數(shù)量最小化。
圖14示意性地示出了從數(shù)據(jù)庫定義信息160中生成數(shù)據(jù)定義168的程序流程圖。參考圖14,首先,打開由程序員指定的數(shù)據(jù)庫定義文件(步驟S41)。在此之后,讀取該文件的第一行(步驟S42)。確定該行的數(shù)據(jù)是否是“/RECORD”(步驟S43)。重復(fù)步驟S42和S43的處理過程,直到所讀的行的內(nèi)容是“/RECORD”。
在讀完“/RECORD”一行后,重復(fù)生成以及輸出數(shù)據(jù)定義168中數(shù)據(jù)庫定義的每一行的過程。具體地,首先,讀取數(shù)據(jù)庫定義信息160的下一行(步驟S44),并且確定該行的數(shù)據(jù)是否是“/END”(步驟S45)。如果不是“/END”,則數(shù)據(jù)定義168從所讀行的數(shù)據(jù)中生成,并且作為一項(xiàng)目對(duì)象文件輸出(步驟S46),接著執(zhí)行讀取下一行的操作(步驟S44)。如果所讀行的數(shù)據(jù)是“/END”,這就意味著在數(shù)據(jù)庫定義信息160中的所有數(shù)據(jù)庫項(xiàng)目都已進(jìn)行處理,所以關(guān)閉該數(shù)據(jù)庫定義文件(步驟S47)且該過程結(jié)束。
步驟S46的處理過程是以數(shù)據(jù)庫定義的格式與數(shù)據(jù)定義168之間的對(duì)應(yīng)關(guān)系為基礎(chǔ)來確定的。由于此過程依賴于系統(tǒng),且對(duì)于本領(lǐng)域技術(shù)人員來說是顯而易見的,故在此將不說明其細(xì)節(jié)。
圖15示意性地示出了通過使用存儲(chǔ)在RAM 120等存儲(chǔ)空間266上的項(xiàng)目對(duì)象,來輸出屏幕(HTML源的輸出)的結(jié)構(gòu)圖。參考圖15,屏幕組件320和322,提供用于指定屏幕中所使用的項(xiàng)目的信息到窗體組件290中。窗體組件290尋找與位于存儲(chǔ)空間266中的屏幕組件320和322中所給出的項(xiàng)目相對(duì)應(yīng)的項(xiàng)目對(duì)象。由于將要在屏幕上顯示的,諸如數(shù)據(jù)名和數(shù)據(jù)長度等的所有信息,都包含于項(xiàng)目對(duì)象中,故通過從該項(xiàng)目對(duì)象中獲得信息,窗體組件290可以生成將提供給瀏覽器253等的HTML源。例如,通過傳送已生成的HTML源到瀏覽器253等,圖7A和7B所示的屏幕由在客戶PC上運(yùn)行的瀏覽器來顯示。
由于諸如將要顯示的項(xiàng)目的名稱、數(shù)據(jù)長度以及數(shù)據(jù)格式等信息從該項(xiàng)目對(duì)象中獲得,故這些信息在組件320和322中沒有被編碼。圖16示出了部分屏幕組件320和322的例子。參考圖16,在屏幕組件320和322的程序中,常數(shù)“p_fields”作為一列將要在進(jìn)程中使用的項(xiàng)目對(duì)象名,在參數(shù)定義行420中定義,且該常數(shù)作為參數(shù),通過調(diào)用該窗體組件的調(diào)用命令421,以下列邏輯提供給該窗體組件。該邏輯是,僅在參數(shù)定義行420中看到直接連接于商業(yè)活動(dòng)的項(xiàng)目對(duì)象的指定。該項(xiàng)目對(duì)象的指定在程序定義文件312中定義。在此,執(zhí)行屏幕組件320和322,同時(shí)引用在程序定義文件312中定義的項(xiàng)目對(duì)象的指定。因此,直接連接于該商業(yè)活動(dòng)的項(xiàng)目對(duì)象的指定,僅能在程序定義文件312中看到。
假如是這樣的話,當(dāng)從屏幕組件320和322提供給窗體組件290的參數(shù),被設(shè)置成與如圖16中所示的{userid,username,pronunciation,……}一樣時(shí),僅通過將參數(shù)變成程序定義文件312中的一列其它項(xiàng)目對(duì)象名稱,就可以通過使用與屏幕組件320和322相同的邏輯以及與窗體組件290相同的邏輯,來顯示完全不同的屏幕。
圖17示出了用于生成該窗體組件的程序邏輯的流程圖。以下的過程按順序在每個(gè)給出的參數(shù)上從頭執(zhí)行。至于每個(gè)參數(shù),引用由程序員指定的項(xiàng)目對(duì)象,并且與用于輸入項(xiàng)目的窗體組件相對(duì)應(yīng)的HTML源,從諸如項(xiàng)目名稱以及數(shù)據(jù)長度等信息中生成(步驟S51)。
隨后,確定是否所有的參數(shù)都已處理(步驟S52)。重復(fù)執(zhí)行步驟S51和S52的處理過程,直到所有的參數(shù)都被處理。
當(dāng)該步驟確定所有的參數(shù)都已處理時(shí),由這些過程形成的HTML源被輸出到瀏覽器253等(步驟S53),并且該過程結(jié)束。
如上所述,任何項(xiàng)目對(duì)象的特殊信息在該屏幕組件邏輯中都不進(jìn)行編碼。由此,該屏幕組件可以在各種過程中經(jīng)常地重復(fù)使用。由于窗體組件290本身與任何項(xiàng)目對(duì)象的特殊信息分離開,故窗體組件290同樣可以在各種過程中經(jīng)常地重復(fù)使用。
根據(jù)本發(fā)明,通過使用項(xiàng)目對(duì)象,用戶接口成功地與程序分離開,并且作為組件來使用。此外,通過執(zhí)行該項(xiàng)目的錯(cuò)誤檢測邏輯和作為方法在項(xiàng)目對(duì)象中更新數(shù)據(jù)庫,直接與商業(yè)活動(dòng)相連的程序部分可以作為組件使用。
當(dāng)程序模式執(zhí)行時(shí),使用項(xiàng)目對(duì)象來生成屏幕的例子,雖然已經(jīng)在此實(shí)施例中描述過了,但是屏幕的形式并不限于此。
例如,在屏幕組件中,可以定義用來生成屏幕所必須的所有數(shù)據(jù)。甚至這樣,當(dāng)屏幕被修改時(shí),檢查過程和用于生成命令的第一部分(“where”子句)的過程都不得不修改,由于這兩個(gè)過程都包含于同一屏幕組件中,故該技術(shù)可以易于應(yīng)付在這種情況下的改變。
雖然已對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明和舉例,但是應(yīng)該清楚的知道,上述記載只是對(duì)本發(fā)明的舉例說明和最合適的例子,而不是對(duì)本發(fā)明的限制,本發(fā)明的實(shí)質(zhì)和范圍僅由所附的各項(xiàng)權(quán)利要求來限定。
權(quán)利要求
1.一種用于訪問數(shù)據(jù)庫的計(jì)算機(jī)程序產(chǎn)品,其通過允許計(jì)算機(jī)執(zhí)行多個(gè)屏幕組件來進(jìn)行訪問,其包括步驟指定將要由計(jì)算機(jī)執(zhí)行的上述多個(gè)屏幕組件的順序,其中上述多個(gè)屏幕組件中的每一個(gè)組件都包括步驟依照從外部給出的每一個(gè)屏幕組件的定義,生成除第一部分外的第二部分,該第二部分用于指定訪問上述數(shù)據(jù)庫的命令中將要被處理的數(shù)據(jù);生成用于輸入和/或輸出數(shù)據(jù)的屏幕;以及依照從外部提供的每一個(gè)屏幕組件的定義,生成第一部分,該第一部分用于指定訪問上述數(shù)據(jù)庫的命令中將要被處理的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中上述屏幕生成步驟依照從外部給出的每一個(gè)屏幕組件的在上述數(shù)據(jù)庫中的項(xiàng)目,來生成屏幕。
3.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,進(jìn)一步包括步驟指定用于執(zhí)行上述步驟的順序,上述步驟包含于上述多個(gè)屏幕組件的每一個(gè)組件中,以便于在上述多個(gè)屏幕組件的所有組件中以相同的順序執(zhí)行。
4.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中上述多個(gè)屏幕組件的每一個(gè)組件都進(jìn)一步包括檢查步驟,該步驟依照從外部給出的每一個(gè)屏幕組件的上述數(shù)據(jù)庫項(xiàng)目,來檢查所獲得的數(shù)據(jù)。
5.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中在生成上述第一部分的上述步驟中,生成命令中的上述第一部分,當(dāng)下一個(gè)屏幕組件由上述計(jì)算機(jī)來實(shí)現(xiàn)時(shí)將執(zhí)行該命令。
6.根據(jù)權(quán)利要求4所述的計(jì)算機(jī)程序產(chǎn)品,其中在生成上述第一部分的上述步驟中,在該命令中的上述第一部分是以在上述檢查步驟中檢查過的數(shù)據(jù)為基礎(chǔ)而生成的。
7.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中生成上述第二部分的上述步驟包括那些不生成上述第二部分的過程。
8.根據(jù)權(quán)利要求4所述的計(jì)算機(jī)程序產(chǎn)品,其中上述檢查步驟包括那些不檢查任何數(shù)據(jù)的過程。
9.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中生成上述第一部分的上述步驟包括那些不生成上述第一部分的過程。
10.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中上述屏幕組件進(jìn)一步包括輸出步驟,該步驟在上述屏幕生成步驟之后,輸出所生成的屏幕。
11.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中每一個(gè)上述屏幕組件都包括執(zhí)行步驟,該步驟在生成上述第二部分的步驟之后,執(zhí)行由最近生成的上述第一部分和第二部分中之一所確定的命令。
12.根據(jù)權(quán)利要求11所述的計(jì)算機(jī)程序產(chǎn)品,進(jìn)一步包括步驟在執(zhí)行由上述第一和第二部分所確定的命令的上述步驟后,生成HTML源的步驟。
13.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中上述第一和第二部分存儲(chǔ)于存儲(chǔ)器的公共區(qū)域。
14.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中從外部給出的定義是用XML或CSV來描述的。
15.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中上述指定順序的步驟包括以下步驟獲取頁面轉(zhuǎn)換信號(hào);以及依照上述所獲取的頁面轉(zhuǎn)換信號(hào)來執(zhí)行上述屏幕組件。
16.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中生成上述第一部分的上述步驟,包括生成SQL語句中除“where”子句的部分,及生成上述第二部分的上述步驟,包括生成SQL語句中“where”子句的部分。
17.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中生成上述屏幕的上述步驟包括以下步驟為每一個(gè)上述數(shù)據(jù)庫項(xiàng)目,準(zhǔn)備窗體組件項(xiàng)目,其對(duì)于輸入或輸出與該項(xiàng)目相對(duì)應(yīng)的項(xiàng)目對(duì)象的項(xiàng)目是必要的;以及根據(jù)用于實(shí)現(xiàn)窗體組件的預(yù)定格式來生成源文件,其中上述窗體組件項(xiàng)目設(shè)置在該窗體組件上。
18.根據(jù)權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其中上述窗體組件項(xiàng)目準(zhǔn)備步驟,包括找出項(xiàng)目對(duì)象的步驟,該項(xiàng)目對(duì)象對(duì)應(yīng)于從外部給出的、每一個(gè)上述屏幕組件的、在上述數(shù)據(jù)庫中的項(xiàng)目。
19.一種計(jì)算機(jī)可讀記錄介質(zhì),其上存儲(chǔ)有訪問數(shù)據(jù)庫的程序,該程序通過允許計(jì)算機(jī)執(zhí)行多個(gè)屏幕組件來進(jìn)行訪問,其包括步驟指定將要由計(jì)算機(jī)執(zhí)行的上述多個(gè)屏幕組件的順序,其中上述多個(gè)屏幕組件中的每一個(gè)組件都包括步驟依照從外部給出的每一個(gè)屏幕組件的定義,生成除第一部分外的第二部分,該第二部分用于指定訪問上述數(shù)據(jù)庫的命令中將要被處理的數(shù)據(jù);生成用于輸入和/或輸出數(shù)據(jù)的屏幕;以及依照從外部提供的每一個(gè)屏幕組件的定義,生成第一部分,該第一部分用于指定訪問上述數(shù)據(jù)庫的命令中將要被處理的數(shù)據(jù)。
20.一種操作數(shù)據(jù)庫的方法,該方法通過允許計(jì)算機(jī)執(zhí)行多個(gè)屏幕組件來進(jìn)行操作,包括步驟指定將要由計(jì)算機(jī)執(zhí)行的上述多個(gè)屏幕組件的順序,其中上述多個(gè)屏幕組件中的每一個(gè)組件都包括步驟依照從外部給出的每一個(gè)屏幕組件的定義,生成除第一部分外的第二部分,該第二部分用于指定訪問上述數(shù)據(jù)庫的命令中將要被處理的數(shù)據(jù);生成用于輸入和/或輸出數(shù)據(jù)的屏幕;以及依照從外部提供的每一個(gè)屏幕組件的定義,生成第一部分,該第一部分用于指定訪問上述數(shù)據(jù)庫的命令中將要被處理的數(shù)據(jù)。
全文摘要
一種用于訪問數(shù)據(jù)庫的計(jì)算機(jī)程序產(chǎn)品,是一種允許計(jì)算機(jī)執(zhí)行多個(gè)屏幕組件的訪問數(shù)據(jù)庫的程序產(chǎn)品,包括設(shè)計(jì)將由計(jì)算機(jī)執(zhí)行的該多個(gè)屏幕組件的順序的步驟(S21)。該多個(gè)屏幕組件的每一個(gè)組件都包括依照從外部給定的每一個(gè)屏幕組件的定義,生成SQL語句中除“where”子句外的部分的步驟(S22、S28);生成用于輸入和/或輸出數(shù)據(jù)的屏幕的步驟(S24、S30);以及依照從外部給定的每一個(gè)屏幕組件的定義,生成SQL語句中“where”子句的步驟(S27)。由于該屏幕組件作為數(shù)據(jù)庫訪問程序的一部分,依照從外部給出的定義來處理這些步驟,故該屏幕組件可以由其它的數(shù)據(jù)庫訪問程序來使用。由此,獲得了通用的多功能性,并且提高了開發(fā)效率。
文檔編號(hào)G06F17/30GK1459713SQ0314076
公開日2003年12月3日 申請日期2003年4月15日 優(yōu)先權(quán)日2002年4月15日
發(fā)明者中村伸裕, 池田和壽 申請人:住友電氣工業(yè)株式會(huì)社