專利名稱::用于終端用戶規(guī)則邏輯的定義和執(zhí)行的規(guī)則框架的制作方法
技術領域:
:本發(fā)明涉及基于規(guī)則的軟件架構,它方便了數(shù)據(jù)的終端用戶自動化。
背景技術:
:計算機和計算已經(jīng)將世界上的用戶分為兩類有知識的"高手",他們知道怎樣以復雜的方式使用計算機,以構成程序并賦予有價值的和豐富的行為;以及新手,他們是那樣無助,以致于不能輕易或便宜地訪問知識或信息或教育,以使計算機很好的服務于他們的需要。然而,當技術己經(jīng)打破了這些訪問障礙時,計算方面的主要突破已經(jīng)出現(xiàn)了。在大型機的世界里,除了可以擔負得起的最大的公司以外,計算機對所有人來說都太昂貴了。小型計算機的出現(xiàn),以及后來的個人計算機(PC),打破了費用壁壘,并使計算機對小型商業(yè)和個人來說是可用的。20世紀80年代,程序員努力構建圖形用戶界面(GUI)應用程序,沒有豐富、一致的GUI,他們不能為PC用戶構建有價值的應用程序。VisualBasic的革命及對于控件和基于事件的GUI結構的使用,使得應用程序開發(fā)者的整個大軍能容易地構建豐富的應用程序。這也建立了具有能使用這些應用程序的更多終端用戶的良好的循環(huán)。20世紀90年代,終端用戶努力克服信息訪問的缺乏。因特網(wǎng)和網(wǎng)絡的增長改變了這個空白,使得任何具有瀏覽器的人都可以訪問幾乎所有有價值的信息。然而,仍然存在需要克服的重大障礙。計算不是個人的。關于PC,只有極少是真正"個人的"。本地盤上的數(shù)據(jù)是個人的。但是機器的行為(代表用戶所做的)對數(shù)百萬用戶幾乎是相同的。盡管擁有令人稱奇的功能強大的通用計算機,一般用戶還是把它當作靜態(tài)的工具,作為通信端點使用,作為搜索入口點使用,作為執(zhí)行一些預錄制的大量銷售的應用程序來使用,但卻不能是這個單詞的真正意義上的任何"個人計算"。當前的應用程序中可用的個性化能力僅僅是其可能的和想要的皮毛而已。計算是手動的??紤]大多數(shù)典型的計算機終端用戶的日常例程。PC收集信息、對通信做出反應、作決定以及根據(jù)決定行動一啟動通信或對其作出反應、組織信息、買賣物品、旅游等等。計算機已經(jīng)改善了人們之間的通信,而且改善了對信息的訪問。然而,PC對減輕終端用戶適時作決定并根據(jù)決定行動的責任方面,卻做的很少。在商業(yè)世界中,存在用于主要的有組織的決定的決定支持系統(tǒng)。在許多日常的、但重要的和個人的決定中,軟件仍不能幫助一般的PC用戶。計算與上下文無關。計算機軟件一般提供可選設定,它們是相當靜態(tài)并與用戶的實際上下文無關(例如,"為何我在工作時和在家時都要有關于通信伙伴的相同設定")。因此,由于日益陷入手動信息處理的苛刻環(huán)境,即每天花費大量的時間用于篩選、分類、搜索和對電子郵件、文檔和其他個人數(shù)據(jù)作出反應,用戶仍然處于軟件的"前工業(yè)時代"。終端用戶軟件應該是個性化的,知道終端用戶的需要和偏好,并以由那些需要和用戶上下文的所引導的方式來行動。而且,計算機系統(tǒng)和軟件應該給每個終端用戶提供個人執(zhí)行助理,它每天24小時工作來收集并篩選終端用戶感興趣的信息,并對這些信息作出反應。最有價值的一類終端用戶的計算活動涉及信息流和搜索,如確保終端用戶看到相關的信息(例如,"告訴我是否因為天氣不好,孝校關閉了)、增強人與人之間的具有個性化行為的通信(例如,"如果當我妻子呼叫我時我不在辦公室,讓她知道我何時回來")、確保重要的信息不會丟失(例如,"如果有緊急的電子郵件,確保轉寄到我的移動設備上")、以及信息管理自動化(例如,"當新的照片到達時,將它們放到正確的文件夾并基于其時間戳、GPS位置和任何相關的日歷條目來共享它們")。完成這個目的的方法是通過允許終端用戶"編程"其計算機的行為。然而,傳統(tǒng)的編程語言很明顯不是答案,因為,終端用戶并非(且不可能成為)訓練有素的開發(fā)者。因此,對于改善的編程平臺有一種從未滿足的需求,該平臺方便了這種手動處理的自動化,因此允許用戶使計算機和軟件個性化,以代表他或她來自動行動。
發(fā)明內容下面為了提供本發(fā)明的一些方面的基本理解,給出了本發(fā)明的簡要概述。這個概述不是本發(fā)明的廣延綜述。它并不意圖標識出本發(fā)明的關鍵/重要元素或者描繪本發(fā)明的范圍。其唯一的目的是以簡化的形式顯示給出本發(fā)明的一些概念,作為此后給出的詳細描述的序言。本發(fā)明的焦點在于數(shù)據(jù)和信息、存儲中的和通信中的中心值,并且在于一般是無知的非開發(fā)者的終端用戶(消費者、有知識的工作者和商業(yè)用戶),雖然如此,他們希望使他們的PC和應用程序以定制的和自動化的方式工作。在此揭示并要求保護的本發(fā)明,在其中的一方面中,包含基于規(guī)則的軟件架構,它為自動化操作數(shù)據(jù)的終端用戶定義的規(guī)則邏輯的定義和執(zhí)行提供了基礎結構。規(guī)則創(chuàng)建框架包括項和關系,它們在創(chuàng)建規(guī)則時以及構建使用規(guī)則的應用程序時被使用。這些項和關系由規(guī)則框架的規(guī)則引擎用于確定響應于特定的事件,計算機應該做什么。為了定制基于終端用戶規(guī)則的應用程序行為,程序員"在規(guī)則上允許"(ruleenable)軟件的功能,終端用戶為這些功能創(chuàng)建規(guī)則。本發(fā)明允許終端用戶定義邏輯,該邏輯至少以以下四種方法來"自動化處理"終端用戶數(shù)據(jù)數(shù)據(jù)導出、觸發(fā)激活、數(shù)據(jù)約束和判定點。數(shù)據(jù)導出規(guī)則依附于輸入項范圍。觸發(fā)激活規(guī)則依附于集合內改變的項。數(shù)據(jù)約束規(guī)則依附于集合內改變的項。數(shù)據(jù)驅動的判定規(guī)則顯然由應用程序應用到項。統(tǒng)一的規(guī)則存儲平臺將所有有知識的工作者應用程序集合在公共存儲內的系統(tǒng)化數(shù)據(jù)的主題周圍。規(guī)則是用于復雜邏輯的單個說明性的IF-THEN編程構造。每個終端用戶邏輯組件被定義為規(guī)則。所有其他的構造是簡單的二進制代數(shù)運算符。規(guī)則在特定項類型的輸入變量上定義了說明性的無副作用的功能。規(guī)則創(chuàng)建框架使用項類型,以支持規(guī)則創(chuàng)建判定點項、規(guī)則項、以及規(guī)則集附件項。表示為RuleSetAttachment,它表示判定點(表示為DecisionPoint)和規(guī)則(表示為Rule)的項之間的連接。可以把這些連接建模成物理的、存儲的"鏈接"或計算出的"公值聯(lián)合"。在任何一種情況下,其功能是相同的,即從規(guī)則到為其創(chuàng)建該規(guī)則的判定點的連接。應用程序的每個規(guī)則允許的特征由判定點項來定義。終端用戶為特定的判定點創(chuàng)建規(guī)則,并且應用程序使用判定點對象向規(guī)則引擎提交數(shù)據(jù)。每個條件/結果語句(statement)是一個規(guī)則項。規(guī)則是用于執(zhí)行的邏輯單元。規(guī)則可以是多重語句的。用戶創(chuàng)建規(guī)則。用戶可以控制規(guī)則組織,但應用程序或顯示給用戶的視覺瀏覽metaphor(比喻)也可以控制規(guī)則組織。應用程序也可以創(chuàng)建規(guī)則。規(guī)則通過規(guī)則集附件(RSA)項與判定點相關聯(lián)。規(guī)則引擎使用該附件來確定為給定的輸入應該執(zhí)行哪個規(guī)則。規(guī)則平臺評價使用數(shù)據(jù)庫詢問處理器的終端用戶規(guī)則。這會導致有效的評價,同時語義仍與平臺的剩余部分保持一致。既然終端用戶一般不是訓練有素的開發(fā)者,那么期望他們用傳統(tǒng)編程語言來編程就是不合情理的。相反,提供了系統(tǒng)化的邏輯構件塊,因此終端用戶可以通過以簡單而豐富的組合將它們結合在一起來進行編程。來自現(xiàn)有的應用程序的根據(jù)經(jīng)驗的證據(jù)表明,終端用戶可以使用IF-THEN規(guī)則輕松地定義判定邏輯。因此,本發(fā)明的基于規(guī)則的平臺能夠使用簡單的IF-THEN規(guī)則,在統(tǒng)一的存儲平臺內使終端用戶自動化操作數(shù)據(jù)成為可能。這進一步支持使用詢問包括布爾(Boolean)條件的詢問構造器的大量應用程序。為了實現(xiàn)前述內容以及相關的目的,在此結合以下敘述和附圖描述了本發(fā)明某些說明性的方面。然而,這些方面僅僅指示出本發(fā)明的原則可在其中應用的各種方式中的的一些,本發(fā)明意欲包括所有這樣的方面及其等價物。當結合附圖考慮時,從以下對本發(fā)明的詳細描述中,本發(fā)明的其他優(yōu)點和新穎的特征會變得更為明顯。圖1是示出依照本發(fā)明的規(guī)則架構,方便終端用戶數(shù)據(jù)自動化操作和管理的系統(tǒng)。圖2是示出依照本發(fā)明的規(guī)則架構的一種系統(tǒng)化的方法。圖3示出依照本發(fā)明的規(guī)則架構的一種數(shù)據(jù)導出的方法。圖4是示出依照本發(fā)明的規(guī)則架構的一種副作用邏輯的觸發(fā)激活的方法。圖5示出依照本發(fā)明的規(guī)則架構的一種數(shù)據(jù)約束的方法。圖6示出依照本發(fā)明的規(guī)則架構,在判定點提供應用程序客戶化的方法。圖7示出本發(fā)明的規(guī)則架構的項類型及其關系的示意圖。圖8示出依照本發(fā)明的規(guī)則架構的條件和結果處理的示意圖。圖9A示出依照本發(fā)明的規(guī)則的一般格式。圖9B示出依照本發(fā)明,用于活動規(guī)則(activerule)的一般規(guī)則格式。圖9C示出依照本發(fā)明,用于應用程序客戶化規(guī)則的一般規(guī)則格式。圖9D示出依照本發(fā)明,用于數(shù)據(jù)導出規(guī)則的一般規(guī)則格式。圖9E示出依照本發(fā)明,用于數(shù)據(jù)約束規(guī)則的一般規(guī)則格式。圖10示出依照本發(fā)明的規(guī)則架構,通過將規(guī)則依附于輸入項的集合來應用規(guī)則的一種方法。圖11示出依照本發(fā)明的規(guī)則架構,通過將規(guī)則依附于判定點來應用規(guī)則的另一種方法。圖12示出依照本發(fā)明的規(guī)則架構,通過直接調用規(guī)則來應用規(guī)則的另一種方法。圖13示出依照本發(fā)明的規(guī)則架構來應用規(guī)則的另一種方法。圖14示出依照本發(fā)明,用于規(guī)則沖突解決的一種方法。圖15示出依照本發(fā)明的規(guī)則架構的項類型以及相關關系。圖16A顯示本發(fā)明的EvaluationResultElement嵌套類型。圖16B顯示本發(fā)明的InputScope嵌套類型及其派生。圖16C顯示本發(fā)明的LogicConstraint嵌套類型。LogicConstraint被RuleLogic(和其子類)禾BDecisionPoints所使用。圖16D顯示本發(fā)明的LogicStatement嵌套類型。LogicStatements對條件樹和一組結果(動作或布爾邏輯(Boolean))編碼。圖16E顯示本發(fā)明的LogicResult嵌套類型及其派生。圖16F顯示本發(fā)明的Condition嵌套類型及其派生。圖16G顯示本發(fā)明的ArgumentValue嵌套類型及其派生。圖16H示出本發(fā)明的Functionlnfo嵌套類型及其派生。圖17示出依照本發(fā)明的規(guī)則引擎。圖18示出代表本發(fā)明的規(guī)則架構中的豐富程度的尺度(dimensions)的框圖。圖19示出表示本發(fā)明的規(guī)則架構的輸入的示意圖。圖20示出可以執(zhí)行揭示的架構的計算機的框圖。圖21示出依照本發(fā)明的一個示例性的計算環(huán)境的示意性的框圖。具體實施例方式現(xiàn)在參考附圖描述本發(fā)明,其中始終使用相同的符號指代相同元素。下面的描述中,為了說明的目的,提出了很多特定的細節(jié)以便提供對本發(fā)明的全面理解。然而,明顯的是,沒有這些特定的細節(jié),本發(fā)明也是可以實施的。在其它實例中,眾所周知的結構和裝置以框圖形式示出,以便方便描述本發(fā)明。作為在本發(fā)明中所使用的,術語"組件"和"系統(tǒng)"意指計算機相關的實體,它們是硬件、硬件和軟件的結合、軟件或者執(zhí)行中的軟件。例如,組件可以是但不限于在處理器上運行的進程、處理器、對象、可執(zhí)行的、執(zhí)行線程、程序、和/或計算機。為了說明,服務器上運行的應用程序和服務器都可以是組件。一個或多個組件可以駐留在進程和/或執(zhí)行線程中,且組件可以位于計算機中和/或分布于兩臺或多臺計算機之間。規(guī)則平臺文件系統(tǒng)是終端用戶數(shù)據(jù)的倉庫。本發(fā)明允許終端用戶定義以至少以下四種方式"自動化操作"終端用戶的數(shù)據(jù)的邏輯數(shù)據(jù)導出、觸發(fā)激活、數(shù)據(jù)約束和判定點。統(tǒng)一的規(guī)則存儲平臺將所有知識工作者應用程序集合在公共存儲內的系統(tǒng)化數(shù)據(jù)的主題周圍。它是關于發(fā)現(xiàn)、組織數(shù)據(jù)和對數(shù)據(jù)起反應。豐富的詢問和豐富的規(guī)則是事務的兩方面。當發(fā)現(xiàn)數(shù)據(jù)時,豐富的詢問和視圖帶給終端用戶增加的控制。豐富的規(guī)則提供了增加的數(shù)據(jù)組織的自動化操作,還有可以在系統(tǒng)中構建主動/反應行為的能力。這些是當今的PC用戶正幵始對個體應用程序的期望的能力。一個特征是跨所有數(shù)據(jù)和應用程序使這些能力標準化。本發(fā)明的基于規(guī)則的架構方便了系統(tǒng)化、數(shù)據(jù)共享和信息管理。數(shù)據(jù)的普遍存在的公共系統(tǒng)化是終端用戶的"程序"開發(fā)的關鍵。共享數(shù)據(jù)對終端用戶程序來說是普通和自然的。當決定對到達的電子郵件消息進行優(yōu)先次序排序時,為了作決定,很自然地要將當天的日歷條目、參與的人和組、用戶的當前位置(由不同的應用程序創(chuàng)建的所有系統(tǒng)化的數(shù)據(jù))集合在一起。揭示的架構能夠跨應用程序共享數(shù)據(jù)。本發(fā)明的一個重要方面是能夠通過組織(文件夾/列表)和關系來管理信息過載的能力。在大多數(shù)信息過載的情況下,這個問題不僅是具有充足的文件夾和分類,而且是要有手動組織/分類這些數(shù)據(jù)的時間。如果系統(tǒng)使對大量的組織構造自動化,那么它們對終端用戶才變得真正有價值。規(guī)則創(chuàng)建框架由項和關系組成,它們在創(chuàng)建規(guī)則時以及構建使用規(guī)則的應用程序時被使用。規(guī)則平臺的規(guī)則引擎使用這些項和關系來確定響應于特定的事件,計算機應做些什么。為了基于終端用戶規(guī)則來定制應用程序的行為,發(fā)生兩件事情。程序員"在規(guī)則上允許"軟件的功能,而終端用戶為那些功能創(chuàng)建規(guī)則。例如,規(guī)則允許的操作系統(tǒng)特征被包括在內,以便用戶可以在如文件夾和文檔的項上定義規(guī)則。這支持終端用戶編寫表示他們希望的來自其計算機的行為的規(guī)則"程序"。而且,這個行為應該隨他們的移動而移動。因為揭示的規(guī)則架構將規(guī)則建模成數(shù)據(jù),所以該數(shù)據(jù)可以被同步和移動。規(guī)則是用于復雜邏輯的單個說明性的編程構造。每個終端用戶邏輯組件被定義為規(guī)則。所有其他的構造是簡單的二進制代數(shù)運算符。規(guī)則在特定的項類型的輸入變量上定義說明性的無副作用的功能。規(guī)則有兩部分,即特征標(它定義輸入項類型和輸出類型)和定義。一般來說,輸出類型是簡單的標量類型、項類型或集合類型(反映一組結果的期望值)。規(guī)則在邏輯上表示為在單個輸入上的動作,盡管在評價期間,它經(jīng)常被用于一組實際輸入。作為連續(xù)的例子,考慮針對Message項類型定義的規(guī)則。Message類型是關系類型Recipient的源,其目標是Contact項類型。它捕捉郵件消息的"To"字段內的信息。為了說明這個例子,使用類似英語的偽程序設計語言來描述規(guī)則。這不應被誤解為表示實際的規(guī)則語言,相反,規(guī)則是通過使用API構造的代碼以及使用具有有意義的用戶友好描述的友好的UI操作的終端用戶來表示的。規(guī)則定義是零個或更多個IF-THEN語句的有序列表。規(guī)則內的每個IF-THEN語句具有條件表達式(IF部分)和結果表達式(THEN部分)。條件表達式是布爾表達式樹,其葉子是終端用戶能夠推論的基本條件運算符。結果是一列常量表達式或終端用戶可以推論的簡單表達式。具有多重IF-THEN語句的規(guī)則的語義根據(jù)為某一輸入項的輸出而定義。如果沒有其條件在輸入項上評價為真的語句,則結果為NULL。如果恰好有一個其條件評價為真的語句,則由該語句的結果來定義輸出。如果存在多個其條件評價為真的語句,則結果依賴于對所有這些語句的結果應用沖突解決策略。普通的沖突解決策略是基于規(guī)則中的語句的順序,即最高優(yōu)先級的取得勝利。規(guī)則創(chuàng)建框架使用項類型來支持規(guī)則創(chuàng)建判定點項、規(guī)則項和規(guī)則集附件項(也表示為RuleSetAttachment或RSA)。應用程序的每個規(guī)則允許的特征由判定點項來定義。終端用戶為特定的判定點創(chuàng)建規(guī)則,且應用程序使用判定點對象向規(guī)則引擎提交數(shù)據(jù)。每個條件/結果語句是規(guī)則語句項。規(guī)則是用于執(zhí)行的邏輯單元。應用程序也能創(chuàng)建規(guī)則。應用程序能提供默認規(guī)則作為起始點。這個默認規(guī)則將被用作判定點,直到終端用戶選擇修改或提供替代規(guī)則為止。規(guī)則通過RSA項與判定點相關聯(lián)。由規(guī)則引擎使用該附件來確定為給定的輸入應該執(zhí)行哪些規(guī)則??赡芏x加入/結合其他數(shù)據(jù)集合的條件。而且,可能指定包括可用于其他規(guī)則的虛擬集合的組件化的(componentized)邏輯。對于異步行為規(guī)則,其結果描述了關于文件系統(tǒng)類型、任何CLR類型的方法或任何靜態(tài)方法的動作。對同步行為規(guī)則,其結果是應用程序特定的類型的一組值,例如,文件名、字符串、要評價的對象、顏色枚舉列中的一個顏色。規(guī)則平臺包括標準的豐富的規(guī)則用戶界面(UI)。所遵循的原則如下存在公共UI用于規(guī)則和視圖/詢問;整個創(chuàng)作過程可發(fā)生在單個屏幕內;支持模板的統(tǒng)一抽象;值選擇能支持豐富的類型特定的控件(例如,日期挑揀器);以及UI可以擴展,即,當增加新的項類型時,UI可以自動為它們創(chuàng)作規(guī)則并包含它們的條件和動作。對操作系統(tǒng)規(guī)則來說,用戶通過帶有視覺瀏覽metaphor的UI動作將規(guī)則依附于判定點。然而,其他應用程序可以為用戶創(chuàng)建附件,因為該應用程序為該用戶定義了判定點。現(xiàn)在參考圖1,示出依照本發(fā)明的規(guī)則架構,方便了終端用戶數(shù)據(jù)自動化操作和管理的系統(tǒng)100。該規(guī)則架構允許終端用戶用以下四種方式定義"自動化操作數(shù)據(jù)"的邏輯。第一,數(shù)據(jù)導出方便了使用基于內容的邏輯從系統(tǒng)中的其他項定義"虛擬"集合和項。例如,定義一組叫做尸e叩/eW/zoL/ve/"5e〃evwe的聯(lián)系人,它是地址在Bdlevue中的聯(lián)系人的全集的子集。第二,副作用邏輯的觸發(fā)激活方便了通過將集合和項與觸發(fā)邏輯相關聯(lián)而使集合和項處于活動狀態(tài)。例如,通過說明任何正被添加到規(guī)范(^ec折c^/o")集合的新文檔應能導致它們的創(chuàng)作者被電子郵件告知。第三,數(shù)據(jù)約束方便了在項上施加約束邏輯。例如,通過要求/w&go文件夾內的任何電子郵件的主題內有"Indigo"或已經(jīng)被發(fā)送到Indigo郵件發(fā)送列表。最后,數(shù)據(jù)驅動的判定方便了在應用程序攔截器(interceptor)點支持豐富的應用程序客戶化邏輯。例如,通過基于消息的內容和目的地,指定哪個簽名文件應被附加到輸出的電子郵件消息中。作為其支持,系統(tǒng)100包括監(jiān)視組件102,它跟蹤與數(shù)據(jù)相關的項。規(guī)則評價組件104使用與被跟蹤的項相關的元數(shù)據(jù)來提供對項的子集的自動處理。該系統(tǒng)也方便了使用基于內容的邏輯在系統(tǒng)中定義虛擬集合和項。該系統(tǒng)還包括一個或多個觸發(fā)組件106,該組件按照觸發(fā)邏輯的功能將項和項的集合動態(tài)地設定為活動。其它組件可包括用于在項上強加約束的約束組件106,以及支持在判定點允許應用程序客戶化邏輯的判定組件108。判定組件108不僅代表可由應用程序暴露的一個或多個判定點,而且代表提交事件或判定點的API。現(xiàn)在參考圖2,示出了依照本發(fā)明的規(guī)則架構的一種系統(tǒng)化的方法。雖然,為了簡化說明起見,這里顯示的一種或多種方法(例如,以流程圖的形式)是按照一系列動作顯示并描述的,但是應該理解和認識到,本發(fā)明并不限于這些動作的順序,除了依照本發(fā)明在這里顯示和描述的順序之外,一些動作可以不同的順序出現(xiàn)和/或與其他動作同時發(fā)生。例如,本領域的技術人員應該理解并認識到,方法可被替代地表示為一系列相關的狀態(tài)或事件,如在狀態(tài)圖中。而且,并非所有例示出的動作都是實現(xiàn)依照本發(fā)明的方法所必須的。系統(tǒng)化被定義為將數(shù)據(jù)和邏輯結構化成眾所周知的和已定義的模式,這些模式使多個應用程序能夠識別數(shù)據(jù)和邏輯并與之交互。數(shù)據(jù)的普遍存在的一般系統(tǒng)化是終端用戶"程序"開發(fā)的核心。至少三種"系統(tǒng)化"允許依照本發(fā)明的終端用戶數(shù)據(jù)自動化操作。在200,接收數(shù)據(jù)和邏輯用于系統(tǒng)化以方便終端用戶數(shù)據(jù)自動化操作。在202,數(shù)據(jù)被系統(tǒng)化。系統(tǒng)化的信息是數(shù)據(jù),該數(shù)據(jù)是終端用戶應用程序(例如,電子郵件、人、組和位置)的基礎。這允許應用程序對數(shù)據(jù)的一致性解釋。在204,為邏輯構件塊將事件系統(tǒng)化。系統(tǒng)化的信息事件是提供掛鉤來附加邏輯的事件。這些事件是高級的并依靠對終端用戶有意義的信息流。例如,電子郵件消息的到達就是這種事件。事件可以是應用程序內部的攔截器點,或者是可綁定邏輯的異步事件。在206,邏輯構件塊被系統(tǒng)化以通過規(guī)則處理數(shù)據(jù)(或信息)和事件。既然終端用戶一般不是訓練有素的開發(fā)者,那么期望他們用傳統(tǒng)的編程語言來編程就是不合情理的。相反,提供了系統(tǒng)化的邏輯構件塊,因此終端用戶可以通過簡單卻豐富的組合將它們組合在一起來進行編程?,F(xiàn)在參考圖3,示出了依照本發(fā)明的規(guī)則架構的數(shù)據(jù)導出的一種方法。在300,接收數(shù)據(jù)用于處理。在302,使用規(guī)則架構的一個或多個規(guī)則,通過使用基于內容的邏輯從系統(tǒng)內的其他項定義虛擬集合和項,來自動化操作數(shù)據(jù)。例如,可通過定義叫做PeopleWhoLivelnCity的一組聯(lián)系人,它是地址在該城市中的Contacts(聯(lián)系人)的全集的子集,來創(chuàng)建虛擬集合。現(xiàn)在參考圖4,示出了依照本發(fā)明的規(guī)則架構的副作用邏輯的觸發(fā)激活的一種方法。在400,接收數(shù)據(jù)用于處理。在402,通過將觸發(fā)事件的活動與觸發(fā)邏輯相關聯(lián),來使集合和項處于活動狀態(tài)。例如,說明正被添加到印e"yca^w(規(guī)范)集合的任何新文檔可導致它們的創(chuàng)作者被電子郵件告知?,F(xiàn)在參考圖5,示出了依照本發(fā)明的規(guī)則架構的數(shù)據(jù)約束的一種方法。在500,接收數(shù)據(jù)用于處理。在502,在項上施加約束邏輯。數(shù)據(jù)約束的一個例子是,要求A^me(名稱)文件夾內的任何電子郵件在主題內具有"Name"或者已經(jīng)被發(fā)送到Name郵件發(fā)送列表。現(xiàn)在參考圖6,示出了依照本發(fā)明的規(guī)則架構,在判定點提供應用程序客戶化的一種方法。在600,接收數(shù)據(jù)用于在判定點處理。在應用程序攔截器(或判定)點提供豐富的客戶化邏輯。因此,在602,處理依附于判定點的規(guī)則。數(shù)據(jù)驅動的判定點的一個例子是,基于消息的內容和目的地,指定哪個簽名文件應被附加到輸出的郵件消息中。在604,返回應用程序判定。現(xiàn)在參考圖7,示出了依照本發(fā)明的規(guī)則架構的項類型及其關系的示意圖。輸入范圍是任何類型的任何項。操作系統(tǒng)使用輸入范圍來將規(guī)則評價的范圍限制到特定的項或文件夾,但個體應用程序一般不使用該輸入范圍。上圖中的線上的標記顯示了項之間的關系的名稱。RuleSetAttachment(規(guī)則集附件)項表示DecisionPoint(判定點)和Rule(規(guī)則)項之間的連接。這些連接可被模擬為物理的、存儲的"鏈接",或是作為計算出的"公值聯(lián)合"。另一種情況下,其功能是相同的,即從Rule(規(guī)則)到為其創(chuàng)建該規(guī)則的DecisionPoint(判定點)的連接。判定點項使應用程序能使用規(guī)則平臺。規(guī)則描述規(guī)則項,包括約束、條件和結果。規(guī)則包含規(guī)則語句。規(guī)則被依附于判定點,且應用程序提供輸入給判定點以返回結果?,F(xiàn)在參考圖8,示出了依照本發(fā)明的規(guī)則架構的條件和結果處理的示意圖。該規(guī)則平臺為終端用戶規(guī)則邏輯的定義和執(zhí)行提供了基礎結構。該規(guī)則模式提供了與項的類型相關的參數(shù)化的條件和結果。例如,Emm77kfe^ge(電子郵件消息)項類型可能有與其相關聯(lián)的條件/s^Vom(來自)、A7b(去往)等等。為該規(guī)則平臺提供了完整的一組項類型800,使用它們就方便了終端用戶依照本發(fā)明進行編程。項類型800表示為ITEMTYPE1:CONDITION,/RESULT,、ITEMTYPE2:CONDITION2/RESULT2、......、ITEMTYPEN:CONDITIONN/RESULTN。作為輸入802,自動從項類型中導出一些較為簡單的條件,而其他條件804可由開發(fā)者明確指定。用戶向項類型800輸入變量值806。所選擇的項類型800的這些條件和結果成為用于終端用戶邏輯的輸出"指令集"808。規(guī)則中的條件和結果是開發(fā)者定義的條件和結果的實例,變量值由終端用戶指定。每個規(guī)則存留為項,具有項的全部共享、安全和系統(tǒng)化能力。終端用戶邏輯"程序",即輸出指令集808,是一組規(guī)則,它是規(guī)則語句的集合。一個完整的邏輯單元包括一個或多個規(guī)則。每個規(guī)則是一創(chuàng)作單元。注意,輸入到規(guī)則的是數(shù)據(jù)項。規(guī)則是有關某一項類型的項的說明性語句。作為基本模型的擴展,可以提供非項數(shù)據(jù)(過渡過程數(shù)據(jù)或XML)作為規(guī)則輸入。規(guī)則應用于其上的項依賴于規(guī)則的部署。規(guī)則是可部署的終端用戶邏輯的單元。通過將規(guī)則依附于項范圍(itemscope)(項輸入或判定點的源)來部署該規(guī)則。這種聯(lián)合以RuleSetAttachment(規(guī)則集附件)來記錄。規(guī)則和RuleSetAttachment(RSA)可以是項(如前所述,它可以是項之間有名的公值關系)。在活動規(guī)則(activerule)的情況下,項范圍是項集合。當使用規(guī)則來截取并客戶化應用程序時,該應用程序提供對其應用了規(guī)則的項。規(guī)則共同定義了終端用戶客戶化請求。規(guī)則內的每個規(guī)則語句對應于終端用戶意圖的一個語句。如果可使用多個規(guī)則,可在動作上使用沖突裁決器?,F(xiàn)在參考圖9A-E,示出了依照本發(fā)明的規(guī)則結構的規(guī)則的代表性格式。從終端用戶的角度,Rules==Views==Queries(規(guī)則==視圖==詢問)。規(guī)則平臺至少遵循這些原則規(guī)則是說明性的IF-THEN表達式;用于規(guī)則的數(shù)據(jù)模型是數(shù)據(jù)模型,并且因此任何項類型可以參與規(guī)則;以及,在數(shù)據(jù)庫詢問處理器內針對該數(shù)據(jù)模型來評價規(guī)則。視圖是持續(xù)的詢問,但卻在表達力方面不同于詢問。實際上,視圖和規(guī)則共享對持續(xù)性的公共要求。盡管這種通用性解釋對過濾器詢問是有意義的,但對使用更為豐富的語義(例如,聚集)的成熟的SQL詢問來說卻顯然不是這樣。這種詢問對開發(fā)者使用應用程序來說是有關的。那些詢問具有與更為豐富的規(guī)則系統(tǒng)的通用性。終端用戶詢問一般是簡單的過濾器。有趣的是,這類過濾器詢問也正是由OPath語言所提供的。圖9A示出了依照本發(fā)明的規(guī)則的一般格式。規(guī)則簡單地是一組采用形式ON(每個數(shù)據(jù)項)IF(條件為真)THEN(結論)的語句。它可被用于表示判定、事實,并且一般來說,可以表示各種說明性的語句。詢問是規(guī)則的受限形式,其中規(guī)則的結論被限制成在結果中包含項(一般來說,排除項也是可能的結論)。定義詢問結果的內容的說明性語句如下ON(每個數(shù)據(jù)項)IF(條件為真)THEN(將該項包含于詢問結果中)。實際上,基于最初模擬哪種SQL語言,這就是在關系演算中怎樣模擬詢問。在活動規(guī)則的情況下,規(guī)則的結論被解釋成要執(zhí)行的副作用動作。既然規(guī)則是說明性的,那么不同的評價算法都是可能的。低延遲算法適合于客戶機,而高吞吐量的算法適合于服務器。規(guī)則存留為項,導致安全、共享和系統(tǒng)化范圍內的標準行為。規(guī)則的條件是結合由輸入項類型所定義的基本謂語(predicate)的布爾表示。針對項屬性的公共比較條件,以及由模式開發(fā)者定義的高級條件方法都被支持。第一個原則是終端用戶規(guī)則內的條件和終端用戶詢問內的條件在表達力和表達的容易程度和metaphor方面應該相同。第二個原則是終端用戶視圖應該可與其他規(guī)則/詢問/視圖相組成(composable)。這允許通過組成的構件塊來構建豐富的終端用戶邏輯。注意,跨關系和跨數(shù)據(jù)集來表達條件也是可能的(在數(shù)據(jù)庫用法中,是"加入"(join),但對一般的終端用戶來說,是以有意義的程式化的樣式來表示)。規(guī)則的結果簡單地是數(shù)據(jù)。當將規(guī)則用于應用程序客戶化時,它們需要由消費應用程序來進行解釋。在激活規(guī)則的情況下(這些提供帶有副作用動作的事件觸發(fā)的行為),結果對應于要執(zhí)行的動作。規(guī)則平臺提供主控服務,這些動作在該主控服務中被執(zhí)行。規(guī)則項是包括關系(例如"包含"規(guī)則項)的集的項。規(guī)則的邏輯行為是在具體類型的單個輸入項上定義的。規(guī)則被應用于輸入項。數(shù)據(jù)庫內的編程構造的主要類型是觸發(fā)器、存儲的過程(sprocs)、視圖/詢問、以及約束。同樣地,依照本發(fā)明的終端用戶編程具有活動規(guī)則(觸發(fā)器)、客戶化規(guī)則(sprocs)、導出規(guī)則(視圖)和約束規(guī)則(約束)。圖9B示出了依照本發(fā)明的用于活動規(guī)則的一般規(guī)則格式。在計算機需要代表用戶執(zhí)行動作的任何情況下,使用活動規(guī)則,這些情況包括例如自動組織從照相機下載的照片;處理、過濾并轉寄收到的電子郵件、電話呼叫和IM;通知用戶相關的警告;以及由終端用戶定義的簡單的專門的"工作流"?;顒舆壿嬘尚问綖镺N(項)IF(條件)THEN(動作)的規(guī)則來定義。THEN子句中的結果對應于從存儲系統(tǒng)中可用的一組基本動詞中選擇出或者存儲模式開發(fā)者定義的可執(zhí)行的動作(例如,移動和添加)。為了為終端用戶規(guī)則定義條件和動作,高級開發(fā)者能定義專門的模式或模式擴展。有兩種方法使活動規(guī)則可依附于項范圍中。第一,可用周期性語義將活動規(guī)則依附于項集合。該規(guī)則周期性地應用于每個項并且出現(xiàn)適當?shù)膭幼?在任何沖突解決以后)。第二,可用事件語義將活動規(guī)則依附于項集合。無論何時在項集合中發(fā)生變化,針對變化的項執(zhí)行該規(guī)則。圖9C示出了依照本發(fā)明的用于應用程序客戶化規(guī)則的一般規(guī)則格式。如今的應用程序的行為并不是非??蛻艋摹R话銇碚f,任何客戶化基于簡單的選項設置。相反,規(guī)則允許終端用戶基于當前的應用程序和用戶的上下文,以數(shù)據(jù)驅動的邏輯在各種攔截器點客戶化應用程序。客戶化規(guī)則可由希望為終端用戶控制提供指向的任何應用程序使用。一種考慮方法是,通過應用程序的工具一選項(Tools->Options)窗格設定的每個值應該是可定義的,而不僅作為常量,而是可通過判定邏輯定義。例如,確定哪個簽名文件要應用于發(fā)出的郵件消息的規(guī)則、是否用警告打斷用戶的規(guī)則等等。應用程序客戶化規(guī)則釆用ON(項)IF(條件)THEN(結果)的形式。應用程序提供項或項的集作為輸入。結果實際上不是作為規(guī)則評價的一部分而自動執(zhí)行的,相反,它們只是簡單地作為規(guī)則執(zhí)行的結果來返回,用于應用程序正確解釋。圖9D示出依照本發(fā)明的數(shù)據(jù)導出規(guī)則的一般規(guī)則格式。終端用戶能定義使用基于內容的過濾器定義項的集的規(guī)則。這些集叫做導出的項集合(itemsets)。操作系統(tǒng)視覺瀏覽metaphor具有DynamicSets(動態(tài)集)的概念,它表示最相關的概念。所有的終端用戶的詢問和視圖落入該范疇內。導出規(guī)則采用ON(項)IF(條件)THEN(包括/排除)的形式。注意,唯一允許的結果是包括和排除。通過將規(guī)則依附于項范圍來使用它。結果產(chǎn)生的導出的ItemSet包含按照規(guī)則"包括在內"的源集合內的那些項。實際上,這些導出規(guī)則在項范圍上定義了豐富的過濾器。導出的ItemSets的一些例子如下一組叫做MyFriends的人,定義為家庭電話號碼不為空的聯(lián)系人(Contacts),和不標記為商業(yè)聯(lián)系人的聯(lián)系人(Contacts);以及一組叫做InBoxMailFromMyFriends的電子郵件,定義為InBox(收件箱)中來自MyFriends(我的朋友)中的任何人的任何電子郵件。注意,導出的項集合的定義是組成性的,艮卩InBoxMailFromMyFriends使用了MyFriends的定義。為了終端用戶構建模塊化的定義,這種組成性是很重要的。導出的項集合的模塊化的定義也使其他種類的規(guī)則更富表達力。例如,InBox內的"活動"規(guī)則指示出如果發(fā)送者在MyFriends內,則該郵件應被標記為"個人的"。圖9E示出依照本發(fā)明的數(shù)據(jù)約束規(guī)則的一般規(guī)則格式。終端用戶也能使用形式為ON(項)IF(條件)THEN(允許/不允許)的規(guī)則在項集合上指定約束。約束規(guī)則依附于現(xiàn)有的項集合(這是用于規(guī)則的項范圍),并且由項集合的變化(插入/更新/刪除)激活。該激活與變化同步。有多種可能的失敗行為(如果該規(guī)則結果為"不允許")變化(一般為項添加)本身可能失敗。并且可選地,正被添加到集合的項可被修改,以符合約束。每個規(guī)則與指定規(guī)則輸入的類型、允許的條件和允許的規(guī)則結果的規(guī)則約束相關。例如,用于定義導出的項集的規(guī)則或在詢問約束中,其結果是包括輸入項或排除輸入項。終端用戶不處理規(guī)則約束。它是應用程序和開發(fā)者的概念,約束終端用戶可以在某一判定的上下文中指定的邏輯。RuleConstraint類型用于描述這些約束??赡苡^察到約束規(guī)則和導出規(guī)則非常相似。然而,差異在于約束規(guī)則僅為集合內的成員指定必要的條件。它們不指定集合應該怎樣被填充(換句話說,沒有針對其應用規(guī)則邏輯的項的域)。終端用戶編程(EUP)模型傳統(tǒng)地,大量的為文件系統(tǒng)的設計工作已經(jīng)基于對"手動"交互范圍中終端用戶的要求的理解,例如,復制語義、使用期限管理等等。這些要求己經(jīng)被記錄并插入到核心文件系統(tǒng)數(shù)據(jù)模型和API中。然而,通過包含更為豐富和更多的動態(tài)交互,并帶有終端用戶編程的數(shù)據(jù)操作,終端用戶與文件系統(tǒng)數(shù)據(jù)進行交互的全部要求比"手動"交互更為寬泛。EUP的設計是基于與把終端用戶看作要求的首要驅動者有關的四個主要原則CompositionalLogic(合成邏輯)。復雜的邏輯是使用較小的合成單元以較簡單的結構構造的。所有的終端用戶程序都是說明性的。終端用戶程序由邏輯組件的合成來構造。存在一種定義邏輯組件怎樣能被裝配在一起的EUP代數(shù)。每個邏輯組件是對終端用戶有意義的邏輯的片斷。無論該邏輯組件用于定義詢問,還是用于定義復雜的動詞或約束,它都是使用普通的IF-THEN規(guī)則構造來定義的。除普通的邏輯模型外,也允許跨應用程序的規(guī)則邏輯的普通視覺顯示。作為數(shù)據(jù)管理程序。每個EUP程序和每個EUP邏輯組件被表現(xiàn)為文件系統(tǒng)項。從終端用戶的角度看,他們定義的復雜的動作或過濾器與他們己經(jīng)編輯的文檔并無不同。從共享、同步、備份、安全性等等角度來看,它是一塊數(shù)據(jù)。有用的副作用是與EUP概念交互的API表面是與任何數(shù)據(jù)項交互的標準API表面。終端用戶靈活性。它都是關于給終端用戶以能力和靈活性。例如,終端用戶能定義新的終端用戶類型、動態(tài)地修改現(xiàn)有的類型、定義并持續(xù)詢問、定義影響特定項的"商業(yè)邏輯"等等。在說明性的、代數(shù)的和基于規(guī)則的適當?shù)某橄笏缴蟻砻枋鲞@些。跨應用程序的公共模型。終端用戶在呈現(xiàn)給用戶的應用程序或視覺瀏覽metaphor內所做的工作可繼續(xù)在其他的應用程序內。例如,如果為在該metaphor內的Document(文檔)類型設置終端用戶屬性,當針對該metaphor內的一些其他部分中或在另一個文件系統(tǒng)應用程序內的文檔來定義詢問時,終端用戶可期望能夠使用該屬性。對于數(shù)據(jù)的EUP,存在五個基本方面數(shù)據(jù)類型、邏輯、詢問和視圖、動詞和自動化操作(automation)、判定、以及約束。數(shù)據(jù)類型涉及類型映射和屬性映射。類型映射包括終端用戶可以看見并可以推論的數(shù)據(jù)類型,以及這些類型如何映射到文件系統(tǒng)。屬性映射涉及該用戶看見的與終端用戶數(shù)據(jù)類型相關的屬性,以及這些屬性如何映射到底層的存儲類型。邏輯涉及詢問、自動化操作、約束和應用程序客戶化。編程模型定義終端用戶邏輯,而創(chuàng)作模型定義終端用戶怎樣能定義復雜的邏輯。提供了終端用戶邏輯的持久性,而管理描述終端用戶邏輯如何被共享和管理,以及用于命名、共享、系統(tǒng)化等的機制等等。詢問和視圖提供表達力的模型,例如,它描述要呈現(xiàn)給終端用戶的正確的過濾和詢問抽象。行為考慮當終端用戶把項拖入或拖出自動列表(auto-list)(例如,行為象列表的自動列表)時,期望的行為應當是什么。就呈現(xiàn)抽象而言,有一組與自動列表向終端用戶的呈現(xiàn)相關的邏輯信息(例如,投影屬性、分類順序、分頁),也有一些實際信息(頁面尺寸等等)。動詞和自動化操作描述根據(jù)底層數(shù)據(jù)模型,終端用戶"動詞"是什么,終端用戶如何構造新的復雜的條件動詞,對項的動詞的應用如何可共同運用于一組項以及更為豐富的動詞,、以及動詞的應用如何能夠自動化操作。判定描述應用程序客戶化判定(由終端用戶客戶化規(guī)則所定義)如何被建模。約束描述終端用戶如何可在項/項集合的內容上定義約束、以及可實施的語義。在終端用戶編程(EUP)代數(shù)中存在五個基本的術語Property(T)(屬性(T)):它描述終端用戶類型T的屬性。該用戶使用屬性來描述過濾器和動作。Filter(T)(過濾器(T)):它定義可用作類型T的項上的過濾器的布爾邏輯函數(shù)。它是返回類型是布爾值的規(guī)則。Event(T)(事件(T)):它定義所關心的事情的出現(xiàn)。它一般與其類型為T的數(shù)據(jù)項(事件數(shù)據(jù))相關。Action(T)(動作(T)):它是項類型T的副作用方法,并且一般要求其他參數(shù)。Set(T)(集(T)):它是類型T的項的集。這些術語的每一個的實例可以由開發(fā)者從系統(tǒng)內定義的項模式中獲得。在Set(T)的情況下,這個術語的實例是文件系統(tǒng)中的任何集合。然而,這些術語的每一個的實例也能由終端用戶通過簡單的代數(shù)構造器或通過規(guī)則來構造。以下的基本術語可以使用規(guī)則來構造Property(T):輸入項類型為T而輸出類型為O的規(guī)則在類型T上定義類型O的屬性。Filter(T):輸入項類型為T而輸出類型為布爾值的規(guī)則在類型T的項上定義過濾器。Acticm(T):輸入項類型為T的規(guī)則和輸出類型在類型T的項上定義動作。在每個規(guī)則內,可以使用包括以下條件的各種條件<屬性><比較運算符><表達式>、<現(xiàn)有的過濾器>、ANY/EVERY(任何/每個)<關系目標〉MATCHES(匹配)<過濾器>、以及ANY/EVERY<關系目標>1忖<集>。這些條件示出可以出現(xiàn)在Rule內的不同種類的組合。這也包括聚集,聚集是集中的項的計數(shù)??梢允褂煤唵蔚亩M制代數(shù)運算來構造下面的術語Event(T)=Event(T)+Filter(T),其中導出的事件由過濾器應用于另一個事件的事件數(shù)據(jù)來定義,例如,NewInterestingltem(Doc)==NewItem(Doc)+IsInteresting(Doc);Filter(T)二Filterl(T—SubTypel)(過濾器KT—子類型l))C/m'o"(聯(lián)合)Filter2(T—SubType2)(過濾器2(T—子類型2));Set(T)=Setl(T)+Filter(T),其中導出的集由過濾器對另一個集內的每個項的應用來定義;導出的集成員是過濾器評價為真的那些項;以及Set(T)=Setl(T)f/m'owSet2(T)。個體EUP邏輯組件可直接在應用程序內進行評價。這是用于應用程序客戶化的方法(例如,對于類似Outlook的應用程序,以允許終端用戶通過終端用戶邏輯來客戶化該應用程序的行為)。EUP的中心元素通過環(huán)境視覺瀏覽metaphor來顯露出,并包括以下三種程序DerivedSet(導出的集)導出的集(先前作為代數(shù)術語描述過)本身是完整的終端用戶程序。當打開它時,執(zhí)行該集定義的邏輯,且結果一般被顯示出來。下面的代數(shù)運算也被支持用于導出的集,Set(T)=SetlCT)t/"/owSet2Cr)。Batch(批)Batch=Set(T)+Action(T)。批定義為要執(zhí)行的面向集的任務。批的語義是在集內的每個項上執(zhí)行該動作??梢允謩訄?zhí)行或計劃執(zhí)行。Agent(代理)Agent=Event(T)+Action(T)。代理定義當事件發(fā)生時要執(zhí)行的動作。所有這三個類型的EUP程序被定義為文件系統(tǒng)項,也作為邏輯組件。可以包括進一步的代數(shù)運算。例如,考慮各種集組合運算(交集、集差異等等)來定義導出的集是可行的。RuleLogic(規(guī)則邏輯)項定義終端用戶邏輯的單元。QueryFilters(詢問過濾器)、復雜的動詞、復雜的事件和計算出的屬性是RuleLogic的實例。從邏輯上講,RuleLogic項記錄了用戶定義的功能在輸入項上的定義。每個RuleLogic項包含RuleConstraint(規(guī)則約束),它定義該功能的輸入項類型和輸出類型。存在零或更多IF-THEN語句。每個語句有Condition(條件)(對應于語句的IF部分)和Result(結果)(對應于THEN部分)。Condition是嵌套元素的布爾表達式樹,該樹的葉子是LeafCondition(葉條件)元素。Result是零個或更多的ResultElements(結果元素)的嵌套元素集合,每個ResultElement有一個名稱和一組參數(shù)值。在QueryFilters的情況下,語句的Result是具有名稱為True(真)或False(假)、且沒有參數(shù)的單個ResultElement。這里簡要地描述了任一RuleLogic定義(因此,還有QueryFilter)的語義。如果QueryFilter沒有語句,則輸出為NULL(空)。如果QueryFilter有一個語句,那么,如果Condition評價為True且Result為True則輸出為True。如果Condition評價為True而Result為False則輸出為False。另外的情況則輸出為NULL。如果QueryFilter有多個語句,那么在Condition評價為真的那些語句的Result上使用聚集函數(shù)來計算輸出。最常見的聚集函數(shù)是基于語句順序(提供嵌套的if-then-else或switch(開關)i吾句語義)?,F(xiàn)在參考圖10,示出了依照本發(fā)明的規(guī)則架構,一種通過依附于輸入項的集合來應用規(guī)則的方法。術語"集合"指項引用(itemreference)的任何集(在shell(外殼)術語中稱為集,在規(guī)則術語中稱為關系的多集(multi-set))。在1000,接收提供輸入項范圍的項集合。在1002,規(guī)則可以依附于提供了輸入項范圍的項集合。在1004,調用該規(guī)則。在1006,當調用時,將該規(guī)則應用到項范圍內的每個項?,F(xiàn)在參考圖11,示出了依照本發(fā)明的規(guī)則架構的通過依附于判定點來應用規(guī)則的另一種方法。在1100,暴露判定點。在1102,將該規(guī)則依附于判定點。該規(guī)則可以依附于用于為規(guī)則進行評價提供項的判定點?,F(xiàn)在參考圖12,示出了依照本發(fā)明的規(guī)則架構,通過直接調用規(guī)則來應用規(guī)則的另一種方法。在1200,接收輸入項用于處理。在1202,以規(guī)定了其輸入的參數(shù)直接調用規(guī)則。現(xiàn)在參考圖13,示出了依照本發(fā)明的規(guī)則架構的應用規(guī)則的另一種方法。在1300,接收輸入項范圍用于處理。在1302,該規(guī)則應用到在輸入項范圍內變化的那些項。上一種情況模擬規(guī)則的公共使用以提供活動行為(有時叫做處理事件的能力)。在規(guī)則的這種使用中,輸入項是"由事件產(chǎn)生的"并且規(guī)則評價的結果可能導致"動作"被執(zhí)行。新穎的規(guī)則平臺提供了這種活動處理事件能力,作為規(guī)則系統(tǒng)的頂部的一層?,F(xiàn)在參考圖14,示出了依照本發(fā)明的用于規(guī)則沖突解決的一種方法。作為缺省方式,終端用戶邏輯的行為是個體規(guī)則的累積行為。然而,在許多情況下,規(guī)則可能具有"沖突"的交互。在1400,接收包括用于處理的多個規(guī)則的用戶定義的邏輯。一些不同的沖突解決策略得到支持。例如,在1402,可以通過便于規(guī)則的終端用戶規(guī)則優(yōu)先化的判決組件解決規(guī)則沖突。在1404,判決組件的一種替代方法提供了可通過開發(fā)者定義的判決策略(例如,定制聚集)來解決規(guī)則沖突。規(guī)則創(chuàng)建框架由創(chuàng)建規(guī)則時和構建使用規(guī)則的應用程序時所使用的項和關系組成。規(guī)則平臺的規(guī)則引擎使用這些項和關系來確定響應于特定的事件,計算機應做些什么。為了客戶化基于終端用戶規(guī)則的應用程序行為,發(fā)生兩件事情程序員"在規(guī)則上允許"軟件的功能,終端用戶為那些功能創(chuàng)建規(guī)則。"規(guī)則允許"意味著為用戶合成規(guī)則而定義與應用程序定義的類型或OOTB(框外)類型相關聯(lián)的EUP組件。"允許"也意味著創(chuàng)建可對其依附規(guī)則的判定點。例如,規(guī)則允許的操作系統(tǒng)特征被包括在內,以便用戶可以在項的變化上定義規(guī)則,這些項如文件夾和文檔。規(guī)則API用于將規(guī)則輸入引入到規(guī)則評價引擎,維護終端用戶規(guī)則,以及注冊(register)和考慮規(guī)則架構的各個部分,包括條件、動作、綁定等等。規(guī)則API作為助手方法來實現(xiàn),它完成由規(guī)則類型定義的部分類,但有三種例外規(guī)則輸入、規(guī)則輸入集合和規(guī)則異常類型。這意味著用于規(guī)則的API是針對規(guī)則類型的API。本發(fā)明的規(guī)則API提供以下內容從Query類型分離的AppCustomization/ActiveRules類型。分離允許在與Query相關的類型和AppCustomization類型上構造不同的助手方法。這也是從開發(fā)者的角度的簡化;只對使用規(guī)則引擎用于在其應用程序內進行應用程序客戶化感興趣的開發(fā)者只需要學習那些API。組合的Rule、Rules概念。Rules是由約束信息(輸入類型和輸出類型)和一個或多個LogicStatement構成的。每個LogicStatement由Condition樹和一個或多個結果組成。LogicResult類型族(為了以后的擴展)。LogicResult是結果類型繼承的基類型。支持兩種結果類型,現(xiàn)有的"Action",它包含已編碼的方法調用(Functionlnfo),以及Boolean(布爾值)返回類型(主要用于QueryFilters/AutoLists)。在另一個實現(xiàn)中,可以擴展到覆蓋標量和XML(可擴展標記語言)結果。EUP項之間基于值的連接(Value-basedConnectionsBetweenEUPItems)。這是關聯(lián)項的附加方式,而非堅持項之間的清楚的關系/鏈接。規(guī)則API使用Itemlds用于編碼規(guī)則附件等等。以這種機制來使用Association概念,這個概念是一種己說明的基于值的關系。規(guī)則API(指代EUP組件的另一種方式)由System.Storage.Rules名稱空格內的類型組成。它提供了引入新的事件的手段(Rulelnput,RulelnputCollection)。除了極少的例外之外,這些類型是先前列舉的EUP組件和程序。這些類型是系統(tǒng)化的類型,這意味著它們是實例化的、持久性的和使用標準存儲操作API來被發(fā)現(xiàn)。這些類型提供創(chuàng)建并維護用戶規(guī)則(從RuleLogic中導出的類型)的手段。這些規(guī)則可以是活動規(guī)則,用于應用程序客戶化的規(guī)則,或是結構化的詢問規(guī)則?,F(xiàn)在參考圖15,示出了本發(fā)明的規(guī)則架構的項的類型和相關聯(lián)的關系。規(guī)則平臺所暴露的大多數(shù)公共API包括在System.Storage.Rules模式中說明的類型。這個規(guī)則模式定義了EUP組件項類型。這些用于代表用戶來實例化規(guī)則邏輯,允許應用程序說明可對其依附規(guī)則邏輯的判定點,以及允許應用程序保持并傳遞規(guī)則評價的結果。RuleLogic。保持用戶規(guī)則邏輯的所有項的基類型。它包含對所有規(guī)則公共的基本"形狀"。源自(OS文件系統(tǒng)).項類型內添加的屬性參Constraint:用于該規(guī)則的LogicConstraint。參Statements:LogicStatement的多集(multiset)。每個規(guī)則包含一個或多個語句(條件/動作對)。評價這些條件,如果為真,則返回動作作為結果。多集內的排序暗指語句間的優(yōu)先級排序;Statement[O]具有最高優(yōu)先級。也可以實現(xiàn)有序的多集。沒有語句的RuleLogic項被認為是不合法的。在一個實現(xiàn)中,當商業(yè)邏輯存在時,可以拋出運行時間異常。Enabled:布爾邏輯標記這條邏輯為允許或者不允許(默認情況為真)添加到該類型的方法無。QueryFilter。QueryFilter表示用戶創(chuàng)作的過濾邏輯。QueryFilter內的語句具有指定布爾輸出類型的LogicConstraints。源自RuleLogic添加到該類型的屬性無添加到該類型的方法參QueryFilter(TypeinputltemType):允許設定輸入項類型的構造器。將在LogicConstraint中設定布爾邏輯結果類型。QueryFilter(TypeinputltemType,LogicStatement1):設定輸入項類型(同上)以及添加單個LogicStatement的構造器。參CollectionEvaluate(CollectionScopecv):給定輸入集合,評價詢問過濾器。返回結果作為Itemlds的集合。參CollectionEvaluate(AutoLista):給定AutoList,評價詢問過濾器作為輸入集合。參BooleanEvaluate(Itemi):在QueryFilter內保持的LogicStatements上評價單個項;返回最終結果。AutoList。AutoList表示AutoList的windows瀏覽metaphor概念。它指QueryFilter+I叩utScopes,并可以用通過ItemSearcher返回的結果來評價。添加到該類型的屬性InputScopes:InputScope的多集。AutoLists有一個或多個輸入范圍,當進行評價時,可以在這些輸入范圍上應用它們的過濾器。有O個輸入范圍的AutoLists是非法的。當商業(yè)邏輯存在時,可以拋出運行時間異常。參QueryFilters:QueryFilter項的Itemld的多集,包含評價該AutoList時要使用的邏輯定義。添加到該類型的方法AutoList(Typei叩utItemType,InputScopeInputScope):允許設定輸入項類型和輸入范圍的構造器。將在LogicConstraint中設定布爾邏輯結果類型。AutoList(Typei叩utltemType,InputScopeInputScope,QueryFilter):設定輸入項類型、一個輸入范圍、以及添加對單個QueryFilter的引用的構造器。ItemSearcherGetltemSearcher():在評價這個AutoList的結果上返回ItemSearcheroInternalstringGetViewName():返回支持這個AutoList的生成的視圖的名稱。用于ItemSearcher集成。AppRule。在應用程序客戶化的情況下使用AppRules。源自RuleLogic添加到該類型的屬性DecisionPoint:該AppRule所依附于的判定點的Itemld。添加到該類型的方法AppRule(LogicConstraintlc):允許設定LogicConstraint的構造器。AppRule(LogicConstraintlc,LogicStatement1):允許設定LogicConstraint并且允許添加單個LogicStatement的構造器。參EvaluationResultsEvaluate(Iteminputltem):對于給定的輸入項,評價該AppRule,并返回生成的結果。參EvaluationResultsEvaluate(CollectionValuec):對指定的集合內的每個項,評價該AppRuIe,并返回生成的結果。ScopedAppRule。ScopedAppRule主要用于ActiveRules的情況以添加規(guī)則邏輯應被施加于其上的輸入范圍。某些應用程序客戶化情況會要求邏輯與文件系統(tǒng)內的位置的聯(lián)合,這是可能的。這些情況能夠用這些項自己的判定點來利用這些項。源自AppRule添加到該類型的屬性InputScopes:I叩utScope的多集(參見下文)。ScopedAppRules有一個或多個其邏輯可以應用于其上的輸入范圍。有0個輸入范圍的Sc叩edAppRules是非法的。當商業(yè)邏輯存在時,可以拋出運行時間異常。添加到該類型的方法參ScopedAppRule(LogicConstraintlc,InputScopeInputScope):允i午i交定LogicConstraint和單個輸入范圍的構造器。ScopedAppRule(LogicConstraintlc,InputScopeInputScope,LogicStatement1):允許設定LogicConstraint和單個輸入范圍、并且允許添加單個LogicStatement的構造器。DecisionPoint。應用程序創(chuàng)建DecisionPoints以描述何時何地它們將提交輸入到規(guī)則引擎,以及它們希望接收何種結果。DecisionPoints是一種機制,應用程序通過該機制可以提交輸入到規(guī)則引擎,用于應用程序客戶化的情況。源自(OS文件系統(tǒng)).項該類型的屬性參ApplicationName:創(chuàng)建DecisionPoint的應用程序或模式的名稱。例如,這可由UI(用戶界面)應用程序使用來對給定的應用程序顯示所有的DecisionPoint。ScopeRequired:當為真時,依附于此的任何RuleLogic項必須具有定義白勺InputScopes(ScopedAppRule)。爭Constraint:描述為該DecisionPoint創(chuàng)建的規(guī)則上的約束的LogicConstraint(參見下文)。此約束描述當應用程序到達DecisionPoint時,應用程序將提交的輸入種類(OS文件系統(tǒng)類型id),它期望的輸出的種類也是如此。添加到該類型的方法-參DecisionPoint(stringApplicationName,LogicConstraintc,boolscopeRequired):允許設定所有屬性的構造器。*EvaluationResultsSubmit(Rulelnputr):提交給定的Rulelnput并取回與其處理相關的EvaluationResults。EvaluationResultsSubmit(RulelnputCollectionr):提交給定的RulelnputCollection。EvaluationResults。提交的每個Rulelnput導致創(chuàng)建單個EvaluationResults項。這個項包含基于提交的數(shù)據(jù)進行的規(guī)則評價的結果(如果有的話)。這個新創(chuàng)建的項的itemid返回給提交應用程序;然后,它可讀取該項數(shù)據(jù)以確定要采取什么動作。源自(OS文件系統(tǒng)).項添加到該類型的屬性*Results:EvaluationResul伍lements的多集,其中每一個包含單個規(guī)則結果(要采取的動作)。添加到該類型的方法無。圖16A-H示出了依照本發(fā)明的規(guī)則架構所使用的嵌套元素類型。圖16A顯示本發(fā)明的EvaluationResultElement嵌套類型。EvaluationResultElement表示單個規(guī)則結果(要采取的ActionResult或要返回的其他種類的Result)。源自(OS文件系統(tǒng)).NestedType添加到該類型的屬性參Result:指定從規(guī)則返回的結果的LogicResult。爭Inputltemld:導致生成該EvaluationResultElement的輸入項的Itemld。參Ruleltemld:導致生成該EvaluationResultElement的RuleLogic項的Itemld。參Statement:在導致生成該EvaluationResultElement的邏輯項內指定Statement的整數(shù)。添加到該類型的方法-voidExecute(ItemContextic):助手方法。如果Result屬性包含ActionResult,調用其中指定的方法。它不調用ItemContext.Update();調用者這樣做。如果Result不是ActionResult,該方法應拋出RuleException。參教夢資如果Result包含ActionResult,ActionResult內的Arguments(變量)將是ConstantValues,它表示由LogicStatement指定的經(jīng)后處理的Arguments。圖16B顯示本發(fā)明的InputScope嵌套類型及其導出類型。為圖15的AutoList或ScopedAppRule表示InputScope,源自(OS文件系統(tǒng)).NestedType添加到該類型的屬性參Itemkh輸入范圍的ltemld。添加到該類型的方法InputScope(Guidi叩utScope)CollectionScope是作為集合的InputScope。源自InputScope添加到該類型的屬性-參RelationshipSchema:保持定義該集合的關系的String(串)模式名稱。RelationshipName:在以上定義集合的模式內的關系類型的String名稱參ShallowSc(jpe:Boolean:如果為真,輸入范圍應限制在一級關系遍歷內。缺省為假。添加到該類型的方法參CollectionScope(GuidinputScope,stringrelationshipSchema,stringrelationshipName)AutoListScope是作為AutoList的InputScope。源自I叩utScope添加到該類型的屬性無。添加到該類型的方法AutoListScope(GuidinputScope)CSIDLSc叩e是作為視覺瀏覽metaphorCSIDL的InputScope。CSIDL值提供獨立于系統(tǒng)的獨特方法以標識應用程序頻繁使用的特定文件夾,但它們可能不在任何給定的系統(tǒng)上具有相同的名稱或位置。源自InputScope添加到該類型的屬性CSIDL:為當前用戶評價的并用作為輸入范圍的CSIDL的值。圖16C顯示本發(fā)明的LogicConstraint嵌套類型。RuleLogic(及其孩子)和DecisionPoints者卩使用LogicConstraint。當用于DecisionPoint日寸,LogicConstraint指定要提交用于評價的輸入項類型和作出說明的應用程序預期的輸出類型。當用于RuleLogic時,該約束說明可以針對什么輸入類型來評價該規(guī)則,以及該規(guī)則產(chǎn)生什么類型的輸出。源自(OS文件系統(tǒng)).NestedType:添加到該類型的屬性.-I叩utltemTypeld:指定輸入項類型的OS文件系統(tǒng)Typeld。Output:來自指定輸出類型的OutputTypeenum(參見下文)的值。添加到該類型的方法參LogicConstraint(TypeinputltemType,OutputTypeot):采用typeOf(Item)和OutputType(參見下文),并發(fā)現(xiàn)適當?shù)腛S文件系統(tǒng)Typeld以存儲在InputltemTypeld中。OutputType(enum),描述對于Logic/DecisionPoint輸出什么類型(或者輸出類型上的約束)。用于LogicConstraint中。值Boolean:Functionlnfo圖16D顯示本發(fā)明的LogicStatement嵌套類型。LogicStatement對條件樹和一組結果(動作或布爾邏輯)進行編碼。源自(OS文件系統(tǒng)).NestedType:添加到該類型的屬性參Condition:該邏輯語句的條件樹。參LogicResults:LogicResult元素的多集。如果條件評價為真,對這些結果進行編碼。添加到該類型的方法參LogicStatement(Conditionc,LogicResult1):設定條件樹和單個結果的構造器。圖16E顯示本發(fā)明的LogicResult嵌套類型及其導出類型。LogicResult是用于所有結果類型的基類。它從不用于其自身;而是使用其孩子來編碼來自RuleLogic項的結果。源自(OS文件系統(tǒng)).NestedType:添加到該類型的屬性無。添加到該類型的方法無。BooleanRusult。允許一段規(guī)則邏輯返回布爾值。主要由QueryFileter/AutoList所使用。源自LogicResult添加到該類型的屬性參Result:包含該結果的布爾邏輯值。缺省為真。添加到該類型的方法BooleanRusult(boolresult)。ActionResult。Actions是活動或應用程序客戶化規(guī)則的結果。源自LogicResult添加到該類型的屬性參Functionlnfo:Functionlnfo對調用的方法進行編碼。參Arguments:包含用于Functionlnfo的有序變量的多集。參Result:標量結果是串,和描述該實際標量值的枚舉(enum),例如,整型、日期、串等等。添加到該類型的方法Action(LogicRusultlr,paramsobject[〗arguments):設定邏輯結果以及可選地設定任何必需的變量的構造器。ScalarRusult(Stringresult,enumScalarType)ScalarResult。添加到該類型的屬性Result:標量結果作為串,和描述該實際標量值的枚舉,例如,整型、日期、串等等。添加到該類型的方法.-參ScalarRusult(Stringresult,enumScalarType)圖16F顯示本發(fā)明的Condition嵌套類型及其導出類型。Condition是用于對規(guī)則的條件進行編碼的基類型。它不能直接被實例化;而是使用其孩子作為給定的規(guī)則實例的一部分。Condition不包含其自身的屬性。源自(OS文件系統(tǒng)).NestedType添加到該類型的屬性無。添加到該類型的方法參publicstaticConditionoperator&(Conditionleft,Conditionright):過載"&"以創(chuàng)建新的帶有左和右參數(shù)的AndCondition。publicstaticConditionoperatorI(Conditionleft,Conditionright):過載T算符。publicstaticConditionoperator!(Conditionc):返回帶有Conditionc白勺NotCondition。ConditionTree源自Condition并對一系列條件迸行編碼。ConditionTree從不直接被使用;而是使用其孩子AndCondition和OrCondition。源自Condition添加到該類型的屬性Children:Conditions的多集。它們可能是單個條件或其他樹。添加到該類型的方法無。AndCondition源自ConditionTree。當AndCondition樹被添加到規(guī)則時,它表示應該評價分量條件,并且當確定規(guī)則評價成功時,結果應該邏輯地AND(邏輯與)在一起。源自ConditionTree添加到該類型的屬性無。添加到該類型的方法AndCondition(paramsCondition[]operands):允許在構造日寸指定分量條件的構造器。OrCondition也源自ConditionTree。當OrCondition樹被添加到規(guī)則時,它表示應該評價的分量條件,并且當確定規(guī)則評價成功時,結果應該邏輯地OR(邏輯或)在一起。源自ConditionTree添加到該類型的屬性無。添加到該類型的方法參OrCondition(paramsCondition[]operands):允許在構造時間指定分量條件的構造器。NotCondition源自Condition。當NotCondition被添加到規(guī)則時,評價構成條件(畫ituentcondition),然后使用結果的否定。源自Condition添加到該類型的屬性*Condition:單個Condition(或者任何類似ConditionTree的導出類型)添加到該類型的方法參NotCondition(Conditioncondition):允許在構造時間指定該條件的構造器。LeafCondition用來表示實際條件。它描述要使用的條件函數(shù)的名稱,以及要用于有名的條件函數(shù)的變量的多集。源自Condition添加到該類型的屬性參Name:評價期間使用的條件函數(shù)的名稱。當前它可以命名任何受支持的SQL比較器,內建的面向集的條件或者觸發(fā)項類型上的任何方法。支持的SQL內建組件(和文本等價物)是"=","Equals",">","GreaterThan","<","LessThan",">=,,,"GreaterThanEqualTo","<=,,,"LessThanEqualTo","<>","NotEqual","Like"支持的面向集的條件ANY—IN:用于RelationshipValue禾QCollectionValue。確定在有名集合內定義的任何關系是否是RelationshipValue內指定的類型。ALL—IN:用于RelationshipValue禾QCollectionValue。確定在有名集合內定義的所有關系是否是RelationshipValue內指定的類型。參變量有名的條件函數(shù)的變量的多集。因為,在一個實現(xiàn)中,多集是無序的,使用LeafConditionl和LeafCondition2屬性。添加到該類型的方法參LeafCondition(stringname,paramsobject[]arguments):允許在構造日寸間設定條件函數(shù)名和變量的構造器。OPathCondition表示復雜的、開發(fā)者定義的一塊OPath。為了被使用,OPath表達式必須評價為布爾返回值,例如("Count(OutDocumentAuthorRelationships)>1")。源自LeafCondition添加到該類型的屬性參OPath:包含OPath表達式的串。參DisplayName:詢問構建器或其他UI中顯示的該塊OPath的串名稱。添加增加到該類型的方法-參OPathCondition(stringexp):設定OPath表達式的構造器。圖16G顯示依照本發(fā)明的ArgumentValue嵌套類型及其導出類型。ArgumentValue是用于為條件和動作編碼變量的基類型。它并不被直接實例化,而是使用其孩子類型(ConstantValue、PropertyValue、RelationshipValue、CollectionValue等等)。源自OS文件系統(tǒng).NestedType添加到該類型的屬性無。ConstantValue源自ArgumentValue并被用于表示用于規(guī)則的條件和動作的變量值內的常量值。源自ArgumsntValus包括在該類型中的屬性參Value:包含要由該變量表示的單個串值。添加到該類型的方法參ConstantValue(stringvalue):允許在構造時間直接設定值的構造器。PropertyValue源自ArgumentValue并被用于表示作為OS文件系統(tǒng)類型的屬性的條件和動作的變量。注意,在另一個實現(xiàn)中,可使用類型GUIDs而不是串模式和類型名,以用于與規(guī)則架構內觸發(fā)項類型的一致性。源自ArgumentValue包括在該類型中屬性-參PropertyName:包含作為要用作參數(shù)的入站(inbound)項上的屬性的名稱。添加到該類型的方法'PropertyValue(stringpropertyName):允i午在構造時間指定屬性名稱的構造器°RelationshipValue源自ArgumentValue并被用于表示要用作任何面向集的條件的參數(shù)的關系的名稱。源自ArgumentValue包括在該類型中的屬性參RelationshipSchemaName:包含可在其中發(fā)現(xiàn)Relationship類型的模式的名稱。參RelationshipName:包含Relationship類型的名稱。添加到該類型的方法參RelationshipValue(stringrelationshipSchemaName,stringrelationshipName):允許在構造時間指定模式名稱和類型名稱的構造器。CollectionValue源自ArgumentValue并被用于表示要用作對任何面向集的條件的參數(shù)的集合的名稱。源自ArgumentValue包括在該類型內的屬性參Collectionltemld:項集合的Guid項id參RelationshipSchemaName:可在其中發(fā)現(xiàn)該集合內的Relationship的模式的名稱參RelationshipName:包含在該集合內的Relationship類型的名稱。添加到該類型的方法CollectionValue(Guiditemid,stringrelationshipSchemaName,stringrelationshipName):允許在構造時間設定所有屬性值的構造器。RuleValue源自ArgumentValue并被用于表示要被作為LeafCondition內的參數(shù)評價和使用的某個RuleLogic。當RuleValue用作任何面向集的條件的參數(shù)時,期望指向AutoList(否則應生成異常)。當RuleValue用作為任何內建的標量條件("=","<"等等)的參數(shù)使用時,它可以指向任何RuleLogic。RuleValue也可以返回布爾邏輯值。源自ArgumentValue包括在該類型內的屬性Ruleld:規(guī)則項的Guid項id添加到該類型的方法參RuleValue(Guidruleltemld):允許在構造時間設定所有屬性值的構造器。OpathValue允許將OPath表達式作為LeafCondition的LHS或RHS來使用。源自ArgumentValue添加到該類型的屬性OPath:OPath表達式參DisplayName:在詢問構建器或其他UI中顯示的名稱。添加到該類型的方法OpathValue(stringexp,stringdisplayName):允許在構造日寸間設定所有屬性值的構造器。圖16H示出本發(fā)明的Functionlnfo嵌套類型及其導出類型。Functionlnfo是用于表示要被稱為Actions的方法上的信息的基類型。Functionlnfo從不在其自身上被使用;而是使用其孩子InstanceFunctionlnfo禾BStaticFunctionInfo。源自:(OS文件系統(tǒng)).NestedType添加到該類型的屬性.-參MemberName:要被調用的方法的名稱或其"set—"方法應該被調用的屬性的名稱。添加到該類型的方法參Functionlnfo(stringmemberName):允許在構造時間設定成員的名稱的構造器。internalvirtalvoidExecute(ItemContextcontext,List<ArgumentValue>arguments):在孩子類中該方法被忽略,以執(zhí)行有名的方法調用。InstanceFimctionlnfo源自Functionlnfo并被用于表示在特定項實例上的方法調用。源自Functionlnfo添加到該類型的屬性參Targetltemld:應在其上調用方法的項的項id。注意,當按照將方法調用編碼成ActionResult元素時,如果該方法調用應該在輸入項上作出,你將使Targetltemld為空。如果該調用應該在某一特定項上做出,該項的ID應該在這里設定。添加到該類型的方法-參InstanceFimctionlnfo(stringmemberName):允i午在f勾造日寸l司設定成員的名稱的構造器。參InstanceFimctionlnfo(stringmemberName,Guidtargetltemld):允i午在構造時間設定成員的名稱和作為目標的項id的構造器。參internalvoidExecute(ItemContextcontext,List<ArgumentValue>arguments):執(zhí)行由InstanceFimctionlnfo數(shù)據(jù)規(guī)定的方法。注意,context.Update()在結束處不被調用;調用者關心如果方法調用對內存中的任何OS文件系統(tǒng)數(shù)據(jù)有副作用,哪一個重要。StaticFimctionlnfo源自Functionlnfo并被用于表示靜態(tài)方法調用。源自Functionlnfo添加到該類型的屬性AssemblyName:在其中可以發(fā)現(xiàn)方法的匯編組件(assembly)的名稱。參TypeName:在其上定義該方法的匯編組件內的類型的名稱。添加到該類型的方法StaticFunctionlnfo(stringassemblyName,stringtypeName,stringmemberName):允許在構造日寸間設定AssemblyName、TypeName禾口MemberName的構造器。InternalvoidExecute(ItemContextcontext,List<ArgumentValue>arguments):執(zhí)行由該StaticFunctionlnfo指定的方法。注意,context.Update()不在結束處被調用;調用者關心如果該方法調用對內存中的任何OS文件系統(tǒng)數(shù)據(jù)有副作用,哪一個重要。許多non-FileSystem(非文件系統(tǒng))類型是OS文件系統(tǒng)規(guī)則API的一部分。Rulelnput被用于定義和提交輸入給平臺。提交的輸入將觸發(fā)依附于事件發(fā)生的范圍的Rules的評價。為了提交輸入,使用存在于DecisionPoint類型上的提交方法。該類型的屬性參lnt64Id:Rulelnput的id。Rulelnput被成功提交后,將由平臺分配給它Id。*GuidEventDataltemld:在其上發(fā)生事件的WinFS項的itemid。該類型的方法無。RulelnputCollection源自System.Collections.CollectionBase。它允許多個Rulelnput同時提交。生成的RuleSetEvaluation項包含來自該批內所有提交的事件的組合結果。提交空的RulelnputCollection是合法的。返回的Guid將被設定為Guid.Empty。該類型的屬性無。該類型的方法參RuleI叩utthis[intindex]:允許使用數(shù)組索引存取器來訪問包含的Rulelnputs的索引器。參intAdd(Rulel叩utvalue):將指定的Rulel叩ut添加到集合。如果Rulelnput已經(jīng)在該集合內,則刨除InvalidOperationException。參boolContains(Rulelnputvalue):如果集合包括給定的Rulelnput,則返回為真,否則為假。參intIndexOf(Rulelnputvalue):返回集合中的給定的Rulelnput的索弓I。參voidInsert(intindex,Rulelnputvalue):在指定的索引處,將值插入集合內。參voidRemove(Rulelnputvalue):從集合中移除給定的文件系統(tǒng)規(guī)則事件。RuleException。當這些API中的一個失敗時,拋出異常。當應用為標準情況描述的"正常的"異常時,或者是系統(tǒng)異常就是想要拋出的異常時,使用該標準異常。例如,ArgumentNulIExceptionArgumentOutOfRangeExceptionInvalidOperationException如果該密匙(key)與集合內的條目不匹配,OS文件系統(tǒng)規(guī)則API索引器(C#"this,,屬性)拋出ArgumentOutOfRangeException。索引器返回合法的對象或拋出異常,并且不以null(空值)返回,如System.Collections.Hashtable所做的那樣。發(fā)出OS文件系統(tǒng)規(guī)則或SQL客戶端檢測到的其他錯誤作為RuleException。樣本代碼__1using(工temContextic){2FoldermyFolder=...34//createasimpleQueryFilterforDocumentsstartingwithF5QueryFilterqf=newQueryFilter(typeof(Document),newLogicStatement(6newLeafCondition("like","Title","F%"),7newBooleanResult(true)))8myFolder.OutFolderMeraberRelationships.Add(new<table>tableseeoriginaldocumentpage44</column></row><table><table>tableseeoriginaldocumentpage45</column></row><table>LeafConditions內的OperatorDiscovery。開發(fā)者能發(fā)現(xiàn)支持哪些算符的一種方法是具有所有合法的算符的枚舉(enum)。其益處在于開發(fā)者能快速地發(fā)現(xiàn)所有合法的算符。錯誤拼寫的算符的問題也可以被避免。另一種方法是為每個算符定義唯一的類,例如,BetweenOperator(value1,value2,value3),GreaterThanOperator(value1,value2)等等。在另一種優(yōu)化中,QueryFilters和AutoLists在其邏輯語句中可只有布爾結果。API可通過創(chuàng)建特定的BooleanStatement類型,確保人們在QueryFilters和AutoLists內只有布爾結果,與用于AppRules的語句分離。下面是對終端用戶的詢問和過濾器、以及用于執(zhí)行它們的API機制的描述。當代表終端用戶構造詢問時,或者當構造終端用戶其后會看見、使用并推論的詢問時,構建對象QueryFilter禾QAutoList。.由項的范圍和運用于那些項上的QueryFilter來定義詢問。詢問的結果是項的集,實際上,終端用戶在詢問和實際的List之間看到很少的不同。因此,該用戶對"詢問"的概念指數(shù)據(jù)的特別的動態(tài)過濾的過程,當被持續(xù)時,就成為AutoList,它是其內容根據(jù)要求被計算的列表。術語List和AutoList互換地使用。終端用戶使用兩種視覺機制來構造詢問。第一,導航UI,通過它,終端用戶能通過執(zhí)行以下的導航任務中的任何一個來運行詢問打開頁面以顯示List或AutoLis的內容、按照某一屬性或多個屬性來堆?;蚍诸惲斜?或自動列表)內的項、以及"引入"(dirillinginto)某一棧。第二,提供給終端用戶的豐富的詢問UI能通過使用集成在列表察看器頁面中的詢問構建器UI,方便合成更為豐富的詢問過濾器。詢問構造不是一次性的過程,而是遞增的合成的過程。例如,合成的堆棧允許用戶按照標題堆積文檔,然后引入(drillinto)—個標題內。然后按照日期堆積剩余的文檔,并且他或她引入一年。過濾器的合成。用戶定義過濾器,如"ModifiedLastMonth"(上個月修改的)作為具有在([Today〗至30天)和([Today]至60天)之間的ModifiedDate(修改日期)的文檔??梢詣?chuàng)建它來運行并且可能存儲在詢問構建器UI中。AutoList的合成。用戶按照"所有的項"的范圍中具有關鍵詞"Important"(重要的)的所有文檔來定義"MylmportantDocuments"(我的重要文檔),并將其存儲為自動列表。用戶通過打開視圖,導航到MylmportantDocuments而啟動"MylmportantDocuments"作為用于新的自動列表的輸入范圍。用戶使用QueryBuildUI在"MylmportantDocuments"上使用"ModifiedLastMonth"詢問過濾器,然后將產(chǎn)生的自動列表存儲為"ImportantDocumentsUpdatedLastMonth"(上個月更新的重要文檔)。多語句過濾器。用戶使用詢問構建UI來創(chuàng)建過濾器,如'musictypeISjazz'(音樂類型為爵士樂)。用戶添加額外的過濾器"OR"'musicartistISJoniMitchell'(音樂家為JoniMitchell)。該用戶添加額外的過濾器"AND"'musicalbumtitledoesNOTCONTAIN"OriginalSoundtrack",(音樂集標題不包含"原聲道")。隨著時間流逝,詢問可被存為AutoList,被進一步檢索和編輯。詢問中使用的過濾器也可被用于終端用戶編程的其他方面一一用于定義豐富的動作和豐富的事件。最后,AutoList和過濾器自身可被詢問(例如,為我找到使用"MyDocuments"(我的文檔)列表的AutoList,因為我正準備刪除該列表)。用戶查看的詢問結果。顯示信息落入兩種類別。詢問元數(shù)據(jù)。顯示所選擇的項的特定的終端用戶屬性。終端用戶能向作為詢問結果的一部分顯示給用戶的列的列表中添加或從中移除特定的屬性。這些顯示細節(jié)統(tǒng)稱為視圖定義(ViewDefinition)。相同的詢問或AutoList在概念上對每個應用程序和/或每個用戶來說,可能有不同的查看定義。應用程序元數(shù)據(jù)。應用程序也可以將應用程序特定的數(shù)據(jù)與ViewDefinition相關聯(lián),以捕獲用于應用程序的上下文的元數(shù)據(jù)(例如,查看AutoList時的背景顏色)。為了在豐富的導航UI中顯示AutoUst,需要一種靈活的且功能強大的光標模塊。詢問或AutoList的顯示元素對詢問定義沒有影響(詢問定義是對詢問的內容的邏輯的和說明性的定義)。下面是終端用戶的情況。在第一種情況下,當用戶過濾直到他們關心的項目,將其存儲為AutoList,并隨后返回到該集時,保存和重新使用提供的功能。本地視圖持久性允許用戶返回其中在AutoList被保存時提供相同的視圖的存儲的AutoList。提供了一種跨應用程序的用于詢問的持久性的公共平臺,從而選擇查看在應用程序內定義的"PeopleI'mmeetingwith"(我正與之會談的人)AutoList的第二用戶能夠瀏覽這個詢問并看到誰將出現(xiàn)在此會談上。一般來說,該用戶能夠看見并瀏覽有許多不同的應用程序創(chuàng)建的AutoList。在第二種情況下,提供了詢問合成,因此第二用戶能夠看見對將要出現(xiàn)在該會談上的客戶的所有報告。第二用戶創(chuàng)建詢問以發(fā)現(xiàn)由在"PeopleI'mmeetingwith"AutoList內的人所創(chuàng)作的所有文檔。為了分布AutoList,第二用戶創(chuàng)建一AutoList用于發(fā)現(xiàn)重要的客戶報告(基于在他的機器上的項)并希望他的團隊使用。第二用戶為其團隊內的每個人分配該報告,以存儲為AutoList,并針對他們各自的機器上的數(shù)據(jù)而在他們自己的機器上運行。為了分布視圖定義,當?shù)谌脩舸蜷_從第二用戶存儲的AutoList時,她得到帶由第二用戶創(chuàng)建的過濾器圖標、分類順序和分組的相同的列。在第三種情況下,可以共享本地詢問。第三用戶有她希望第二用戶看到的一組項。她共享對該組項的存儲的AutoList(在她自己的機器上)的訪問。當?shù)诙脩艉偷谌脩舸蜷_這個AutoList時(除非是安全限制),他們看到相同的該組項。在第三用戶從第二用戶那里得到指向一應用程序的AutoList的情況下,可提供一種得體的失敗(gracefulfailure)。第三用戶沒有這個應用程序。因此,AutoList改為在AllItems(所有的項)內打開。合成多個QueryFilter禾BAutoList以構造新的QueryFilter和AutoList是可能的。使用AutoList作為詢問的范圍也是可能的?,F(xiàn)在參考圖17,示出了依照本發(fā)明的規(guī)則引擎1700。揭示的規(guī)則平臺包含接收輸入并評價適當?shù)囊?guī)則的規(guī)則引擎1700。為了調用規(guī)則引擎1700,應用程序使用規(guī)則API(也叫做規(guī)則評價API)通過判定點來提交數(shù)據(jù)。該API提交數(shù)據(jù)到規(guī)則評價引擎,并通過API返回結果。執(zhí)行模型是同步的并且返回的結果是簡單的結構化的數(shù)據(jù)。該規(guī)則引擎1700使用詢問處理器評價規(guī)則,并確定運行哪些規(guī)則,針對輸入評價規(guī)則,然后返回結果。除作為用于開發(fā)者的存儲器平臺以外,用于文件系統(tǒng)的該EUP模型和抽象是整個平臺的重要部分?,F(xiàn)在參考圖18,示出了在本發(fā)明的規(guī)則架構內表示豐富程度的尺度的框圖1800。提供的能力落入三個一般的類別內行為(Behavior)、結構(Structure)和控制流(ControlFlow)。有關Behavior,為兩種基本類型的客戶化使用終端用戶規(guī)則定義數(shù)據(jù)(存儲的詢問)的導出規(guī)則,和定義行為的活動規(guī)則。導出規(guī)則定義數(shù)據(jù)上的豐富詢問,并且定義虛擬的數(shù)據(jù)集合("導出的項集"),這些集合象實際的文件系統(tǒng)集合一樣行為,用于詢問和規(guī)則的目的。例如,終端用戶可能定義一組叫做""的聯(lián)系人作為導出的項集。以后,用戶可詢問電子郵件以發(fā)現(xiàn)由"PeopleWhoLivelnBellevue"發(fā)出所有郵件。終端用戶使用活動規(guī)則來定義在明確定義的判定點處的應用程序的行為,在那里應用程序允許終端用戶用邏輯來擴充應用程序流。存在兩種類型的判定點。同步判定點是應用程序到達判定點并發(fā)起調用終端用戶規(guī)則的同步事件的地方。規(guī)則評價API確定一組結果。然后,應用程序根據(jù)結果而動作,可能改變其行為。異步判定點是應用程序到達判定點,發(fā)起異步事件并以"引發(fā)后忘記"(fireandforget)的方式繼續(xù)進行處理的地方。規(guī)則平臺評價任何適當?shù)囊?guī)則,然后導致任何相關的結果作用于其上。關于圖18的結構塊,可在文件系統(tǒng)數(shù)據(jù)模型的所有方面寫規(guī)則,以包括項類型和項類型的以下方面作為簡單嵌套元素的屬性、作為嵌套元素的多集的屬性、來自項的關系的端點、以及項上的擴展。也可以為關系類型以及其中的以下方面寫規(guī)則作為簡單嵌套元素的屬性、和作為嵌套元素的多集的屬性。關于擴展,這些行為實際上類似項類型。關于可用函數(shù)(AvailableFunctions)塊,規(guī)則內的條件和動作與函數(shù)調用類似。最常見的函數(shù)是內建的算符,如等等。條件內支持任何T-SQL(Transact-StructuredQueryLanguage)(處理-結構查詢語言)可調用的函數(shù),并且在動作內支持任何客戶端可調用的語言。支持的函數(shù)是原語數(shù)據(jù)類型上的SQL算符,內建的SQL函數(shù)、用于定量ANY—IN和ALL—IN的集合算符、用于條件的存儲側的匯編組件中定義的CLR方法(如果注冊為UDF)、以及用于動作的客戶端匯編組件中定義的CLR方法。關于合成塊,除文件系統(tǒng)模式中定義的"元素"夕卜,文件系統(tǒng)規(guī)則代數(shù)支持合成。RuleSetAttachment是第一類對象,因為它可用于條件,或者作為另一個附件的范圍。合成的另一種形式涉及使用強類型的DerivedRules作為函數(shù)??紤],例如,定義一個或多個調用的"ISInteresting",它對Document項起作用。那么,可以創(chuàng)建使用"Islnteresting"作為條件函數(shù)的規(guī)則。關于控制流塊,提供控制流給使用沖突解決策略的終端用戶。因為這些是復雜的代碼段,因此應用程序開發(fā)者構造它們。終端用戶只從可用的策略中進行選擇。額外的控制流可在規(guī)則平臺外程序地實現(xiàn)。既然可與規(guī)則API—起來使用文件系統(tǒng)規(guī)則架構,開發(fā)者能使用標準的C弁控制流構造。規(guī)則豐富程度現(xiàn)在參考圖19,示出了表示本發(fā)明的規(guī)則架構的輸入的示意圖1900。涉及的是條件和動作作為輸入作用于數(shù)據(jù)。輸入的豐富程度沿著兩個維度輸入的位置(例如,在存儲器內或不在存儲器內),以及輸入的基數(shù)(單個輸入或者輸入集)。標準的情況使用以下的組合,顯示在下面的表中。<table>tableseeoriginaldocumentpage50</column></row><table>在該例子中,輸入是存儲器內的消息(Message)項。除文件系統(tǒng)項以外,為Relationship和XML作為I叩ut提交給規(guī)則引擎提供支持。規(guī)則本身被標量值參數(shù)化,要求在規(guī)則評價之前提供變量。這些變量叫做規(guī)則參數(shù)。條件和動作的每一個有操作數(shù)。參考下面的例子。scalar—value=scalar—value〃兩個標量scalar_value=COUNT(set_value)〃聚集函數(shù)將集變換成標量scalar—valueINset—value〃標量禾口集set—valueALL—INset—value〃兩個集依據(jù)條件函數(shù),每一個操作數(shù)是標量表達式或是集。標量表達式是其值為標量類型的表達式。支持以下的標量表達式常量(例如l、"Hello");輸入的屬性,包括不是多集的項類型或者關系類型的屬性(例如,[Document].Title),并且如果該屬性具有嵌套屬性,這些也是被支持的;以及集上的聚集函數(shù)。也可以使用規(guī)則參數(shù)(以上所述)。基于集的聚集函數(shù)與項集、關系和嵌套元素的多集(例如,Onmf、M/W、M4Z、S"M和^FG)相關。^2ML是提供其變量集內成員數(shù)量的計數(shù)的聚集函數(shù)。例子ComWf</^m&P>,計數(shù)ItemSet中的項數(shù)。Com"/(^fewage.ie")Zen^0是提供源為該Message的Recipient關系的數(shù)量的計數(shù)的聚集函數(shù)。Co,ffMes^flge.OWg/wa/ZM/verj^ccoi^.^cWrmej1J是提供Eaddresses嵌套元素集中地址數(shù)量的計數(shù)的聚集函數(shù)。支持與Opath相同的聚集函數(shù)的集,它是跨整個文件系統(tǒng)平臺的相同級別的可表達能力。模型中支持開發(fā)者定義的聚集函數(shù)。可擴展性也可被實現(xiàn)。類似ANY_IN的一些算符有作為操作數(shù)的集。集可被構造成標準集合或導出的項集。標準的文件系統(tǒng)集合包括關系和用于該關系的源項(例如,GroupMembership和MyFriends)。作為重要的特例,輸入項是關系源(例如Message-Recipient)或者關系目標(例如,Message.AttachmentOf)。作為輸入項內的嵌套元素的多集,以及作為在輸入項上的擴展集。通過將一個導出規(guī)則或多個導出規(guī)則與輸入項范圍相關聯(lián),來定義導出的項集。這種關聯(lián)以RuleSetAttachment來記錄。例如,導出規(guī)則FWewd(yPewow依附于M;;awtoc"作為其輸入項范圍,來定義導出的項集7l^fWe"&。導出項集可完全限制于輸入范圍或者只是是部分限制。完全限制的導出的項集的內容可以被枚舉。部分限制的導出的項集要求提供一些或全部輸入用于評價。每個導出規(guī)則也直接是部分限制的導出的項集。需要輸入項以便被評價。例如,尸,A"^y/^^cm是部分限制的項集合。這個導出可在條件內稱為要在輸入項上運行的過濾函數(shù)。僅部分定義規(guī)則的輸入的RuleSetAttachment也定義部分限制的項集。例如,"Peo;/e—5y—Loom'ow"要求Contact(聯(lián)系人)輸入項和location(位置)作為輸入。如果它依附于^^Fn'em^作為其輸入范圍,它就變成部分限制的導出的項集Fr/e"A一/"(由^y尸r/e"ds輸入范圍和導出的項集之間的RuleSetAttachment表示限制(binding))。為了評價現(xiàn)在的部分限制的導出的項集"&^A—,提供location(位置)。條件的豐富程度是由對該條件的輸入、以及可用于該條件的函數(shù)來定義的。對條件的輸入先前已經(jīng)描述過了。條件內允許的函數(shù)如下具有標量表達式變量的標準比較條件,比較條件包括比較算符、o々、〈、《、〉BETWEEN和IN,以及支持LIKE禾口CONTAINS的串;與輸入類型相關的存儲側成員函數(shù),如果它們返回SqlBooIean;采用輸入項作為參數(shù)的存儲側靜態(tài)函數(shù),如果它們返回Sq舊oolean;以及基于集的條件。對于如先前所述的ItemSets的靈活定義,支持下面基于集的條件。相關的項集的一個重要類別是由以輸入項作為源或作為目標的關系定義的那些條件。部分限制的導出的項集分別被考慮。</^nSeP><rwg"/femSef>。如果/fem5W內的任何項也在rarg"/如激eif麵觀felJfS^Wh項iJltei^a/gJE^6MS^/購Mjl^Bs為獬果鵬口可選子錄,蘿^ft—SM^B^稱S他御情況項也魁遂歸的真部鼓艱制怖&極艱集表翁改e!Z^磁&樂^^,i的;正是項集在該條件內的使用,才提供了完整的輸入限制)??梢允褂迷擃悧l件,針對與輸入相關的項集內的項的屬性,來表示豐富的條件。例如,/5^\^/"^'6^爿&&^//;//^"0"。該類條件也可以用于針對文件系統(tǒng)內的其他項集,表示豐富的"_)0111"條件。例如,/5^\^/^^>&^關于第二種情況,虛擬目標關系集,當輸入是關系(不是項)時,依然可以將基于集的條件用于由針對關系工作的規(guī)則所定義的目標集。假定采用^fe^age.iec^z'ew關系作為輸入并確定電子郵件地址是否來自Company域的從RuleConstraint可以知道允許的結果列表。這些結果的每一個有名稱和已知的類型化的變量列表。終端用戶為每個規(guī)則挑選一組結果。每個結果由名稱和變量綁定來指定。這些變量可被限制于任何標量表達式。此外,終端用戶能定義數(shù)據(jù)驅動的結果集,如下例如Fa^a4C7/7ec^/e"〃WAfy^We/M^Se"dAfo//「.J例如FOi^4C7/Msg/;iBoxMeMagw—B7—SW乂ecff",w/e,'J>Msg.5W^P"'oW(y〃jFOREACH構造內的Result是為這個規(guī)則的任何允許類型的結果。提供給這些結果的標量變量包括由FOREACH子句指定的項的屬性,以及規(guī)則輸入的屬性。規(guī)則共同定義用戶想要的邏輯功能。下面是關于怎樣評價規(guī)則、沖突解決如何給終端用戶控制流構造的可選方案的描述。規(guī)則執(zhí)行使用下面的用于某一特定輸入項的邏輯語句評價所有規(guī)則的條件,并且對于條件為真的那些規(guī)則跨結果解決沖突。如果有一組輸入,評價的結果簡單地是針對該輸入范圍內的每個個體的項/關系的規(guī)則評價的結果的聯(lián)合。當針對一規(guī)則提交多個項時,沒有特殊的語義。邏輯上,每個項被獨立評價。來自不同輸入的結果從不與其他結果沖突。沖突解決策略提供規(guī)則的表達能力的豐富性。支持不同的沖突策略。終端用戶定義的策略方便終端用戶用停止一處理選項對規(guī)則的優(yōu)先級賦值。終端用戶給每個規(guī)則分配唯一的優(yōu)先級。如果也設定了停止一處理標記,這指示如果該規(guī)則的條件評價為真,那么所有具有較低優(yōu)先級的規(guī)則都應被忽略。開發(fā)者定義的策略包括內部結果優(yōu)先級賦值的能力,其中開發(fā)者可以為每個結果類型指定唯一的優(yōu)先級。在可能的結果中,只有最高優(yōu)先級的結果被保留。此外,開發(fā)者定義的策略方便基于內部結果聚集的沖突解決,其中開發(fā)者可以指定在相同結果類型的一組結果上起作用并的聚集函數(shù),并聚集它們。使用沖突解決,支持下面的規(guī)則行為規(guī)則語句通過伴隨停止一處理選項,對每個規(guī)則分配唯一的終端用戶優(yōu)先級,象嵌套的IF-THENELSE(IFTHENELSE(...))表達式一樣行為;規(guī)則語句可通過使用沒有停止一處理選項的規(guī)則優(yōu)先級,象具有失敗跨越選擇語句(fall-throughacrosscasestatement)的〇++開關語句一樣行為;規(guī)則語句可通過使用適當?shù)膬炔拷Y果沖突解決策略,提供自由復制的聯(lián)合和交集語義;規(guī)則語句可通過正確的內部結果沖突解決策略,提供基于投票的語義(至少三個規(guī)則同意該結果);以及規(guī)則語句可通過內部結果的優(yōu)先級賦值提供豐富的跨結果語義。通過文件系統(tǒng)商業(yè)邏輯,能在條件和動作內提供的值上添加約束。使用LeafCondition嵌套元素類型可以表示Condition(條件)。使用StaticFunctionlnfo禾口InstanceFunctionlnfo可以表示Function(函數(shù))。變量可以是ConstantValue、PropertyValue、CollectionValue、RuleSetAttachmentValue中的一個。使用Action嵌套的元素類型可以表示Result(結果)。Action元素內的函數(shù)和變量與以上對條件描述的那些是相同的。一個實現(xiàn)中,存儲器內支持多集。另一個實現(xiàn)中,LeafCondition和Action最多支持5個變量?,F(xiàn)在參考圖20,示出適于執(zhí)行揭示的結構的計算機的框圖。為了為本發(fā)明的各方面提供附加的上下文,圖20和下面的討論意圖提供了對適合的計算環(huán)境2000的簡要的、一般的描述,其中可以實現(xiàn)本發(fā)明的各方面。盡管在上面的可在一臺和多臺計算機上運行的計算機可執(zhí)行的指令的一般上下文中已經(jīng)描述了本發(fā)明,本領域的技術人員應該理解,本發(fā)明也可以結合其他的程序模塊和/或作為硬件和軟件的結合來實現(xiàn)。一般來說,程序模塊包括例程、程序、組件、數(shù)據(jù)結構等等,它們執(zhí)行特殊的任務或實現(xiàn)特殊的抽象數(shù)據(jù)類型。而且,本領域的技術人員認識到,說明性的方法可以用其他計算機系統(tǒng)配置實施,包括單處理器或微處理器計算機系統(tǒng)、微型計算機、大型計算機、個人計算機、手提計算設備、就微處理器或可編程的消費者電子設備等等,其中每一種可以運轉地耦合到一個或多個相關的設備。本發(fā)明的說明的方面也可以在分布式計算環(huán)境中實施,其中通過通信網(wǎng)絡連接的遠端處理設備執(zhí)行特定的任務。在分布式計算機環(huán)境中,程序模塊可以位于本地和遠端存儲器存儲設備中。計算機一般包括各種計算機可讀的介質。計算機可讀的介質可以是任何可由計算機可讀介質可以是由計算機訪問的任何可用介質并包括易失的和非易失的介質、可移動的和不可移動的介質。作為例子,而非限制,計算機可讀介質可以包括計算機存儲介質和通信介質。計算機存儲介質包括易失的和非易失的介質、可移動的和不可移動的介質,這些介質以用于信息存儲的任何方法或技術,比如計算機可讀指令、數(shù)據(jù)結構、程序模塊或其它數(shù)據(jù)來實現(xiàn)。計算機存儲介質包括但不限于,RAM、ROM、EEPROM、閃存或其它存儲技術、CDROM、數(shù)字化視頻光盤(DVD)或其它的光盤存儲器、磁性磁帶、磁性錄音帶、磁性磁盤存儲器或其它的磁性存儲器設備,或可用于存儲需要的信息并可由計算機存取的任何其它介質。通信介質一般包括計算機可讀指令、數(shù)據(jù)結構、程序模塊或在一個調制數(shù)據(jù)信號比如載波或其它傳輸裝置中的其它數(shù)據(jù)并且包括任何信息傳遞介質。術語"調制數(shù)據(jù)信號"意思是具有一個或多個它的特征集或以信號中編碼信息的方式變換的信號。作為例子,而非限制,通信介質包括比如有線網(wǎng)絡或直接有線連接的有線介質和比如聲頻、RF、紅外線和其它無線介質。以上的任何組合也應該包括在計算機可讀介質的范圍內?,F(xiàn)在再次參考圖20,示出了用于實現(xiàn)本發(fā)明的各方面的示例性的環(huán)境2000,包括計算機2002,計算機2002包括處理單元2004、系統(tǒng)內存2006和系統(tǒng)總線2008。系統(tǒng)總線2008將系統(tǒng)組件耦合到處理單元2004,系統(tǒng)組件包括但不限于系統(tǒng)內存2006。處理單元2004可以是任何商業(yè)上可用的處理器。雙微處理器和其他多處理器結構也可以作為處理單元2004使用。系統(tǒng)總線2008可以是使用任何一種商業(yè)上可用的總線結構,進一步連接到內存總線(用或不用內存控制器)、外圍總線和局部總線的許多類型的總線結構中的任何一種。系統(tǒng)內存2006包括只讀存儲器(ROM)2010和隨機存取存儲器(RAM)2012?;据斎?輸出系統(tǒng)(BIOS)—般存儲在非易失的內存2010內,如ROM、EPROM、EEPROM,BIOS包括如啟動時幫助在計算機2002內的元件間傳輸信息的例程。RAM2012也包括告訴RAM,如用于緩存數(shù)據(jù)的靜態(tài)RAM。計算機2002進一步包括內部的應聘驅動器(HDD)2014(例如,EIDE、SATA),內部的硬盤驅動器2014也被配置用于在適合的底盤(未顯示)、磁性軟盤驅動器(FDD)2016(例如,可讀寫的可移動的磁盤2018)和光盤驅動器2020(例如,可讀CD-ROM盤2022或者可讀寫的其他高容量的光學介質,如DVD)的外部使用。硬盤驅動器2014、磁盤驅動器2016和光盤驅動器2020可以分別通過硬盤驅動器接口2024、磁盤驅動器接口2026和光盤驅動器接口2028連接到系統(tǒng)總線2008。用于外部驅動實現(xiàn)的接口2024至少包括一個或兩個通用串行總線(USB)和IEEE1304接口技術。驅動器及其相關聯(lián)的計算機可讀的介質提供數(shù)據(jù)、數(shù)據(jù)結構、計算機可讀的指令等等的非易失的的存儲。對計算機2002說,驅動器和介質容納任何適當?shù)臄?shù)字格式的任何數(shù)據(jù)的存儲。盡管計算機可讀的介質的描述涉及HDD、可移動的磁性磁盤和可移動的光學介質,如CD和DVD,本領域的技術人員應該認識到,計算機可讀的其他類型的介質,如壓縮驅動器、磁性磁帶、閃存卡、錄音帶等等也可以用于示例性的操作環(huán)境,并且進一步的,任何這樣的介質可包含用于執(zhí)行本發(fā)明的方法的計算機可執(zhí)行的指令。許多程序模塊可以存儲在驅動器和RAM2012中,包括操作系統(tǒng)2030、一個或多個應用程序2032、其他程序模塊2034以及程序數(shù)據(jù)2036。操作系統(tǒng)、應用程序、模塊和/或數(shù)據(jù)的全部或一部分也可以緩存在RAM2012中。應該認識到,本發(fā)明可用各種商業(yè)上可用的操作系統(tǒng)或操作系統(tǒng)的結合來實現(xiàn)。用戶可以通過一個或多個有線/無線輸入設備,如鍵盤2038和定點設備,如鼠標2040向計算機2002輸入命令和信息。其它輸入設備(未顯示)可包括話筒、IR遠端控制、操作桿、游戲墊、觸針筆、觸摸屏等。這些和其它輸入設備通常通過耦合至系統(tǒng)總線2008的輸入設備接口2042連接至處理單元2004,但是也可以通過其它接口相連,如并行端口、IEEE1394串行端口、游戲端口或USB端口、IR接口等等。監(jiān)視器2044或其它類型的顯示設備也通過接口,如視頻適配器2046連接至系統(tǒng)總線2008。除監(jiān)視器2044以外,計算機一般包括其他外圍輸出設備(未顯示),如話筒、打印機等等。計算機2002可工作在使用通過有線和/或無線連接到如遠程計算機2048的一個或多個遠程計算機的邏輯連接的網(wǎng)絡化環(huán)境內。盡管,為了簡要的目的,只示出了內存存儲設備2050,然而遠程計算機2048可以是工作站、服務器計算機、路由器、個人計算機、手提計算機、基于微處理器的娛樂設備、對等設備或其他公共網(wǎng)絡節(jié)點,并且一般包括與計算機2002相關的許多或所有上述元件。所述的邏輯連接包括到局域網(wǎng)(LAN)2052和/或較大的網(wǎng)絡的有線/無線連接,例如,廣域網(wǎng)(WAN)2054。這樣的LAN和WAN網(wǎng)絡環(huán)境常見于辦公室、公司,并且方便了企業(yè)范圍的計算機網(wǎng)絡,如內聯(lián)網(wǎng),所有這些可以連接到全球通信網(wǎng)絡,如因特網(wǎng)。當用于LAN網(wǎng)絡環(huán)境時,計算機2002通過有線和/或無線通信接口或適配器2056連接到局域網(wǎng)2052。適配器2056方便了到LAN2052的有線或無線通信,它也可以包括部屬在其中用于與無線適配器2056進行通信的無線接入點。當用于WAN網(wǎng)絡環(huán)境時,計算機2002包括調制解調器2058,或連接到LAN上的通信服務器,或者具有其他用于建立WAN2054,如通過因特網(wǎng)的通信的其他裝置。調制解調器2058可能是內置或外置的以及有線的或無線的,它通過串行端口接口2042連接到系統(tǒng)總線2008。在網(wǎng)絡化環(huán)境內,所述與個人計算機2002相關的程序模塊或其中的一部分可存儲在遠程內存/存儲設備2050內。應該認識到,所顯示的網(wǎng)絡連接是示例性的,在計算機間建立連接的其他裝置也可以使用。計算機2002適于與操作性地布置在無線通信中的任何無線設備或實體通信,例如,打印機、掃描儀、桌面和/或手提計算機、手提數(shù)據(jù)助理、連接微型、與無線探測的標記相關的任何一種設備或位置(例如,公用電話亭、新的臺子、休息室等),以及電話。這至少包括Wi-Fi和藍牙TM無線技術。因此,這種連接可以是預先定義的結構,如傳統(tǒng)的網(wǎng)絡或簡單的是在至少兩個設備之間的獨特的通信。Wi-Fi,或無線保真,允許從家里的睡椅、旅館的床上或者工作時的會議間,在沒有線的情況下連接到因特網(wǎng)。Wi-Fi時無線技術,類似使這種設備,例如,計算機發(fā)送和接收室內外的數(shù)據(jù)的小區(qū)電話;在基站范圍內的任何地方。Wi-Fi網(wǎng)絡使用叫做IEEE802.il(a、b、c等等)的無線電技術來提供安全的、可靠的、快速的無線連接。Wi-Fi網(wǎng)絡可以用于彼此連接計算機到因特網(wǎng)、以及有線網(wǎng)絡(它使用IEEE802.3或以太網(wǎng))。Wi-Fi網(wǎng)絡工作在未經(jīng)當局允許的2.4和5GHZ無線電頻段,在llMbps(802.Ua)或54Mbps(802.lib)數(shù)據(jù)速率或者帶有包含兩種波段(雙波段)的產(chǎn)品,因此網(wǎng)絡可以提供類似用于許多辦公室的基本的10BaseT有線以太網(wǎng)網(wǎng)絡的實時世界的性能。現(xiàn)在參考圖21,示出了依照本發(fā)明的示例性的計算環(huán)境2100的示意性的框圖。系統(tǒng)2100包括一個或多個客戶2102??蛻?102可以是硬件和/或軟件(例如,線程、進程、計算設備)。例如,客戶2102可通過使用本發(fā)明來存儲cookie和/或相關的文本信息。系統(tǒng)2100也包括一個或多個服務器2104。服務器2104可以是硬件和/或軟件(例如,線程、進程、計算設備)。例如,服務器2104可通過使用本發(fā)明來存儲線程,以執(zhí)行轉換。客戶2102和服務器2104之間的一個可能的通信使以適合于在兩個或多個計算機進程間傳輸?shù)臄?shù)據(jù)分組的形式。例如,該數(shù)據(jù)分組包括cookie和/或相關的文本信息。系統(tǒng)2100包括通信框架2106(例如,全球通信網(wǎng)絡,如因特網(wǎng)),它可被用于方便客戶2102和服務器2104之間的通信。通過有線(包括光纖)和/或無線技術可以方便通信??蛻?102可操作地連接到一個或多個客戶數(shù)據(jù)存儲器2108,該存儲器可被用于存儲本地于客戶2102信息(例如cookie)和/或相關的文本信息。類似地,服務器2104可操作地連接到一個或多個服務器數(shù)據(jù)存儲器2110,該存儲器可被用于存儲本地于服務器2104的信息。以上討論的東西包括本發(fā)明的例子。當然,不可能描述為了描述本發(fā)明的目的的組件或方法的可能想到的每個組合,但本領域的技術人員可以理解,本發(fā)明的許多進一步的組合和改變是可能的。因此,本發(fā)明意欲包括落入附加的權利要求的精神和范圍內的所有這樣的改變、修改和變化。而且,對于詳細描述或權利要求中使用的術語"包括"的范圍,這種術語意欲包括類似于術語"包含",當"包含"在權利要求中作為轉換的單詞使用時的方式。權利要求1.一種方便了數(shù)據(jù)管理的系統(tǒng),其特征在于,包括監(jiān)視組件,它跟蹤與數(shù)據(jù)相關的項;和規(guī)則組件,它使用與被跟蹤的項相關的元數(shù)據(jù),以提供對項的子集的自動處理。2.如權利要求l所述的系統(tǒng),其特征在于,進一步提供使用基于內容的邏輯來定義系統(tǒng)中的虛擬集合和項。3.如權利要求l所述的系統(tǒng),其特征在于,進一步包含一個或多個觸發(fā)器組件,它按照觸發(fā)器邏輯將項和項的集合動態(tài)地設定為活動的。4.如權利要求l所述的系統(tǒng),其特征在于,進一步包含約束組件,它方便了在項內施加約束邏輯。5.如權利要求l所述的系統(tǒng),其特征在于,進一步包含判定組件,它方便了在一個或多個判定點處的應用程序客戶化邏輯的啟動。6.如權利要求l所述的系統(tǒng),其特征在于,終端用戶提供附加的元數(shù)據(jù)。7.如權利要求6所述的系統(tǒng),其特征在于,所述附加的元數(shù)據(jù)是說明性的。8.如權利要求l所述的系統(tǒng),其特征在于,所述規(guī)則組件方便了自動化操作數(shù)據(jù)的規(guī)則的輸出。9.如權利要求l所述的系統(tǒng),其特征在于,所述規(guī)則組件方便了包括自動導出的條件的規(guī)則的輸出。10.如權利要求1所述的系統(tǒng),其特征在于,所述規(guī)則組件方便了包括明確指定的條件的規(guī)則的輸出。11.如權利要求1所述的系統(tǒng),其特征在于,所述規(guī)則組件方便了包括是變量的終端用戶輸入的規(guī)則的輸出。12.如權利要求1所述的系統(tǒng),其特征在于,進一步包括解決組件,它解決規(guī)則間的沖突。13.如權利要求1所述的系統(tǒng),其特征在于,解決組件通過終端用戶規(guī)則優(yōu)先級和預先定義的解決策略中的至少一個來解決規(guī)則沖突。14.一種存儲有用于執(zhí)行權利要求1所述的系統(tǒng)的計算機可執(zhí)行指令的計算機可讀介質。15.—種釆用權利要求1所述的系統(tǒng)的計算機。16.—種采用權利要求1所述的系統(tǒng)的服務器。17.—種基于規(guī)則的便于終端用戶進行文件系統(tǒng)管理的系統(tǒng),其特征在于,包含監(jiān)視組件,它跟蹤與文件系統(tǒng)的數(shù)據(jù)相關的項;和規(guī)則組件,它處理終端用戶生成的與被跟蹤的項相關的規(guī)則,以提供數(shù)據(jù)的自動處理。18.如權利要求17所述的系統(tǒng),其特征在于,所述終端用戶使用規(guī)則從其他項定義虛擬集合和項。19.如權利要求17所述的系統(tǒng),其特征在于,進一步包含同步或異步的一個或多個觸發(fā)器組件。20.如權利要求17所述的系統(tǒng),其特征在于,進一步包含約束組件,它方便了在項內施加約束邏輯,以及判定組件,它方便了在一個或多個判定點處的應用程序客戶化的啟動。21.如權利要求17所述的系統(tǒng),其特征在于,所述規(guī)則包括自動導出的條件和明確指定的條件。22.如權利要求17所述的系統(tǒng),其特征在于,所述規(guī)則包括作為變量的終端用戶輸入。23.如權利要求17所述的系統(tǒng),其特征在于,進一步包含解決組件,它通過使用終端用戶規(guī)則優(yōu)先級和預先定義的解決策略中的至少一個來解決多個規(guī)則間的沖突。24.—種計算機可讀的介質,其特征在于,它包含用于執(zhí)行方便了文件系統(tǒng)數(shù)據(jù)的終端用戶自動化操作的方法的計算機可執(zhí)行指令,該方法包括跟蹤與該數(shù)據(jù)相關的項;以及提供與被跟蹤的項相關的元數(shù)據(jù)以方便項的子集的自動處理。25.如權利要求24所述的方法,其特征在于,進一步包含使用基于內容的邏輯來定義系統(tǒng)內的虛擬集合和項。26.如權利要求24所述的方法,其特征在于,進一步包含按照觸發(fā)器邏輯,動態(tài)地激活集項和項的集合。27.如權利要求24所述的方法,其特征在于,進一步包含以下動作在項內施加約束邏輯;標識數(shù)據(jù)內的一個或多個判定點;以及在所述一個或多個判定點處啟動應用程序客戶化邏輯。28.如權利要求24所述的方法,其特征在于,進一步包含輸出方便數(shù)據(jù)的自動化操作的一個或多個規(guī)則。29.如權利要求24所述的方法,其特征在于,進一步包含輸出包括自動導出的條件和明確規(guī)定的條件的規(guī)則。30.如權利要求24所述的方法,其特征在于,進一步包含輸出包括作為變量的終端用戶的輸入的規(guī)則。31.—種管理文件系統(tǒng)的基于規(guī)則的方法,其特征在于,包含使用終端用戶創(chuàng)建的一個或多個規(guī)則來跟蹤與文件系統(tǒng)的數(shù)據(jù)相關的項;以及處理與被跟蹤的項相關的、方便了數(shù)據(jù)的自動處理的規(guī)則。32.如權利要求31所述的方法,其特征在于,進一步包含通過終端用戶規(guī)則優(yōu)先級和預先定義的解決策略中的至少一個來解決規(guī)則間的沖突。33.如權利要求31所述的方法,其特征在于,進一步包含使用基于內容的邏輯來定義虛擬集合和項。34.如權利要求31所述的方法,其特征在于,進一步包含按照觸發(fā)器邏輯,動態(tài)地激活集項和項的集合。35.如權利要求31所述的方法,其特征在于,進一步包含以下動作在項內施加約束邏輯;標識數(shù)據(jù)內的一個或多個判定點;以及在一個或多個判定點處啟動應用程序客戶化邏輯。36.如權利要求31所述的方法,其特征在于,進一步包含提供一種代數(shù),它包括一個或多個規(guī)則的邏輯組件,并被用于組成方便數(shù)據(jù)的自動處理的終端用戶程序。37.如權利要求36所述的方法,其特征在于,所述邏輯組件用于使用IF-THEN規(guī)則構造,定義詢問、復雜動詞和約束中的至少一個。38.如權利要求36所述的方法,其特征在于,所述邏輯組件方便了跨多個應用程序的規(guī)則邏輯的公共視覺顯示。39.如權利要求31所述的方法,其特征在于,進一步包含以下動作的至少一個.定義有規(guī)則的值以生成屬性;將規(guī)則與事件結合以創(chuàng)建代理;過濾列表以生成新的列表;以及將新的列表與另一個列表相組合。40.如權利要求31所述的方法,其特征在于,進一步包含提供基于規(guī)則的代數(shù),它包括允許終端用戶執(zhí)行以下至少一種動作的邏輯組件定義與現(xiàn)有類型不同的新的終端用戶類型;動態(tài)地修改現(xiàn)有的類型;定義并持續(xù)詢問;以及定義影響特定項的邏輯。41.如權利要求31所述的方法,其特征在于,進一步包含持續(xù)第一應用程序中作出的跨越另一個應用程序的基于規(guī)則的變化。全文摘要一種基于規(guī)則的軟件架構,它為終端用戶規(guī)則邏輯的定義和執(zhí)行提供了基礎結構。這使得使用簡單的IF-THEN規(guī)則,在統(tǒng)一的存儲平臺內的數(shù)據(jù)能夠終端用戶自動化操作。這種架構包括跟蹤與該數(shù)據(jù)相關聯(lián)的項的監(jiān)視組件,以及與監(jiān)視組件接口使用與被跟蹤的項相關的元數(shù)據(jù)以提供這些項的子集的自動化處理的規(guī)則組件。該系統(tǒng)進一步提供使用基于內容的邏輯定義系統(tǒng)內的虛擬集合和項。該系統(tǒng)進一步包括一個或多個觸發(fā)器組件,按照觸發(fā)器邏輯動態(tài)地將項和項集合設置為活動的。額外的組件可包括用于向項施加約束的約束組件,以及支持在判定點啟動應用程序客戶化的判定組件。文檔編號G06F9/44GK101410824SQ200480012009公開日2009年4月15日申請日期2004年7月30日優(yōu)先權日2004年4月30日發(fā)明者H·奈特,P·瑟沙德瑞,R·H·格伯,S·E·多西科,V·H·柯利申請人:微軟公司