專利名稱::編輯和匯編商業(yè)規(guī)則的制作方法
技術領域:
:本發(fā)明涉及編輯和匯編(compile)商業(yè)規(guī)則。
背景技術:
:通常將復雜的計算表示為流過有向圖(directedgraph)的數據,計算的組件與該圖的頂點(vertices)以及在與該圖的鏈接(弧(arc)、邊(edge))對應的組件之間流動的數據相關聯。在美國專利5,966,072ExecutingComputationsExpressedAsGraphs(執(zhí)行被表示為圖的計算)中描述了實施這種基于圖的計算的系統。在某些情形下,以被稱為"商業(yè)規(guī)則"的人們可讀的形式來描述與頂點相關聯的計算。
發(fā)明內容通常,在一方面中,通過以下步驟來更新基于圖形的計算中的組件,所述基于圖形的計算具有由表示數據流的鏈接元素而連接的數據處理組件,所述步驟包括接收規(guī)則規(guī)范,基于規(guī)則規(guī)范生成用于變換數據的變換,將變換與基于圖形的計算中的組件相關聯,并且響應于確定已接收到新的規(guī)則規(guī)范或者已編輯現有的規(guī)則規(guī)范、根據新的或者編輯的規(guī)則規(guī)范來更新與基于圖形的計算中的組件相關聯的變換。實施方式可以包括以下特征中的一個或多個。接收規(guī)則規(guī)范,包括從用戶接收規(guī)則規(guī)范的表的行,該行定義規(guī)則情形并且包含一個或多個潛在輸入的集合中的每一個的關系。接收規(guī)則規(guī)范還包括從用戶接收該表的第二行,該第二行定義第二規(guī)則情形并且包含一個或多個潛在輸入的第二集合中的每一個的第二關系。該關系包括以下中的一個或多個具有等于閾值的值、具有閾值之上的值、具有閾值之下的值、具有屬于值的集合的值、具有與樣式(pattern)匹配的值、具有與另一輸入的值的關系、具有與另一規(guī)則規(guī)范的輸出的值的關系,或者具有與存儲器中值的關系。行還包含輸出,輸出包括以下中的一個或多個或者其組合輸入的值、預定的值,或者由一個或多個輸入的值計算而來的值。接收包括測試列的集合的表,每個測試列包含一個或多個潛在輸入的值,并且對每個測試列,標識規(guī)則規(guī)范的行,該行將生成測試列的給定的輸入值的輸出、并且向用戶輸出每個測試列所標識的行的標識。生成包括每個測試列的結果行的表,每個結果行指示給定的測試列的輸入值將生成的輸出。生成表包括,在每個結果行中,指示是否從被指示為規(guī)則規(guī)范的之前版本的輸出改變?yōu)閷⑸傻妮敵?。響應于用戶與結果行的交互,指示規(guī)則規(guī)范中的哪一個規(guī)則情形將生成結果行中的輸出。生成包括對應于規(guī)則規(guī)范的每一行的評估行的表,在該表的每個評估行中,對每個潛在的輸入,指示對應潛在輸入的第一測試行中的值是否滿足潛在輸入的關系,并且在對應于給定的第一測試行的輸入值將生成輸出的規(guī)則規(guī)范的行的評估行中,指示將生成該輸出。評估行具有對應于規(guī)則規(guī)范的行的順序的順序,并且其中指示輸出的評估行對應于滿足了潛在輸入的每一個關系的規(guī)則規(guī)范的第一行。指示與滿足了潛在輸入的每一個關系的規(guī)則規(guī)范的行對應的、在每一個評估行中將生成的輸出。生成包括對應于規(guī)則規(guī)范的每一行的評估行的表,在每個評估行中,指示多少測試列具有滿足規(guī)則規(guī)范的對應行中的關系的輸入。每個測試列還包含預期的輸出值,每個結果行指示對給定的對應的測試列的輸入值將生成的輸出是否與測試列中預期的輸出匹配。響應于為每一個測試列確定第二規(guī)則規(guī)范的至少一行將生成給定的測試列的輸入值的輸出,確定包括第一規(guī)則規(guī)范和第二規(guī)則規(guī)范的規(guī)則集合有效。生成包括對每個測試列的結果行的表,每個結果行指示對給定的測試列的輸入值、由規(guī)則規(guī)范之一中的行生成的每個輸出。對于對給定的第一測試列的輸入值生成的輸出,生成將導致輸出的生成的、規(guī)則規(guī)范的輸入和輸出之間的相互關系的圖形顯示。接收測試列的表包括從用戶接收輸入值的集合、將輸入值的集合與規(guī)則規(guī)范的潛在輸入值進行匹配,并且將輸入值的集合存儲到表的列中。對輸入值的集合的接收響應于顯示潛在輸入值的標識。響應于確定規(guī)則規(guī)范的集合中的每個規(guī)則規(guī)范將生成至少一個輸出,確定規(guī)則規(guī)范的集合是有效的。響應于確定規(guī)則規(guī)范不是有效的,向規(guī)則規(guī)范的源通知該規(guī)則規(guī)范不是有效的。更新變換包括確認規(guī)則規(guī)范是有效的,基于新的或者編輯的規(guī)則規(guī)范生成新的變換,將第一變換與組件不關聯,并且將新的變換與組件相關聯。更新變換包括確認規(guī)則規(guī)范是有效的,等待要被執(zhí)行的基于圖形的計算,當激活組件時,基于新的或編輯的規(guī)則規(guī)范生成新的變換,并且將新的變換與組件相關聯。生成變換包括將規(guī)則規(guī)范中的多個規(guī)則情形中的每一個轉換為邏輯表達式以形成多個邏輯表達式,并且將多個邏輯表達式編譯為計算機可執(zhí)行的代碼。編譯多個邏輯表達式包括以下的一個或多個組合表達式、優(yōu)化各個表達式,并且優(yōu)化表達式的組。編譯多個邏輯表達式包括將表達式與適合于在基于圖形的計算中使用的組件相關聯。通常,在一方面,通過以下來測試計算接收包括規(guī)則情形的集合的規(guī)則規(guī)范,每個規(guī)則情形包括潛在輸入和對應輸出的關系;接收測試情形的集合,每個測試情形包含一個或多個潛在輸入的值,并且為每個測試情形,標識對給定的測試情形的輸入值將生成輸出的規(guī)則情形中的一個。實施方式可以包括一個或多個以下特征。響應于標識將對每個測試情形生成輸出的規(guī)則情形,存儲或輸出該規(guī)則規(guī)范是有效的指示。響應于標識對每個測試情形將生成輸出的規(guī)則情形,存儲或輸出將生成輸出的指示。接收測試情形的集合包括接收測試列的集合的表,每個測試列包含對于對應的一個測試情形的一個或多個潛在輸入的值。對于每個測試情形以及對于該測試情形的所標識的規(guī)則情形,標識由所標識的規(guī)則情形將生成什么輸出。對于每個測試情形以及對于該測試情形的所標識的規(guī)則情形,標識由作為促使所標識的規(guī)則情形生成輸出的測試情形中的一個或多個輸入值。還包括對于每個測試情形,為每個規(guī)則情形指示測試情形中的值使得規(guī)則情形的哪些關系得到滿足以及未得到滿足。規(guī)則情形具有順序,并且對于每個測試情形所標識的規(guī)則情形對應于滿足潛在輸入的每一個關系的順序中的第一規(guī)則情形。接收包括規(guī)則情形的第二集合的第二規(guī)則規(guī)范,一個或多個規(guī)則情形包括第一規(guī)則規(guī)范的一個或多個輸出與第二規(guī)則規(guī)范的對應輸入的關系。對于每個測試情形,標識對給定的測試情形的輸入值和第一規(guī)則規(guī)范的標識的規(guī)則情形的輸出將生成輸出的第二規(guī)則規(guī)范的規(guī)則情形中的一個。對于每個測試情形,生成將導致生成第二規(guī)則規(guī)范的輸出的、輸入和第一規(guī)則規(guī)范的輸出與第二規(guī)則規(guī)范的輸出之間的相互關系的圖形顯示。對于每個測試情形,指示將生成給定的測試情形的輸入值的輸出的每個規(guī)則情形。對于每個規(guī)則情形,指示多少測試情形具有將促使規(guī)則情形生成輸出的潛在輸入的值。每個測試情形包括輸出。確定由標識的規(guī)則情形生成的輸出是否匹配測試情形中包括的輸出,并且存儲或交換確定的結果。生成包括每個測試情形的結果行的表,每個結果行指示對于給定的測試情形的輸入值將由規(guī)則規(guī)范生成的輸出。在每個結果行中,指示是否從被指示為規(guī)則規(guī)范的之前的版本的輸出改變?yōu)閷⑸傻妮敵觥m憫谟脩襞c結果行的交互,在結果行中指示將生成輸出的標識的規(guī)則情形。對于測試情形之一,生成包括對應于規(guī)則規(guī)范的每個規(guī)則情形的評估行的表,在表的每一評估行中,對于每個潛在的輸入,指示測試情形中的潛在輸入的值是否滿足對應于評估行的規(guī)則情形中潛在輸入的關系。在對應于測試情形的所標識的規(guī)則情形的表的評估行中,指示由該規(guī)則情形將生成的輸出。評估行具有對應于規(guī)則規(guī)范內規(guī)則情形的順序的順序,并且其中指示輸出的評估行對應于潛在輸入的每一個關系所滿足的第一規(guī)則情形。指示對應于潛在輸入的每一個關系所滿足的規(guī)則情形的、將由測試情形在每個評估行中生成的輸出。接收包括規(guī)則情形的第二集合的第二規(guī)則規(guī)范,指示將由每個規(guī)則規(guī)范生成的輸出。生成包括每個測試情形的結果行的表,每個結果行指示對于給定的測試情形的輸入值由規(guī)則規(guī)范生成的每個輸出。響應于用戶與結果行中所指示的輸出的交互,指示哪一個規(guī)則情形將生成所指示的輸出。所指示的規(guī)則情形來自第二規(guī)則規(guī)范,并且指示所指示的規(guī)則情形包括指示來自第一規(guī)則規(guī)范的規(guī)則情形和滿足所指示的規(guī)則情形的輸入關系的規(guī)則情形的輸出。接收測試情形的集合包括從用戶接收輸入值的集合,將輸入值的集合與規(guī)則規(guī)范的潛在輸入值進行匹配,并且將輸入值的集合存儲到表的列中。對輸入值的集合接收是響應于顯示潛在的輸入值的標識。通常,在一方面,在具有由表示數據流的鏈接元素而連接的數據處理組件的基于圖形的計算中的組件,該組件包括基于規(guī)則規(guī)范變換數據的變換,所述規(guī)則規(guī)范包括規(guī)則情形的集合,每個規(guī)則情形包括潛在輸入和對應輸出的關系,并且通過以下步驟來進行測試,在執(zhí)行環(huán)境中在輸入數據的集合上執(zhí)行基于圖形的計算、對輸入數據以及由對輸入數據的集合中的每一項數據的計算而產生的輸出進行登記,并且在與執(zhí)行環(huán)境分開的測試環(huán)境中,對于所登記的輸入數據的集合中的每一項數據來標識對于給定的該項中的輸入值將生成所登記的輸出的規(guī)則情形之一。在附圖和以下的描述中闡述本發(fā)明的一個或多個實施例的細節(jié)。從該描述以及附圖,和權利要求中本發(fā)明的其他特征、目的以及優(yōu)點將顯而易見。圖1A是變換的示例。圖1B是圖的示例。圖1C是變換的生成和更新的框圖。圖2A是基于擴展頁(spreadsheet)的規(guī)則條目(entry)的示例。圖2B是各個規(guī)則的示例。圖3是測試數據集合。圖4A是測試結果。圖4B和圖4C是測試結果的細節(jié)。圖5和圖7是流程圖。圖6是變換代碼的示例。具體實施例方式可以將商業(yè)規(guī)則表示為可以使用的準則的集合,例如,用于將數據從一種格式轉換為另一種格式,做出關于數據的確定,或者基于輸入數據的集合生成新數據。例如,在圖1A中,航班預定系統中的記錄102指示乘客的姓名104、該乘客本年度已飛行多少英里106、該乘客的票的艙位等級108,以及他的座位所處的行110。商業(yè)規(guī)則指示應當使這樣的乘客進入登機組1。通常商業(yè)規(guī)則對于人是容易理解的,即,"頭等艙的乘客在組l",但是在使用商業(yè)規(guī)則來操作數據之前可能需要將其轉化為計算機能夠理解的東西。為了在基于圖的計算環(huán)境中實施商業(yè)規(guī)則,生成變換112,該變換112從一個或多個數據源(例如輸入數據集合IOO)接收輸入記錄(諸如記錄102),并且將指示乘客姓名104和其在118中的哪個組的輸出記錄(例如,記錄114)插入到輸出數據集合120中。輸入和輸出數據集合也可以稱為數據流。然后可以在具有通過鏈接代表數據流動的元素而連接的數據處理組件的基于圖的計算中,實施該變換。例如,圖1B的簡單的計算圖130取得作為輸入的兩個數據集合132、134(例如,頻繁飛行數據和航班預定數據),在分離的格式化組件136、138中格式化每個集合中的數據使得可以一起使用它們,并且在結合(join)組件140中將它們進行結合以產生輸出數據集合142。變換自身可以是基于圖的計算,諸如在圖130中的計算,或者可以在圖的組件內實施,諸如圖130所包含的各個組件136、138以及140。為了對非技術的用戶簡化變換的創(chuàng)建,向這樣的用戶提供了工具,使得以用戶熟悉的格式來輸入被稱為規(guī)則集合的商業(yè)規(guī)則的集合,其告知計算機系統用戶想要變換做什么。規(guī)則集合是產生單一變換的規(guī)則的集合。取決于輸入該規(guī)則可以由對于規(guī)則的輸出計算不同值的一個或者多個情形組成。一規(guī)則還可以包括其他規(guī)則。規(guī)則集合中的其他規(guī)則可以產生附加的或者可替換的輸出的值。規(guī)則的集合可以包含我們稱為"被包括的(included)"規(guī)則集合的其他規(guī)則集合。圖1C中示出了變換生成系統的一般的模型。生成器150從編輯器154接收作為輸入的規(guī)則集合152并且生成變換156。取決于該系統的架構和變換的目的以及該商業(yè)規(guī)則,可以將生成的變換156提供給基于圖的計算系統158作為在圖中使用的或者在整個圖自身中使用的組件。生成器150可以是,例如匯編器、客戶建立的程序,或者是使用標準工具配置的另一基于圖的計算,以接收規(guī)則集合152和輸出變換156。生成器150還可以在編輯規(guī)則集合152時更新變換156。當編輯規(guī)則集合152時,編輯器154可以向編輯者提供整個規(guī)則集合或者它可以僅僅提供新的或者修改的規(guī)則或者規(guī)則的情形152a。生成器150可以生成整個新的變換以替代原始的變換156,或者它可以提供包含變換的組件156a,這取決于性能和使用變換的系統的需要。如圖2A所示,在某些示例中,可以以擴展頁格式來加入(enter)規(guī)則。擴展頁200中的觸發(fā)列(triggercolumn)202、204、206,208對應于可得到的數據值,而行210a_h對應于規(guī)則情形,即,與可得到的數據值有關的準則的集合。如果對其中規(guī)則情形具有準則的每個觸發(fā)列所記錄的數據值滿足觸發(fā)準則,則將規(guī)則情形210n應用于給定的記錄(例如,圖1A中的102)。如果應用規(guī)則情形210n,則基于一個或者多個輸出列212生成輸出??梢詫⒁?guī)則情形的所有輸入關系都得到滿足的規(guī)則情形稱為"觸發(fā)的"。每個輸出列212對應于潛在的輸出變量,可應用的行210n的對應的單元(cell)中的值為該變量確定輸出(如果有)。如以下將討論的,單元可能包含被分配給變量的值或者它可能包含為生成輸出值必須要評估的值。盡管在圖2A中僅僅示出了一個,但是可以存在多于一個的輸出列。可以存在若干不同類型的觸發(fā)列,包括對應于變量的列、包含表達式但是一旦被運算則如變量對待的列,以及僅僅包含表達式的列?;趦H僅包含數據的列,其他的列的類型包括僅僅包含數據的列和指定評估每一行的表達式的列。僅僅包含表達式的列比那些對應于變量或者被作為變量對待的列更簡單。這樣的列可以包含以下中的一項參表達式。如果該表達式的評估被評估為非零、非空值,則認為該條件為真。參關鍵字"任何",或者空字符串(string)。該條件總是為真。觸發(fā)列中的每個空單元等效于明確包含關鍵字"任何"的單元。參關鍵字"其他"。如果在包含"其他"的該單元之上沒有一個單元為真,則該條件為真,該行中向左的所有單元是等同的。參關鍵字"相同"。如果以上單元為真,則該條件為真。對應于變量的列可以具有兩種類型的單元。一種類型的單元是表達式單元。那些單元表現完全如同上述的僅僅包含表達式的列中的單元。然而,可以在表達式中使用關鍵字"this"來指代列變量。另一類型的單元是比較值。用于比較值的示范性的文法(grammar)如下comparison—value::=compound_value("or"compound—value)*compound_value::=simp1c_value("and"simple_value)*simple_value::=["not,,](value—expressionIsimple—functionImembership—expr)value—expression::=[operator]value—elementoperator::=">,,|"<,,|">=,,|"<=,,|"!=,,|"=,,|"equals,,value_e1ement::=constant|constant|variable|"("expression"),,simple_function::="is_null,,|"is_blank,,|"is_valid,,|"is_defined,,|"is—bzero"membership_expr::="in""["value—element((","|"to"|"or")value_element)*"],,其中"*"意味著該項重復零次或者多次??梢允褂萌魏魏线m的編程語言或者語法(syntax)。示例可以包括C、Java、DML,或者Prolog。根據操作符、函數、或者從屬關系(membership)表達式將列變量與比較值進行比較。在圖2A的示例中,前兩列202和204包含具有">="操作符的比較值,從而如果該列的值大于或者等于對應的數,則滿足準則。如果不存在操作符,如在"座位的艙位等級"列中,則假設"等于"。常數可以是在基礎系統中使用的無論何種編程語言或者語法中的任何合法常數。如下所述,其他常數和變量是在規(guī)則集合內定義的商業(yè)項。表達式是在返回將與列變量比較的可兼容的數據類型的、使用的語言的任何合法表達式。在某些示例中,在括號中包含比較值內部的表達式以避免混淆。對于simple—function,將該函數應用于列變量,因此"is_nul1"關鍵字與表達式"is_nul1(this)"相同。在圖2A的示例中,第一行210a具有僅僅一個列202,其指示如果旅行者頻繁飛行12的英里的總數大于1,000,ooo,則應用規(guī)則情形而不管任何其他列可能具有的什么樣的值。在該情形中,"登機組"輸出該用戶被置于組1的變量。同樣,第二規(guī)則情形210b指示頭等艙中的任何乘客在組1中。在某些示例中,依序評估規(guī)則,所以已經超過1,000,000英里的旅行者和頭等艙票將在組l中,但是將僅僅觸發(fā)第一規(guī)則情形210a。一旦規(guī)則情形被觸發(fā),則不需要評估該規(guī)則中的其他規(guī)則情形。下一規(guī)則情形210c是基于兩個輸入值202和204,如果滿足了總的頻繁飛行里程和當年里程這兩者所限定的準則,則該乘客在組2。在第四規(guī)則情形210d中,任何商務艙的顧客也在組2。剩余的規(guī)則情形210e-h包含與其他規(guī)則情形有關的準則,即,"其他"以及"相同"。如上所述,"其他"指示不滿足其之上的行中的列的準則的任何一個,并且其具有相同的準則至左(即,規(guī)則210b和210d),"相同"指示這樣的規(guī)則情形應用,S卩,其被應用的以上規(guī)則情形是否關于該列。從而,將第五規(guī)則情形210e應用于任何記錄,該任何記錄與前兩列202或204中的任何準則不匹配(因為,其可能由規(guī)則情形210a或者210c來處理)、不具有"座位的艙位等級"列中的"頭等"或"商務"(列206中的關鍵字"其他")、并且其具有"座位的行"的值208小于或等于10。剩余規(guī)則情形210f-h中的每一個應用于以下記錄其也與列202或204中的具有值的任何更高規(guī)則情形不匹配、不具有"座位的艙位等級"列中的"頭等"或"商務"的、并且具有合適的"座位的行"的值。還可以將圖2A的示例中的規(guī)則情形210a_h表示為各個簡單的規(guī)則,每一個處于其自身的擴展頁中,如圖2B中所示。規(guī)則220a-d分別對應于圖2A的行210a-d,而規(guī)則220e具有對應于行210e-h—起的四個規(guī)則情形。用戶可以分開創(chuàng)建這些各個規(guī)則,而不是生成圖2A中示出的整個表。每個規(guī)則包含每個觸發(fā)列的值和每個輸出列的值(該值可以是空的,即,有效地被設置為"任意")。當多個規(guī)則生成相同的輸出時,對這些規(guī)則進行排序并且依序對這些規(guī)則進行考慮直到一個規(guī)則中的規(guī)則情形在輸入觸發(fā)并生成輸出。如果沒有規(guī)則情形處于規(guī)則觸發(fā),則處理產生相同輸出的下一規(guī)則。如果沒有任何規(guī)則中的情形觸發(fā)輸出,則使用默認的值。在一些示例中,編輯器界面可以按圖形標識包含表達式的單元(cell)。這將有助于用戶理解按照其自身將被評估為真的或者假的表達式和返回與列變量比較的值的表達式之間的差別。當用戶在鍵入(type)時,他可以通過例如在開始鍵入星號來指示要作為表達式單元特定的單元。在一些示例中,值和表達式是DML表達式??梢灾С滞耆腄ML語言。將字段(field)和值的特殊的關鍵字和商業(yè)名稱編碼為DML表達式的預處理輸出的字符串。注意,表達式不僅可以為變量使用邏輯(商業(yè))名稱,而且還可以指代實際的物理名稱,盡管這可能干擾測試。對于對應于輸出變量的列,單元可以包含以下中之一參值。該值將被分配給輸出變量參表達式。該表達式的值將被分配給輸出變量。如果該表達式評估為NULL,則字段取得該NULL值,除非輸出字段是不可空的(non-皿llable)。在這種情形中,生成錯誤。參關鍵字"皿ll"。如果輸出字段是可空的,則給該字段分配NULL。否則,生成錯誤。參空字符串。如果輸出字段具有默認值,則分配默認值。否則,將該單元作為其包含關鍵字"皿ll"對待。參關鍵字"相同"。給輸出字段分配之上的單元中計算的相同的值。如果可能,則盡可能快地報告錯誤(即,在不可空的字段的輸出列中置入"null")。然而,一些錯誤直到測試時或者運行時才可以被報告。除了表達式,可以允許用戶對規(guī)則中的任何單元附加注釋(comment)。可如附加到諸如MicrosoftExcel之類的普通的電子表程序中單元的注釋那樣來顯示這些注釋。在一些示例中,可以配置編輯器界面的規(guī)則使得比該界面需要的技術要求更嚴格地限制用戶可以輸入的內容。例如,可以配置該界面以僅僅允許某些類型的變量或者某些類型的表達式,以便提供更簡單的、進一步限制(constrained)的用戶界面?;谟脩舻慕巧蛴脩鬒D還可以配置該界面以來限制可以改變規(guī)則中的哪些單元。這樣的限制可以通過管理員而應用到規(guī)則的集合。無論按照表的行或者按照單獨的規(guī)則創(chuàng)建,每個規(guī)則具有特定的一組屬性。規(guī)則集合可以確定它們包括的這些規(guī)則的這些屬性。這些屬性可以包括名稱、規(guī)則類型、描述和注釋字段、輸出變量的列表、輸入變量的列表、主題(argument)的列表、觸發(fā)列的列表、修改歷史、測試數據集合、以及錯誤處理行為。名稱是自解釋的,并且用于在規(guī)則集合中列出規(guī)則。規(guī)則類型可以是例如"正常的"或"功能"。在一些示例中,規(guī)則類型是規(guī)則集合的特性(property)。輸出變量的列表是由規(guī)則產生的變量或者由規(guī)則分配的值的集合。這可以從規(guī)則集合中繼承(inherite),并且可以存在一個或多個輸出。輸入變量的列表標識規(guī)則需要以評估記錄的所有變量,包括列的頂部的那些變量和在表達式內部使用的那些變量(例如,圖2A中的規(guī)則210c中使用的"近年的頻繁飛行的里程",在表達式中使用,但沒有其自身的列)。在一些示例中,可以使用多個規(guī)則情形來生成單一輸入記錄的多個輸出記錄。這樣的規(guī)則集合被稱為歸一化的(normalize)規(guī)則集合。在歸一化的規(guī)則集合中,輸出中的一個被標識為關鍵輸出。當評估計算該關鍵輸出的規(guī)則時,記錄(note)輸入所觸發(fā)的規(guī)則情形和生成的輸出。然后再次評估規(guī)則,禁止之前觸發(fā)的規(guī)則情形,以查看是否任何其他的規(guī)則情形觸發(fā)并產生輸出。對此進行重復直到沒有規(guī)則情形觸發(fā)??梢詫⒚總€輸出作為分開的輸出記錄而存儲。在一些示例中,對規(guī)則情形分組,使得如果一個規(guī)則情形觸發(fā),則當對相同輸入的下次迭代(iteration)時還禁止其組內的其他規(guī)則情形。在一些示例中,通過行中的規(guī)則情形進行"與"操作而對列進行"或"操作,可以以與上述的相反的方式來評估規(guī)則。即,只有如果每一行觸發(fā)(對行進行"與"操作),而對于每一行僅僅需要單個單元為真以觸發(fā)(對列進行"或"操作)規(guī)則才產生輸出。對于功能規(guī)則僅僅呈現主題的列表。其標識被輸入到規(guī)則的參數的名稱和類型,并且可以是規(guī)則集合的特性。觸發(fā)列的列表標識哪一列可以觸發(fā)規(guī)則的應用。除了僅僅在圖2A和圖2B的示例中示出的輸入變量之外,觸發(fā)列可以對應于參數、查找變量、來自較早的規(guī)則的輸出變量、所包括的(including)規(guī)則集合的輸出變量、對于規(guī)則集合的參數,或者表達式。它們還可以包括來自功能規(guī)則,即,來自主題的輸入變量。修改歷史包括修改的名稱、日期,以及注釋。在一些示例中,存在對于每個規(guī)則的一個修改歷史,和對于測試集合的一個修改歷史(以下討論)。錯誤處理確定從規(guī)則集合創(chuàng)建的變換怎樣處理在評估規(guī)則時發(fā)生的錯誤。為了處理觸發(fā)表達式中的錯誤,選項(option)是允許錯誤或者忽略錯誤,在選項允許錯誤的情況下,變換拒絕(reject)導致錯誤的記錄,而選項忽略錯誤的情況等效于假定觸發(fā)表達式為假并且繼續(xù)前進到下一規(guī)則。對于輸出表達式,可以通過以下來處理錯誤允許該錯誤并且拒絕記錄、忽略錯誤并且將輸出設置為NULL,或者忽略規(guī)則中的該行并且繼續(xù)前進到下一行。測試數據為了輔助評估規(guī)則集合是否按照預期來工作,可以包括測試數據集合。規(guī)則集合的測試數據集合是原型(prototypical)輸入和期望的輸出的集合,例如,如圖3所示。該測試數據集合由如表400的擴展頁組成,表400具有由規(guī)則引用的每個字段的一行402a-e以及每個輸出的一行404(在該示例中,存在僅僅一個)。然后用戶可以創(chuàng)建在測試數據的列406a-r中表示的測試情形和期望的結果??梢岳靡?guī)則保存該測試數據。圖3的示例包含可能的輸入402a-e和作為關于圖2A_圖2B的規(guī)則的預期的輸出404。對于頻繁飛行里程和座位安排的各種組合406,其示出應當計算什么登機組404(存在比所示出的可能輸入更多的組合)。在一些示例中,測試輸入包括在每個查找中的值或每個變量。測試輸入還可以包括每個參數的值以及作為引用當前的日期或時間、對于任何規(guī)則用作"現在"的值。為測試各個個體(皿it),測試輸入可以包括任何所包含的規(guī)則集合的值,使得在測試所包括的規(guī)則集合時不必要評估被包括的規(guī)則集合。在一些示例中,基于用戶動作由軟件來確定個體測試表中的列402、404。當用戶編輯規(guī)則時,解析該規(guī)則的細節(jié)并且生成所引用的輸入變量的確定的(definitive)列表。該列表包括在列標題中使用的變量和在表達式中嵌入的變量。對每個變量、在表達式中嵌入的每個技術變量,以及每個查找表達式生成一列。在一些示例中,用戶通過每次一個地(oneatatime)提供測試情形來創(chuàng)建測試表400。例如,用戶可以指定具有總共2,000,000頻繁飛行里程、本年200,000英里、去年150,000英里、以及在第5行中的頭等艙機票的乘客應當位于登機組1。軟件確定行402a-e和行404中的哪一行對應于這些輸入和輸出并且在表400中創(chuàng)建對應的列406a??梢园凑沼脩粝M斎氲臏y試情形的次數來對此進行重復。在一些情形中,軟件可以向用戶提供給出了每個潛在的輸入或輸出變量的界面,使得用戶可以僅僅輸入或選擇值而無須知道什么變量需要它們。然后用戶可以填寫測試情形并且執(zhí)行測試。關于這一點,軟件評估測試數據集合表的每一行的規(guī)則并且計算結果值。如果結果值與期望的值(由用戶在對應于輸出變量的列中輸入的值)匹配,則給出該規(guī)則有效的指示,例如,可以以綠色示出該輸出單元。如果結果值與期望的值不匹配,則對此做出指示,例如,可以以紅色示出該單元并且顯示期望的值和實際值。然后用戶可以更新測試情形或調整(fix)該規(guī)則。當然可以使用其他用戶界面機制。例如,除了將計算的輸出與輸入期望的輸出進行比較,測試過程可以簡單地顯示計算的值是什么,并且讓用戶來評估是否正確。在一些示例中,用戶具有其可以用于生成測試數據的實際數據。商業(yè)規(guī)則的最終用戶可以提供這樣的數據給開發(fā)者以用于測試。為了處理用戶沒有實際的數據來測試的情形,軟件可以提供簡單的數據輸入形式用于一次一個記錄地輸入測試數據。用戶可以在輸入數據集合中鍵入每個字段的值并且這些記錄將被添加到所標識的測試數據集合。在一些示例中,在輸入規(guī)則時對其進行驗證(validate),并且可以立即在界面上標識出不產生期望的輸出的規(guī)則,類似于字處理器可以在輸入詞時標記拼錯的詞那樣。在一些示例中,在執(zhí)行了測試之后,用戶可以在測試數據集合表中選擇任何行(測試情形)。如果選擇了行,則將顯示為該測試情形產生輸出的規(guī)則表中對應的行。除了表達式,用戶還可以向測試數據表中的任何單元附加注釋。,《好麵集A白勺如上所述的,根據規(guī)則集合中生成變換。規(guī)則集合可以具有以下屬性名稱、描沭,以及灃釋-這有助于標識規(guī)則集合。依賴于后端的(back-end)實施方案,規(guī)則集合可以包括其在系統內的位置的標識。在一些示例中,規(guī)則集合的位置是項目(project)中的路徑(path)。在一些示例中,可以在相關的(relational)數據庫中組織規(guī)則集合并且由名稱來定位規(guī)則集合。修改歷史包括修改名稱、日期,和登記(check-in)注釋。^&^L-其確定從規(guī)則集合生成什么類型的變換。如下所討論的,可能的值包括重新格式化、結合(join)、積累(rollup),以及篩選(filter)。輸入數據集合-其提供了用于編輯的字段和R侖名的常數(constant)的列表。在一些示例中,當生成變換時,將通過默認來假定輸入數據集合中的一個數據集合的記錄格式??梢源嬖诙鄠€輸入集合,允許規(guī)則集合為不同的環(huán)境生成變換。這還允許多個邏輯的集合進行物理地映射,即,物理名稱的不同集合。在一些示例中,存在具有一個或多個數據集合的輸入映射表。在一些示例中,結合組件可以具有多個輸入映射表,并且每一個輸入映射表可以具有多個數據集合。輸出數據集合-其提供了輸出字段名稱的列表。通過默認,當生成變換時,將假定輸出數據集合的一個的記錄格式。輸出數據集合可以與輸入數據集合相同。被包括的規(guī)則集合將不具有輸出數據集合。在一些示例中,如同輸入數據集合,存在多個輸出集合,允許規(guī)則集合為不同的環(huán)境生成變換。被包括的規(guī)則集合的列表-一個規(guī)則集合可以使用由另一規(guī)則集合計算的輸出字段(明確地被列出的輸出字段,不是輸出記錄格式的字段)?;诒话ǖ囊?guī)則集合的映射表,被包括(included)的規(guī)則集合中的輸出變量可以用作包括(including)規(guī)則集合中的變量,所述被包括的規(guī)則集合的映射表定義了在包括的規(guī)則集合中可見的、來自被包括的規(guī)則集合的輸出變量的集合。被包括的變換文件的列表-可以有選擇地包括當處理規(guī)則集合時指定要使用的變換的一個或多個文件。列出變暈和常數的一系列映射表_利用輸入和輸出數據集合使這些表相互聯系(interwin)。其使得變量的列表對于編輯器是已知的并且證明(document)商業(yè)名稱和技術名稱(匿L)之間的映射。每個變量具有商業(yè)名稱、技術名稱(匿L表達式),以及基本類型(字符串、數字、日期或日期時間)。與每個變量相關聯的是證明商業(yè)名稱和匿L常數值之間的映射的可選的常數的列表。以下更詳細地描述變量表。對外部測試數據文件的引用-測試文件被用于測試規(guī)則,類似于以上所討論的嵌入的測試數據集合。非拒絕標志-如果設置了該標志,則由規(guī)則集合產生的變換將不拒絕記錄(扔掉錯誤)??梢允褂迷摌酥臼沟煤雎匀拥翦e誤的規(guī)則,好像該規(guī)則從未被觸發(fā)過。調度表-其列出一個或者更多調度(employment),該調度指示(間接地)在每個編譯(build)中將包括哪些規(guī)則。隨后詳細描述調度表??稍栮P鍵字(key)-其讓用戶指定表示用于結合類型和積累類型規(guī)則集合的關鍵字的特殊輸入字段的商業(yè)名稱。在一些示例中,實際上利用關鍵字的類型,將該關鍵字實施為輸入變量的表中的條目(entry)。杳找t件的可詵列表-其提供商業(yè)名稱、關鍵字信息以及輸入變量和常數的完整的表,每個查找文件一個表。以下更詳細地描述查找文件支持。^!B^-其列出其值來自環(huán)境或者來自運行時的參數集合的變量。贈織翻表如上所述,每個規(guī)則集合具有變量和常數的表的相關聯集合。在一些示例中,這些表對于規(guī)則集合是私有的(private)并且不能在規(guī)則集合之間共享。變量和常數的表被用于以下若干目的1.作為規(guī)則集合所使用的輸入變量以及由規(guī)則集合計算而產生的輸出變量的確定的列表。2.作為在編輯期間可用的商業(yè)名稱的列表。當編輯時,系統將對于變量和常數呈現商業(yè)名稱的建議列表。該列表來自于變量和常數的表。3.作為將商業(yè)名稱轉譯(translate)為技術名稱的映射表。規(guī)則將包括商業(yè)名稱(以文本,如隨后描述的DML預處理器指令(directive)的內部)。當創(chuàng)建變換時,由技術名稱或者DML表達式代替商業(yè)名稱。一些表,如輸入變量和輸出變量,可以具有多個數據集合,每個數據集合具有對于商業(yè)名稱的不同的技術名稱。所使用的轉譯依賴于調度(隨后詳述)規(guī)則集合可以具有若干不同的表。這些表在許多方面是類似的,但是存在以下細微的差別。這些表包括1.輸入變量和常數的表。對于變換類型的規(guī)則集合,該表包含規(guī)則中將引用的輸入記錄格式中的字段。不是記錄格式中的每個字段都需要被列出,而是它們通常被列出。對于結合類型的規(guī)則集合,將存在多個輸入表,每個表表示結合操作的一個輸入數據集合。2.對于所有被包括的規(guī)則集合的輸入變量和常數的表。當使用被包括的規(guī)則集合,每個被包括的規(guī)則集合具有其自身輸入變量和常數的表。當編譯變換時,必須將被包括的規(guī)則集合所使用的輸入變量映射到進行包括的規(guī)則集合的上下文中的實際輸入。因此,提升(promote)該列表至包括規(guī)則集合。如果包括了多個被包括的規(guī)則集合,則提升每個輸入變量表。(如果被包括的規(guī)則集合自身包括規(guī)則集合,則不提升第二級變量)。從被包括的規(guī)則集合中提升的輸入變量和常數對于包括規(guī)則集合是不可用的。僅僅包括該表使得可以在被包括的規(guī)則集合的輸入和包括規(guī)則集合的輸入之間建立映射。參見以下更多的細節(jié)。3.對于所有被包括的規(guī)則集合的輸出變量和常數的表。當已經包括了規(guī)則集合時,那些被包括的規(guī)則集合的輸出變?yōu)榘ㄒ?guī)則集合的輸入。該表列出了所有的那些變量。初始地根據所有被包括的規(guī)則集合的輸出變量和常數的表直接填充(populate);然而,可以改變商業(yè)名稱以避免名稱沖突。對于該表,技術名稱真正是(really)被包括的規(guī)則集合內部的商業(yè)名稱。174.輸出變量和常數的表。對應變換類型的規(guī)則集合,該表包含將由規(guī)則集合計算的輸出記錄格式中的字段。還可以包括未計算的輸出變量并且這些輸出變量將被規(guī)則集合所忽略。(所生成的變換具有通配符(wildcard)規(guī)則以將輸入復制到輸出。此外,輸出可能具有被包括的默認值)。還可以將輸出變量用作中間(intermediate)變量,這意味著可以在隨后的規(guī)則中引用從一個規(guī)則產生的輸出的值。有時,僅僅以此方式來使用輸出;該輸出從不直接被包括在來自變換的輸出記錄中。5.參數的表。規(guī)則可以包括對參數的引用(reference)。在運行時在圖形參數集合的上下文中來解算(resolve)參數。如同其他變量,規(guī)則集合中的參數具有商業(yè)名稱、技術名稱(例如,$RUNDATE)和類型。6.對每個查找文件的變量映射的表。這類似于輸入表,但映射于查找文件的記錄格式中的字段。通常將非共享的規(guī)則集合(其被設計用于產生變換)捆綁到(tie)輸入和輸出數據集合兩者。輸入數據集合是輸入變量的來源。輸出數據集合是輸出變量的來源。有時,規(guī)則集合將具有多個輸入數據集合和/或多個輸出數據集合。在這種情形下,每個輸入數據集合和輸出數據集合是變換的可能的輸入或輸出。僅僅存在輸入變量的一個集合(除了結合操作以外),但可能存在對于不同的數據集合商業(yè)名稱和技術名稱之間的不同映射。在一些情形中,輸入變量可以被規(guī)則集合使用并且在一個輸入數據集合中但是不在第二輸入數據集合中呈現。在這種情形下,在第二輸入數據集合中必須將匿L表達式指定為缺失(missing)變量的技術名稱。如果規(guī)則集合不使用輸入變量,則不存在為每個輸入數據集合提供技術名稱的需要。同樣,可能存在僅僅輸出變量的一個集合。如果給定的輸出數據集合不具有與輸出變量對應的字段(例如,不存在技術名稱),則當生成對于該輸出數據集合的變換時,將忽略該輸出。有些(somewhat)不同地對待(treat)被包括的規(guī)則集合。被包括的規(guī)則集合不具有相關聯的輸入和輸出數據集合。替代地是,它們僅僅具有輸入變量和輸出變量。包含被包括的規(guī)則集合的規(guī)則集合負責映射輸入和輸出。隨后更詳細地進行描述。變暈變量可以具有以下特性,并且可以以列表形式(tabularform)呈現給用戶1.商業(yè)名稱(邏輯名稱)。商業(yè)名稱是在規(guī)則中使用的名稱。在一些示例中,施加限制使得沒有兩個輸入變量可以具有相同的名稱、沒有兩個輸出變量可以具有相同的名稱、沒有來自被包括的規(guī)則集合的兩個輸出可以具有相同的名稱,以及沒有相同查找文件中的兩個查找變量可以具有相同的名稱。輸入變量可以與輸出變量具有相同的名稱。在這種情形下,用戶界面可以基于上下文或者使用諸如在輸出變量的名稱之前的"out"之類的前綴(prefix)來消除輸入和輸出的歧義(disambiguate)。不同查找文件中的查找變量可以具有相同的名稱。在這種情形中,使用諸如查找文件自身的名稱之類的前綴將消除它們之間的歧義。2.簡單類型。在一些示例中,可以支持四種基本類型-字符串、數字、日期以及日期時間。這些對應于DML類型的字符串(int)、十進制(2Q)、日期("YYYY-匪-DD")以及日期時間("YYYY-匪-DDHH24:MI:SS.n皿皿n")。例如,通過所生成的變換組件將基本類型和變換中使用的實際類型之間的轉換與商業(yè)規(guī)則的編輯分開處理。3.默認值。默認值僅僅是輸出變量需要的。其是以下情形中使用的值(l)當對于該輸出在規(guī)則的輸出列中存在空的單元時,或者(2)當對該輸出沒有規(guī)則觸發(fā)以計算值時。只要輸出變量是可空的,則默認值可以是NULL(并且空單元被解譯為NULL)。默認值是表達式,如同在規(guī)則表達式表的輸出列中使用的表達式。這意味著默認值可以引用輸入變量或者輸出常數或者包含表達式。默認值還可以引用其他輸出,只要沒有弓l入(introduce)循環(huán)(circularity)。4.技術名稱(物理名稱)或表達式。這是指定變量的表達式??梢詫τ谳斎牒捅话ǖ淖兞渴褂帽磉_式來代替字段名稱(在一些示例中,不允許對輸出變量使用表達式)。在矢量(vector)的情形下,表達式應該完全合格(qualify)。當處理來自被包括的規(guī)則集合的提升的變量和輸入變量和輸出變量時,與變量相關聯的技術名稱正好在共享的規(guī)則集合內部使用的商業(yè)名稱。當處理僅僅在內部使用的輸出變量時(在一個規(guī)則中計算的、并在后來的規(guī)則中使用的中間變量),技術名稱可以為空。5.可選的描述和注釋獵變量的各種表包括用于常數以及變量的映射。常數對應于C++中的枚舉(e皿m)。軟件可以支持最初來自有效值和無效(invalid)值的常數值,并且最初來自有效和無效范圍的常數范圍。此外,可以創(chuàng)建表示獨特的(distinct)值和/或范圍的集合的常數。常數與變量相關聯。這意味著常數的商業(yè)名稱無須在整個規(guī)則集合中是唯一的。編輯器通常基于常數出現在規(guī)則中的哪一列而得知任何常數的上下文(context);然而,用戶可以選擇常數屬于在表達式中的不同的變量。在這種情形中,具有變量名稱的常數將是合格的(例如,"Airlineclass,bussiness,,)。當計算輸出變量時,僅僅使用單一值的常數(給輸出字段分配范圍沒有意義)。常數具有以下特性,并且可以以列表形式呈現給用戶(變量和常數可以混合(intermingle),類似于在另一表內部嵌入表)。1.變量名稱。所有常數正好(exactly)應用于一個變量。該變量名稱實際上是相關聯的變量自身的一部分。2.商業(yè)名稱。商業(yè)名稱是規(guī)則中使用的名稱。該名稱無須是值的標識符,具體地,允許內部空格(space)和標點(punctuation)。常數的商業(yè)名稱僅僅必須在其所應用的變量內是唯一的。3.常數類型。值、范圍、或集合之一。如之前所述的,只有當在比較中(輸入)而不是分配中(輸出)使用時,范圍和集合才是合法(legal)。4.對于值實際值。在當前的示例中,字符串應當位于引號(quote)中而數字不應是這樣。日期和日期-時間在默認形式時應當處于引號中(例如,"YYYY-匪-DD")。還允許使用表達式,只要該表達式返回可以被自動轉換為變量類型的簡單類型。當常數是被包括的規(guī)則集合的輸入或輸出的表的一部分時,不存在值。替代的是,該值是對應的輸入或輸出變量的相關聯的常數的商業(yè)名稱。5.對于范圍最小值和最大值。兩者是常數或者表達式,如同以上證明的實際值。范圍被用于規(guī)則中的比較的簡短表達(shorthand)。對于范圍僅僅平等的(equality)比較是允許的,并且軟件將轉譯為"變量>=最小以及變量<=最大"。如果未指定最小,則跳過比較的一部分。同樣的情形用于最大??梢砸远禾?comma)分隔最小值和最大者來實際存儲范圍。6.對于集合逗號所分隔的值的列表。列表中的每個元素是常數或者表達式,如同以上證明的實際值。對于集合僅僅平等的比較是允許的,并且軟件將轉譯為以"[值的矢量的列表]的變量成員"形式的表達式。7.可選的描述和注釋當處理來自共享的規(guī)則集合的提升的變量時,也提升了常數。在示出共享的規(guī)則集合的輸入和輸出變量的表中,還示出了與這些變量相關聯的常數。這些常數的默認的映射是所提升的信息的一部分,但是用戶可以覆蓋(override)常數值.軟件將檢測何時因為不匹配的常數而存在變量的使用中可能的沖突。具體地,如果(1)將任何變量的值復制到另一變量,以及(2)如果兩個變量均具有所限定的常數,以及(3)在名稱和值上的常數的集合均不等同,則生成用戶需要將一個變量的值轉譯為另一變量的值的錯誤。原變量包括輸入變量、查找變量、來自被包括的規(guī)則集合的輸出,以及被用作輸入的輸出變量。目標變量包括輸出變量以及向被包括的規(guī)則集合的輸入。可以在規(guī)則表達式或者變量表中發(fā)生分配。侖名限制可以被用作輸入的所有的東西通常需要具有在整個規(guī)則集合內是唯一的名稱。這包括輸入變量的商業(yè)名稱、參數的商業(yè)名稱,以及被映射到每個被包括的規(guī)則集合的輸出的商業(yè)名稱。對于結合操作,在不同的輸入集合中的輸入變量可以具有相同的名稱。例如,可以利用對應于輸入集合的商業(yè)名稱的前綴來使它們不產生歧義。輸出變量也必須是唯一的。然而,輸出變量可以具有與輸入變量相同的名稱。如果輸出變量具有與輸入變量相同的名稱,并且該變量的名稱在允許輸入變量名稱的地方(如同在規(guī)則的觸發(fā)列)使用,則假定是輸入變量。為了使用輸出變量替代,例如,需要在輸入變量名稱時通過輸入"out.〈variable-name〉"來使該名稱合格。這是僅僅是界面符號(notation)-變量的內部表示是沒有歧義的。在具有相同名稱的變量和常數之間仍然可能存在歧義。在這種情形中,當其中具有相同名稱的常數和變量均有意義的上下文中時,軟件將支持(favor)常數。用戶可以通過使用例如語法"in.〈variable-name〉."來使變量名稱是合格的以將其覆蓋。在一些示例中,假定商業(yè)名稱是UTF-8從而它們可以包括國際字符。商業(yè)名稱可以包括空格、句號、括號等等。然而,在這樣的示例中,不允許商業(yè)名稱包括在0x00與0x31之間的任何字符(控制字符)。所有的商業(yè)名稱匹配是區(qū)分大小寫的,盡管用戶界面可以允許用戶輸入具有錯誤大寫字母的商業(yè)名稱并且然后例如使用自動完成機制來建議(suggest)正確的大寫。變暈的順序為避免循環(huán)邏輯(circularlogic),軟件強制變量和規(guī)則的嚴格的順序??傮w的順序如下1.輸入變量和參數2.第一被包括的規(guī)則集合的輸入映射3.第一被包括的規(guī)則集合的輸出值4.第N被包括的規(guī)則集合的輸入映射5.第N被包括的規(guī)則集合的輸出值6.第一查找文件的默認關鍵值7.第一查找文件的輸出字段8.第N查找文件的默認關鍵值9.第N查找文件的輸出字段10.所有的輸出變量的默認值每一項的計算使用在之前的步驟中計算的值。這意味著,例如,第一被包括的規(guī)則可以引用其映射表中的輸入變量和參數。然而,第二被包括的規(guī)則可以將其輸入映射到從第一被包括的規(guī)則計算的輸出。類似地,在任何規(guī)則之前計算每個輸出變量的默認值,從而它們是基于輸入變量、參數、查找文件,或者從任何被包括的規(guī)則的輸出的值。當實際計算規(guī)則的輸出時,按順序評估規(guī)則使得后來的規(guī)則可以使用從先前的規(guī)則計算的值。驢機A翁車辭I鵬在一些示例中,輸入變量的表直接來自輸入數據集合記錄格式并且商業(yè)名稱來自關于輸入數據集合的元數據。然而,在一些示例中,存在規(guī)則集合內部具有這種映射的復制的優(yōu)點。首先,在規(guī)則集合具有變量映射表的復制使得可以在產生環(huán)境的上下文之外來編輯規(guī)則??梢詫⒁?guī)則集合和相關聯的規(guī)則串行化(serialize)為沙盒(sandbox)并且作為沙盒項目的一部分來編輯。第二,具有變量映射表的復制使得用戶可以解決沖突或者另外覆蓋現有的元數據。例如,如果輸入數據集合中的兩個字段映射到相同的商業(yè)名稱,則可以在輸入變量的表中改變這些商業(yè)名稱中的一個。當首次創(chuàng)建規(guī)則集合時,輸入變量表是空的。只要用戶一標識輸入數據集合,則輸入變量表就被自動從輸入數據集合的元數據填充(相同的邏輯應用于輸出變量和輸出數據集合,但是為了簡要余下的討論將集中在輸入數據集合上)。為了簡要,在該討論中使用單一的術語"輸入數據集合"。存在可以被鏈接到輸入變量的零個或多個輸入數據集合,以及可以被鏈接到輸出數據集合的零個或多個輸入數據集合的分開的集合。具體地,輸入變量表具有用于商業(yè)名稱的一列、用于類型等的一列,以及用于技術名稱的許多列,每輸入數據集合一個。一旦指定了單一的輸入數據集合,則可以使用類似的技術來添加第二個。然而,在第二或隨后的數據集合的情況下,技術名稱和商業(yè)名稱之間的映射可能是不完整的,尤其由于系統可能不能夠斷定出第二和隨后的數據集合中的每個字段映射到哪一個變量。在這樣的示例中,用戶可以手動地更正任何缺失的信息。當初始地從輸入數據集合創(chuàng)建輸入表時,輸入數據集合中的每個字段將促使創(chuàng)建一個輸入變量。輸入變量的技術名稱將是該字段的名稱。將基于字段類型來分配類型。空(void)將被視作字符串,實數將被視作數字。子記錄將不會具有對應的輸入變量盡管子記錄內部的字段具有對應的輸入變量。并集(union)將導致并集的每個分支(branch)的輸入變量。如果元素是矢量,則對應的輸入變量的技術名稱將假定該矢量的第一元素("in.vect")。用戶可以覆蓋這個。例如,在歸一化類型轉換中,用戶可以將技術名稱改變?yōu)?1in.vect[index]。或者,如果該矢量是固定長度,則用戶可以創(chuàng)建對應于該矢量的其他元素的附加的輸入變量。在輸出數據集合中可能不支持并集和矢量(對它們將不創(chuàng)建輸出變量)。在一些示例中,歸一化組件的變型可以將輸出矢量而不是多個輸出記錄輸出。在一些示例中,從元數據來計算商業(yè)名稱。用于為字段確定商業(yè)名稱的邏輯如下1.如果該字段(物理元素)具有display—name,則該字段的display—name被用作商業(yè)名稱。2.否則,如果該字段具有邏輯元素并且邏輯元素具有display—name,則該邏輯元素的display_name被用作商業(yè)名稱。3.否則,如果該字段具有邏輯元素,則該邏輯元素的名稱被用作商業(yè)名稱。4.否則,從技術名稱來計算商業(yè)名稱。如果存在沖突(重復的名稱),則將僅僅分配一個商業(yè)名稱。將不向其他字段分配任何商業(yè)名稱。在以下示例中,在規(guī)則集合和數據集合元數據之間不存在動態(tài)鏈接。如果用戶改變元數據數據(例如,重新命名邏輯元素),則該改變不會被軟件自動地拾取(Pickup)。在一些示例中,可以使用數據之間的雙向(two-way)關系來允許檢測到這樣的改變。如果用戶向規(guī)則集合添加第二數據集合,則軟件將試圖使用與按照以上列出的相同的物理到邏輯映射規(guī)則來填充每個商業(yè)名稱的字段。如果不能映射一變量,則該變量的技術項(term)將為添加的數據集合留下空白并且用戶將不得不手動第填寫字段名稱或者表達式。將在用戶界面的下拉中列出可用的字段。同時,根據數據集合元數據建輸入變量表,還可以根據數據集合元數據將常數添加到輸入變量表。軟件將為所有有效的和無效的值以及所有有效的和無效的范圍創(chuàng)建常數所述所有有效的和無效的值以及所有有效的和無效的范圍與每個邏輯或者物理元素相關聯的驗證規(guī)格(ValidationSpec)相關聯。用于為常數確定商業(yè)名稱的邏輯如下1.如果有效的值(有效的范圍,等等)具有display—name,則該display—name被用作商業(yè)名稱。2.否則,如果有效的值(有效的范圍,等等)具有描述,則該描述被用作商業(yè)名稱。3.否則,常數將被包括在變量表中,而沒有商業(yè)名稱。以數據集合開始來創(chuàng)建變量不是必須的。第二種方式是創(chuàng)建輸入變量的列表以標識基礎(underlying)系統中的邏輯實體(entity)。如果選擇邏輯實體,則軟件將利用邏輯實體中的每個邏輯元素的一個變量來創(chuàng)建變量的表。該變量的商業(yè)名稱將是該邏輯元素的display—name。如果邏輯元素具有驗證規(guī)范,則還將使用先前的文檔規(guī)則來創(chuàng)建常數。最后,可以手動添加輸入變量和輸出變量,或者通過將它們加入到變量表或者通過在編輯規(guī)則的同時創(chuàng)建它們。例如,當用戶將列加入到規(guī)則時,他選擇應該為該列使用哪一個輸入變量。但是他也可以選擇"新的..."并且在線(onthefly)創(chuàng)建輸入變量。然后軟件將提示用戶數據類型和可選的注釋。沒有技術名稱需要被填寫直到稍后。軟件需要按照順序的變量的列表以允許編輯規(guī)則。然而,不是必須完成商業(yè)名稱和技術名稱之間的映射直到稍后。當用戶準備針對外部測試文件來測試整個規(guī)則集合或者從規(guī)則集合實際創(chuàng)建變換時,才需要該映射。獨柳麵嶋A在一些示例中,可以共享規(guī)則集合。具體地,指定在另一規(guī)則集合內部包括被包括的規(guī)則集合使得該規(guī)則集合的邏輯成為所包括的規(guī)則集合生成的變換的一部分。盡管被包括的規(guī)則集合通常具體被指定為共享,但也可以單獨使用被包括的規(guī)則集合來創(chuàng)建變換。例如,用戶可以創(chuàng)建用于計算篩選類型的變換的布爾輸出的規(guī)則集合。但是同時,可以將該規(guī)則集合包括在另一變換中并且可以使用布爾輸出(在所包括的規(guī)則集合中可用的、共享的規(guī)則集合的輸出變量)來計算更復雜的輸出。被包括的規(guī)則集合類似于規(guī)則集合的其他類型。它們具有輸入變量和輸出變量。并且它們自身可以包括其他被包括的規(guī)則集合。但是對于被包括的規(guī)則集合中的輸入和輸出變量的處理與變換類型的規(guī)則集合的處理是不同的。在變換類型的規(guī)則集合中,將輸入和輸出變量映射到技術名稱使得可以生成變換。但是在被包括的規(guī)則集合中,不需要將輸入和輸出變量映射到技術名稱的需要(如果規(guī)則集合是共享的且用于生成變換,則為了生成變換的布置(d印loyment)而將輸入和輸出變量映射到技術名稱)。當用戶將被包括的規(guī)則集合包括到另一規(guī)則集合中時,所包括的規(guī)則集合需要具有變量映射表來映射被包括的規(guī)則集合的輸入和輸出。在所包括的規(guī)則集合的上下文中,只有在共享的規(guī)則集合中輸入變量和輸出變量才是可見的。在共享的規(guī)則集合中包括的任何規(guī)則集合的任何變量沒有暴露(e鄧ose)給所包括的規(guī)則集合。在所包括的規(guī)則集合的上下文中,需要將共享規(guī)則集合的輸入變量映射到所包括的規(guī)則集合的變量,或者使用這些變量的表達式。將在變量映射表中列出共享的規(guī)則集合的商業(yè)名稱,但是這些名稱將不可用于所包括的規(guī)則集合中的規(guī)則。替代地是,所包括的規(guī)則集合僅僅需要將共享的規(guī)則集合的每個輸入變量(通過商業(yè)名稱)匹配到所包括的規(guī)則集合中的表達式。在輸入變量、參數以及查找之前考慮要評估的被包括的規(guī)則集合,從而可以使用被包括規(guī)則集合的輸出作為查找的關鍵字(key)。在一些示例中,評估的順序是更靈活并且可以基于依賴性分析來自動地確定查找相對于被包括的規(guī)則集合的評估的順序。因為在計算任何輸出變量之前評估被包括的規(guī)則集合,因此在所包括的規(guī)則集合中沒有輸出變量可以被映射到被包括的規(guī)則集合的輸入。如果不能利用簡單的輸入變量來進行向被包括的規(guī)則集合輸入的映射,則可以替代地使用表達式。只要在被包括的規(guī)則集合中的輸入變量的可空,關于被包括的規(guī)則集合輸入變量的映射可以是NULL,。還可以將映射留作空白。如果將映射留作空白,則將在變換生成的時間報告錯誤,如果并且僅僅如果在計算所包括的規(guī)則集合的輸出中需要輸入變量。在一些示例中,假定一切都是可空的,這簡化了用戶界面。在所包括的規(guī)則集合的上下文中,還需要將共享的規(guī)則集合的輸出變量映射到所包括的規(guī)則集合中的商業(yè)名稱。該映射表是上述的映射表的反轉。當映射共享的規(guī)則集合的輸入變量時,該表將共享的規(guī)則集合的輸入變量的商業(yè)名稱映射到所包括的規(guī)則集合中的現有變量。但是當映射共享規(guī)則集合的輸出變量時,所包括的規(guī)則集合具有指定共享的規(guī)則集合的輸出的商業(yè)名稱的表-將所包括的規(guī)則集合中的名稱映射到共享的規(guī)則集合中的對應的名稱。需要輸出變量映射來解決潛在的命名沖突。默認的映射是在所包括的規(guī)則集合和共享的規(guī)則集合兩者中簡單地使用相同的商業(yè)名稱。但是共享的規(guī)則集合中的輸出變量的名稱可能與所包括的規(guī)則集合中已經定義的變量的商業(yè)名稱相沖突,因此可以改變所包括的規(guī)則集合中所映射的名稱。不是來自共享的規(guī)則集合中每個輸出都需要被映射。如果輸出被留下而未被映射,則不能在所包括的規(guī)則集合中使用該輸出,并且將忽略來自共享的規(guī)則集合的相應的邏輯。另一方面,應當映射來自共享的規(guī)則集合的所有的輸入,雖然如果規(guī)則集合的設計者確信將不需要它們,則可以將它們映射到不感興趣的變量。在一些示例中,系統自身可以確定那些輸入真正需要被映射。在一些示例中,通過商業(yè)名稱而不是通過引用(reference)來完成映射表。當在另一規(guī)則集合中包括共享的規(guī)則集合時,所包括的規(guī)則集合得到來自共享的規(guī)則集合的輸入和輸出的復制。將這些名稱與映射信息一起存儲在所包括的規(guī)則集合中。可以改變得到的共享規(guī)則集合,促使添加、刪除或者重命名一些輸入或輸出。在從系統載入規(guī)則集合時,可以由所包括的規(guī)則集合來處理所包括的規(guī)則集合與被包括規(guī)則集合之間的引用完整性問題。從所包括的規(guī)則集合中刪除從共享的規(guī)則集合中消失的輸入變量。將被添加到共享規(guī)則集合中的輸入變量添加到所包括的規(guī)則集合的映射表,但是保持為未映射。同樣,將被添加到共享規(guī)則集合中的輸出變量添加到所包括的規(guī)則集合的映射表,但是保持為未映射。如果從共享的規(guī)則集合刪除輸出變量,并且其不在包括規(guī)則集合中使用,則其只是從映射表刪除,但是如果在所包括的規(guī)則集合中使用,則用戶得到該變量不再可用的錯誤。所包括的規(guī)則集合實際上存留(persist)來自共享的規(guī)則集合的冗余信息。具體地,在輸入和輸出變量映射表中,所包括的規(guī)則集合僅僅需要維持共享規(guī)則集合中的商業(yè)名稱的列表連同所包括的規(guī)則集合中對應的命名。為了效率,所包括的規(guī)則集合還存留類型、默認值、描述和注釋、所有復制的共享規(guī)則集合的輸出。當編輯所包括的規(guī)則集合時,這些值是可讀的/只讀的,但是為了效率而被包括以用于生成報告和其他分析。共享的規(guī)則集合映射表在被包括得的規(guī)則集合中還具有一個附加的條目(entry),其是附加的注釋。這允許用戶向被映射的值添加另一注釋。共享的規(guī),則集合的常數在用于被包括規(guī)則集合的映射表中包括的是用于共享規(guī)則集合的輸入和輸出變量的常數。如同變量自身,由共享的規(guī)則集合使用的常數可能不得不被映射。對于輸入變量,共享的規(guī)則集合可以內部比較字段與在其輸入表中定義的常數。當在另一規(guī)則集合中包括共享的規(guī)則集合時,就用于其輸入變量的常數復制到所包括的規(guī)則集合。然后用戶可以覆蓋所包括的規(guī)則集合的上下文中的值。通常,當用戶定義共享規(guī)則集合輸入變量與所包括的規(guī)則集合中的變量之間的映射時,兩個變量之間的常數將匹配(matchup)。如果不是這種情形,則用戶將需要為由共享規(guī)則集合定義的任何常數值提供技術值。杳找文件規(guī)則集合可選地具有一個或多個查找文件。規(guī)則集合中的每個查找文件包括以下信息1.查找文件的商業(yè)名稱。2.可選的描述和注釋。3.組成關鍵字的字段的商業(yè)名稱的列表。當將查找文件添加到表達式時使用這些名稱,從而用戶見到如這樣的lookup(MyLookupFile,〈customernamekey〉,〈acco皿ttypekey〉)(查找(我的查找文件,〈顧客姓名關鍵字>,〈賬戶類型關鍵字>)。4.每個關鍵字的默認表達式的列表。5.查找文件的技術名稱。在一些示例中,可以在布置中被覆蓋。6.—個或多個查找數據集合。將每個查找文件松散地與系統內的數據集合捆綁(tie),就像將規(guī)則集合捆綁到輸入數據集合一樣。默認地,存在與規(guī)則集合中的每個查找文件相關聯的一個查找數據集合,但是在可替換的布置中可以存在多個查找數據集合以供使用。7.輸入變量和常數的表。這就像規(guī)則集合的輸入變量和常數的表,除了對于每個查找文件存在一個表。如同輸入變量,查找文件的輸入變量和常數的表可以具有多個技術名稱,其對應于所關聯的查找數據集合的每一個。就像輸入變量一樣處理查找文件,除了可能存在多于一個查找文件。在一頁上編輯每個查找文件,其具有在商業(yè)名稱和技術名稱之間的映射表并且可以與多個數據集合相關聯。它們還具有與每個字段相關聯的常數。就像從輸入數據集合中載入輸入變量的元數據,可以通過讀取查找數據集合的元數據來初始化查找文件的映射。如果用戶使用查找字段變量,并且在該查找中未發(fā)現關鍵字,則假定該字段的值為空。如果字段為空,除非規(guī)則情形特別觸發(fā),否則將規(guī)則情形評估為假(false)并且跳過該規(guī)則情形。在這種情形中,不生成錯誤。如果用戶使用查找文件變量(查找文件自身而不是字段),則假定函數lookup—match,使得查找文件變量評估為真(true)或假。兩種情形應用于輸入列或者輸出列的規(guī)則表達式。如果用戶使用查找字段變量作為輸出變量默認,則發(fā)現查找的故障轉譯為NULL。參數規(guī)則集合可以引用參數。在一些情形中,每個規(guī)則集合具有可選的參數表,該參數表如同變量表將參數的商業(yè)名稱映射到其技術名稱。參數表中的每個條目具有以下屬性1.商業(yè)名稱。這是當參數出現在規(guī)則本體(body)中時該參數的名稱。通常,也在參數可被使用在輸入變量被使用任何地方。2.技術名稱。這是開發(fā)環(huán)境中參數的名稱3.參數的類型(字符串、小數(decimal)、日期或日期時間)。在生成的變換中,可以按照需要將參數轉換為其他類型。4.可選的描述和注釋。參數如同變量,除了它們的值在整個輸入文件中是恒定的,并且當處理開始時,它們的值由外部指定。測試規(guī)則生成或更新變換的一部分是測試其對應的規(guī)則。還對規(guī)則進行驗證,即,檢查語法(syntax)和語義(semantic)的一致性。與驗證相反,由用戶來確定涉及規(guī)則的執(zhí)行和正確性的測試,例如通過用戶提供預期的輸出或者手動地將輸出與預期的值比較來進行。軟件在兩個層次上支持測試。如之前所述的,每個規(guī)則可以具有相關聯的測試數據集合,該測試數據集合是以值和預期結果的嵌入表的形式。這被稱為單元測試。當編輯規(guī)則時,可以對測試數據的每一行重新評估規(guī)則的輸出。加亮實際結果和預期結果之間的任何不匹配或者產生有效結果的故障以供解決。在一些示例中,使用標準的機制外部輸入測試文件對于服務器處理是可訪問的。使用外部文件的測試被稱為文件測試。測試文件具有與規(guī)則集合的輸入數據集合匹配的記錄格式。在一些示例中,可以提供可替換的記錄格式??蛇x地,用戶可以標識包含預期結果的數據集合。軟件運行對于測試數據集合的規(guī)則集合并且顯示產生什么輸出、以及為什么產生。如果包括了預期結果,則軟件將實際結果針對預期結果進行比較并且列出不同的任何記錄。在一些示例中,可以擴展界面以允許用戶增加性地再訓練(retrain)各個值。在單元測試和文件測試之間的一些不同包括1.對于查找文件在單元測試模式中,對于每個測試、將每個查找變量的值定義為測試的一部分。沒有指定關鍵字;當測試運行時,對于每個測試情形、每個查找變量假定相同的值。測試數據集合包含多個測試情形,并且每個測試情形可以為每個查找變量指定不同的值。在文件測試模式中,使用真正的查找文件。這意味著不同的關鍵字可以返回不同值,但這也意味著對于具體的關鍵字,在測試中不可以改變任何給定的查找變量所使用的值。2.對于被包括的規(guī)則集合在單元測試模式中,不執(zhí)行被包括的規(guī)則集合并且其甚至不必是完整的。替代地是,對來自每個被包括的規(guī)則集合的每個輸出在測試數據集合中指定值。在文件測試模式中,以在產生時被包括的規(guī)則集合將被執(zhí)行的方式來執(zhí)行被包括的規(guī)則集合。這暗示被包括的規(guī)則集合需要的任何查找文件或參數還不得不在測試時間指定。3.對于參數在單元測試模式中,對每個測試情形的每個參數可以設置不同的值。在文件測試模式中,對于整個測試每個測試的值是恒定的。4.對于當前日期當測試時,倘若規(guī)則引用當前日期或時間,則用戶指定應當被假定為當前日期和時間的值。在單元測試模式中,對于每個測試情形日期和時間的可以不同。在文件測試模式中,對于整個測試設置單一的日期和時間(在運行測試時,該值可以不同于機器的日期和時間的值)。5.對于記錄格式和映射不需要對單元測試指定映射;基于變量的商業(yè)名稱整個地進行測試。對于文件測試,將所有的變量映射到技術名稱并且指定輸入、輸出以及查找的記錄格式。在圖4A的輸出屏幕的示例中,示出了結果表410,其中在分開的行412i中顯示每個測試情形的輸出,列413a-d示出測試情形以及為每個測試情形計算的輸出。當選擇一行412a時(由虛線在圖4A中示出),在輸入表414中示出來自對應的測試情形的輸入值414a-414g。在輸出表416中示出該測試情形的輸出416a-416c。在表416中示出的輸出416i可以是來自測試情形的預期的輸出、計算的實際的輸出、或者這兩者??梢允褂酶鞣N界面提示(cue)來通知用戶關于測試的狀態(tài)。例如,由于上一次測試了規(guī)則集合,圖標419指示測試情形2和測試情形4的行412b和412d中的輸出已改變。如果沒有"默認"規(guī)則來捕捉與任何其他規(guī)則不匹配的輸入值的組合,則具有這種輸入的測試情形產生空輸出418。如果利用處理錯誤(諸如被零除)拒絕輸入記錄,則可以以相同的方式指示錯誤。如果由測試情形觸發(fā)多于一個規(guī)則情形,則可以指示所觸發(fā)的規(guī)則情形的數目(422)。通過與所顯示的輸出之一進行交互,例如,通過點擊它,可以將用戶帶到詳述如何確定該輸出的屏幕,如圖4B中所示。在圖4B的輸出屏幕示例中,表430顯示來自圖4A的單一測試情形412并且利用暗的邊界(border)指示了在任何規(guī)則情形434i中為真的每個輸入準則436i。例如,在第六規(guī)則情形434f中,加亮了包含第三輸入和第四輸入436c和436d的值的單元,這是因為在測試情形412中的這些輸入的值412f和412g與規(guī)則情形中的值匹配(艙位不是頭等艙或商務艙,行<=40)。實際上,可以使用各種圖形技術中的任一種(諸如加亮、顏色、字體,或邊界)來區(qū)分真單元和假單元。其中所有值與測試情形匹配的第一規(guī)則情形,規(guī)則情形434c由虛線邊界指示,其作為被圖4A中的線412b中指示的觸發(fā)規(guī)則和產生輸出的規(guī)則情形。不僅顯示所觸發(fā)的規(guī)則情形434c而且顯示其他規(guī)則情形允許用戶迅速地確定將需要應用怎樣的規(guī)則情形以及怎樣的改變來實現期望的輸出。在一些例子中,可以指示可能已經被觸發(fā)的多個規(guī)則情形(例如,如果更高的還未被觸發(fā))。列438可以示出由每個規(guī)則情形觸發(fā)的輸出(如果其將要被觸發(fā))。例如調試(debug)規(guī)則情形中這些特征可以輔助。在一些例子中,可以將一個規(guī)則集合的輸出輸入到另一規(guī)則集合。如圖4C可以圖形示出的在這種情形中怎樣由規(guī)則集合評估給定的測試情形。將來自圖4A和4B的測試情形的旅行者置于登機組2中的商業(yè)規(guī)則被示為盒子(box)442,該盒子442從測試情形表412接收輸入并且向輸出表416提供輸出。在該示例中,第二商業(yè)規(guī)則指示應當獎勵其每年的里程在增加的旅行者。該規(guī)則除了從測試情形接收輸入之外,還從第一規(guī)則中接收確定里程在增加的輸入,并且將該規(guī)則示為盒子444。因為該乘客在經濟艙(coach),因此該規(guī)則給乘客免費的飲料(如果該乘客在頭等艙,她將已經接收了免費飲料,并且可要求不同的回饋)。在一些示例中,點擊顯示的規(guī)則將帶領用戶到關于如何觸發(fā)該規(guī)則的顯示,如對于第一規(guī)則442在圖4B中所示。使用圖5中所示的處理來測試規(guī)則集合并且對其進行驗證。一個或多個規(guī)則集合602以及對應的測試數據604是該處理的輸入。軟件基于該規(guī)則集合生成變換(606)并且使用其來計算測試數據中的每個記錄的輸出值。在圖形計算中,使用有關組件的"log"端口(port)來測試輸出。對于測試所生成的變換可以稍微不同于將為執(zhí)行生成的變換。在測試時間,將附加的輸出添加到輸出記錄。該輸出是包含規(guī)則集合的標識的數組(array),所述規(guī)則集合實際生成了輸出以及在這些規(guī)則集合內的哪個規(guī)則情形對輸出負責。對每個測試情形可以生成多個輸出,即,來自不同規(guī)則集合的不同的輸出。如上所討論的,使用該數組來生成圖4A和4B所示的輸出表。在一些示例中,測試輸出比單一的數組更復雜。該輸出包括以下值給定記錄的每個輸入的值、每個參數的值、來自被包括的規(guī)則集合的每個輸出的值、以及從每個查找文件讀取的值(包括指示哪一個關鍵字用于該查找)。以第一測試情形開始(608),將測試情形的輸入輸入(610)到變換,并且將輸出與哪一個規(guī)則生成該輸出的指示一起寫入(612)到輸出數組。對每一行重復該處理(614,616)直到已評估了最后一行(614)。然后可以使用輸出數組來生成(617)如上所討論的結果表410和420。按照圖5中剩余步驟所示的,可以評估輸出數組來確定該規(guī)則集合是否有效??梢栽跍y試數據中包括輸出值,可以將根據一次測試生成的輸出值與之前的測試中輸出與根據測試結果與測試數據604的預期的輸出或者之前的測試結果617進行比較(620)。如果任何輸出都不匹配,則登記(log)該不匹配(622)。對每一行重復此處理(624,626)。在一些示例中,將評估步驟集成到輸出生成步驟,并且在輸出被生成時,將每個生成的輸出與對應的預期的輸出進行比較。登記在處理測試數據結果中的任何不匹配或其他錯誤。如上注意的,可以將一個規(guī)則集合的輸出輸入到另一規(guī)則集合,在這種情形中,將被包括的規(guī)則集合評估為所包括的規(guī)則集合的一部分。用戶可以限制由輸出字段測試的規(guī)則。在一些示例中,用戶可以選擇在測試期間禁止(disable)規(guī)則。在一些示例中,用戶無須等待要被處理的全部測試文件;只要將前幾個記錄工作以輸出(worktheirwaytotheoutput),就可得到測試結果。除了測試數據本身,可以將以下信息中的任何信息用于文件測試并且將其包括作為規(guī)則集合的一部分。1.輸入數據集合的物理位置。這被存儲在每個輸入數據集合的輸入變量表的規(guī)則集合中。對于結合類型的數據集合,需要所有的物理位置。無論何時需要物理位置,可以使用數據庫中的表名稱。2.輸入數據集合的記錄格式。默認地,這是從輸入數據集合的數據集合定義中取得的。在輸入變量中存在一位置來利用進入沙盒的所檢驗的不同記錄格式對此進行覆蓋。對于結合類型的變換,需要所有的記錄格式。3.要使用的哪一個布置。4.所有查找文件的物理位置。這被存儲在查找文件表中。5.每個查找文件的記錄格式。從與每個查找文件相關聯的數據集合定義取得,或者從覆蓋記錄格式文件取得。6.每個參數的值。這將在測試參數對話框(dialog)中設置。7.輸出文件的物理位置。僅僅當進行遞歸(regression)(比較)測試時需要該物理位置。其被存儲在輸出變量表中。8.輸出文件的記錄格式。再一次,僅僅當進行回歸測試時需要,并且根據輸出數據定義取得或者根據可選的覆蓋記錄格式文件取得。9.項目沙盒的位置。測試必須在主機上的沙盒之外進行。沙盒應當是包含規(guī)則集合的項目的經檢驗的復制。所有記錄格式文件將從沙盒取得。10.用于日期和時間的值,當規(guī)則引用"現在"、"今天",或者類似值時。存在三種可能的變換的類型一種是沒有登記的、一種是登記了所有的輸入、輸出、執(zhí)行的規(guī)則等等,以及一種是附加地包括了關于每個規(guī)則中的哪些單元是假或空的細節(jié)。測試可以使用后兩種類型的登記的中的任一種。如果變換沒有登記單元狀態(tài),則其簡單地不在用戶界面中示出。登記輸入、輸出等等放慢執(zhí)行但是僅僅是很小的量。登記單元狀態(tài)使執(zhí)行放慢很多,也許是由于數量級。當不測試時,用戶仍然可以輸出登記輸入、輸出等等的變換,并且使用產生中的變換。所增強的變換生成相同的輸出,還生成可以被分析、以確定執(zhí)行了哪些規(guī)則的一系列登記消息。如果用戶保存所生成的登記,則可以通過使用登記中的信息來計算圖4A、4B以及4C中的信息,即使未使用測試輸入,也可以在應答了產生中的規(guī)則集合的執(zhí)行的事實之后,使用商業(yè)規(guī)則環(huán)境。我們稱該執(zhí)行為重放,并且其可用于審核。重疊分析28在一些示例中,如上所提到的,當用戶對于規(guī)則集合運行測試數據集合時,可以跟蹤(track)所觸發(fā)的每個規(guī)則,S卩,如果更高優(yōu)先級的規(guī)則情形還未滿足其所有的輸入條件時,滿足其所有輸入條件并且將產生輸出的規(guī)則情形。在處理了測試數據之后,軟件可以后處理(post-process)測試輸出數據并且生成未被任何規(guī)則情形所觸發(fā)的每個規(guī)則或規(guī)則情形的列表??梢詫⒃撔畔⒏采w(overlaid)在編輯器的規(guī)則的顯示之上以迅速向用戶示出哪些規(guī)則被觸發(fā)或未被觸發(fā)。從該信息,用戶可以查看被其他規(guī)則遮蔽(obscure)的可能的規(guī)則,即,重疊的規(guī)則。還可以為每個規(guī)則情形示出計數(count)。在剛剛知道是否觸發(fā)規(guī)則情形時計數可以是有用的,特別對于調整(tune)值以實現期望的輸出的發(fā)布以及對于標識用于調節(jié)性能的最可能的規(guī)則情形是有用的。變換牛成通過將每個規(guī)則集合轉換為變換來在應用(圖形)中評估商業(yè)規(guī)則。然后將該變換附屬(attach)到圖形中的組件上。這樣的組件可以是包含以特定的方式被鏈接的用于執(zhí)行變換的一組標準組件的子圖形。然后可以與附加組件一起使用這樣的子圖形,例如使用關鍵字來結合和積累??梢砸远喾N方式從商業(yè)規(guī)則中生成變換代碼。在其中未將變換的內部指定為用戶編輯的示例中,生成處理可以導致難于理解(comprehend)的變換,但是該變換實施規(guī)則比逐一地應用規(guī)則更有效率。在一些示例中,如圖6所示,可以使用簡單的if-then-else(如果-則)鏈500來捕捉規(guī)則集合中的邏輯(作為參考而重復圖2A的規(guī)則集合表200)。在鏈500中示出,對每個規(guī)則情形210a存在一個"if...then...(如果......則......)"子句502i??梢允褂胊s-is這樣的鏈,或者依賴于合適的計算資源的可用性以及該系統的用戶的優(yōu)先權還可以優(yōu)化它們。在一些情形中,可以使用專用的計算資源或者其他技術來改進所生成的變換的性能??梢詫⒃鯓由勺儞Q的一些細節(jié)存儲在布置中。在多個圖形中可以使用的規(guī)則集合可以對于其不同的可能的用戶具有多個布置。規(guī)則集合還可以包含規(guī)則的超集(superset),在每個布置中只是需要它們中的一些,該布置標識當生成變換時使用哪些規(guī)則。在一些示例中,如果規(guī)則包括作為小數的列,并且存在與該列匹配的大量的不同的值,則我們可以通過在所指示的列上寫入"switch"語句分支來改進變換的性能。例如,考慮這個規(guī)則<table>tableseeoriginaldocumentpage29</column></row><table><table>tableseeoriginaldocumentpage30</column></row><table>可以以兩種方式生成該規(guī)則的變換。如同這樣if(NUM==landROW<10)thenBG=1elseif(匪==l)thenBG=2if(NUM==2andROW<15)thenBG=1elseif(NUM==2)thenBG=2elseif...或者如同這樣Switch(NUM)case1:if(ROW<10)thenBG=lelseBG=2case2:if(ROW<15)thenBG=lelseBG=2我們可以使用的另一技術是在存儲器中的查找文件。如果該規(guī)則具有眾多的常數值,具有少量(如果有)表達式,則替代ifthenelse邏輯,我們可以只是使用查找表。在這種情形中,查找表是該規(guī)則的一部分(沒有分開保存)。例如,考慮該規(guī)則<table>tableseeoriginaldocumentpage30</column></row><table><table>tableseeoriginaldocumentpage31</column></row><table>利用以下信息通過建立存儲器內的查找表來處理該規(guī)則<table>tableseeoriginaldocumentpage31</column></row><table>則該變換如同這樣intexpr=lookup(from,dest,class),exprintmiles=lookup(from,dest,class),milesif(expr==landis_using_miles)miles=0returnmiles;每個規(guī)則集合具有布置表。該布置表將名稱映射到關于該布置的配置的細節(jié)。布置表中每個條目包含以下信息1.布置名稱。在規(guī)則集合內必須是唯一的任意字符串。2.輸入數據集合名稱。如果在輸入變量表中存在所列出的多個輸入數據集合,則布置表中的每個條目指示哪些輸入數據集合被用于該布置。3.輸出數據集合名稱。如果在輸出變量表中存在所列出的多個輸出數據集合,則布置表中的每個條目指示哪些輸出數據集合被用于該布置。4.每個被包括的規(guī)則集合的布置名稱。對于每個被包括的規(guī)則集合,我們需要指示應當哪些布置用于所包括集合的每個對應布置。5.組件和要生成的變換文件的目標位置在一些示例中,總是存在被命名為默認的至少一個布置。這是在沒有指定其他布置時使用的布置(employment)。在一個示范性實施例中,存在變換生成的基礎。首先,軟件將僅僅輸出在規(guī)則集合中計算的輸出的規(guī)則。在變換中利用通配符來處理所有其他的輸出。通常,僅僅是被內部使用的輸出變量促使在所生成的變換中創(chuàng)建局部變量。這就是說,如果必要,所生成的變換可以包括更多的局部變量以避免重復的計算(例如,如果對于速度勝于空間的優(yōu)化)。圖7示出了怎樣在所生成的變換內評估規(guī)則集合。對于每個輸出(702),依序評估有關的規(guī)則。對于生成不相交(disjoint)的輸出的規(guī)則,變換生成器基于依賴性分析來決定規(guī)則的評估順序。不允許循環(huán)性并且將循環(huán)性報告為錯誤。如果兩個或多個規(guī)則生成相同的輸出,則它們的執(zhí)行順序與它們在規(guī)則集合中被列出的順序相同。在每個規(guī)則(704)內,從上到下依序評估評估規(guī)則情形。對于每個規(guī)則情形(706),可以以未限定的順序來評估(708)每個規(guī)則的觸發(fā)列(例如,軟件可以不保證在單一的規(guī)則情形內評估的順序)。只要發(fā)現其中所有的觸發(fā)都為真(非零/假以及非空)的一個規(guī)則情形,就使用對應的輸出值(716)。只要規(guī)則情形評估為假,則繼續(xù)該處理(718、712、720、722)。如果對于給定的輸出沒有規(guī)則觸發(fā)(720),則變換顯式地將輸出值設置為NULL或者合適的默認值(724)。依賴于變換類型,存在以下變換的不同參重新格式化-輸入被稱為"in",并且輸入變量可以具有如同"in.field"的技術名稱。輸出被稱為"out",并且輸出變量可以具有如同"out.field"的技術名稱。參結合-兩個輸入被稱為"in0"和"inl"。輸出被稱為"out",并且通配符規(guī)則假定in0被復制到"out"。當生成之間時可以設置所有的參數。規(guī)則集合可以具有輸入的多個集合,一個集合用于對結合的每一個輸入。規(guī)則集合還將指定結合類型,輸入是否應當是非欺騙的(de-d印ued),以及字段的商業(yè)名稱用于到結合的關鍵字(在一些示例中,這必須在每個輸入集合中呈現)。同樣,可以允許用戶指定被用作輸入篩選的每個輸入的表達式。參積累-該輸入被稱作"in"并且輸出被稱作"out"。在積累類型的的規(guī)則集合中,允許用戶使用合計函數(在其他變換類型中不支持)。如果用戶創(chuàng)建其技術名稱為"iruselect"或者"output—select"的輸出變量,則利用計算這些輸出的規(guī)則的邏輯將"in—select"和/或"output—select"函數添加到該變換。這兩個函數的輸入被稱作"in"(即便out—select通常命名其參數"out")。如同在結合類型中,當生成組件是可以設置所有的參數。參篩選-輸出兩個預定義常數之一。對于篩選類型的變換的唯一的輸出變量是類型組件"select",其被傳遞到輸出的是非零和非空。在一些示例中,在子圖形中將其實施為重新格式化的組件。還可以實施另外的變換類型參掃描-掃描函數取得被命名為"temp"和"in"的兩個輸入,并且產生被命名為"out"的輸出。規(guī)則集合中的規(guī)則可以使用來自temp和in兩者記錄的字段。這可以由輸入變量的技術名稱來確定。(例如,可以將技術名稱設置為字符串"temp.field"或者"in.field")。對于變換的臨時變量("temp")的記錄格式包含由規(guī)則集合生成的每個輸出。通過軟件自動地創(chuàng)建初始化函數來以臨時記錄格式初始化每個字段初始化為它們的默認值。還通過軟件來自動地創(chuàng)建結束(finalize)函數;該函數簡單地將臨時記錄復制到輸出并且添加通配符規(guī)則。如同積累情形,如果具有這些技術名稱的變量是在輸出變量表中,掃描32類型的變換還支持創(chuàng)建in_select函數和output_select函數。參歸一化-歸一化函數取得兩個輸入,"in"和"index",并且產生被命名為"out"的輸出。索引(index)輸入不是記錄,相反如果用戶想要在規(guī)則中使用索引,則他們創(chuàng)建被映射到索引的技術名稱的輸入變量(還可以在各種匿L表達式中使用索引變量)。軟件將具有其經過的、如上所述的規(guī)則的長度。歸一化類型的規(guī)則集合還支持被命名為"in—select"和"output—select"的輸出變量,如同積累類型的規(guī)則集合一樣。參分類-規(guī)則具有N個輸出并且變換決定應當使用哪一個輸出用于每個記錄。對于該組件,軟件創(chuàng)建out::classify(in)函數。輸出是指示應當使用哪一個(可能存在多于一個的)輸出端口的單一的整數值。輸出O意味著第O個端口,輸出l意味著第一端口,坐坐寸寸。用于分類類型的變換的唯一的輸出變量是"select"類型的組件,其將是輸出端口的索引(基于零)。這類似于篩選,除了對輸出使用N個值而不是兩個值。參函數-函數類型的規(guī)則集合可以被轉變?yōu)镈ML變換文件,但是不是作為組件變換。相反,當將函數類型的規(guī)則集合轉變?yōu)樽儞Q時,設計要被包括在其他變換中的所構建的變換文件。每個輸出變量被轉變?yōu)镈ML函數。這些函數的輸入依賴于規(guī)則的類型。對于函數類型的規(guī)則,輸入是在表中列出的順序中的規(guī)則的輸入。對于非函數類型的規(guī)則,每個輸出函數取得被命名為in的單一輸入,其是具有對應于輸入變量的所有字段的記錄。當使用規(guī)則集合來生成將依次(inturn)成為圖形一部分的變換時,圖形組件包括規(guī)則集合的名稱和布置。然后圖形開發(fā)者可以變焦規(guī)則集合而不是組件中所生成的變換。對規(guī)則集合的改變促使重新生成變換。其他特征和變型可以包括生成關于在特定規(guī)則集合中使用的規(guī)則的報告,更精細顆粒的許可模型,例如,該模型允許一些用戶編輯規(guī)則而不是添加輸入。對每個輸出可以實施內部規(guī)則依賴樹(d印endencytree)。規(guī)則或者規(guī)則集合可以具有合法日期或者過期的日期。單一的輸入記錄可以產生多個輸出,例如,如果滿足多個規(guī)則的準則,則它們都可以操作而不是僅僅是第一個操作??梢蕴峁κ噶枯敵龅闹С帧@?,用戶可以能夠在編輯中指定他們自己的有效性函數,來進一步保護或限制商業(yè)用戶。可以使用在計算機上執(zhí)行的軟件來實施上述的商業(yè)規(guī)則管理方法。例如,軟件形成在一個或多個編程的或可編程的計算機系統(其可以是各種體系,諸如分布式、客戶機/服務器,或網格式(grid))上執(zhí)行的一個或多個計算機程序中的過程,所述計算機系統的每一個包括至少一個處理器、至少一個數據存儲系統(包括易失性的和非易失性存儲器和/或存儲元件)、至少一個輸入設備或端口,以及至少一個輸出設備或端口。該軟件可以形成例如,提供與設計和計算圖形配置有關的其他服務的較大程序的一個或多個模塊。可以將圖形中的節(jié)點和元素實施為在計算機可讀的介質中存儲的數據結構或者適合于在數據倉庫(r印ository)中存儲的數據模型的其他經組織的數據??梢栽谟赏ㄓ没驅S玫目删幊痰挠嬎銠C或通過網絡向執(zhí)行軟件的計算機上傳遞的(以可傳播的信號編碼的)、在可讀的介質(諸如CD-ROM)上提供該軟件??梢栽趯S玫挠嬎銠C上執(zhí)行所有的功能,或者使用專用的硬件,諸如,協處理器??梢砸苑植嫉姆绞絹韺嵤┰撥浖?,其中由不同的計算機來執(zhí)行由軟件指定的不同部分的計算。每個這樣的計算機程序優(yōu)先地存儲在或者被下載到由通用的或專用的可編程的計算機可讀的存儲介質或者存儲設備(諸如固態(tài)存儲器或者固態(tài)介質,或者磁介質或者光學介質)上,用于在由計算機系統讀取該存儲介質或者存儲設備時配置和操作計算機來執(zhí)行在此描述的過程。還可以將本發(fā)明的系統考慮為將其實施為被配置有計算機程序的計算機可讀的存儲介質,其中這樣配置存儲介質使得計算機系統以特定的和預定的方式來操作以執(zhí)行在此描述的功能。已描述了本發(fā)明的許多實施例。然而,要理解可以做出各種修改而不脫離本發(fā)明的精神和范圍。例如,上述的一些步驟可以是順序獨立的,由此可以以不同于所述的順序來執(zhí)行。要理解前述的旨在闡述而不在限制本發(fā)明的范圍,本發(fā)明的范圍由所附的權利要求來限定。例如,許多上述的功能步驟可以以不同的順序來執(zhí)行,而實際不影響整個的處理。其他的實施例在之后的權利要求書的范圍之內。權利要求一種用于指定計算系統中功能組件的行為的方法,包括提供用戶界面,用于創(chuàng)建具有至少一個輸入列和至少一個輸出列的表,其中每個輸入列與輸入變量相關聯,每個輸出列與輸出變量相關聯,在表的至少一行中,在各自的輸入列中接收關于輸入值的一個或多個條件,至少一行中的條件標識輸入變量的潛在值的多于一個的集合,以及在各自的輸出列中接收一個或多個輸出值,由此定義規(guī)則規(guī)范的規(guī)則情形;基于該規(guī)則規(guī)范生成用于變換數據的函數,以及將該函數與功能組件相關聯。2.如權利要求1所述的方法,其中所述關于輸入值的一個或多個條件包括具有等于閾值的值、具有閾值之上的值、具有閾值之下的值、具有屬于值的集合的值、具有與樣式匹配的值、具有與另一輸入的值的關系、具有與另一規(guī)則規(guī)范的輸出的值的關系、或者具有與存儲器中值的關系中的一個或多個。3.如權利要求1所述的方法,其中所述一個或多個輸出值包括以下中的一個或多個或者其組合輸入的值、預定的值,或者根據一個或多個輸入的值計算的值。4.如權利要求1所述的方法還包括接收包括測試列的集合的測試表,每個測試列包含用于一個或多個輸入變量的值,以及對于每個測試列,標識在給定的測試列的輸入值的情況下將生成輸出的規(guī)則規(guī)范表的行,以及向用戶輸出對每個測試列所標識的行的標識。5.如權利要求4所述的方法還包括對于每個測試列,生成包括結果行的結果表,每個結果行指示對給定的測試列的輸入值將生成的輸出。6.如權利要求5所述的方法還包括在每個結果行中,指示將生成的輸出是否從對于規(guī)則規(guī)范的之前版本指示的輸出被改變。7.如權利要求5所述的方法還包括響應于與結果行的用戶交互,在該結果行中指示規(guī)則規(guī)范中的哪一行將生成輸出。8.如權利要求5所述的方法還包括生成包括對應于規(guī)則規(guī)范的每一行的評估行的評估表,在該表的每個評估行中,對每個潛在的輸入,指示該潛在輸入的第一測試行中的值是否滿足該潛在輸入的關系,并且在對應于規(guī)則規(guī)范的行的評估行中,指示將生成的輸出,其中所述規(guī)范的行對給定的第一測試列的輸入值將生成該輸出。9.如權利要求8所述的方法,其中評估行具有順序,該順序對應于規(guī)則規(guī)范的行的順序,并且其中指示輸出的評估行對應于規(guī)則規(guī)范的第一行,對于該規(guī)則規(guī)范的第一行,滿足了潛在輸入的每一個關系。10.如權利要求8所述的方法還包括指示與滿足了潛在輸入的每一個關系的規(guī)則規(guī)范的行對應的、在每一個評估行中將生成的輸出。11.如權利要求5所述的方法還包括生成包括對應于規(guī)則規(guī)范的每一行的評估行的評估表,以及在每個評估行中,指示多少測試列具有滿足規(guī)則規(guī)范的對應行中的關系的輸入。12.如權利要求5所述的方法,其中每個測試列還包含預期的輸出值,所述方法還包括每個結果行指示對于給定的對應測試列的輸入值將生成的輸出是否與該測試列中預期的輸出匹配。13.如權利要求I所述的方法還包括對每個測試列生成包括結果行的表,每個結果行指示對給定的測試列的輸入值、由規(guī)則規(guī)范之一中的行生成的每個輸出。14.如權利要求1所述的方法還包括對于對給定的第一測試列的輸入值將生成的輸出,生成將導致該輸出的生成的、規(guī)則規(guī)范的輸入和輸出之間的相互關系的圖形顯示。15.如權利要求4所述的方法,其中接收測試列的表包括從用戶接收輸入值的集合,將輸入值的集合與規(guī)則規(guī)范的潛在輸入值進行匹配,并且將輸入值的集合存儲到表的列中。16.如權利要求15所述的方法,其中對輸入值的集合的接收響應于顯示潛在輸入值的標識。17.如權利要求4所述的方法還包括響應于確定規(guī)則規(guī)范的集合中的每個規(guī)則規(guī)范將生成至少一個輸出,確定規(guī)則規(guī)范的該集合是有效的。18.如權利要求1所述的方法還包括接收對規(guī)則規(guī)范表中的值的改變,確認所改變的規(guī)則規(guī)范是有效的,基于所編輯的規(guī)則規(guī)范生成新的函數,去關聯第一函數與功能組件,并且關聯新的函數與功能組件。19.如權利要求1所述的方法還包括接收對規(guī)則規(guī)范表中的值的改變,確認所改變的規(guī)則規(guī)范是有效的,等待要被執(zhí)行的計算,當計算要求該功能組件時,基于所編輯的規(guī)則規(guī)范生成新的函數,并且關聯新的函數與功能組件。20.如權利要求1所述的方法,其中生成所述函數包括將規(guī)則規(guī)范中的多個規(guī)則情形中的每一個轉換為邏輯表達式以形成多個邏輯表達式,并且將多個邏輯表達式編譯為計算機可執(zhí)行的代碼。21.如權利要求20所述的方法,其中編譯多個邏輯表達式包括以下的一個或多個組合表達式、優(yōu)化各個表達式,以及優(yōu)化表達式的組。22.如權利要求20所述的方法,其中編譯多個邏輯表達式包括將所述表達式與適合于在計算中使用的組件相關聯。23.—種用于指定計算系統中功能組件的行為的系統,該系統包括提供用戶界面的部件,所述用戶界面創(chuàng)建具有至少一個輸入列和至少一個輸出列的表,其中每個輸入列與輸入變量相關聯,并且每個輸出列與輸出變量相關聯,用于接收的部件,其在表的至少一行中,接收i.在各自的輸入列中關于輸入值的一個或多個條件,至少一行中的條件標識輸入變量的潛在值的多于一個的集合,以及ii.在各自的輸出列中的一個或多個輸出值,iii.由此定義規(guī)則規(guī)范的規(guī)則情形;處理器,被配置為iv.基于該規(guī)則規(guī)范生成用于變換數據的函數,v.關聯該函數與功能組件。24.—種計算機程序,被存儲在計算機可讀介質上,指定計算系統中功能組件的行為,該計算機程序包括用于促使計算機進行以下操作的指令提供用戶界面,用于創(chuàng)建具有至少一個輸入列和至少一個輸出列的表,其中每個輸入列與輸入變量相關聯,并且每個輸出列與輸出變量相關聯,至少一行中的條件標識輸入變量的潛在值的多于一個的集合,在表的至少一行中,接收vi.在各自的輸入列中的關于輸入值的一個或多個條件,至少一行中的條件標識輸入變量的潛在值的多于一個的集合,vii.以及在各自的輸出列中接收一個或多個輸出值,viii.由此定義規(guī)則規(guī)范的規(guī)則情形;基于該規(guī)則規(guī)范生成用于變換數據的函數,關聯該函數與功能組件。25.—種用于測試計算的方法,包括接收包括規(guī)則情形的集合的規(guī)則規(guī)范,每個規(guī)則情形包括潛在輸入和對應輸出的關系,至少一個規(guī)則情形包括由潛在輸入的多于一個的集合所滿足的關系,接收測試情形的集合,每個測試情形包含一個或多個潛在輸入的值,并且對于每個測試情形,標識對給定的測試情形的輸入值將生成輸出的規(guī)則情形中的一個。26.如權利要求25所述的方法,還包括響應于對于每個測試情形標識將生成輸出的規(guī)則情形,存儲或輸出將生成的輸出的指示。27.如權利要求25所述的方法,其中接收測試情形的集合包括接收包括測試列的集合的表,每個測試列包含對于測試情形中對應的一個的一個或多個潛在輸入的值。28.如權利要求25所述的方法,還包括對于每個測試情形以及對于該測試情形所標識的規(guī)則情形,指示由所標識的規(guī)則情形將生成什么輸出。29.如權利要求25所述的方法,還包括對于每個測試情形以及對于該測試數據集合所標識的規(guī)則情形,將測試情形中的一個或多個輸入值標識為促使所標識的規(guī)則情形生成輸出。30.如權利要求29所述的方法,還包括對于每個測試情形,為每個規(guī)則情形指示測試情形中的值滿足了該規(guī)則情形的哪些關系以及未滿足哪些。31.如權利要求25所述的方法,其中所述規(guī)則情形具有順序,并且對于每個測試情形所標識的規(guī)則情形對應于規(guī)則規(guī)范的第一行,對于該規(guī)則規(guī)范的第一行,滿足了潛在輸入的每一個關系。32.如權利要求25所述的方法,還包括接收包括規(guī)則情形的第二集合的第二規(guī)則規(guī)范,一個或多個規(guī)則情形包括第一規(guī)則規(guī)范的一個或多個輸出與第二規(guī)則規(guī)范的對應輸入的關系。33.如權利要求32所述的方法,還包括對于每個測試情形,標識對給定的測試情形的輸入值和第一規(guī)則規(guī)范的所標識的規(guī)則情形的輸出、將生成輸出的第二規(guī)則規(guī)范的規(guī)則情形中的一個。34.如權利要求33所述的方法,還包括對于每個測試情形,生成將導致生成第二規(guī)則規(guī)范的輸出的、第一規(guī)則規(guī)范與第二規(guī)則規(guī)范的輸入和輸出之間的相互關系的圖形顯示。35.如權利要求25所述的方法,還包括對于每個測試情形,指示對于給定的測試情形的輸入值將生成輸出的每個規(guī)則情形。36.如權利要求25所述的方法,還包括對于每個規(guī)則情形,指示多少測試情形具有將促使該規(guī)則情形生成輸出的潛在輸入的值。37.如權利要求25所述的方法,其中每個測試情形包括輸出,所述方法還包括確定由標識的規(guī)則情形生成的輸出是否匹配測試情形中包括的輸出,并且存儲或傳達確定的結果。38.如權利要求25所述的方法,還包括生成包括每個測試情形的結果行的表,每個結果行指示對于給定的測試情形的輸入值將由規(guī)則規(guī)范生成的輸出。39.如權利要求38所述的方法,還包括在每個結果行中,指示將生成的輸出是否從對于規(guī)則規(guī)范的之前版本指示的輸出被改變。40.如權利要求38所述的方法,還包括響應于與結果行的用戶交互,在該結果行中指示將生成輸出的所標識的規(guī)則情形。41.如權利要求38所述的方法,還包括對于測試情形之一,生成包括對應于規(guī)則規(guī)范的每個規(guī)則情形的評估行的表,在表的每一評估行中,對于每個潛在的輸入,指示對于測試情形中該潛在輸入的值是否滿足對應于該評估行的規(guī)則情形中該潛在輸入的關系。42.如權利要求41所述的方法,還包括在對應于對測試情形的所標識的規(guī)則情形的表的評估行中,指示將由該規(guī)則情形生成的輸出。43.如權利要求42所述的方法,其中評估行具有對應于規(guī)則規(guī)范內規(guī)則情形的順序的順序,并且其中指示輸出的評估行對應于第一規(guī)則情形,對于該第一規(guī)則情形潛在輸入的每一個關系被滿足。44.如權利要求41所述的方法,還包括在每個評估行中指示將生成的輸出對應于規(guī)則情形,對于該規(guī)則情形由測試情形滿足潛在輸入的每一個關系。45.如權利要求25所述的方法,其中接收包括規(guī)則情形的第二集合的第二規(guī)則規(guī)范,對于每個測試情形,顯示結果行,該結果行指示對于給定的測試情形的輸入值由第一或第二規(guī)則規(guī)范生成的每個輸出,以及響應于與結果行中所指示的輸出的用戶交互,指示來自第二規(guī)則規(guī)范的規(guī)則情形的輸出,指示所指示的規(guī)則情形包括指示來自第一規(guī)則規(guī)范的規(guī)則情形和滿足所指示的規(guī)則情形的輸入關系的規(guī)則情形的輸出。46.如權利要求25所述的方法,其中接收測試情形的集合包括從用戶接收輸入值的集合,將輸入值的集合與規(guī)則規(guī)范的潛在輸入值進行匹配,以及將輸入值的集合存儲到表的列中。47.如權利要求46所述的方法,其中對輸入值的集合的接收響應于顯示潛在的輸入值的標識。48.—種用于測試計算的系統,該系統包括接收包括規(guī)則情形的集合的規(guī)則規(guī)范的部件,每個規(guī)則情形包括潛在輸入和對應輸出的關系,至少一個規(guī)則情形包括由潛在輸入的多于一個的集合所滿足的關系,接收測試情形的集合的部件,每個測試情形包含一個或多個潛在輸入的值,以及處理器,被配置為對每個測試情形,標識對給定的測試情形的輸入值將生成輸出的規(guī)則情形中的一個。49.一種用于測試計算的計算機程序,其被存儲在計算機可讀的介質上,該計算機程序包括用于促使計算機進行以下操作的指令接收包括規(guī)則情形的集合的規(guī)則規(guī)范,每個規(guī)則情形包括潛在輸入和對應輸出的關系,至少一個規(guī)則情形包括由潛在輸入的多于一個的集合所滿足的關系,接收測試情形的集合,每個測試情形包含一個或多個潛在輸入的值,以及對于每個測試情形,標識對給定的測試情形的輸入值將生成輸出的規(guī)則情形中的一個。50.—種用于測試基于圖形的計算中的組件的方法,該基于圖形的計算中的組件具有由表示數據流的鏈接元素而連接的數據處理組件,所述組件包括用于基于規(guī)則規(guī)范變換數據的變換,所述規(guī)則規(guī)范包括規(guī)則情形的集合,每個規(guī)則情形包括潛在輸入和對應輸出的關系,至少一個規(guī)則情形包括由潛在輸入的多于一個的集合所滿足的關系,所述方法包括在執(zhí)行環(huán)境中在輸入數據的集合上執(zhí)行基于圖形的計算;登記輸入數據以及由對輸入數據的集合中的每一項數據的計算而產生的輸出;以及在與執(zhí)行環(huán)境分開的測試環(huán)境中,對于所登記的輸入數據的集合中的每一項數據,標識對于給定的該項中的輸入值將生成所登記的輸出的規(guī)則情形之一。51.—種用于測試基于圖形的計算中的組件的系統,該基于圖形的計算中的組件具有由表示數據流的鏈接元素而連接的數據處理組件,所述組件包括基于規(guī)則規(guī)范用于變換數據的變換,所述規(guī)則規(guī)范包括規(guī)則情形的集合,每個規(guī)則情形包括潛在輸入和對應輸出的關系,至少一個規(guī)則情形包括由潛在輸入的多于一個的集合所滿足的關系,所述系統包括執(zhí)行環(huán)境,其被配置為ix.在輸入數據的集合上執(zhí)行基于圖形的計算;以及x.登記輸入數據以及由對輸入數據的集合中的每一項數據的計算而產生的輸出;以及與執(zhí)行環(huán)境分開的測試環(huán)境,并且其被配置為對于所登記的輸入數據的集合中的每一項數據,標識對于給定的該項中的輸入值將生成所登記的輸出的規(guī)則情形之一。52.—種計算機程序,其被存儲在計算機可讀的介質上,用于測試基于圖形的計算中的組件,該基于圖形的計算中的組件具有由表示數據流的鏈接元素而連接的數據處理組件,所述組件包括用于基于規(guī)則規(guī)范變換數據的變換,所述規(guī)則規(guī)范包括規(guī)則情形的集合,每個規(guī)則情形包括潛在輸入和對應輸出的關系,至少一個規(guī)則情形包括由潛在輸入的多于一個的集合所滿足的關系,該計算機程序包括用于促使計算機進行以下操作的指令在執(zhí)行環(huán)境,xi.在輸入數據的集合上執(zhí)行基于圖形的計算;以及Xii.登記輸入數據以及由對輸入數據的集合中的每一項數據的計算而產生的輸出;以及在與執(zhí)行環(huán)境分開的測試環(huán)境中,對于所登記的輸入數據的集合中的每一項數據,標識對于給定的該項中的輸入值將生成所登記的輸出的規(guī)則情形之一。53.—種用于指定計算系統中功能組件的行為的方法,包括接收包含用于定義規(guī)則情形的邏輯表達式的集合的規(guī)則規(guī)范,由兩個或多個邏輯表達式來定義該規(guī)則情形中的至少一個,生成用于基于所述規(guī)則規(guī)范變換數據的函數,以及關聯所述函數與功能組件。54.根據權利要求1的方法,還包括確定一個或多個輸出值是否對應于錯誤條件,以及在功能組件運行之前,生成向用戶報告的錯誤。55.根據權利要求54的方法,其中所述錯誤條件對應于用于不可為空的相應的輸出列的空輸出值。全文摘要通過以下步驟來更新基于圖形的計算(130)中的組件(136、138、140),所述基于圖形的計算具有由表示數據流的鏈接元素而連接的數據處理組件,所述步驟包括接收規(guī)則規(guī)范(152),生成用于基于規(guī)則規(guī)范而變換數據的變換(156),將變換與基于圖形的計算中的組件相關聯,并且響應于確定已接收到新的規(guī)則規(guī)范或者已編輯現有的規(guī)則規(guī)范、根據新的或者編輯的規(guī)則規(guī)范來更新與基于圖形的計算中的組件相關聯的變換。文檔編號G06F9/44GK101702942SQ200880011618公開日2010年5月5日申請日期2008年3月27日優(yōu)先權日2007年4月10日發(fā)明者喬爾·古爾德,約瑟夫·S·沃利三世,蒂莫西·珀金斯申請人:起元技術有限責任公司