欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

模型驅(qū)動的用戶訪問的制作方法

文檔序號:6553589閱讀:381來源:國知局
專利名稱:模型驅(qū)動的用戶訪問的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及包括用戶訪問的軟件。
背景技術(shù)
填寫表格是現(xiàn)代常見的活動。有些表格簡單直觀,而有些表格復(fù)雜且難以理解。多年 來,已經(jīng)創(chuàng)建出幫助人們填寫表格的各種軟件。 一類軟件從用戶獲得填寫表格所需要的信 息。例如,軟件可以通過提示用戶輸入信息來"訪問"用戶。該信息隨后可以被處理來確定 表格應(yīng)該如何填寫。這樣的軟件已被創(chuàng)建以幫助完成諸如財務(wù)和法律領(lǐng)域中使用的表格。

發(fā)明內(nèi)容
已經(jīng)提出了一種可以用于創(chuàng)建和執(zhí)行包括用戶訪問的軟件的框架。在一個實施例中, 該軟件實質(zhì)上是財務(wù)軟件并且可以被用于例如稅務(wù)、會計或財務(wù)管理。所述訪問搜集可用 于例如填寫表格或生成文件的信息。所述訪問是動態(tài)的訪問,可以隨用戶以及隨時間而變 化,取決于至此所集總的信息。
所述框架包括各種運行時引擎以及數(shù)據(jù)庫。作為兩者之間的關(guān)系,運行時引擎根據(jù)數(shù) 據(jù)庫中的內(nèi)容執(zhí)行包括用戶訪問的軟件應(yīng)用程序。
數(shù)據(jù)庫包括模型信息和訪問指令。模型被配置成存儲任何類型的具有財務(wù)含義的信 息,諸如個人信息(例如出生日期、婚姻狀態(tài)),雇用信息(例如薪水、福利),任何財務(wù) 帳目類型的賬戶余額,和財務(wù)交易。在一個實施例中,模型信息包括元模型,數(shù)據(jù)模型和 實例化模型。元模型定義了四種元素實體(人物,地點或事情),關(guān)系(實體之間的聯(lián) 系),規(guī)則(置于實體或關(guān)系上的限制),和事件(改變實體和關(guān)系的狀態(tài))。數(shù)據(jù)模型包 括這些元素的特定版本,諸如特定實體(例如個人或企業(yè)),特定關(guān)系(例如婚姻或雇用), 特定規(guī)則(例如有關(guān)一個人是否可以合法勞動),和特定事件(例如結(jié)婚或開始就業(yè))。
元模型和數(shù)據(jù)模型是抽象的,不包括針對特定實體(例如一個用戶)的數(shù)據(jù)。對于一 個給定的財務(wù)應(yīng)用程序,實例化數(shù)據(jù)模型從數(shù)據(jù)模型創(chuàng)建而來,包括一個或多個實例化元 素(具有一個或者多個屬性值的元素)。實例化元素代表一個"現(xiàn)實"現(xiàn)象,雖然所述現(xiàn)象 可以是真實的或者是假想的。
訪問指令規(guī)定如何從用戶獲取信息來創(chuàng)建或修改實例化數(shù)據(jù)模型。在一個實施例中, 訪問指令包括流程控制信息、提示和用戶界面(UI)信息。流程控制信息控制訪問的流程。 在一個實施例中,該流程基于數(shù)據(jù)模型。如果一個特定實體被視為一個節(jié)點且一個特定關(guān) 系被視為一個邊緣,則一組互相連接的實體和關(guān)系可以被認(rèn)為是一幅圖。在一個實施例中, 訪問流程對應(yīng)于如何從節(jié)點到邊緣反之亦然地穿越該圖。
所述提示包括訪問處理期間向用戶給出的提示(例如問題)。提示引出可以被用于發(fā) 現(xiàn)或探査數(shù)據(jù)模型元素的信息,諸如特定的實體或關(guān)系。在一個實施例中,數(shù)據(jù)模型中的 每個要素有三種與之相關(guān)聯(lián)的提示AskExist (詢問存在)、AskDetail (詢問細(xì)節(jié))和 AskChange (詢問修改)。
UI信息規(guī)定應(yīng)用程序的用戶界面。在一個實施例中,UI信息規(guī)定如何給出提示和/或 用戶如何回答提示。在一個實施例中,數(shù)據(jù)模型中的每個元素都具有一個或多個相關(guān)的UI, 用戶用該UI輸入所請求的信息。
運行時引擎包括訪問驅(qū)動器。該訪問驅(qū)動器根據(jù)數(shù)據(jù)庫的內(nèi)容執(zhí)行包括用戶訪問的應(yīng) 用程序。訪問驅(qū)動器通過使用訪問指令從用戶獲取信息來生成或修改實例化模型。具體地, 訪問驅(qū)動器根據(jù)實例化模型和流程控制信息執(zhí)行訪問順序。訪問驅(qū)動器利用提示和UI信 息向用戶給出提示并且從用戶接收輸入。訪問驅(qū)動器利用該輸入信息創(chuàng)建或修改實例化模型(例如,通過創(chuàng)建新元素或通過修改或刪除現(xiàn)有的元素)。
一旦實例化模型被建成,就可以被用于生成諸如用于個人所得稅的實例化應(yīng)用專用模 型。然后該實例化應(yīng)用專用模型可以被用于生成應(yīng)用專用文件,諸如稅務(wù)表。由于應(yīng)用程 序基于數(shù)據(jù)庫的內(nèi)容執(zhí)行,因此可以通過改變數(shù)據(jù)庫的內(nèi)容來修改該應(yīng)用程序。


圖1顯示了根據(jù)本發(fā)明的一個實施例的可以被用于創(chuàng)建和執(zhí)行包括用戶訪問的軟件的 框架的方框圖。
圖2顯示了根據(jù)本發(fā)明的一個實施例的用于生成實例化模型的方法的流程圖。 圖3A和3B顯示了根據(jù)本發(fā)明的一個實施例的用于修改實例化模型的方法的流程圖。 圖4顯示了根據(jù)本發(fā)明的一個實施例的如何使用圖1中的某些成份的流程圖。 圖5顯示了根據(jù)本發(fā)明的一個實施例的可視模型器的用戶界面。 圖6顯示了根據(jù)本發(fā)明的一個實施例的訪問流程設(shè)計器的用戶界面。 圖7顯示了根據(jù)本發(fā)明的一個實施例的UI成分設(shè)計器的用戶界面。 圖8顯示了根據(jù)本發(fā)明的一個實施例的模型映射器的用戶界面。 圖9顯示了根據(jù)本發(fā)明的一個實施例的特定實體及其特征的表格。 圖10顯示了根據(jù)本發(fā)明的一個實施例的特定關(guān)系及其特征的表格。 圖11顯示了根據(jù)本發(fā)明的一個實施例的代表數(shù)據(jù)模型的實體關(guān)系圖。 圖12顯示了根據(jù)本發(fā)明的一個實施例的特定事件及其特征的表格。 圖13顯示了根據(jù)本發(fā)明的一個實施例的關(guān)于Spouse (配偶)關(guān)系的信息的方框圖。 圖14顯示了根據(jù)本發(fā)明的一個實施例的關(guān)于WorkFor (工作)關(guān)系的信息的方框圖。 圖15顯示了根據(jù)本發(fā)明的一個實施例的代表數(shù)據(jù)模型的統(tǒng)一建模語言(UML)圖。 本領(lǐng)域中的熟練技術(shù)人員容易從下文的討論中發(fā)現(xiàn),可以采用具有本文描述的結(jié)構(gòu)和 方法的替代實施例而不背離本文描述的本發(fā)明的原理。
具體實施例方式
下文描述的實施例涉及"訪問"用戶(即,提示用戶以獲取信息)的財務(wù)軟件。然而, 本發(fā)明可以與任何類型的包括用戶訪問的軟件結(jié)合使用。該軟件可以被用于諸如訴訟(例 如法庭文件)和法律依從性(例如地方、州和聯(lián)邦政府文件歸檔)的各個不同的領(lǐng)域。
此外,雖然本發(fā)明可以與任何類型的財務(wù)軟件(例如,稅務(wù)、會計和財務(wù)管理)結(jié)合 使用,下文描述的實施例特別涉及稅務(wù)軟件。具體地,下文將描述包括用戶訪問的稅務(wù)軟 件的系統(tǒng)和方法。
創(chuàng)建包括用戶訪問的軟件的框架
根據(jù)本發(fā)明的一個實施例,框架被用于創(chuàng)建和執(zhí)行包括用戶訪問的軟件。所述訪問收 集可用于例如填寫表格或生成文件的信息。所述訪問是動態(tài)的訪問,可以隨用戶以及隨時 間而變化,取決于至此所集總的信息。
所述訪問的一個可變方面是其"流程"(順序或邏輯),代表尋找哪個信息以及以什么 順序?qū)ふ?。所述訪問的另一個可變方面是如何提示用戶以獲取信息(例如,問哪些問題)。
圖1顯示了根據(jù)本發(fā)明的一個實施例的可以被用于創(chuàng)建和執(zhí)行包括用戶訪問的軟件的 框架的框圖。這里,框架100包括數(shù)據(jù)庫105和運行時引擎110。數(shù)據(jù)庫105包括模型信 息120和訪問指令125。
模型信息120包括元模型121,數(shù)據(jù)模型122和實例化模型123。元模型121包括四 種能夠存儲財務(wù)意義上的信息的元素(實體,關(guān)系,規(guī)則和事件)。實體代表人物、地點 或事情;關(guān)系代表實體之間的聯(lián)系;規(guī)則代表置于實體或關(guān)系上的限制;事件以信號表示 元素中的改變。數(shù)據(jù)模型122包括這些元素的特定版本,每個特定元素都具有各種屬性, 每個屬性都可以被賦予一個特定值。實例化模型123包括一個或多個數(shù)據(jù)模型122中的元 素的實例化,其中實例化是包含其一個或多個屬性值的元素。在一個實施例中,包括元模 型121、數(shù)據(jù)模型122和實例化模型123的模型信息120用extensible Markup Language (可擴展標(biāo)記語言)(XML)表示。根據(jù)本發(fā)明的一個實施例,模型信息120在下文的標(biāo)題 為"實例財務(wù)軟件"的部分中被進(jìn)一步描述。 訪問指令125規(guī)定如何從用戶獲取信息。在一個實施例中,訪問指令125包括流程控 制信息126、提示127和用戶界面(UI)信息128。
流程控制信息126控制訪問的流程。在一個實施例中,該流程基于數(shù)據(jù)模型122。如 果一個(特定)實體被視為一個節(jié)點并且一個(特定)關(guān)系被視為一個邊緣,則一組相互 聯(lián)系的實體和關(guān)系可以被認(rèn)為是一幅圖。在一個實施例中,流程對應(yīng)于如何從節(jié)點到邊緣 或者反之亦然地穿越該圖。
訪問過程可以包括例如圖中每個特定元素的兩個階段。作為發(fā)現(xiàn)的第一階段包括確定 該元素是否存在。作為探査的第二階段包括確定關(guān)于該元素的信息??梢曰诶鐝挠脩?接收的信息或者從其他信息推斷出的信息作出每個這樣的確定,如下文的解釋。
在一個實施例中,流程控制信息126規(guī)定發(fā)現(xiàn)和/或探査特定元素應(yīng)該遵循的順序。 在一個實施例中,發(fā)現(xiàn)和/或探査的順序可以由三種不同的方式控制。第一種方式是通過 預(yù)先定義的順序。預(yù)先定義的順序的一個實例是從主要個人實體開始,然后發(fā)現(xiàn)他的居住 實體(如果有),然后發(fā)現(xiàn)他的配偶關(guān)系(如果有),然后發(fā)現(xiàn)他的工作關(guān)系(如果有)等。 預(yù)先定義的順序的另一個實例是從主要個人實體開始,然后發(fā)現(xiàn)他的工作關(guān)系,然后發(fā)現(xiàn) 相關(guān)的業(yè)務(wù)實體等。
第二種控制流程的方式是通過一組規(guī)則或啟發(fā)。啟發(fā)的一個實例是在發(fā)現(xiàn)工作關(guān)系之 前先發(fā)現(xiàn)配偶關(guān)系。啟發(fā)的另一個實例是發(fā)現(xiàn)關(guān)系前先發(fā)現(xiàn)實體。還有一個實例是在深度 探查任何關(guān)系之前先發(fā)現(xiàn)所有與特定實體相連的關(guān)系。啟發(fā)的可以被認(rèn)為是數(shù)據(jù)模型的元 素的部分排序。例如,規(guī)定實體之間的排序的啟發(fā)并不涉及關(guān)系之間或關(guān)系和實體之間的 排序。
在一個實施例中,數(shù)據(jù)模型元素被組織成各個組,所述啟發(fā)基于元素的組合對元素進(jìn) 行排序。例如,"個人信息"組包括個人實體、業(yè)務(wù)實體和居住實體。"你所擁有"組包括從 財產(chǎn)實體衍生的實體,諸如建筑財產(chǎn)實體和交通工具財產(chǎn)實體。"你所欠"組包括從債務(wù)實 體衍生的實體,諸如抵押負(fù)債實體和財產(chǎn)借貸負(fù)債實體。"其他"組包括數(shù)據(jù)模型中剩下的 實體。
可能的啟發(fā)可以包括例如在"你所擁有"實體之前先發(fā)現(xiàn)"個人信息"實體;在"你所 欠"實體之前先發(fā)現(xiàn)"個人信息"實體;在"其他"實體之前先發(fā)現(xiàn)"你所擁有"實體;在"其他 "實體之前先發(fā)現(xiàn)"你所欠"實體。這四個啟發(fā)用作數(shù)據(jù)模型中所有實體的部分排序。(該排 序不是完全的,因為沒有啟發(fā)涉及"你所擁有"實體和"你所欠"實體)。雖然上述啟發(fā)涉及 發(fā)現(xiàn),但啟發(fā)也可以被用于探査(例如,確定一個元素是否應(yīng)該被立即探査還是推遲到后 面)。
在一個實施例中,流程控制信息126規(guī)定已經(jīng)被發(fā)現(xiàn)的特定元素是立即被探査還是推 遲到后面。例如, 一個應(yīng)用程序穿越實例化模型123圖并且發(fā)現(xiàn)諸如特定實體或關(guān)系的元
素。該應(yīng)用程序可以立即或稍后探査該元素(確定有關(guān)該元素的信息)。例如, 一種流程 在深度探查任何關(guān)系之前先發(fā)現(xiàn)所有連接到特定實體的關(guān)系。在該實施例中,探査關(guān)系被 推遲到所有(連接到一個特定實體的)關(guān)系被發(fā)現(xiàn)之后。
例如,更通常地,應(yīng)用程序穿越實例化模型123圖并且遇到諸如實體(節(jié)點)或關(guān)系 (邊緣)的元素。應(yīng)用程序檢查它發(fā)現(xiàn)了哪個元素(如果有)但是還未探査。如果存在給 予先前發(fā)現(xiàn)但還未被探査的元素更高的優(yōu)先級的啟發(fā)(例如,根據(jù)它們的組),則對當(dāng)前 元素的探査被推遲。
第三種控制流程的方式通過通常的圖搜索算法,諸如深度優(yōu)先,廣度優(yōu)先,分支限界, 束或隨機的算法。廣度優(yōu)先算法的一個實例是從主要個人實體開始,然后在發(fā)現(xiàn)任何與那 些關(guān)系關(guān)聯(lián)的實體之前先發(fā)現(xiàn)所有他的所連接的關(guān)系。(發(fā)現(xiàn)所有關(guān)系之前先發(fā)現(xiàn)與一個 關(guān)系相關(guān)聯(lián)的實體是搜索圖的深度的實例)。
注意,由于預(yù)先定義的順序討論具體的特定元素,它的操作被限制于使用特定數(shù)據(jù)模 型122的應(yīng)用程序。由于一般的圖搜索算法獨立于數(shù)據(jù)模型122工作,因此可以被用于控 制使用任何數(shù)據(jù)模型122的任何應(yīng)用程序的流程。還有,應(yīng)該注意,上述流程控制方法可 以組合使用。例如,發(fā)現(xiàn)決定可以基于某個啟發(fā)作出。然而,如果沒有任何啟發(fā)應(yīng)用于特 定的情況,則可以用預(yù)先定義的順序或一般的圖搜索算法取而代之。
在另一個實施例中,流程控制信息126包括在每個節(jié)點(實體)或邊緣(關(guān)系)在其 被穿越(例如,發(fā)現(xiàn)或探査)時應(yīng)該給出哪種提示。在一個實施例中,數(shù)據(jù)模型122中的 每個元素具有三種類型的與之相關(guān)的提示。第一種類型(〃詢問存在〃)引出可以被用于〃 發(fā)現(xiàn)"特定元素的信息(也就是,確定該特定元素是否存在)。第二種類型("詢問細(xì)節(jié)") 引出可以被用于"探査"該特定元素的信息(例如,通過對其一個或多個屬性賦值對其進(jìn)行
實例化)。第三種類型(〃詢問修改〃)引出關(guān)于該特定元素中的可能改變的信息。由于事 件可以改變特定元素,詢問修改提示有時引出可以被用于發(fā)現(xiàn)或探査特定事件的信息。
考慮聯(lián)系兩個個人實體的配偶關(guān)系。詢問存在提示可以是"你結(jié)婚了嗎?"或者"你是 單身嗎?"。詢問細(xì)節(jié)提示可以是"告訴我們更多關(guān)于你的婚姻"或者"描述你的婚禮"。詢 問修改提示可以是"從2005年1月1日起你的婚姻狀態(tài)有任何變化嗎? 〃或者"2005年你結(jié) 婚了? 〃。
在一個實施例中,對于現(xiàn)有的實體或關(guān)系,可以給出兩個提示中的一個1)關(guān)于實
體或關(guān)系的詢問修改提示,或2)關(guān)于將改變(或刪除)實體或關(guān)系的特定事件的詢問存
在提示。對于不存在的實體或關(guān)系,可以給出兩個提示中的一個1)關(guān)于實體或關(guān)系的
詢問存在提示,或2)關(guān)于將創(chuàng)建實體或關(guān)系的特定事件的詢問存在提示。
在運行時中,訪問驅(qū)動器135能夠取得流程控制信息126以確定例如下一個將發(fā)現(xiàn)或 探査哪個元素和/或給出哪種提示。流程控制信息126可以根據(jù)想要哪種類型的流程而不 同。例如,如果想要的是預(yù)先定義的順序,則流程控制信息126可以包括諸如實體和關(guān)系 的數(shù)據(jù)模型元素的特定排序。如果想要的是基于規(guī)則或啟發(fā)的流程,則流程控制信息126 可以包括一個或多個規(guī)則或啟發(fā)及其如果發(fā)生沖突時應(yīng)該用哪一個的等級。如果想要的是 圖搜索算法,則流程控制信息126可以包括一個或多個算法,諸如廣度優(yōu)先搜索、深度優(yōu) 先搜索、分支限界和束搜索。
在一個實施例中,利用XML將流程控制信息126存儲于數(shù)據(jù)庫中。附錄A包括根據(jù)本 發(fā)明的一個實施例的用于基于組(如上文所述)定義發(fā)現(xiàn)或探査啟發(fā)的XML編碼。
提示127包括在訪問處理期間向用戶給出的提示(例如問題)。如上文所述,所述提 示引出可以被用于發(fā)現(xiàn)或探查數(shù)據(jù)模型122的元素(諸如特定實體或關(guān)系)的信息。
在一個實施例中,數(shù)據(jù)模型122中的每個元素都有與其相關(guān)聯(lián)的三種提示詢問存在 提示,詢問細(xì)節(jié)提示和詢問修改提示。在一個實施例中,如果對于一個特定類型存在多于 一個的提示(例如,如果存在兩個詢問存在提示),則在運行時中根據(jù)一個或多個用戶特 征選擇一個提示。這些特征可以在實例化模型123中由各個特定元素描述。例如,用戶的 年齡和性別可以由代表該用戶的個人實體描述。這些特征隨后將被用于確定適當(dāng)?shù)奶崾尽?例如,如果一個用戶小于25歲,則所選擇的詢問存在提示可能是"你是單身嗎?",而不
是"你結(jié)婚了嗎?"。
涉及有疑問的特定元素(也即,關(guān)于引出哪個信息的元素)的信息也可以由另一個特 定元素描述。尤其是,詢問修改提示可以很好地利用這類信息。由于詢問修改提示引出關(guān) 于特定元素中的可能修改的信息,該特定元素的初始狀態(tài)被暗示。例如,如果有疑問的特 定元素是配偶關(guān)系并且實例化模型123當(dāng)前描述該用戶是單身,則所選擇的詢問修改提示 可能是"你在2005年結(jié)婚了嗎? 〃,而不是〃從2005年1月1日開始你的婚姻狀態(tài)有任何 變化嗎? 〃
用戶特征也可以包括實例化模型123中的描述之外的信息。例如,用戶特征可以包括 用戶對該應(yīng)用程序的經(jīng)驗級別(例如,該用戶是專家還是新手)。經(jīng)驗級別可以基于在使 用該應(yīng)用程序期間由軟件收集的統(tǒng)計。
在一個實施例中,提示被個別寫入。在另一個實施例中,提示用軟件生成。例如,可 以使用指定其值在運行時中確定的某些變量的"模版"提示。模版提示的一個實例是"你的〈 配偶〉的姓名?"其中變量〈配偶〉的值可以是"妻子"或"丈夫",取決于用戶的性別。因此, 可以寫入這個模版提示代替兩個〃正?!ㄌ崾尽愕钠拮拥男彰?和〃你的丈夫的姓名? 〃。 作為另一個實例,自然語言處理可以被用于生成提示(例如,基于姓名代入、角色代入和 改述)。
在一個實施例中,利用XML將提示(無論是正常提示還是模版提示)存儲于數(shù)據(jù)庫中。 附錄B包括根據(jù)本發(fā)明的一個實施例的用于模版提示的XML編碼。在運行時中,訪問驅(qū)動 器135可以獲取這些信息以確定向用戶呈現(xiàn)哪個提示。在另一個實施例中,提示與下面兩 方面相關(guān),1)數(shù)據(jù)模型122元素,該提示引出有關(guān)該數(shù)據(jù)模型122元素的信息,和/或2) 提示類型(例如詢問存在,詢問細(xì)節(jié),或詢問修改)。
UI信息128規(guī)定應(yīng)用程序的用戶界面。在一個實施例中,UI信息128規(guī)定如何給出 提示和/或用戶如何回答提示。在一個實施例中,每個特定實體、關(guān)系和事件都有一個或 多個相關(guān)的UI,用戶用該UI輸入所請求的信息。例如, 一個特定元素可以具有用于不同 目的不同的UI。 Add View (添加查看)UI可以使用戶能夠通過輸入新信息創(chuàng)建新元素。 Edit View (編輯查看)UI可以使用戶能夠通過修改或更新現(xiàn)有信息編輯現(xiàn)有的元素。 Su國ary View (概要査看)UI可以給出所選的關(guān)于該元素的信息,而Detail View (細(xì)節(jié)
査看)UI可以給出關(guān)于該元素的所有信息。
UI可以根據(jù)它們所關(guān)聯(lián)的特定元素和/或它們的用途(例如,添加查看、編輯查看、 概要査看和細(xì)節(jié)查看)而在外觀上不同(例如,通過使用不同的布局、字體和顏色方案)。 在一個實施例中,數(shù)據(jù)模型122的一組UI信息128被稱為"主題"。通過規(guī)定不同的主題, 可以改變應(yīng)用程序的UI。在一個實施例中,UI包括具有可以輸入信息的域的對話框。
在一個實施例中,使用XML將UI信息128存儲在數(shù)據(jù)庫中。在運行時中,訪問驅(qū)動 器135可以獲得這些信息以確定1)如何給出提示,和/或2)如何接收輸入。例如,UI信 息128可以用XML用戶界面語言(XUU或extensible Application Mark叩Language (可 擴展應(yīng)用標(biāo)記語言)(XAML)表示。XUL在http:〃www. mozilla. org/projects/xul/被進(jìn) 一步描述,它的說明書可在http:〃麗.mozilla. org/projects/xul/xul. html.得至U。 XAML 在
http:〃winfx. msdn. microsoft, com/1 ibmry/default. asp7url二/library/enus/wcp—con c印tual/html/a80db4cd-dd0f-479f-a45f-3740017c22e4. asp被進(jìn)一步描述。
運行時引擎110包括訪問驅(qū)動器135。訪問驅(qū)動器135根據(jù)數(shù)據(jù)庫105的內(nèi)容執(zhí)行應(yīng) 用程序(包括用戶訪問)。在一個實施例中(沒有顯示),運行時引擎110也包括諸如規(guī)則 引擎和數(shù)據(jù)庫引擎的幫助應(yīng)用程序。規(guī)則引擎根據(jù)規(guī)則集進(jìn)行規(guī)則鏈接。規(guī)則鏈接可以被 用于例如推斷信息,而不是必須在訪問處理期間從用戶獲取信息。規(guī)則鏈接也可以被用于 控制對實例化模型123圖的穿越,如上文所述。在一個實施例中,規(guī)則引擎是開放源Drools 規(guī)則引擎(可在http:〃drools. codehaus. org得到),流程控制信息126包括輸入到規(guī)則 引擎中的規(guī)則。數(shù)據(jù)庫引擎與數(shù)據(jù)庫105相耦接以獲得和存儲信息。
訪問驅(qū)動器135生成或修改實例化模型123。應(yīng)用程序無論其類型將集中于收集與一 個或多個特定實體相關(guān)的信息。在一個實施例中,當(dāng)應(yīng)用程序開始時,生成包括某個實體 ("錨"實體)的實例化模型123。訪問驅(qū)動器135實例化該實體并且"發(fā)現(xiàn)"其他特定元素 (確定其他元素存在)并且對其進(jìn)行實例化。最終,創(chuàng)建一個完整的實例化模型123。
例如,考慮用于確定個人納稅義務(wù)的稅務(wù)準(zhǔn)備應(yīng)用程序。該應(yīng)用程序?qū)⑸蓪嵗?型123,該實例化模型123包括一個錨元素一代表有疑問的納稅人的個人實體。訪問驅(qū)動 器135將實例化該個人實體并且發(fā)現(xiàn)影響該納稅人的納稅義務(wù)的其他數(shù)據(jù)模型元素。
注意,可以用不同的順序進(jìn)行上述步驟。例如,訪問驅(qū)動器135可以首先實例化該納 稅人實體然后發(fā)現(xiàn)其他元素,反之亦然。還有,其他元素中的一個一旦被識別訪問驅(qū)動器 135就可以對其進(jìn)行實例化,或者訪問驅(qū)動器135可以在實例化任何其他元素之前先繼續(xù) 識別其他元素。這些選擇控制訪問驅(qū)動器135的運行時操作,上文已參考訪問指令125對 此進(jìn)行過描述。
在一個實施例中,根據(jù)從應(yīng)用程序的用戶接收的信息發(fā)現(xiàn)和/或?qū)嵗瘮?shù)據(jù)模型元素。 例如,應(yīng)用程序可以"訪問"用戶(向用戶給出提示)。為了給個人實體的出生日期屬性賦 值,應(yīng)用程序可能會詢問用戶他的出生日期。為了確定工作關(guān)系是否存在,應(yīng)用程序可能 會詢問用戶他是否有工作。在一個實施例中,在視覺上給出提示(例如使用顯示裝置)。 在另一個實施例中,在聲音中給出提示(例如使用揚聲器)。
然后,用戶的回答將被用于確定一個元素的存在或者向元素的屬性賦值。在一個實施 例中,通過使用點擊設(shè)備或鍵盤輸入回答(例如,在表格的一個域中輸入數(shù)值)。在另一 個實施例中,通過說話輸入回答(例如,使用話筒和聲音辨認(rèn)程序)。
在另一個實施例中,基于已經(jīng)由應(yīng)用程序推斷的信息(例如使用規(guī)則/推斷引擎)發(fā) 現(xiàn)和/或?qū)嵗瘮?shù)據(jù)模型元素。例如,考慮一個包括具有性別屬性值是"男性"的個人實體 的數(shù)據(jù)模型。應(yīng)用程序隨后確定由該個人實體代表的人已婚(因此是配偶關(guān)系的一部分)。 作為該確定的結(jié)果,應(yīng)用程序可以推斷1)存在另一個個人實體(第一個人的配偶),和2) 該個人實體的性別屬性值是"女性"。應(yīng)用程序可以推斷出這些事實是因為1)配偶關(guān)系被 定義為存在于兩個個人實體之間,和2)存在這樣的規(guī)則,該規(guī)則指出,在配偶關(guān)系中, 兩個個人實體必定具有不同的性別屬性。通過這樣的方式,訪問驅(qū)動器135可以發(fā)現(xiàn)數(shù)據(jù) 模型元素和/或?qū)ζ溥M(jìn)行實例化而不需要來自用戶的另外的輸入。下文將參考與數(shù)據(jù)模型 122的元素相關(guān)的規(guī)則來討論所述推斷。
訪問驅(qū)動器135利用訪問指令125從用戶獲取信息。具體地,訪問驅(qū)動器135根據(jù)實 例化模型123和流程控制信息126執(zhí)行訪問順序。訪問驅(qū)動器135利用提示126和UI信 息128向用戶給出提示并從用戶接收輸入。訪問驅(qū)動器135利用輸入信息創(chuàng)建或修改實例 化模型123 (例如,通過創(chuàng)建新元素或通過修改或刪除現(xiàn)有的元素)。生成和修改實例化模型
根據(jù)圖1中所示的框架100創(chuàng)建的軟件可以被用于生成實例化模型123和/或修改現(xiàn) 有的實例化模型123。當(dāng)例如該軟件對某個特定的個人第一次使用時,生成模型是有用的。
當(dāng)例如該軟件已由特定的個人使用但是存儲在模型中的信息不再反映當(dāng)前的情況時,修改
模型是有用的。圖2涉及生成模型,而圖3A和3B涉及修改現(xiàn)有的模型。
圖2顯示了根據(jù)本發(fā)明的一個實施例的生成實例化模型的方法的流程圖。在一個實施 例中,訪問驅(qū)動器135進(jìn)行流程圖200的步驟?;仡檻?yīng)用程序收集與一個或者多個被稱為 "錨"實體的特定實體相關(guān)的信息。 〃錨"實體可以是例如個人實體或業(yè)務(wù)實體。在一個實施 例中,當(dāng)數(shù)據(jù)模型122被創(chuàng)建時, 一個或多個實體被指定為錨實體。
在圖2中所示的實施例中只有一個錨實體。當(dāng)錨實體(特定實體)被添加到被稱為New Entity Queue (新實體隊列)(NEQ) 210時,流程圖200開始。然后,對新實體隊列中的 每個實體(當(dāng)前實體)進(jìn)行各個步驟。最初,新實體隊列只包含錨實體。然而,在流程圖 200的其他步驟中,其他實體可以被添加到新實體隊列中,如下文所述。
當(dāng)前實體被實例化并且添加到實例化模型中220。(實例化模型123—開始是空的,直 到在步驟220的第一重復(fù)循環(huán)期間實例化錨實體被添加到其中)。如上文所討論的,實例 化一個特定元素包括向該元素的一個或多個屬性賦值。該值可以基于從用戶接收的信息或 者從其他信息推斷的信息確定,如上文討論的。該確定與上文所述的"探查"階段相似。在 一個實施例中,當(dāng)確定一個值時,首先根據(jù)已經(jīng)收集的信息(例如存儲在實例化模型123 中的信息)嘗試推斷。
如果不能通過推斷確定該值,則從用戶尋求信息。在一個實施例中向用戶給出一個或 多個提示。在一個實施例中,給出與當(dāng)前實體相關(guān)的"詢問細(xì)節(jié)"提示(提示127的一部分)。 例如,對于個人實體,提示包括問題"你的出生日期?"。在對該提示的回答中,用戶輸入 用于確定實體屬性的值的信息。在一個實施例中,利用添加查看UI輸入該信息。對于該 實體的所有屬性重復(fù)該處理。
然后,對于每個可能存在并涉及當(dāng)前實體的特定關(guān)系r當(dāng)前可能關(guān)系")進(jìn)行各個步
驟。例如,如果實體是個人實體,則該實體可以涉及配偶關(guān)系,父母/子女關(guān)系,和/或工 作關(guān)系??梢曰跀?shù)據(jù)模型122確定這些關(guān)系。注意,有些關(guān)系涉及兩個相同類型的特定
實體(例如,兩個個人實體)。在一個實施例中,為了避免兩次考慮每一個這樣的關(guān)系(一 次是當(dāng)前實體是第一實體,又一次是當(dāng)前實體是第二實體),被考慮的關(guān)系只是當(dāng)前實體 是第一 ("源")實體,而不是當(dāng)前實體是第二 ("目標(biāo)")實體時的關(guān)系。
作出關(guān)于涉及當(dāng)前實體的當(dāng)前可能關(guān)系是否存在的確定,并且以回答注釋當(dāng)前的實體 230。該確定與上文所述的〃發(fā)現(xiàn)〃階段相似。在一個實施例中,可能有三種回答1)存在 (當(dāng)前可能關(guān)系確實存在),2)不存在(當(dāng)前可能關(guān)系不存在),和3)不知道(不清楚當(dāng) 前可能關(guān)系是否存在)。如果當(dāng)前可能關(guān)系確實存在,則該關(guān)系被添加到稱為New Relation Queue (新關(guān)系隊列)(NRQ) 240的隊列。
所述確定可以基于從用戶接收的信息或從其他信息推斷的信息。在一個實施例中,當(dāng) 進(jìn)行該確定時,首先根據(jù)已經(jīng)收集到的信息(例如,存儲在實例化模型123中的信息)嘗 試推斷。
如果不能通過推斷作出確定,則向用戶尋求信息。在一個實施例中,向用戶給出一個 或多個提示。在一個實施例中,給出與當(dāng)前可能關(guān)系相關(guān)的"詢問存在"提示(提示127的 一部分)。例如,對于配偶關(guān)系,該提示包含問題"你結(jié)婚了嗎?"。在另一個實施例中, 給出與事件相關(guān)的"詢問存在"提示(提示127的一部分)。該事件可以是如果發(fā)生就將創(chuàng) 建當(dāng)前可能關(guān)系的事件。例如,對于配偶關(guān)系,該事件可以是婚禮,而提示可以包含問題 "你最近結(jié)婚了嗎?"?;卮疬@些提示,用戶輸入被用于確定涉及當(dāng)前實體的當(dāng)前可能關(guān)系 是否存在的信息。
下面,對新關(guān)系隊列中的每個特定關(guān)系("當(dāng)前實際關(guān)系")進(jìn)行各個步驟。最初,新 關(guān)系隊列只包含涉及錨實體的關(guān)系。然而,在流程圖200的其他步驟中,其他關(guān)系可以被 添加到新關(guān)系隊列中,如下文所述。
當(dāng)前實際關(guān)系被實例化并且添加到實例化模型250中。可以根據(jù)從用戶接收到的信息 或者從其他信息推斷的信息確定特定關(guān)系的屬性值。該確定與上文所述的"探査"階段相
似。在一個實施例中,當(dāng)確定一個值時,首先根據(jù)已經(jīng)收集到的信息(例如,存儲在實例 化模型123中的信息)嘗試推斷。
如果不能通過推斷確定該值,則向用戶尋求信息。在一個實施例中,向用戶給出一個 或多個提示。在一個實施例中,給出與當(dāng)前實際關(guān)系相關(guān)的"詢問細(xì)節(jié)"提示(提示127的一部分)。例如,對于配偶關(guān)系,該提示包含問題"你何時結(jié)婚的?"?;卮鹪撎崾荆脩?輸入被用于確定當(dāng)前實際關(guān)系的屬性值的信息。在一個實施例中,利用添加?xùn)丝碪I輸入 該信息。對該關(guān)系的所有屬性重復(fù)該處理。
回顧一個關(guān)系涉及多個實體的情況。由于已經(jīng)作出該關(guān)系存在的確定,該關(guān)系中的其 他實體(例如,當(dāng)前實體之外的實體) 一定也存在。這些其他的(特定)實體被添加到新 實體隊列260并且因此將被處理,如上文所述。在一個實施例中,可以以任何順序進(jìn)行步 驟250和260。
注意,上述流程圖200的描述并不涉及以下的順序,1)探查新實體隊列中的特定實 體(例如,從步驟220開始),2)發(fā)現(xiàn)特定關(guān)系(例如,從步驟230開始),和3)探査新 關(guān)系隊列中的特定關(guān)系(例如,從步驟250開始)。這些順序基于上文所述的流程控制信 息126。例如,關(guān)于各個實體,流程控制信息126可以規(guī)定個人實體應(yīng)該在業(yè)務(wù)實體之前 被探査。關(guān)于各個關(guān)系,流程控制信息126可以規(guī)定配偶關(guān)系應(yīng)該在工作關(guān)系之前被發(fā)現(xiàn), 然而配偶關(guān)系又應(yīng)該在工作關(guān)系之后被探査。
基于流程控制信息126,流程圖200的其他實施例也是可能的。例如,用于探査實體、 發(fā)現(xiàn)關(guān)系和探査關(guān)系的重復(fù)循環(huán)可能被定義得不同,從而影響訪問流程。在一個實施例中 (沒有顯示), 一旦作出當(dāng)前可能關(guān)系的確存在(步驟230),就立即探查該關(guān)系(步驟250 和260),而不是等待作出關(guān)于其他可能關(guān)系存在的確定。在該實施例中,在考慮另一個關(guān) 系之前對每個可能關(guān)系進(jìn)行發(fā)現(xiàn)和探査的處理(如果該關(guān)系存在)。
在另一個實施例中(沒有顯示), 一旦目標(biāo)實體已被添加到新實體隊列中(步驟260), 該實體就立即被探查(步驟220),而不是等待其他實際關(guān)系的探査(步驟250和260)。 在該實施例中,每個實體一被發(fā)現(xiàn)就被探查。
圖3A—3B顯示根據(jù)本發(fā)明的一個實施例的修改實例化模型的方法的流程圖。在一個 實施例中,訪問驅(qū)動器135進(jìn)行流程圖300的步驟。當(dāng)流程圖300開始時,實例化模型123 已經(jīng)存在。
在圖3A和3B中顯示的實施例中,實例化模型123只包括一個錨實體。當(dāng)錨實體(實 例化特定實體)被添加到稱為Update Entity Queue (更新實體列隊,UEQ) 305時,流程 圖300開始。
下面,對更新實體隊列中的每個實例化實體r當(dāng)前實體")進(jìn)行各個步驟。最初,更
新實體隊列中只包含錨實體。然而,在流程圖300的其他步驟中其他實體可以被添加到更 新實體隊列中,如下文所述。
當(dāng)前實體被更新310。在一個實施例中,更新實體310包括更新該實體的一個屬性的
值(如果必要)。在一個實施例中,當(dāng)確定該更新值時,首先根據(jù)已經(jīng)收集的信息(例如,
存儲在實例化模型123中的信息)嘗試推斷。如果不能通過推斷確定更新的值,則通過給 出一個或多個提示從用戶尋求信息。在一個實施例中,給出與當(dāng)前實體相關(guān)的"詢問修改" 提示(提示127的一部分)。例如,對于個人實體,該提示包含問題〃你改過名嗎?"。在 另一個實施例中,給出與事件相關(guān)的"詢問存在"提示(提示127的一部分)。該事件可以 是如果發(fā)生就可以改變當(dāng)前實體的屬性的事件。例如,對于個人實體,該事件可以是婚禮 (引起"姓名"屬性改變),并且提示可以包含問題"你最近結(jié)婚了嗎?"。回答該提示,用 戶輸入被用于更新當(dāng)前實體的屬性值的信息。在一個實施例中,利用編輯查看UI輸入該 信息??梢詫Χ鄠€詢問修改提示、詢問存在提示和實體的屬性重復(fù)該處理。
在前文討論的實施例中,每次每個實例化實體只存在一個版本(例如,在數(shù)據(jù)庫105 中)。在另一個實施例中,同一個實例化實體可以同時存在多個版本。在不同的時間段期 間這些版本可以代表該實例化實體。在一個實施例中,元素包括分別代表開始日期和結(jié)束 曰期的"開始"和"結(jié)束"屬性,在開始日期和結(jié)束日期之間由該實體模擬的現(xiàn)象存在。該實 體也包括引用在開始日期之前存在的對應(yīng)的實體(如果有)的"過去"屬性,和引用在結(jié)束 日期之后存在的對應(yīng)的實體(如果有)的"將來"屬性。用這種方法, 一個實體被"鏈接"到 其本身的其他版本。
在同一個實例化實體的多個版本可以同時存在的一個實施例中,更新實體310包括以 下步驟作出關(guān)于是否應(yīng)該改變該實體的一個屬性的值的確定。如果要改變該值,則該實 體被復(fù)制。非復(fù)制實體隨后用該屬性的新值更新。復(fù)制副本代表修改前的實體,而非復(fù)制 副本代表修改后的實體。復(fù)制副本的"結(jié)束"屬性值和非復(fù)制副本的"開始"屬性值被設(shè)定為 反映它們有效期的時間印記。此外,復(fù)制副本的"將來"屬性引用非復(fù)制副本,而非復(fù)制 副本的"過去"屬性引用復(fù)制副本。
下面,對當(dāng)前實體中注釋的每個特定關(guān)系("當(dāng)前關(guān)系")進(jìn)行各個步驟?;仡櫘?dāng)生成 實例化模型123時(圖2)可能的關(guān)系被考慮,并且以它們的存在狀態(tài)注釋實體(步驟230)。 對于每個被注釋為"不存在"或"不知道"的關(guān)系,關(guān)于該關(guān)系是否存在(涉及當(dāng)前實體)作 出確定,并且以回答注釋當(dāng)前實體315。如果當(dāng)前關(guān)系的確存在,則被添加到稱為新關(guān)系 隊列(NRQ)的隊列320。
在一個實施例中,為了作出該確定,首先根據(jù)已經(jīng)收集的信息(例如,存儲在實例化 模型123中的信息)嘗試推斷。如果不能通過推斷作出確定,則通過給出一個或多個提示 從用戶尋求信息。在一個實施例中,給出與當(dāng)前關(guān)系相關(guān)的"詢問存在"提示(提示127的 一部分)。例如,對于配偶關(guān)系,該提示包含問題"你結(jié)婚了嗎?"。在另一個實施例中, 給出與事件相關(guān)的"詢問存在"提示(提示127的一部分)。該事件可以是如果發(fā)生就將創(chuàng) 建當(dāng)前關(guān)系的事件。例如,對于配偶關(guān)系,事件可以是婚禮,提示可以包含問題"最近你 結(jié)婚了嗎?"?;卮鹪撎崾?,用戶輸入被用于確定關(guān)系是否存在的信息。在一個實施例中, 利用編輯查看UI輸入該信息??梢詫τ诙鄠€詢問存在提示重復(fù)該處理。
對于每個被注釋為"存在"的關(guān)系,作出關(guān)于是否需要更新的確定325。在一個實施例 中,當(dāng)確定是否需要更新時,首先根據(jù)已經(jīng)收集的信息(例如,存儲在實例化模型123中 的信息)嘗試推斷。如果不能通過推斷作出確定,則通過給出一個或多個提示從用戶尋求 信息。在一個實施例中,給出與當(dāng)前關(guān)系相關(guān)的"詢問修改"提示(提示127的一部分)。 例如,對于配偶關(guān)系,提示包含問題"你的婚姻狀態(tài)有變化嗎?"。在另一個實施例中,給 出與事件相關(guān)的"詢問存在"提示(提示127的一部分)。該事件可以是如果發(fā)生就將改變 當(dāng)前關(guān)系的屬性的事件。例如,對于配偶關(guān)系,事件可以是合法分居,而提示可以包含問 題"你已經(jīng)合法分居了嗎? 〃?;卮鹪撎崾?,用戶輸入被用于確定是否需要更新的信息。在 一個實施例中,利用編輯査看UI輸入該信息。可以對于多個詢問修改提示和詢問存在提 示重復(fù)該處理。
如果當(dāng)前關(guān)系的信息(例如它的屬性值)需要被更新,則更新當(dāng)前關(guān)系330。在一個 實施例中,更新關(guān)系330包括更新該關(guān)系的一個屬性值。在該實施例中,每次每個實例化 關(guān)系只存在一個版本(例如,在數(shù)據(jù)庫105中)。在另一個實施例中,同一實例化關(guān)系的 多個版本可以同時存在。這些版本可以代表不同時間段的實例化關(guān)系。在一個實施例中, 元素包括分別代表開始日期和結(jié)束日期的"開始"和"結(jié)束"屬性,在開始日期和結(jié)束日期之 間由該關(guān)系模擬的現(xiàn)象存在。該關(guān)系也包括"過去"屬性,該屬性引用在開始日期之前存在 的對應(yīng)的關(guān)系(如果有),和"將來"屬性,該屬性引用在結(jié)束日期之后存在的對應(yīng)的關(guān)系 (如果有)。用這種方式,所述關(guān)系被鏈接到它的其他版本。
在同一實例化關(guān)系的多個版本可以同時存在的一個實施例中,更新關(guān)系330包括以下 步驟復(fù)制該關(guān)系。然后非復(fù)制關(guān)系以新屬性的值更新。該復(fù)制副本代表修改前的關(guān)系, 而非復(fù)制副本代表修改后的關(guān)系。復(fù)制副本的"結(jié)束"屬性值和非復(fù)制副本的"開始"屬性 值被設(shè)定為反映它們的有效期的時間印記。此外,復(fù)制副本的"將來"屬性引用非復(fù)制副本, 而非復(fù)制副本的"過去"屬性引用復(fù)制副本。
如果當(dāng)前關(guān)系已終止(例如,婚姻關(guān)系由于離婚而終止),則刪除當(dāng)前關(guān)系335。在一 個實施例中,刪除關(guān)系335包括注釋當(dāng)前實體(和該關(guān)系的目標(biāo)實體)以反映該關(guān)系不再
存在。此外,每個實體的"開始"和"結(jié)束"屬性被設(shè)定為反映它們的有效期的時間印記。
在一個實施例中,從數(shù)據(jù)庫105中刪除當(dāng)前關(guān)系。在該實施例中,關(guān)于不再存在的過 去關(guān)系的信息未被保留。在另一個實施例中,保留這類信息。當(dāng)前關(guān)系的"開始"和"結(jié)束" 屬性被設(shè)定為反映它們的有效期的時間印記。
如果不需要任何更新(也即,當(dāng)前關(guān)系沒有改變),則當(dāng)前關(guān)系的目標(biāo)實例化實體被 添加到更新實體隊列。這樣,目標(biāo)實體也將被更新310,如上文所述。
下面,對于新關(guān)系隊列中的每個特定關(guān)系("當(dāng)前關(guān)系〃)進(jìn)行各個步驟。步驟320期 間各個關(guān)系被添加到新關(guān)系隊列。這些關(guān)系先前被注釋為"不存在"或"不知道"但是現(xiàn)在被 確定為存在(步驟315)。當(dāng)前關(guān)系被實例化("探査")并且添加到實例化模型345 (參看 圖3B)。此外,它的目標(biāo)特定實體被添加到新實體隊列350。步驟345和350 (圖3B)與 步驟250和260 (圖2)相似,所以這里不重復(fù)它們的細(xì)節(jié)。
下面,對于新實體隊列中的每個特定實體("當(dāng)前實體")進(jìn)行各個步驟。步驟350期 間各個實體被添加到新實體隊列。這些實體是新關(guān)系的目標(biāo)實體。當(dāng)前實體被實例化并且 添加到實例化模型355。對于每個可能存在的涉及當(dāng)前實體的特定關(guān)系("當(dāng)前可能關(guān)系") 作出關(guān)于它是否的確存在的確定,并且以回答注釋當(dāng)前實體360。如果當(dāng)前關(guān)系的確存在, 則被添加到新關(guān)系隊列中365。新關(guān)系隊列中的每個特定關(guān)系("當(dāng)前實際關(guān)系")被實例 化并且添加到實例化模型370中。此外,當(dāng)前實際關(guān)系的目標(biāo)特定實體被添加到新實體隊
列375中。步驟355、 360、 365、 370和375 (圖犯)與步驟220、 230、 240、 250和260 (圖2)相似,所以這里不重復(fù)它們的細(xì)節(jié)。
當(dāng)新實體隊列中的每個特定實體已經(jīng)被處理后(步驟355、 360、 365、 370和375), 確定新關(guān)系隊列中是否還有未被處理的任何關(guān)系存在。(關(guān)系可能在步驟365期間已經(jīng)被 添加到新關(guān)系隊列中)。如果有,則流程圖300返回到步驟345和350以處理未被處理的 關(guān)系。然后處理新實體隊列中未被處理的實體。重復(fù)這些步驟(345、 350、 355、 360、 365、 370和375),直到新關(guān)系隊列中的所有關(guān)系和新實體隊列中的所有實體都被處理。
注意,上文對流程圖300的描述不涉及以下的順序1)更新實體隊列中的實例化實 體(例如,步驟310), 2)更新由〃不存在〃或〃不知道〃注釋的關(guān)系(例如,步驟315和320), 3)更新由"存在"注釋的關(guān)系(例如,步驟325、 330、 335和340), 4)探查新關(guān)系隊列中 的特定關(guān)系(例如,步驟345和350), 5)探查新實體隊列中的特定實體(例如,從步驟 355開始),6)發(fā)現(xiàn)特定可能的關(guān)系(例如,從步驟360開始),和7)探査特定實際關(guān)系 (例如,從步驟370開始)。這些順序基于上文所述的流程控制信息126。
根據(jù)流程控制信息126,流程圖300的其他實施例也是可能的。例如,用于發(fā)現(xiàn)、探 査和更新實體和關(guān)系的重復(fù)循環(huán)可以被定義得不同,由此影響訪問的流程。在一個實施例 中(沒有顯示), 一旦作出當(dāng)前可能關(guān)系的確存在的確定(步驟360),則該實際關(guān)系立即 被探査(步驟370和375),而不是等待作出關(guān)于其他可能關(guān)系存在的確定。在該實施例中, 在考慮另一個關(guān)系之前,對每個可能關(guān)系(如果該關(guān)系存在)進(jìn)行發(fā)現(xiàn)和探查的處理。
在另一個實施例中(沒有顯示), 一旦目標(biāo)實體已經(jīng)被添加到新實體隊列中(步驟375), 則該實體立即被探査(步驟355),而不是等待其他實際關(guān)系的探查(步驟370和375)。 在該實施例中,每個實體一被發(fā)現(xiàn)就被探査。
利用實例化模型
圖4顯示了根據(jù)本發(fā)明的一個實施例的可以如何使用圖1中的一些成份的流程圖。在 一個實施例中,應(yīng)用程序運行如下訪問驅(qū)動器135從用戶獲取信息并且生成實例化模型 123。轉(zhuǎn)換器410利用實例化模型123和應(yīng)用邏輯400生成實例化應(yīng)用專用模型420。最后, 文件繪制器430基于實例化應(yīng)用專用模型420生成應(yīng)用專用文件440。下文將更詳細(xì)地描
述這些處理。
一旦訪問驅(qū)動器135已經(jīng)生成實例化模型123,信息就可以從一個域轉(zhuǎn)換到另一個域 (例如,諸如稅務(wù)或會計的財務(wù)模型)。例如,納稅申報單準(zhǔn)備應(yīng)用程序被用于準(zhǔn)備納稅 申報單,并且在特殊的應(yīng)用中,將為特定的納稅人準(zhǔn)備申報單。為了達(dá)到該目的,應(yīng)用程 序需要鑒別所有適用于該納稅人的收入和扣除的來源。
根據(jù)數(shù)據(jù)模型,特定納稅人是個人實體或企業(yè)實體,而收入和扣除的來源是通過各種 關(guān)系(諸如擁有或欠債)連接到該個人實體或企業(yè)實體的實體(諸如財產(chǎn)或負(fù)債)。這些 連接可以是"直接"的(例如,沿只包括一個關(guān)系邊緣的路徑),或者也可以是間接的(例 如,沿包括一個或多個中間實體節(jié)點和多個關(guān)系邊緣的路徑)。直接連接的實例是通過包 括一個擁有關(guān)系的路徑連接到納稅人實體的財產(chǎn)實體。間接連接的實例是通過包括一個擁 有關(guān)系、個人實體和配偶關(guān)系的路徑連接到納稅人的財產(chǎn)實體。
每個財務(wù)軟件應(yīng)用程序都擁有其自己的從數(shù)據(jù)模型到適當(dāng)?shù)呢攧?wù)模型的映射,無論該 應(yīng)用程序處在稅務(wù)領(lǐng)域、會計領(lǐng)域還是財務(wù)管理領(lǐng)域。所述映射將使財務(wù)概念(諸如"工 資"或"利息收益")與一個或多個數(shù)據(jù)模型元素相關(guān)聯(lián)并且如果必要則指示如何計算所述 概念的值。
轉(zhuǎn)換器410根據(jù)實例化模型123和應(yīng)用邏輯400生成實例化應(yīng)用專用模型420。應(yīng)用 邏輯400通過從實例化模型123到目標(biāo)模型映射數(shù)據(jù)將實例化模型123與目標(biāo)應(yīng)用專用模 型相關(guān)聯(lián)。在一個實施例中,目標(biāo)模型是諸如稅務(wù)或會計的財務(wù)模型。所述映射利用財務(wù) 規(guī)則(例如會計規(guī)則或稅法)使目標(biāo)模型中的概念與一個或多個實例化模型123元素相關(guān) 聯(lián)并且如果必要則指示如何計算所述概念的值。
稅務(wù)領(lǐng)域中的財務(wù)模型的實例包括個人和企業(yè)的州和聯(lián)邦的所得稅。在一個實施例 中,聯(lián)邦個人所得稅財務(wù)模型包括如納稅人實體(例如,個人或結(jié)婚的夫妻),收入類型 (例如,薪水或利息)和扣除類型(例如,抵押的地方稅收或利息)的各個概念。在個人 所得稅準(zhǔn)備應(yīng)用程序中,應(yīng)用邏輯400將這些概念與一個或多個實例化模型123元素相關(guān) 聯(lián)并且如果必要則指示如何計算這些概念的值。
例如,納稅實體將對應(yīng)于代表納稅人的個人實體(在個別納稅人的情況)或者有配偶 關(guān)系的兩個個人實體(在結(jié)婚的夫妻共同申報的情況)。納稅實體(通常需要納稅申報)
的社會安全號碼則將對應(yīng)于該個人實體的SSN屬性的值(個別納稅人的情況)。
收入來源將對應(yīng)于例如工作薪水(由工作關(guān)系的薪水屬性代表)或銀行帳戶利息(由 諸如存款帳戶財產(chǎn)實體的財務(wù)財產(chǎn)實體代表)。如果納稅實體從多個來源獲得收入,則獲 得的總收入將是這些數(shù)目的總和。在該情況下,應(yīng)用邏輯400將規(guī)定1)對應(yīng)的實例化元 素,和2)如何根據(jù)該元素計算財務(wù)概念(這里為總收入)。(在上述社會安全號碼的實例 中,實例化模型123中已給出納稅實體的社會安全號碼,所以不必為了確定而進(jìn)行任何計 算。)
如上文討論的,實例化模型123可以以任何形式或數(shù)據(jù)結(jié)構(gòu)表示。相似地,目標(biāo)應(yīng)用 專用模型可以以任何形式或數(shù)據(jù)結(jié)構(gòu)表示,并且不必以與實例化模型123相同的方式表示。 在一個實施例中,用XML表示實例化模型123和目標(biāo)模型。XML描述了模型的結(jié)構(gòu),包括 它的組成部分。在一個實施例中,根據(jù)XML Scheme Definition language (模式定義語言) (XSD)利用XML模式規(guī)定XML。
附錄C1包括根據(jù)本發(fā)明的一個實施例的規(guī)定實例化模型123的XSD。這里,XSD包括 幾個元素,諸如姓、性別、雇主和薪水。XSD也包括幾個復(fù)合類型,諸如個體類型、姓名 類型和住址類型。
附錄C2包括根據(jù)本發(fā)明的一個實施例的規(guī)定目標(biāo)財務(wù)模型的XSD。這里,財務(wù)模型是 聯(lián)邦個人所得稅,和具體地為Internal Revenue Service (IRS) Form 1040。這里,XSD 包括幾個元素,諸如姓、地址行和SSN。 XSD也包括幾個復(fù)合類型,諸如收入類型、線7 類型和納稅人類型。
應(yīng)用邏輯400規(guī)定如何生成作為實例化模型123和目標(biāo)應(yīng)用專用模型(例如,聯(lián)邦個 人所得稅)的實例化應(yīng)用專用模型420。在一個實施例中,應(yīng)用邏輯400是XML文件。例 如,應(yīng)用邏輯400可以是XSL Transformation (轉(zhuǎn)換)(XSLT)文件,當(dāng)被執(zhí)行時(參看 下文關(guān)于轉(zhuǎn)換器410的內(nèi)容),該XSL Transformation (轉(zhuǎn)換)(XSLT)進(jìn)行映射功能并且 生成實例化應(yīng)用專用模型420。
如果應(yīng)用邏輯400是XSLT文件,則轉(zhuǎn)換器410可以是例如XSLT引擎?;蛘?,應(yīng)用邏 輯400和轉(zhuǎn)換器410可以組合成單個的程序,該程序基于實例化模型123生成實例化應(yīng)用 專用模型420。在一個實施例中,轉(zhuǎn)換器410利用XSLT轉(zhuǎn)換進(jìn)行映射和計算。轉(zhuǎn)換規(guī)則和
/或計算被規(guī)定在映射中。轉(zhuǎn)換器410可以包括XSLT引擎,諸如Xalan引擎(Apache XML 項目的一部分)或Altova XSLT引擎(可從馬薩諸塞州的Bevely的Altova⑧得到)。
一旦實例化應(yīng)用專用模型420存在,就可以生成財務(wù)文件(諸如稅收申報單或平衡表)。 文件繪制器430根據(jù)由轉(zhuǎn)換器410生成的實例化應(yīng)用專用模型420生成應(yīng)用專用文件440
(諸如稅務(wù)表格或會計報告)。在一個實施例中,實例化應(yīng)用專用文件440被利用XForm 標(biāo)準(zhǔn)敘述為網(wǎng)絡(luò)形式(例如,包括各種用戶界面元素)。HTML (HyperText Markup Language
(超文本標(biāo)記語言))或XHTML (eXtensibke HyperText Mark叩Lanaguage (可擴展超文 本標(biāo)記語言))利用XSLT轉(zhuǎn)換從XForm定義中生成。然后HTML或XHTML可以由網(wǎng)絡(luò)瀏覽 器遞交。
注意,應(yīng)用程序每次執(zhí)行時并不需要執(zhí)行圖4中所示的所有步驟。例如,如果用戶已 經(jīng)生成一個應(yīng)用專用文件440并且現(xiàn)在想生成一個不同的文件,則應(yīng)用程序不需要再次執(zhí) 行訪問驅(qū)動器135。這是因為訪問驅(qū)動器135意味著生成實例化模型123,而實例化模型 123己經(jīng)存在。(它被用于生成第一應(yīng)用專用文件440。)只是在沒有實例化模型123存在 時(例如,應(yīng)用程序被第一次運行時)或者當(dāng)實例化模型123存在但是需要修改時(例如, 當(dāng)由實例化模型123代表的現(xiàn)象已經(jīng)改變時)才需要執(zhí)行訪問驅(qū)動器135。
在一個實施例中(沒有顯示),應(yīng)用程序也包括工作流程引擎和/或文件管理引擎。工 作流程引擎在所述訪問和文件準(zhǔn)備過程期間管理用戶的進(jìn)程并且使用戶能在問題之間導(dǎo) 航(向前或向后),保存當(dāng)前對話,和重新裝載所保存的對話。文件管理引擎存儲用戶信 息(例如,已經(jīng)生成的應(yīng)用專用文件440)并且提供諸如存取控制、版本和編輯的特征。
設(shè)計時工具
如上文所述,運行時引擎110根據(jù)數(shù)據(jù)庫105的內(nèi)容執(zhí)行應(yīng)用程序。因此,通過改變 數(shù)據(jù)庫105的內(nèi)容,可以創(chuàng)建不同的應(yīng)用程序。
數(shù)據(jù)庫105的內(nèi)容可以以任何形式或數(shù)據(jù)結(jié)構(gòu)表示。如果所述內(nèi)容以人們可讀的形式 存儲(例如,源代碼或XML),則可以對其進(jìn)行直接編輯以修改現(xiàn)有的應(yīng)用程序或者創(chuàng)建新 的應(yīng)用程序。
如果所述內(nèi)容是人們不可讀的(或者如果直接編輯是不希望的),則可以創(chuàng)建一個設(shè)
計工具,使用戶(這里為應(yīng)用程序設(shè)計者或程序員)能夠創(chuàng)建和/或修改數(shù)據(jù)庫105的內(nèi) 容。在一個實施例中,每個存儲在數(shù)據(jù)庫105中的信息類型都具有單獨的設(shè)計工具,使信 息能夠被創(chuàng)建和/或修改。
例如,在一個實施例中,利用視覺模擬器創(chuàng)建和/或修改數(shù)據(jù)模型122。在一個實施例 中,該視覺模擬器以拖放(drag-and-drop)界面為特征而使用戶能夠定義和/或修改特定 元素(例如,根據(jù)元模型121的元素)。然后該特定元素可以被用于特定的應(yīng)用程序。在 另一個實施例中,視覺模擬器包括一個已經(jīng)被定義的(由同一個用戶或其他用戶)特定元 素的特定元素庫。該特定元素庫可以組織和細(xì)分特定元素,使特定元素在利用視覺模擬器 時更容易找到。例如,所述組織可以基于財務(wù)模型(例如,稅務(wù)相對于會計)和該模型中 的不同類型的應(yīng)用程序(例如,州相對于聯(lián)邦或者個人相對于企業(yè))。圖5顯示了根據(jù)本 發(fā)明的一個實施例的視覺模擬器的用戶界面。
在一個實施例中,利用訪問提示設(shè)計器和訪問流程設(shè)計器創(chuàng)建和/或修改訪問指令 125。在一個實施例中,訪問提示設(shè)計器包括一個已經(jīng)被定義的(由同一用戶或者其他用 戶)訪問提示(包括模版和變量)的訪問提示庫。該訪問提示庫可以組織和細(xì)分提示,從 而在利用視覺提示設(shè)計器時更容易找到訪問提示。例如,所述組織可以基于特定元素(例 如個人實體)和該特定元素中的不同類型的提示(例如,詢問存在,詢問細(xì)節(jié)和詢問修改)。 訪問流程設(shè)計器可以例如使用戶能用圖形規(guī)定發(fā)現(xiàn)或探査流程并且根據(jù)規(guī)則和條件定義 向前和向后穿越行動。圖6顯示了根據(jù)本發(fā)明的一個實施例的訪問流程設(shè)計器的用戶界面。
用戶界面(UI)信息128利用UI成分設(shè)計器創(chuàng)建和/或修改。在一個實施例中,UI成 分設(shè)計器以what-you-see-is-what-you-get (所見即所得)(WYSIWYG)界面為特征,從而 正在設(shè)計的UI成分如它將要被給予最終用戶一樣被給予設(shè)計用戶。在另一個實施例中, UI成分設(shè)計器包括己經(jīng)被定義的(由同一用戶或者其他用戶)UI成分的UI成分庫。該UI 成分庫可以組織和細(xì)分UI成分從而當(dāng)使用UI成分設(shè)計器時能夠更容易地找到UI成分。 例如,所述組織可以基于特定元素(例如個人實體)和該特定元素中的不同類型的功能(例 如,添加查看、編輯查看、細(xì)節(jié)査看和概要查看)。圖7顯示了根據(jù)本發(fā)明的一個實施例 的UI成份設(shè)計器的用戶界面。
應(yīng)用邏輯400利用模型映射器創(chuàng)建和/或修改。在一個實施例中,模型映射器以圖形
界面為特征,該圖形界面使用戶能將一個模型(諸如數(shù)據(jù)模型122)中的值與另一個模型 (諸如應(yīng)用專用模型)中的值相關(guān)聯(lián)(映射)并且規(guī)定計算方法。圖8顯示了根據(jù)本發(fā)明 的一個實施例的模型映射器的用戶界面。在一個實施例中,模型映射器使用M鄰ForceTM軟 件應(yīng)用程序(可從馬薩諸塞州的Bevely的AltovaS得到)。附錄D包括由模型映射器生成 的XSLT代碼。
用戶界面的左邊顯示了原始模型。這里,原始模型是代表具有姓名、出生日期、住處 和工作的個人的數(shù)據(jù)模型122。用戶界面的右邊顯示了目標(biāo)模型。這里,目標(biāo)模型是代表 具有配偶和收入的納稅人的財務(wù)模型(具體地為IRS表1040)。
用戶界面的中間顯示了左側(cè)模型和右側(cè)模型之間的相互關(guān)系。連接兩個元素(每個模 型各一個)的連線表示該兩個元素彼此相關(guān)。如果在原始元素的值被"賦"給目標(biāo)元素之前 對原始元素進(jìn)行計算,則該計算被顯示于用戶界面的中間。例如,原始模型中的ADDRLINE 元素有兩個字符串(字符串1和字符串2)。連接這兩個字符串并且將結(jié)果字符串賦值給目 標(biāo)模型中的AddressLine (地址線)元素。注意,所述計算可以被鏈接到一起。例如,將 原始模型中的CITY和STATEPROVN元素相連接以形成結(jié)果字符串,而該字符串又與原始模 型中的P0STALC0DE元素連接。然后將最終的字符串賦給目標(biāo)模型中的CityStateZip元素。
設(shè)計時工具也可以包括工作流程引擎和/或內(nèi)容管理引擎。工作流程引擎在設(shè)計和實 施軟件應(yīng)用程序期間管理軟件團(tuán)隊的進(jìn)程并且使部分應(yīng)用程序能夠被回顧、批準(zhǔn)和部署。 內(nèi)容管理引擎存儲諸如源代碼、圖像和模型的正在被開發(fā)的軟件應(yīng)用程序下的數(shù)據(jù),并且 提供諸如存取控制、版本和編輯的特征。
實例財務(wù)軟件
諸如納稅申報表準(zhǔn)備、會計和財務(wù)管理應(yīng)用程序的財務(wù)軟件應(yīng)用程序彼此在很多方面 有所不同。大部分的不同源于這樣的事實,即這些應(yīng)用程序具有不同的主要功能或目的。 納稅申報表準(zhǔn)備應(yīng)用程序可以被用于確定個人或企業(yè)的納稅義務(wù),而會計應(yīng)用程序或財務(wù) 管理應(yīng)用程序可以被用于跟蹤和分析個人或企業(yè)的財產(chǎn)和負(fù)債。這些不同的目的使應(yīng)用程 序需要不同類型的財務(wù)信息。例如,稅務(wù)應(yīng)用程序需要關(guān)于個人和該個人的工作和雇主的 信息,而會計應(yīng)用程序需要關(guān)于企業(yè)和企業(yè)的客戶及銷售的信息。
在應(yīng)用程序的主要目的的方面,各個應(yīng)用程序在如何操作信息上也不同。例如,納稅 申報表準(zhǔn)備應(yīng)用程序可能將總數(shù)分類為收入對扣除,而會計應(yīng)用程序可能將總數(shù)分類為財 產(chǎn)對負(fù)債。應(yīng)用程序互相不同的還有一個方面是所生成的財務(wù)文件的類型。例如,稅務(wù)應(yīng) 用程序可能生成納稅申報表,而會計應(yīng)用程序可能生成平衡表。
不管應(yīng)用程序所有的這些不同,財務(wù)軟件應(yīng)用程序的確具有一些共同的屬性。這些應(yīng) 用程序接收財務(wù)信息,根據(jù)一組規(guī)則操作這些信息并且生成財務(wù)文件。如果對這些不同點 進(jìn)行劃分,則可以將共同的框架用于生成不同類型的財務(wù)軟件應(yīng)用程序。例如, 一種數(shù)據(jù) 模擬技術(shù)可以被用于代表財務(wù)軟件應(yīng)用程序需要的信息。然后可以取決于軟件應(yīng)用程序 (稅務(wù)、會計等)的目的以不同的方式處理該數(shù)據(jù)模型中的信息。最終,可以生成不同的 財務(wù)文件。利用對每個應(yīng)用程序都有意義的基本現(xiàn)象的數(shù)據(jù)模型,上文描述的框架可以被 用于生成各種不同類型的財務(wù)軟件應(yīng)用程序。
在一個實施例中,財務(wù)軟件應(yīng)用程序需要的信息由模型信息120定義,該模型信息包 括元模型121、數(shù)據(jù)模型122和實例化模型123。元模型121包括四種元素實體、關(guān)系、 規(guī)則和事件。數(shù)據(jù)模型122包括這些元素的特定的或應(yīng)用專用的版本,如下文所述。
實體代表人物、地點或事情。在一個實施例中,數(shù)據(jù)模型122包括以下特定實體個
人、企業(yè)、住址、場所、負(fù)債、財產(chǎn)、學(xué)校、慈善事業(yè)、政府和醫(yī)療機構(gòu)??梢愿鶕?jù)正在 創(chuàng)建的財務(wù)軟件應(yīng)用程序適當(dāng)?shù)囟x其他特定實體。可以使不同的軟件應(yīng)用程序涉及相同 特定類型的不同實體。例如,可以使納稅申報表準(zhǔn)備應(yīng)用程序涉及代表單個納稅人的個人 實體和代表雇主的企業(yè)實體,而可以使會計應(yīng)用程序涉及代表客戶的個人實體和代表賣家 的企業(yè)實體。
不同的特定實體可以具有不同類型的特征或?qū)傩?。在一個實施例中,個人實體具有如
下屬性姓名、出生日期、性別、婚姻狀態(tài)、國籍和SSN (social security number (社 會安全號碼))。企業(yè)實體具有如下屬性名稱、建立日期、地點、聯(lián)邦I(lǐng)D和州ID。
屬性的值可以是簡單數(shù)據(jù)類型(諸如數(shù)字或字符串)或者是包括多個子部的復(fù)合數(shù)據(jù) 類型。例如,地址值(復(fù)合數(shù)據(jù)類型)可以包括多個字符串(例如城市和州)和數(shù)字(例 如郵編)。屬性值可以由用戶輸入,或者根據(jù)實例化模型123中的其他信息推斷或推導(dǎo)。 例如,婚姻狀態(tài)值可以根據(jù)配偶關(guān)系的(不)存在推斷(參看下文)。代表受贍養(yǎng)者數(shù)目
的值可以根據(jù)贍養(yǎng)關(guān)系的數(shù)目推導(dǎo)(參看下文)。用戶可以通過輸入不同的值取代推斷或 推導(dǎo)的值。如果該不同的值與實例化數(shù)據(jù)模型123的其他部分沖突,則將向用戶給出警示。
圖9顯示了根據(jù)本發(fā)明的一個實施例的特定實體及其特征的表格。 〃衍生實體"是特定 實體的子類型。例如,住址實體可以是主要住址實體或次要住址實體。負(fù)債實體可以是抵 押負(fù)債實體、車貸負(fù)債實體、財產(chǎn)借貸負(fù)債實體或個人借貸負(fù)債實體。
所述關(guān)系代表多個實體之間的聯(lián)系。在一個實施例中,數(shù)據(jù)模型122包括以下特定關(guān)
系配偶、父母/子女、受贍養(yǎng)人、工作、教育、居住、崗位、志愿、擁有、欠債和支付/ 收入??梢愿鶕?jù)正在創(chuàng)建的財務(wù)軟件應(yīng)用程序適當(dāng)?shù)囟x其他特定關(guān)系(例如,產(chǎn)品、賣 主和供應(yīng)商)。不同的特定關(guān)系可以具有不同類型的特征或?qū)傩?。例如,配偶關(guān)系存在于 兩個個人實體之間并且具有兩個角色屬性(每個個人實體各一個角色屬性)。男性個體的 角色值是"丈夫",而女性個體的角色值是"妻子"。工作關(guān)系存在于一個個人實體和一個企 業(yè)實體之間并且具有工作頭銜、薪水、福利、費用和角色的屬性(每個實體各一個)。個 人實體的角色值是"雇員",而企業(yè)實體的角色值是"雇主"。與實體屬性相似,關(guān)系屬性值
可以是簡單數(shù)據(jù)類型或復(fù)合數(shù)據(jù)類型。圖10顯示了根據(jù)本發(fā)明的一個實施例的特定關(guān)系
及其特征的表格。
在一個實施例中,數(shù)據(jù)模型122被表示為實體關(guān)系(ER)模型并且利用ER圖直觀可 視。圖11顯示了根據(jù)本發(fā)明的一個實施例的代表數(shù)據(jù)模型的實體關(guān)系圖。在所示實施例 中,實體由長方形表示,關(guān)系由橢圓形表示。所示實施例包括四個實體(兩個個人實體 1110A、 1110B和兩個企業(yè)實體1120A, 1120B)和三個關(guān)系(一個配偶關(guān)系1130和兩個工 作關(guān)系1140A, 1140B)。
每個特定關(guān)系都具有特定的含義。該含義可以根據(jù)所述關(guān)系與之相關(guān)聯(lián)的實體的相對 "位置"而不同。例如,兩個個人實體1110之間存在贍養(yǎng)關(guān)系。但是沒有辦法僅根據(jù)個人 實體1110識別哪個個體1110是受贍養(yǎng)者。為了處理這種情形,ER圖中的線可以是有方向 的,其方向?qū)⒅甘驹撽P(guān)系的含義。
在一個實施例中,特定現(xiàn)象由已經(jīng)被實例化的數(shù)據(jù)模型122的元素(也即,包含其一 個或多個屬性值的元素)表示。例如,納稅人由實例化個人實體表示。該實例化個人實體 將具有對應(yīng)于該納稅人的狀態(tài)的屬性值,諸如納稅人的姓名、出生日期和性別。類似地,
工作由實例化工作關(guān)系表示。實例化工作關(guān)系將具有對應(yīng)于該工作的狀態(tài)的屬性值,諸如 工作頭銜和薪水。
考慮一個納稅申報表準(zhǔn)備應(yīng)用程序。與個人或企業(yè)的納稅義務(wù)相關(guān)的信息將存儲在實 例化實體和關(guān)系中。如果實體被視為節(jié)點而關(guān)系被視為邊緣,則這些實例化實體和關(guān)系將 被"連接"(在圖上的感覺)到代表正在被確定其納稅義務(wù)的個人或企業(yè)的實體。在一個實 施例中,實體的納稅義務(wù)可以只通過分析存儲在連接到被研究實體的實體和關(guān)系中的信息 來確定。在一個實施例中,該財務(wù)軟件應(yīng)用程序的執(zhí)行涉及穿越數(shù)據(jù)模型"圖",如上文所 述。
例如,如果圖11中所示的數(shù)據(jù)模型元素被實例化,則該實例化數(shù)據(jù)模型123將代表 第一個人(個人實體1110A)、第二個人(個人實體1110B)、有關(guān)他們的婚姻情況的事實 (配偶關(guān)系1130)和有關(guān)他們的工作情況的事實(工作關(guān)系1140A、 1140B)。該實例化數(shù) 據(jù)模型123可以被用于例如準(zhǔn)備第一個人(個人實體1110A)的納稅申報表(當(dāng)然要假設(shè) 沒有任何其他的收入或扣除的來源)。實例化數(shù)據(jù)模型123中的信息將被存儲在數(shù)據(jù)結(jié)構(gòu) 中。例如,每個元素(諸如實體或關(guān)系)的屬性值可被存儲在單獨的數(shù)據(jù)結(jié)構(gòu)中。納稅申 報表準(zhǔn)備軟件將訪問這些數(shù)據(jù)結(jié)構(gòu)來確定稅務(wù)義務(wù)并且生成納稅申報表。
在一個實施例中,由實例化元素模擬的現(xiàn)象存在于現(xiàn)實生活中,實例化元素的屬性值 反映了現(xiàn)實生活現(xiàn)象的狀態(tài)。在該實施例中,實例化元素反映現(xiàn)實。然而,實例化元素不 反映現(xiàn)實也是有用的(例如,作為用于財務(wù)預(yù)算的假想情況的一部分)。在該實施例中, 由實例化元素模擬的現(xiàn)象不存在于現(xiàn)實生活中(或者,如果該現(xiàn)象的確存在,則實例化元 素的屬性值不反映現(xiàn)實生活現(xiàn)象的狀態(tài))。
所述規(guī)則代表置于實體和關(guān)系上的限制。如果實體或關(guān)系不遵守它的規(guī)則,則該實體 或關(guān)系是無效的。在一個實施例中,實體的規(guī)則規(guī)定如何推斷特定屬性的值。例如,如果 個人實體1110具有年齡屬性,則規(guī)則可以規(guī)定該屬性值等于"當(dāng)前"時間印記(例如,該 模型信息有效的日期)與個人的出生日期屬性值之差。在另一個實施例中,實體的規(guī)則規(guī) 定特定屬性的值是否有效。例如,規(guī)則可以規(guī)定個人實體的年齡屬性值必須不超過120。
規(guī)則也可以表示實體(例如屬性)和關(guān)系之間的聯(lián)系。例如,如果個人實體1110具 有婚姻狀態(tài)屬性,則規(guī)則可以規(guī)定如果存在配偶關(guān)系1130則該屬性值是"已婚",如果不 存在配偶關(guān)系1130則是"未婚"。作為另一個實例,在一個實施例中,數(shù)據(jù)模型122對于 配偶關(guān)系1130包括以下特定規(guī)則如果一個相關(guān)個人實體1110的性別屬性值是男性,則 另一個相關(guān)個人實體1110的性別屬性值必定是女性(反之亦然)。在該實施例中,如果剛 剛發(fā)現(xiàn)配偶關(guān)系1130,則可以推斷1)存在另一個個人實體1110 (也即,配偶),和2) 另一個個人實體iiio具有女性(如果對方的性別屬性值是男性)或男性(如果對方的性
別屬性是女性)的性別屬性值??梢愿鶕?jù)正被創(chuàng)建的財務(wù)軟件應(yīng)用程序適當(dāng)?shù)囟x其他特 定規(guī)則。
現(xiàn)實生活事件可以影響人物、地點和事情以及它們之間的關(guān)系。由于這些現(xiàn)象在實例
化數(shù)據(jù)模型123中被表示,就導(dǎo)致現(xiàn)實生活事件也可以影響實例化數(shù)據(jù)模型123。在一個 實施例中,對現(xiàn)實生活事件的實例化數(shù)據(jù)模型123的影響包括改變存在的實體和關(guān)系的屬 性值、創(chuàng)建新的實體和關(guān)系和刪除存在的實體和關(guān)系。例如,如果一個人結(jié)婚了 (婚姻事 件),則相關(guān)個人實體的婚姻狀態(tài)屬性值將被改變,配偶關(guān)系1130將被創(chuàng)建。如果一個人 得到提升(改變福利事件),則相關(guān)的工作關(guān)系的薪水屬性值將被改變。如果一個人出生 (出生事件),則個人實體1110將被創(chuàng)建,如果一個人死亡(死亡事件),則個人實體1110 將被刪除。相似地,如果企業(yè)開始運作,則企業(yè)實體1120將被創(chuàng)建,如果企業(yè)停止運作, 則企業(yè)實體1120將被刪除。
圖12顯示了根據(jù)本發(fā)明的一個實施例的特定事件及其特征的表格。在所示實施例中, 頻率欄代表對于同一個個人實體一個事件可以發(fā)生多少次。例如,出生事件和死亡事件每
人只可發(fā)生一次(因為人只可以出生和死亡一次)。"0…x"的頻率值表示該事件可以發(fā)生 從O次到x次的任何次,其中x是任何正整數(shù)。如果x是承(例如,0-*的頻率值),貝Ux 沒有限制,該事件可以發(fā)生從O次到無窮次的任何次。
由于世界可以隨時間改變,代表世界的實例化數(shù)據(jù)模型123 (及其相關(guān)的圖)也可以 隨時間改變。因此,實例化數(shù)據(jù)模型123在特定時間段中有效。如果一個事件影響實例化 數(shù)據(jù)模型123,則該事件擔(dān)當(dāng)兩個實例化數(shù)據(jù)模型123之間的連接 一個代表該事件發(fā)生 前的世界,另一個代表該事件發(fā)生后的世界。該事件發(fā)生的時間點將作為第一模型的有效 期的終止和第二模型的有效期的開始的信號。在一個實施例中,每個事件都具有指示該事
件什么時間發(fā)生的時間印記。該時間印記被用于指示例如之前事件模型的有效期何時終止 或者之后事件模型的有效期何時開始。
再次考慮圖11中所示的實例化數(shù)據(jù)模型123。假設(shè)正在使用納稅申報表準(zhǔn)備應(yīng)用程序 來確定第一個人(個人實體1110A)的納稅義務(wù)。如果該人將要離婚,則配偶關(guān)系1130將 被刪除,從而將個人實體1110B、工作關(guān)系1140B和企業(yè)1120B從個人實體1110A的數(shù)據(jù) 模型圖中"斷開連接"。這個斷開連接是有意義的,因為關(guān)于第二個人及其工作以及雇主的
信息將不再影響第一個人的納稅義務(wù)。
在所述事件方面,圖11中所示的實例化數(shù)據(jù)模型123將在離婚之前一直有效,而上 文所述的〃斷開連接〃實例化數(shù)據(jù)模型123將在離婚之后有效。離婚事件將〃連接〃這兩個實 例化數(shù)據(jù)模型123并且作為第一模型的有效期終止和第二模型的有效期開始的信號。
圖13顯示根據(jù)本發(fā)明的一個實施例的關(guān)于配偶關(guān)系的信息的方框圖。在所示實施例 中,由八邊形顯示規(guī)則,而事件由箭頭表示。如上文所述,配偶關(guān)系1130存在于兩個個 人實體1110A、 1110B之間。配偶關(guān)系1130由婚姻(婚姻事件1300)創(chuàng)建并且由離婚(離 婚事件1310)刪除。在所示實施例中,配偶關(guān)系1130具有與之相關(guān)的兩個角色屬性和一 個規(guī)則1320。
圖14顯示根據(jù)本發(fā)明的一個實施例的關(guān)于工作關(guān)系的信息的框圖。如上文所述,工 作關(guān)系1140存在于個人實體1110和企業(yè)實體1120之間。工作關(guān)系1140由個人開始工作
(開始工作事件1400)而被創(chuàng)建,并且由個人辭職、解雇或失業(yè)(結(jié)束工作事件1410) 而被刪除。在所示實施例中,工作關(guān)系1140具有兩個屬性(工作頭銜和薪水)。雖然沒有 顯示任何規(guī)則,但一個可能的規(guī)則是有工作的人必須在法定工作年齡內(nèi)(個人的年齡根據(jù) 實例化數(shù)據(jù)模型123的日期范圍和個人實體的出生日期屬性值確定)。
在一個實施例中,數(shù)據(jù)模型122被表現(xiàn)為Unified Modeling Language (統(tǒng)一建模語 言)(UML)模型并且利用UML圖直觀可視。圖15顯示了根據(jù)本發(fā)明的一個實施例的代表 數(shù)據(jù)模型的UML圖。UML圖可以被認(rèn)為是這樣的圖,其中實體是節(jié)點并且關(guān)系是邊緣。該 數(shù)據(jù)模型包括幾個特定實體,利用子類型(〃衍生實體〃)將其中一些特定實體組合到一起 成為各種抽象級別。例如,財產(chǎn)實體1500 (由個人實體1110"擁有的")可以是建筑財產(chǎn) 實體1505 (例如房子),交通工具財產(chǎn)實體1510 (例如汽車或游艇),或者財務(wù)財產(chǎn)實體1515。財務(wù)財產(chǎn)實體1515可以是例如儲蓄賬戶財產(chǎn)實體1520,支票賬戶財產(chǎn)實體1525, 貨幣市場賬戶財產(chǎn)實體1530, CD賬戶財產(chǎn)實體1535,共同基金財產(chǎn)實體1540,股票財產(chǎn) 實體1545或債券財產(chǎn)實體1550。
相似地,負(fù)債實體1555 (由個人實體1110〃所欠的")可以是抵押負(fù)債實體1560,財 產(chǎn)借貸負(fù)債實體1565,車貸負(fù)債實體1570或個人借貸負(fù)債實體1575。所示實施例中顯示 的其它特定實體包括財務(wù)機構(gòu)、帳戶、慈善機構(gòu)、政府、教育機構(gòu)和住址。
數(shù)據(jù)模型122也包括幾個特定關(guān)系(由虛線顯示),利用子類型("衍生關(guān)系")將其 中一些特定關(guān)系組合到一起成為各種抽象級別。例如,關(guān)聯(lián)關(guān)系1580存在于兩個個人實 體1110之間并且可以是例如父母子女關(guān)系1585,配偶關(guān)系1130,合作關(guān)系1590 (例如, 商業(yè)合作),贍養(yǎng)關(guān)系1595。工作關(guān)系1140存在于個人實體1110和企業(yè)實體1120之間。
如果數(shù)據(jù)模型122的一個或多個元素被實例化,則該實例化數(shù)據(jù)模型123代表世界的 狀態(tài)。具體地,實例化數(shù)據(jù)模型123描述圖形表格中各個實體和關(guān)系。被代表的世界狀態(tài) 可以在某個特定時期是真實的,或者可以是假想的。
圖15顯示了數(shù)據(jù)模型122的一個實施例的UML圖。數(shù)據(jù)模型的其它實施例也是可能 的。這些實施例可以包括不同的特定實體和關(guān)系和/或具有不同屬性、意義或規(guī)則的特定 實體和關(guān)系。相似地,這些實施例可以包括不同的特定事件和/或具有不同效果或意義的 特定事件。
在一個實施例中,利用可擴展標(biāo)記語言(XML)表示元模型121中的元素。例如,以 下XML代碼可以代表一個實體
〈GenericType name = 〃EntityType〃〉
〈Property name = 〃_oid〃 type = "String" required = 〃true7〉 〈Property name = 〃_alias〃 type = "String" required = 〃true〃/> 〈Property name = "—begin" type = "Date" required = 〃true7〉 <Property name = "—end" type = "Date" required = 〃true7〉 <Property name = "past" type = 〃ReferenceType〃 subtype = 〃EntityTpe:Self'
required = 〃true〃/>〈Property name ="—future"type = "ReferenceType"subtype = 〃EntityTpe:Self" required = "true7〉 </GenericType〉
在該實例中,"begin"和"encT特征分別代表開始日期和結(jié)束日期,在開始日期和結(jié)束 日期之間該實體存在。在開始日期之前存在的對應(yīng)的實體(如果有)通過"past"特征引用, 而在結(jié)束日期之后存在的對應(yīng)的實體(如果有)通過"future"特征引用。過去和將來特征 是將元素"連接"到該元素的其他版本的一個方法,如上文相關(guān)于例如圖3A的步驟310和 330中所述。
如上文所述,數(shù)據(jù)模型122的特定元素具有一個或多個屬性。在一個實施例中,特定 元素由其屬性和關(guān)于這些屬性的信息定義。關(guān)于屬性的信息可以包括例如該屬性的默認(rèn)值 和確定一個屬性值是否正確和/或具有正確格式的有效邏輯。
像元模型121的元素一樣,數(shù)據(jù)模型122的元素也可以利用XML表示。在運行時中, 財務(wù)軟件應(yīng)用程序可以存取這些信息以創(chuàng)建和實例化需要的數(shù)據(jù)模型122元素。在一個實 施例中,特定元素被表示為元模型121中的〃通用(generic) 〃元素的擴展。例如,數(shù)據(jù) 模型122中的個人實體可以被表示為元模型121中的實體元素的擴展。下面是代表個人實 體的XML代碼的實例
〈Gene:ricType name = "Person" base = 〃EntityType"〉
<Property name = 〃name〃 type = 〃GenericType〃 subtype = 〃PersonName〃
required = 〃true7〉〈Property name = 〃dateOfBirth〃 type = "Date" required = 〃true7〉 <Property name = "dateOfDeath" type = "Date" /〉 〈Property name = "gender" type = "String" required = 〃true〃/> 〈Property name = 〃ssn〃 type = "String" required = "true7> 〈Property name = "citizenship" type = 〃String〃 required = "true7>
〈/GenericType>
考慮一個具有如下屬性值的實例化個人實體Name (Dr. John Jay Doe) , DateOfBirth (02/01/1950), DateOfDeath (none), SSN (123456789),和Citizenship (USA), i亥實體 可以由以下XML表示 〈Person>
〈—oid〉EN2〈/—oid>
〈_alias/〉
〈一begin〉02/01/1950〈/—begin〉
〈_end/>
<name>
〈firstName〉John〈/ firstName > 〈lastName〉Doe〈/lastName 〉 <middleName>Jay〈/ middleName 〉 〈prefix〉Dr. </prefix > 〈suffix/〉 〈/name>
<date0fBirth〉02/01/1950〈/date0fBirth〉 〈dateOfDeath/〉 〈gender〉male〈/gender〉 <ssn>123456789〈/ssn> <citizenship〉USA</citizenship〉 〈/Person〉
附錄El包括表示來自元模型121的實體或來自數(shù)據(jù)模型122的特定實體的XML代碼。 附錄E2包括表示實例化特定實體的XML代碼。附錄Fl包括用于關(guān)系和特定關(guān)系的XML代 碼,而附錄F2包括用于實例化特定關(guān)系的XML代碼。附錄Gl包括用于事件和特定事件的 XML代碼,而附錄G2包括用于實例化特定事件的XML代碼。
最后,附錄H1包括用于規(guī)則的XML代碼,而附錄H2包括用于實例化特定規(guī)則的XML 代碼。在一個實施例中,規(guī)則利用Rule Markup Language (規(guī)則標(biāo)記語言)(RuleML)表 示。RuleML 在 http://www.ruleml.org 被進(jìn)一步描述,而其說明書可在 http:〃www. rulemL org/spec/得到。
如果軟件應(yīng)用程序需要不存在于數(shù)據(jù)模型122中的特定元素,則可以創(chuàng)建該特定元素。 在上述實施例中,數(shù)據(jù)模型122的特定元素是利用XML定義規(guī)定的。因此,可以通過創(chuàng)建 另一個XML定義來定義一個新的特定元素。在一個實施例中,該新的特定元素是元模型121 的一個通用元素的擴展。
已經(jīng)對本發(fā)明相關(guān)于幾個可能的實施例進(jìn)行了特別詳細(xì)的描述。本領(lǐng)域的熟練技術(shù)人 員將理解的是,可以在其他實施例中實踐本發(fā)明。首先,各個成份的特別名稱、資本術(shù)語、 屬性、數(shù)據(jù)結(jié)構(gòu),或者任何其他程序或結(jié)構(gòu)方面都不是強制的或重要的,并且實施本發(fā)明 或者它的特征的機制可以具有不同的名稱、格式或協(xié)議。此外,可以通過硬件和軟件的組 合或者完全在硬件元件中實施該系統(tǒng)。還有,本文描述的各個系統(tǒng)成份之間的功能的特定 劃分只是實例化,而不是強制的;由單個系統(tǒng)成份進(jìn)行的功能可以由多個成份替代進(jìn)行, 由多個成份進(jìn)行的功能也可以由單個成份替代進(jìn)行。
上文描述的某些部分在算法和信息操作的符號表示法上展現(xiàn)了本發(fā)明的特征。這些算 法描述和表示法是數(shù)據(jù)處理領(lǐng)域中的熟練技術(shù)人員最有效地將他們的工作實質(zhì)傳遞給該 領(lǐng)域中的其他熟練技術(shù)人員所使用的方法。通過功能上或邏輯上的描述,這些操作可以由 計算機程序理解實施。此外,在作為模型或者通過功能名査閱這些操作安排時,該方法也 被證實是方便的,并且不失其普遍性。
除非特別說明,否則從上文的討論中顯而易見,應(yīng)該理解的是,在整個描述中,利用 諸如"確定"或"顯示"等術(shù)語的討論涉及計算機系統(tǒng)或相似的電子計算裝置的運行和處理, 該計算機系統(tǒng)或相似的電子計算裝置控制和轉(zhuǎn)換被表示為計算機系統(tǒng)存儲器或寄存器或
其他這樣的信息存儲,傳輸或顯示裝置中的物理(電子)量的數(shù)據(jù)。
本發(fā)明的一定的方面包括本文以算法的形式描述的處理步驟和指令。應(yīng)該注意,本發(fā) 明的處理步驟和指令可以體現(xiàn)在軟件、固件或硬件中,并且當(dāng)體現(xiàn)在軟件中時可以被下載 而處于由實時網(wǎng)絡(luò)操作系統(tǒng)使用的不同的平臺并從該不同的平臺進(jìn)行處理。 本發(fā)明也涉及用于進(jìn)行本文的操作的設(shè)備。該設(shè)備可以為了所需要目的而被特別構(gòu) 造,或者可以包括由存儲在可以被計算機訪問的計算機可讀介質(zhì)上的計算機程序選擇性地 激活或再構(gòu)造的通用目的計算機。這樣的計算機程序可以被存儲在計算機可讀存儲介質(zhì) 中,諸如但并不限于包括軟盤、光盤、CD-R0M、磁光盤的任何類型的存儲盤、只讀存儲器 (R0M)、隨機存取存儲器(RAM)、 EPR0M、 EEP廳、磁性或光學(xué)卡、專用集成電路(ASIC), 或者適用于存儲電學(xué)指令并且連接到計算機系統(tǒng)總線的任何類型的介質(zhì)。此外,說明書中 提及的計算機可以包括單個處理器或者可以是為了提高計算能力采用多個處理器設(shè)計的 結(jié)構(gòu)。
本文展現(xiàn)的算法和操作并不是固有地涉及任何特定的計算機或其他設(shè)備。可以與根據(jù) 本文的原理的程序一起使用各種通用目的系統(tǒng),或者可以證明構(gòu)造更專用的設(shè)備進(jìn)行所需 要的方法步驟也是方便的。各種系統(tǒng)所需的結(jié)構(gòu)及其等效的各種變化對于本領(lǐng)域中的熟練 技術(shù)人員是顯而易見的。此外,本發(fā)明沒有參考任何特定的程序語言進(jìn)行描述。應(yīng)該理解 的是,各種程序語言可以被用于實施本文所述的本發(fā)明的原理,并且可以提供特定語言的 任何參考以實現(xiàn)本發(fā)明的運行和最好的方式。
本發(fā)明很好地適用于廣泛的多種布局的各種計算機網(wǎng)絡(luò)系統(tǒng)。在這個領(lǐng)域中,大型網(wǎng) 絡(luò)的構(gòu)造和管理包括存儲裝置和計算機,它們在諸如互聯(lián)網(wǎng)的網(wǎng)絡(luò)上可通信地連接到各種 不同計算機和存儲裝置。
最后,應(yīng)該注意,本說明書中使用的語言主要是為了可讀性和指令目的而選擇的,為 了描繪或限定本發(fā)明的主題,也可以不進(jìn)行選擇。相應(yīng)地,本發(fā)明披露的內(nèi)容對在附后的 權(quán)利要求書中闡明的本發(fā)明的范圍進(jìn)行說明,而不是對其進(jìn)行限制。
附錄A 卿* A
< xml version-"l.0" encoding="UTF-8" >
<InterviewRules>
<EntityGroup name="Person Info"> < Entity > Person </Entity > <Entity>Business</Entity> <Entity>Residence</Entity> </EntityGroup>
<EntityGroup name-"Things You Own"> <Entity>House</Entity> <Entity>Automobile</Entity> <Entity>Stock</Entity> <Entity>Savlngs</Entity> </EntityGroup>
<EntityGroup name="Things You Owe"> <Entity>Mortgage</Entity> <Entit^>Car Loan</Entity> <Entity>Equity Loan</Entity> </EntityGroup>
<EntityGroup name="Others">
<Entity>Leamlng Institute</Entity> <Entity>Govemment</Entity> </EntityGraup>
<Order>
<Beforfe>Person Info</Before> <After>Things You Own</After> </Order>
<Ordsr>
<Before>Person Info</Before> <After>ThIngs You 0\ye</After> </Order>
<Order>
<Before>Things You Owe</Before> <After>Othsrs</Aftsr> </Order> <Order>
<Before>Things You Own</Before> <After>Others</After> </Order> </InterviewRules>附錄B App.-B
<QuestionTemplates> <QuestionTemplate> <—oid>QTl</」oid>
<question>ls 0/oPerson.name0/o married </quertion> <cat^gory>Standard</category> < entityType > Person</entityType> <ans Options>
<type>String</type>
<count>3</count>
<Item>Yes</Item>
<Item>No </Item >
<Item>Unsure</Item> </answerOptions> </QuestionTemplate> </QuestipnTemplates>
附錄C1 App, CI < xml version="1.0" encoding="UTF-8n >
<!— edited with XMIiSPY v2004 rel. 2 U (http://www-xmlspy.com) by Jay Yu (Intuit) —>
<!—W3C Schema generated by XMLSPY v2004 rel, 2 U (http://www.xmlspy.com)' —5
<xs:schema xmlns:xs="http://www-w3'org/2001/XMLSchema" elementFormDefault="ciuaHfied',> <xs:complexTypg nSme=wADDRESSType"> <xs:sequence> <xs:element name=,'ADDRLINE" type=MADDRLINEType"
maxOccurs-"unboiinded" /> <xs: element ref-"CITY" /> <xs:element ref=nCOUNTRY" /> ■<xs:element ref-"POSTALCODE" /> <xs:element ref-"STATEPROVN" /> </xis:sequence> .</xs:complexType> <xs:complexType name-"ADDRLINEType,,> <xs: slm pleContent> <xs:ext;ension base="xs:string"> <xs:attribute name="indexn use="requ,redn> <xs:sinlpleType> <xs:restrlct,on base="xs:NMTOKENu> <xs:enumeration value=T /> <X$:enumeration va,ue="2" /> ocs:enuiVjeration value=n3" /> </xs:restrlction> </xs:sinipleType> </xs:attribute> </xs: extension > </xs:slmpleContent> <7xs:compiexType>
<xs:complexType nbme="B,rthDateType"> <xs:^equence> <xs:element ref="YEAR', /> <xs:element ref-"MONTH" /> <xs:element ref-"DAY" /> </xs:sequ6r C6> </xs: comple燈y pe>
<xs:element nahie-"CITY" type-"xs:string" /> <、s:complexType narTie==KCONTACTType',> <xs:S6quencs>
<xs:elementr^me="TELEPHONE" type-'TELEPHONEType"
maxOccurs=nunbounded" / -<xs:element ref-"EMAIL" />
</xs:sequence> </xs:complexType>
<xs:element name-"COUNTRY" type-"xs:string" /> <xs:element name-"DAY" type-"x :byte" /> <xs:element name-,'EMAIL" type=="xs:stringn /> <xs:element name-"Employee"> '<xs:simpleType>
<xs: restriction base="xs:byte"> <xs:enumeratioo value-T />. .<xs:enumeration value-"2" /> </xs: restriction > </xs:simpleType> </xs:dsmsnt>
<xs:element name-"Employer" type="xs:string" /> <xs〗element name="FirstName"> <xs:simpleType> <xs:restriction base-"xs:string"> <xs:enumeration value-,,Jay" /> 〈xs:enume加on value="Viviarin /> </xs:restriction> </xs:simpleType> </xs:dsmsnt>
<xs:element name=',Gender"> <xs:slmpleType> ' gs:restriction base="xs:string"> <xs:enumeration value=',l=smalen /> <xs:enumeration value-"Male" /> 七/xs:restriction》 5/xs:simpleType> </xs:element>
<xs:complexType name="JobType">
<xs:element ref-"Employer" /> ' <xs:element ref-"E'mpl6yeen /> <xs:element ref-"Salary" /> </xs:sequence>
<xs:attribute name-"ID" use=,'requ,red"> <xs:siriipl6Type> <xs:restriction base=',xs:NMTOICENw> <ys:enumeratkm value="4" /> <xs:enumeration value="5,, /> </xs: restriction > </xs:simpleType> </xs:3ttribute> </xs:complexType> <xs:element name-"LastName、 <xs:simpleType> <xs:restriction base-"xs:sttingn> <xs:enumeration value-Tee" /> 《xs:enumeration v戶lue-"Yu" /> </xs:restriction> </xs:slmpleType> </xs:element>
<xs:element name-"MONTH"type-"取byte11 /> <xs:element nahie-"MlddleNamen> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Heng" /> <x^:enumeratk)n value-"JieBing" /> </xs:restriction> </xs:simpleType> </xs: elements
<xs:etement name-"Moder^ <xs:complexType> <xs:sequenc6> <xs:eement; name-nPerson" type-"PersonType"
maxOcojrs;"unbounded" /> <xs:element,nam6-wResidenceB type=nilesidenceType" />
<xs:elementname=,,WorkFor" typee"Wor妙QrType'1 maxQccurs-',unboitoded1,/〉 </xs:sequence> </xs:comp〖exType> </xs:element>
<xs:complexType name="NameType"> <xs:sqqueiKe> <xs:e!emerit ref-,卞irstName" /> . <xs:element ref nMlddleNamen /> <xs:element ref=nLastName" /> < xs: element ref- "Prefix" /> <xs:element ref^Suffbc"》> </xs:seqiiepce> </xs: coniplextype>
<xs:element name-潤POSTALCODE" type="xs:lnt" /> <x£:complexType name="PersonType,>. <xs:s6quence> '
<xs:elementname "Name* type-"NameType" />
<xs:element ref-"Gender"
<xs::element name-BBlrthDate" typetnBlrthDateTypeB /> <jcs:element ref-,'SSN" /> </jcs:sequence>
<xs:attribute name-"ID, use-nreqiUred"> <xs:slmpleType> <xs:restrlctlon base "xs;:NMTOKEN";> ocs:erHime廠ation value-"l" /> <xsienumeration Yalue="2" /> </xs: restrictions </xs:simpteType> </xs:attribute> </xs: qomplexType> <xs-element name=wPrefix"> <Xs:slmpleType> <xs:restriction base "X9:string"> <xs:enumerjatlon vakie-nMr,"./> <xs:.enumer^tlon value-"Ms'" /> </xs:restricHon> </xs: sim pleType> </xs:element>
<xs:tomplexType name="ResidenceType"> <xs:sequencs> <xs:dement name-"ADDRESS" type-"ADDRESSType" /> <xs:element nam6-"CONTACT" tirpe-"CONTACTType" />
</xs:sfequence>
<xs:attribute name-,'ID" type-"xs:byte" use-"required" /></xs:complexType> <xs:element name=nSSN"> <xs:simpleType> <xs:restriction base=,,xs:string"> <xs:enumeration value="123-45-6789n /> 〈xs:enumeration value-"987-65-4321" /> </xs: restrictions </xs:simpleType> </xs: element >
<xs:element name-"STATEPROVN" type="xs:string" /> <xs:element name-"Sa,aryn> <xs:simpleType> <xs:restriction base-"xs:byte"> <xs:enumeratioh value-"100n /> <xs:enumeration value="50" />. </xs: restriction > </xs:simpleType> 々xs:elem6nt>
oi:s:etement name="Suffbc">
<xs:compte)OVpe /> </xs:element>
<xs:simpleType name=,,TELEPHONESim|ileType"> '<xs:rfestriction base="xs:longM> <xs:enum6ration value="llll"/> <xs:enum^ration "lue="858525^220" /> <xs:enumeration value-"858525臺221" /> </xs: restriction > </xs:simpleType>
<xs:complexType name="TELEPHONEType"> <xs:slmpleContent> <xs:extension base=nTELEPHONESimpIeType"> ocs:a汰ribute name-"index" use="required"> <xs:sfmpleType> <xs:restriction base-"xs:NMTOICEN,,> <xs:enurperation value-"DayExt,' /> 0cs:enumerati9n value-"DayPhone" /> <xs:enumeration value-"EvePhone" /> </xs: restriction > </xs:simpleType> </xs:attribute> </xs: extensions </xs:simpleContent> </xs: compiexTy pe >
<xs:element name-"YEAR" type-"xs:short" />
</xs:schema>
附錄C2App, C2 < xml version-"l'O" encocHng="UTF-8" >
<!— edited with XMLSPY v20D4 rel- 2 口 (ht±p://www,xmlspy-com) by Jay Yu (Intuit) —>
<!-- W3C Sche邁a generated by XMLSPY v2004 rel, 2 U (http://www-3cmlspy.com) <xs:schema xmlns:xs="http://www.w3.org/2001/XMIrScfiema" elementPormDefault="quaIified"> <xs:complexType name "AddressTypen> <xs:sequence> <xs:element ref-"AddressLine" /> <xs:element: ref^CityStateZip" /> </xs:sequence> </xs:comp,exType>
<xs:element name-"AddressUne" type="xs:stringrt /> <xs:dement hame-"CityStateZip" t^pe-"xs:stringw /> <xs:element name-nFirstName"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeratk n value-',Jay" /> <xs:enumeratiorvvalue^"Viviap" /> </xs:restriction> </xs:simpleType> <:/xs:element>
<xs:etement name-"Forml040"> < xs: com plexTy pe > <xs:sequepce> <xs:eleme'nt name-"Label" type="LabelType" /> <xs:element name-',Income" type-"IncomeType" /> </xs:seque.nce> </xs:complexType> </xs:^ement>
<xs:complexType name-nIncomeType"> <xs:sequence>
ocs:elem印t name-"IJne7n type="Line7Typen /> </xs:ssqu6nce> </xs:complexType> <xsicomplexType name=,'l_abenVpe"> <xs:sequence> <xs:element name="TaxPayer" type-"TaxPayeiType" /> <xs:element name-"Spoiise" type-"SpouseType" /> <xs:element name-nAddress° type=nAddressType" /> </xs:sequence> </xs: complexType > <xs:element name-"LastName"> <xs:simpleType> <xs:restrictlon base-"xs:string"> <xs:enumeratlon value="Lee" ./> <xs:enumeratJon value="Yu" /> </xs: restriction > </xs:simpleType> </xs:element>
<xs: complexType name=HlJne7Type"> <xs:simpleContent>
<xs: extension' base="xs:short">:
<xs:attribute name-,'Desc" type-"義s:string" use-"required" /> </xs:extsnsion:> </xs:simpleContent> </xs:complexType> <xs:element name="SSN"> <xs:simpleType> <.xs:restricti6n base="xs:string"> <xs:enumeration value="1.23-45-6789" /> <xs:'enumeratbn value=n987-65-4321" /> </xs: restriction > </xs:$impleType> </x :element>
<xs:complexType name="SpouseType"> <xs:sequence> <xs:element ref=nFi'rstName" /> <xs:element ref="LastName" /> <xs:element ref="SSN" /> </xs:ssqusncs> </xs:complexType> , <xs:complexType name="TaxPayerType"> <xs:s6qusncs> <xs:elemen{; ref="Fir^tNamen /> <xs:element ref=nLastNamen /> <xs:element ref-"SSN" /> </xs:sequence> </xs: com plexTy pe > </xs: schema >< 加1 ve a,em^ifiWWT-8" 〉附錄D App. D
This file was generated by MAPTORCE 2004
YOU SHOULD NOT MODIFY THIS FILE, BECAUSE IT WILL BE OVERWRITTEN TpEN YOU RE-RUN XSI^ GENERATION.
Refer to the MAPFORCE 2004 Documentation for further details, http: //www-altova com/raapf orce
<xsl:stylesheet version-"l,O,' xmlns:xsl-,'http://www,w3.org/1999/XSL/Transform" xmlns:xsi="http://vjAwvv,vv3.org/2001/XMLSchema-instance"> <xsl:output method="xmr encodmg="UTF-8" /> <xsl:template match="/Mo Ier,> <ForrrU04Q> 、 <xsl: attribute
name="xsI:noNamespaceSchemaLocationn>D:/DOCUME :L/jyu.000/Deskt6p/Pat
<Label> <TaxPayer> <xsl:for-each select-"Person"> <xsl:for-each select-nName"> <xsl:for-each select-"FirstName"> <FirstName>
<xsl:value-of select-"," /> </FirstName> </xshfdr-each> </xsl:for-each> </xsl:for-each>
<^sl:for-each select="Person"> <xsl:for-each select="Name">. <xsl:for-each select="LastN^ime">
<>csl:value-of Selects /> </LastName> </xsl:for-each> </xsl:for-each> </xsl:for-each>
<xsl:for-eadi select="Person"> <xsl:for:eSch select="SSN"> <SSN>
<xsl:value-of select- /> </SSN> </xsl:for-each> </xsl:for-each> </TaxPayer> <Address> <xsl:for-each select="Residence"> <xsl:for-6ach select-"ADDRESS"> <xshfor-each select=,'ADDRLINE"> <xsl-variable name="V39433144—39420704"
select-' /> <xsl:variable name="V39433144—20998504"select=nconc3t
(串V39433144一39420704,豐V39433l44一39420704)n />
<AddressLine>
<Xsl:value-of selert="$V39433144_J2p998504" /> </AddressLine> </xsf:for-each> </xsl:for-each> </xsl:for-each>
<xsl :.for-each select-"Residence"> <xsl:for-each selert="ADDRESS"> <xsl:variable name="V14" select-"." /> <xsl:for-each select="POSTALCODEn> .<xsl:variable陽me-'V39.433216一39420848" select-"." /> <xs|:for-each setect-"$V14/CITY"> <xsl:variable name-"V39433216一3,420776"
select-"." />: <xsl:for-eaeh sdect="$V14/STATEflROVN"> <xsl:variable name-"V39433216一39420920"
sel.ect-"." /> <xsl:variable name="V39433216"20690480" selebt:"concat
(牽V39433216一3942077右,多V3導(dǎo)433216一39420920)"y^ <xsl:variable name-"V39433216」20的7968" select-"con.cat
($V39433216—20690480;$V39433216—39420848)"/>
<ptyStateZip> <xsl:value-of select-"牟V39433216一20997"8" />
</CltyStateZip> </xsl:for-e ch> </xsl:for-each> </xsl:for-each> </xsl:for"each:> </xslifor-each> </Address> </Label> <Income> <xsl:for-each select- "WorkFor"^ <xsl:for-each selert="Sal'ary > <Line7>
<xsl:value-of select- /> </Line7> </xsl:for-each> </xsl:for-each> </Incoms> </Forml040> </xsl:template> </xsl: stylesheet>
附錄El.App. El.
subtype: subtype-
<GenericType name-<Property <Property <Propert& <Propert9 <Property =,,EntityType:self,, <Property -"Entityjype:selff' </GenericType>
<GenericType name-<Property requi red=',true'.'/>
<Property <Property <Property
<Property VGenericType>
:,,EntityType'、
■'—oid" type-,'String" required-"trueV> '一alias" type="String" reguired="true,,/> '一beqi.n,' type="Date" r.egin red="true,'/>
-------'一en3" type="Date" requi red=,'true"/>
name-"一past" type-"ReferenceType', requi red-"true />
name=,'—future'' type-,,ReferenceType', requi red=,'true"/>
name:
bas e=" Enti tyType,'> name",,name" type-"'GeneiMcType" subtype="PersonMame"
name=',dateofBirth" type=,'Date" required-,,true"/> name-"dateofDeath" type="Date"/> name-"gender" type-"string" required="true"/> name-',ssn,嗎t(yī)ype= String" required=''true',/> name-',citizensliip" type=',string" required="true'7>
<GenericType nanie=,'Business,, base-',EntityType">
<Property name-,'name" type="String required-<Property nara扭"type" t^pe-"string" required <Property name-"dateofstart" type-"Date,' rem <Property name-"dateofEnd" type="Date"/> <Property name-"ein". type="String" require— . <Property na啦-"locatioii" tyJ5e-"GenericType" subtype="Place" requi red-"true,Y>
</GenericType>
____true,7>
requi red-"true"/>
<GenericType name-
<Property name-requi red-,'true',/>
<Property n柳e-"name" type-"Stringn/: <Property name-"type" type-"St門'ng"/:
</GenericType>
base=',Ent"ityType">
"type-"Co"ectionType" subtype=',Place" 附錄E2 App. E2
<Entities> <Psrson> <—oid>EN2</—oid> <—aHas />
<_begin>02/01/1999</—&gin>
<—end />
<n3m6>
<RrstName>Jay</firstName>
<lastName>Yu</lastName>
<middleName>JieBing</middleName>
<prefix>Dr,</prefix> ■
<sufflx />
<dateOmirth>02/01/1999</dateOfBkth>
<date0fDe3th />
<gender>male</gender>
<ssn > 1234S6789</ssn >
<dtizenshfp>USA</dtizenshlp>
<_past>
<type>Person:Self</type>
<oid />
</』3St>
<—future> <type>Person:SeW</type> <oid /> </—future>. </Person> <Residcnce> <—oid>EN104</—oid> <—alias /> <—begin /> <—end /> <locations> <type>PIace</type> < count> 2</cou nt> $Item> "Caddfess /> <phone /> <fax /> .</Item> <Item> <3ddress /> <phone /> <fax /> </Item> ' </locations>
<name>3ay's residence</name> <type>Residence</type>
<_P3St>
<type>Residence</type> <oid /> </—past>
<—futurs> <type> Residence</type> <old/> ' </—future> </Residence:> <Psrson> <—oid>EN5</—oid> <—aIias />
<—begin>12/31/2000</—begin> <—end />
<firstName>Vivian</firstNsme>
<lastName>Lee</lastName>
<middleName>Heng</middleName>
< preflx> Dr, </preflx> <suffbc/> '
</n3ms>
<dateOfBirth>i2/31/2000</dateOfBirth>
<dateOfDeath />
<gender>female.</gender>
<ssn > 987654321 </ssn >
<citizensWp>USA</dtlzenship>
<_past>
<:type>Person</type>
<oid /> </jp>ast> <—future>
<type>Person</type>
<oid /> </—future> </Persoo> <Residsnce> <—ok! > EN10 W一okl > <—alias /> ,<—begln /> <—end /> <locatlons>
<type>Place</type> -
< count> 2</count> <Item>
<addres />
<phone />
<fex/> </Item> <Item>
<address />
<phone />
<fex /> </Item> </locations>
<name>Jay's residence</name> <type> primary </type>
<_P3St>
<type> Residence</type>
<old /> </ past> <—future>
<type>Resfdence</type>
<old /> </—future> </Resklence> <Psrson>
<—oid>EN3</—oid> <,alias />
<—begln>12/31/2000</—begfn> <;—end /> .<nsms>
<flristName>Vivian<:/firstName>
<lastName>Lee</lastNameS
<mk!cneName>Heng</middleName>
<prefix>Dr.</prefix>
<suffbc /> </nsme:>
<dateOfBirth>12/31/2000</dateOfBirth>
<dateOfDeath />
<gender>female</gender>
<ssn>987654321</ssn>
<c,t!zensh,p>USA<:/dtlzenship>
<_peist>
<type>Person:Self</type>
<oW /> </_psst> <—future>
<type>Person:Self</type>
<oid /> </—future> </Perspn> <Person> <—old>ENl</_oid> <—aHas/>
<—b^ln>02/01/1909</—t gin> <—end />
<first:Name>Jay</firstName> <lastName>Yu</lastName> <mlddleName>〕ieBing</mk)c!leName> < prefix:> Dr. </prefix> <suffix /> </r 3me>
<dateOreirth>02/01/1909</dateOfmrth>
<date0fDeath>12/23/1999</dateOfDeath>
<gender>male</gender>
<ssn >123456789</s n >
<dtizenship>USA</citizenship><_past> <type>Person</type> <oid /> </Lpast> <_future> <type>Person</type> <oid /> </_future> </Person> <Person> <—oid>EN4</—oid> <—alias />
<—begln>02/01/19'99</—begln> <—end />
<firstName>Jay</firstName> <lastName>Yu</lastName> <mkkneName>:HeBfng</mkidleName> <prefix> Dr. </prefix> <suffix /> </n3me>
<dateOfBlrth>02/01/.1999</dateOfBirth> <:dateOfDeath /> <gender>male</gender> <ssn>123456789</ssn> <citizenship>USA</citizenshlp> <^past> ktype> Person </ty pe> <oid /> <A_past> <—future> <type>Person</(ype> <oid /> </_future> </Person> <Residenc6> <—old>Em05</_oid> <—al^s /> <_begin /> <—end /> < locations:^ < ty pe> Place々ty pe> <count>2</count> <Item> -address /> <;phone /> <fax /> </Item> <cltem:> <addres$ /> <phone /> <fax />
</Item> </locat!ons>
<name>Jay's residence</name> <type>Residence:Self</iype> <—pa#>
<type>Residence:Self</type>
<oid /> </—psst> <-future>
<type> dence:Self</type>
<old /> </—future> </Residence> </Entities>
附錄Fl App* Fl
<GenericType name-"EntityType',>
<Proper*ty name-"一oid" type="string" requi red="true"/> <Property name-"一alias" type-"St"hg" reguired-"true"/> <Property name-,,一beqin" type-"Date" regin red-"true"/> ^Property name-,'一en3', tybe,"Date" requi red-,'true',/> ,,.<Property nime-"一past,, type-"ReferericeType,' s.ubtype,"EntityType:self" required-"trueV>
, <Property name-"—future" type-"ReferenceType"
subtype-"EntityType: self* requi red-"true,'A </GenericType>
<GenerfcType n柳e-"RelationType', base^'Entityrype'V
<Property name-,'一sourceRole" type-',str,ng" requi red-"true7> <p—erty n柳e-"一targetRole', t^pe="string,, requi red="true,,/> <Profierty name-"一forwardName', type="string" required=s"true/> <Property name=,'—,'nverseName" type=,'String" reqiHred=',true',/> , <Property name="_sourcecardina"Mty" type- int" defaiHt "l"
requi red="true"/>
-, <Property n加e-,'一targetcardinality" type-"int" defau1t=,'l"
reqtn red=',true',/>
, <Property name="—sourceRef', type-"Refer印ceType',
subtype="EntityType7>
, <Property name-"一targetRef" type-"ReferenceType'1
subtype "Entityrype7> </Generic^rype>
<GenericType narae="spouse" base=,'RelationType">
<Property name-"一sourceRole', defau1t-"Husband"/>
<PropSrty name='LtargetRole" default-"Wife"/>
<Property rtam扭"一f6rwardNam6" deFaylt="Wifeof"/>
<Propert^ naiiie=',—inverseName,' defau"It=5"Husband0f'7>
<Property name="—sourcecardinality" default-"l"/>
^Property nam扭"一targetcardinaTity" defau,t=T/>
々rope卜ty name="—source貼f" type一貼ferenceType" subl:ypes,'Person,'/>
<Property nam扭"一targetRef11 typ^'ReterenceT^pe" subtypes"Person"/>
<Property names"marrTageDate,, type-"Date"/V
<Property name-"divorcet)ate" type-"Date"/>
</GeneiricType>
<GenericType name"WQT棘9r" base一RelationType"^
<Property name, jourceRole" defau*It=="Emp.loyee>',/> <Propert^ n柳e-"一targetRole" default-"Employer7>
<Property name-"一sourceRef,' type=f'Refer6nctType" subtype^" <Property name-"一targetRef" type="ReferenceType,, subtype="Busi ness',/> ,
^property name-'嗎beginDate" type。"D2ite" reqirired="true"/> <Property' name-"en3Date" type="Date"/> </Genericrype>
"A
附錄F2 App. F2
<Relaiions> <Spouse> <—oid>RE100</—6ld> <—ai'as /一 <—begin /> <—end /> <—past /> <—future />
<—soiirceRo,e>Husband</—sourceRole> <—targetRole>Wife</—targetRole> <—forwardName:>WifeOf</—forwardName> <JnverseName>HusbandOf</JrwerseName> <—sourceCardinaHty>l</—sourceCarcnnality> <—targetCardinality>l<:/—tar。etCardinality> <—sourceRef>
<type>Person</type>
<oid>ENl</old> </—sourceRef> <—targetRef>
<type>Person</type>
<oid>EN2</oid> </—targetRef>
<marrlageDate>08/08/1998</marriageDate> <divorceDate /> </Spouse> <Spouse> <—old>RiEl01</-Oid> <—allas />. <_begin /> <—end /> <_past>
<type>Spouse</type>
<old /> </—P3St> <—future>
<type>Spouse</type>
<oid /> </—future>
<-SQurceRole>Husband</—sourc—o,e>
<_targetRole>Wife</—targetRole>
<—forwarc!Name>V\MfeOf</—forwardName>
<UnverseName>HusbandOf</」nverseName>
<—sourceCardmality>l</_30urceCarciina,ity>
<_targetCardlnaHty>i</j:argetCardlnallty>
<—sourceRef;>
<type> Person </type>
<oid>EN2</oid> </—source Flef> <_targetRef>
<type>Person</type>
<oid>ENl</old> </—ta.rgetRef><marriageDal^>08/08/1998</m3niageDate> <divorceDate /> </Spouse> </Rel3tlons><GenericType name-',EventType">
<Property name-"一oid', type-,'string" required-"true"/> <Property name-"—alias" type-',string" required-,'true"/> <Propert^ name-',一categoryT' type-"string,, requi red-,,true,'/> <Property name-,'一ti鵬 type- Dite,' requi red="true"/> (Property name-"一descripfion" type-"stMng',/i> <Property name-',一subjectRef" type=,'ReferenceType" subtytie-',Entity"fype,, requi red-',true'7> </GenericType>
<GeneHcType namee"Birth" base-"EventType',>
<Property name-"-a1iaLS', de.fault="Birth,Y>
<Property name-,''」category" defau*lt-,'BeginV>
<Property name-"一descr,'prion" default- A person is born"/>
<Property n柳e-"二sub]'ectRef,' type-"ReferenceType" subtype="Person,'/>
</Generi cType>
<GenericType name="Death" base-"EventTy(3e">
<Property na鵬-"一alias" defau,t="Death"/>
<Property name-"—category" defaull;-"Endi,/>
<Property narae-'Ljdescription" default-"A per$on died',/>
<Property name-"一subjectRef" type-"Referencefype" subtype-"Person7>
</GenericType>
<GenericType namd-"NaraeChange" basd-"EventType,、
-Property n柳扭',一alias" default=,'Namechange"/>
-Property name="—category" default "Change7>
-Property naroe="—description" defau1t="A person charges name',/>
<PropSrty name-',一subjectRef' type=,,ReferenceType" su5type-"Person"/>
</Gener;icType>
<GenericType name-"start; ob'1 base "EventType">
-Property hame="—alias" default-"start3ob'7>
<Prpperty name-"—category" default-"Begiri',/>
<Pr'operty name="—description" default-"Start a new job"/>
<Property naroe=,'—subjectR^F" typ&="RefereneeType" subtype='"Woi:kFor''/>
</GenericType>
<GenericType name-"Resign3ob" base="EventType">
<Property name-"—a"Mas" defau,t ,'Resign: ob',/>
<Propert^ name-"—category" default-"End7>
<Propert^ name-"—description" default-"Resign from a job"/>
<P—operty narae-"一subjectRef" types"RefererrceType" subtype^ "WorkFor',/>
</GenericType>
<GenericType name="Marry" base-"EventType'、
<Property names"—alias" default>"Marriage"/>
<Property n柳e-"一category" defau"it^"Begin"/>
<Property narae=',—description" default=nGot married'7>
<Projierty name=,,—subjectRef,'' typ扭"ReferenceType" subtype-"Spouse,'/>
</Generi cType>
<GenericType names="Divorce" base-"EventType.">
<Pr< perty name "—alias" defau1ts,'Divorce7>
<Property name ,,—Category" defaults"End"/>
<Property name-"—description" default="Got <Hvorced'Y>
<Property n柳e-"^sub;jectRef" type-"狄ferenceType" subtype-,'Spouse',/>
</Genen'crype>
<Evente> 附錄M 紐p, G2
< Birth >
<—oid>EVl</—oid>
<—alias>Birth</—alias>
<—category> Begin </—category>
<—time>02/01/1999</—time>
<—description >A person is born</—description>
<—subjectRef>
<type>Person</type>
<oid>ENl</oid> </—sub〗ectRef> </Blrth>
< Death > <—old>EV2</—o,d> <—alias>Death</fcalias> <—category>End</-category> <—time>12/23/2080</—tlme> <—descriptk>n>A person died</_descript,on> <—sub〗ectRef>
<type>Person</type> <oid>ENl</ok!> </—subjectRef> </Death> <M3rry> <—oid>EV3</—old> <—allas>Mhrry</—allas> <—category>Begin</—category> <—tlme:>8/8/.1998</—Wme> <—desaiption>Got manied</—descriptlon> <—sub〗ectRef> <type>Spouse</type> <oid>RE100</old> </—subjectRef> </M3try> </Events>
附錄H1 App. Hi
<GenericType name-,'Rule^ype <Property name="-<Property name=' <Property name-' <Property name -<Property name=' <Property riame= requ"i red="true,,/>
</Generi<iType>
一oid', type="string,, requi red=,'true,,/> _a"h'as" type-"String" required-"true"A —condition" type-"string requ"ired="true'7> '一action" type= String" required="true"/> '一time" type-,'Date,' required="true'7> 一5ubject" type-"ReferenceType', subtype-"EntityType"附錄H2App. H2
< xml version-"l.()'' >■
<ru1 ebas e xml ns-"http: //www. rul eml, org/0 - 86/xsd" xsi :schemaLocati on=,'http://www■ rul eml org/0,86八sd http://www,ru,eml -org/o,86/xsd/equalog-xsd,, xml ns: xs , -"http: //www, w3, org/2001/XMLSchema-i nstance'、
Rule #1:
if sourceRef in a spouse relation is a Pers。n with gender "Male" Then
sourceRef takes the Role "Husband" targetRef is a Person with gender "Female" targetRef takes the Role "Wife"
<*fmp>
《head二
<3tom>
<rel>isa</re*l>
</—opr>
<var>relati on targetRef</var>
</_head> <_5ody>
</atom> <eq>
</叫> <eq>
</eq>
<var>rel ati on'.TargetRol e</var> <in----- ' '
ind>Wife</ind>
<var>relati on,targetRef,gender</var> <in
i nd>fema"l e</i.nd>
<var>re1ati on■Sou rceRole</var> <, nd>Husband</i nd>
<atom>
<_opr>
</atora> <atom>
</—opr> <var>re1ation</var> <i nd>s
<rel>isa</re"b
<!— Rule #2:
</—body>
</and>
</eitoin> </atom>
<_opr>
</—opr> /ar>re
ind>Person</ind:
<var>rel ation sourceRef</var>
<var>relati on,sou rceRef gender</var>
ind>Male</ind>
If sour.ceRef i'n a spouse relation is a person with gender "Female" Then
sourceRef takes the Role "Wife"
targetRef is a Person with gender ,,wale" targetRef takes.the Role "Husband"
<imp>
<L>head>
</—head>
</atom> <eq>
</eq> <叫>
</eq> <叫>
-/eq>
<2md>
<_opr> </—opr>
>Person</ind>
—wp曙,
<var>rel ati on ■ targetRef </var>
</imp> </ru1ebase>
</and>
<yar>rel ation targetRol e</var> <in '"
ind>Husband</ind> /ar>relatioh,ta
/ar>re, ation ,sc ind>Wife</ind>
<var>relatioh targetRef, gender</var> <in-------….a y
<var>re, ation , sourceRol e</var> <in '—"'
</atom> <attoni>
<re,>isa</re1>
</—opr>
're'
-Spouse</ind>
<var>re1ati on</var> <ind>s
</atorti> <eq>
</atom>
<_opr>
<rel>isa</rel>
</—opr>
<var>re1 afi on ■ sourceRef</var> <i nd>Person</i nd>
<var>rel ati on - sourc狄ef gender</var> <i nd>Female</i nd>
權(quán)利要求
1.一種用于修改實例化數(shù)據(jù)模型的計算機實施系統(tǒng),所述實例化數(shù)據(jù)模型包括一個或多個實例化特定元素,其特征在于,該系統(tǒng)包括包括未實例化特定元素的數(shù)據(jù)模型;和配置成向用戶給出提示的訪問驅(qū)動器,其中所述提示基于圖中的位置確定,所述圖包括一個或多個所述實例化數(shù)據(jù)模型的所述實例化特定元素。
2. 如權(quán)利要求l所述的系統(tǒng),其特征在于,元素包括實體或關(guān)系。
3. 如權(quán)利要求1所述的系統(tǒng),其特征在于,該系統(tǒng)進(jìn)一步包括元模型,該元模型包括通用元 素,其中所述未實例化特定元素是一種所述通用元素。
4. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述訪問驅(qū)動器進(jìn)一步配置成從所述實例化數(shù)據(jù) 模型中刪除實例化特定元素。
5. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述訪問驅(qū)動器進(jìn)一步配置成實例化所述未實例 化特定元素并且將所述實例化特定元素添加到所述實例化數(shù)據(jù)模型中。
6. 如權(quán)利要求5所述的系統(tǒng),其特征在于,所述未實例化特定元素與元素規(guī)則相關(guān)聯(lián),以及 其中所述訪問驅(qū)動器進(jìn)一步配置成根據(jù)所述元素規(guī)則實例化所述未實例化特定元素。
7. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述訪問驅(qū)動器進(jìn)一步配置成修改實例化特定元 素。
8. 如權(quán)利要求7所述的系統(tǒng),其特征在于,所述實例化特定元素與元素規(guī)則相關(guān)聯(lián),以及其 中所述訪問驅(qū)動器進(jìn)一步配置成根據(jù)所述元素規(guī)則修改所述實例化特定元素。
9. 如權(quán)利要求7所述的系統(tǒng),其特征在于,所述訪問驅(qū)動器進(jìn)一步配置成修改所述實例化特 定元素的屬性值。
10. 如權(quán)利要求1所述的系統(tǒng),其特征在于,該系統(tǒng)進(jìn)一步包括規(guī)則引擎和規(guī)則集,其中所 述規(guī)則引擎配置成根據(jù)所述規(guī)則集進(jìn)行規(guī)則鏈接,以及其中所述訪問驅(qū)動器進(jìn)一步配置成根 據(jù)所述規(guī)則鏈接修改所述實例化數(shù)據(jù)模型。
11. 如權(quán)利要求1所述的系統(tǒng),其特征在于,所述訪問驅(qū)動器進(jìn)一步配置成根據(jù)從用戶接收 的信息修改所述實例化數(shù)據(jù)模型。
12. 如權(quán)利要求ll所述的系統(tǒng),其特征在于,所述訪問指令集包括提示,以及其中所述訪問 驅(qū)動器進(jìn)一步配置成向用戶給出所述提示。
13. 如權(quán)利要求12所述的系統(tǒng),其特征在于,所述提示與所述未實例化特定元素相關(guān)聯(lián)。
14. 如權(quán)利要求13所述的系統(tǒng),其特征在于,所述從用戶接收的信息被用于確定是否實例化 所述未實例化特定元素。
15. 如權(quán)利要求13所述的系統(tǒng),其特征在于,所述從用戶接收的信息被用于實例化所述未實 例化特定元素。
16. 如權(quán)利要求13所述的系統(tǒng),其特征在于,所述訪問指令集包括流程信息,以及其中所述 提示根據(jù)其相關(guān)聯(lián)的未實例化特定元素進(jìn)行選擇,所述未實例化特定元素根據(jù)所述實例化數(shù)據(jù)模型和所述流程信息進(jìn)行選擇。
17. 如權(quán)利要求12所述的系統(tǒng),其特征在于,所述提示與實例化特定元素相關(guān)聯(lián)。
18. 如權(quán)利要求17所述的系統(tǒng),其特征在于,所述從用戶接收的信息被用于修改所述實例化 特定元素。
19. 如權(quán)利要求17所述的系統(tǒng),其特征在于,所述訪問指令集包括流程信息,以及其中所述 提示基于其相關(guān)聯(lián)的實例化特定元素進(jìn)行選擇,所述實例化特定元素基于所述實例化數(shù)據(jù)模 型和所述流程信息進(jìn)行選擇。
20. —種用于修改實例化數(shù)據(jù)模型的計算機實施方法,所述實例化數(shù)據(jù)模型包括一個或多個 實例化特定元素,其特征在于,該方法包括向用戶給出提示,其中所述提示基于圖中的位置確定,所述圖包括所述實例化數(shù)據(jù)模型的 所述一個或多個實例化特定元素; 從用戶獲取信息;和 修改所述實例化數(shù)據(jù)模型。
21. —種用于生成應(yīng)用專用文件的計算機實施方法,其特征在于,該方法包括 從用戶獲取信息;修改實例化數(shù)據(jù)模型,所述實例化數(shù)據(jù)模型包括一個或多個實例化特定元素; 基于所述經(jīng)修改的實例化數(shù)據(jù)模型創(chuàng)建實例化應(yīng)用專用數(shù)據(jù)模型;和 基于所述實例化應(yīng)用專用數(shù)據(jù)模型生成應(yīng)用專用文件。
全文摘要
本文介紹了一種可以被用于創(chuàng)建和執(zhí)行包括用戶訪問的軟件應(yīng)用程序的框架。該框架包括運行時引擎和數(shù)據(jù)庫。運行時引擎包括訪問驅(qū)動器。數(shù)據(jù)庫包括訪問指令和模型信息。訪問驅(qū)動器通過利用訪問指令和模型信息以從用戶得到信息而生成或修改實例化數(shù)據(jù)模型。訪問指令包括流程控制信息、提示和用戶界面(UI)信息。模型信息包括元模型、數(shù)據(jù)模型和實例化模型。一旦實例化模型已被創(chuàng)建,該實例化模型就可以被用于生成諸如稅務(wù)表的應(yīng)用專用文件。由于該應(yīng)用程序基于數(shù)據(jù)庫的內(nèi)容被執(zhí)行,因此可以通過修改數(shù)據(jù)庫的內(nèi)容修改應(yīng)用程序。
文檔編號G06Q10/00GK101194252SQ200580047013
公開日2008年6月4日 申請日期2005年11月23日 優(yōu)先權(quán)日2004年11月23日
發(fā)明者杰伊·杰冰·于, 肯奇·默里 申請人:英圖特有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
广安市| 锡林浩特市| 象州县| 扶风县| 新津县| 永胜县| 灌南县| 汉川市| 沾益县| 河池市| 衡阳市| 常熟市| 斗六市| 奎屯市| 都江堰市| 泰宁县| 理塘县| 长武县| 乐安县| 新蔡县| 永春县| 汕尾市| 高阳县| 六枝特区| 巴林右旗| 全椒县| 昌邑市| 东明县| 富锦市| 沧州市| 平谷区| 甘谷县| 神木县| 冕宁县| 沈阳市| 沈阳市| 佛教| 承德市| 嫩江县| 贡觉县| 仁寿县|