两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

用于擴(kuò)展應(yīng)用程序首選項(xiàng)類的系統(tǒng)和方法

文檔序號(hào):6477279閱讀:829來源:國知局
專利名稱:用于擴(kuò)展應(yīng)用程序首選項(xiàng)類的系統(tǒng)和方法
技術(shù)領(lǐng)域
本發(fā)明通常涉及計(jì)算機(jī)系統(tǒng),特別涉及個(gè)性化計(jì)算機(jī)系統(tǒng)的系統(tǒng)和方法。
背景計(jì)算機(jī)和計(jì)算相關(guān)技術(shù)的用戶一般可分為兩種不同類,即高技術(shù)和知識(shí)水平的人和其它的人。高技術(shù)和知識(shí)水平的人了解如何用豐富的方法使用計(jì)算機(jī)并讓它們遵從他們的意愿來形成程序及促進(jìn)豐富而有代價(jià)的性能。計(jì)算機(jī)用戶世界的其余人則任高技術(shù)和知識(shí)水平的人處置,因?yàn)樗麄儽痪芙^方便或輕易地訪問知識(shí)、信息或者讓計(jì)算機(jī)服務(wù)于他們所需的能力。在技術(shù)上打破這些訪問障礙中的一些時(shí),就在計(jì)算中發(fā)生了主要突破。在大型機(jī)世界中,只有最大的企業(yè)才支付得起其昂貴費(fèi)用。小型機(jī)和隨后的個(gè)人計(jì)算機(jī)(PC)的出現(xiàn)打破了價(jià)格障礙并使計(jì)算機(jī)可用于小企業(yè)和個(gè)人。在1980年代,程序設(shè)計(jì)員努力創(chuàng)建了圖形用戶界面(GUI)應(yīng)用程序。沒有豐富而一致的GUI,程序設(shè)計(jì)員就不能為PC用戶創(chuàng)建有代價(jià)的應(yīng)用程序。Visual Basic革命以及控件的使用和基于事件的GUI構(gòu)造使得應(yīng)用程序開發(fā)者能夠方便地創(chuàng)建豐富的應(yīng)用程序。繼而建立有效力的循環(huán),其中多得多的終端用戶能夠使用這些應(yīng)用程序。在1990年代,終端用戶努力克服了對(duì)信息訪問的缺乏。因特網(wǎng)的成長轉(zhuǎn)變了這種空間距離,使得幾乎任何人都可用瀏覽器訪問所有有價(jià)值的信息。但是,仍然存在需要克服的大量障礙。
常規(guī)計(jì)算不是個(gè)人的。很少有所謂的個(gè)人計(jì)算機(jī)是真正“個(gè)人的”。確實(shí),存儲(chǔ)在本地盤上的數(shù)據(jù)是個(gè)人的。但是,機(jī)器的行為,即代表用戶而執(zhí)行的動(dòng)作,對(duì)于數(shù)百萬用戶是相同的。盡管擁有非常強(qiáng)大的通用計(jì)算機(jī),但一般用戶將它視為靜態(tài)工具,用作通信端點(diǎn),用作搜索入口點(diǎn),用于執(zhí)行某些固定的銷量大的應(yīng)用程序,但卻不能夠?qū)崿F(xiàn)任何“個(gè)人計(jì)算”這個(gè)詞語的真正意義。在當(dāng)前應(yīng)用程序中可用的個(gè)人化能力剛剛觸到可能的和所想要的表面。
而且,常規(guī)計(jì)算不是自動(dòng)的而是人工的,要求用戶在適當(dāng)?shù)臅r(shí)候作出決策和對(duì)其起作用??紤]大多數(shù)典型計(jì)算機(jī)最終用戶的日常例程。尤其是,最終用戶收集信息,對(duì)通信起反應(yīng),開始或響應(yīng)通信,以及組織信息。計(jì)算機(jī)改進(jìn)了人之間的通信并且改進(jìn)了對(duì)信息的訪問。然而,計(jì)算機(jī)在使最終用戶解脫在正確的時(shí)間作出決策和對(duì)其起作用的責(zé)任方面做得很少。
另外,傳統(tǒng)的計(jì)算不是上下文有關(guān)的。計(jì)算機(jī)軟件一般提供選項(xiàng)設(shè)置,它們是相當(dāng)靜態(tài)的并且與用戶的實(shí)際上下文不相關(guān)。
所需要的是一種真正個(gè)人化的計(jì)算機(jī)系統(tǒng)--一種知道最終用戶的需求和首選項(xiàng)并且以那些需求以及用戶上下文指示的方式表現(xiàn)的系統(tǒng)。而且,計(jì)算機(jī)系統(tǒng)和軟件應(yīng)當(dāng)為每個(gè)最終用戶提供一個(gè)個(gè)人助理,用于收集和篩選一個(gè)或多個(gè)最終用戶的感興趣信息并且按照用戶指定的方式自動(dòng)地對(duì)該信息作出反應(yīng)。
發(fā)明概述下面提供本發(fā)明的一個(gè)簡化的概要,以便提供對(duì)本發(fā)明某些方面的基本理解。這個(gè)概要不是本發(fā)明的詳盡概觀。目的不是標(biāo)識(shí)本發(fā)明的關(guān)鍵/緊要元素或描繪本發(fā)明的范圍。其唯一目的是以簡化的形式提供本發(fā)明的某些概念,作為稍后提供的更詳細(xì)描述的序言。
在此揭示一種信息代理系統(tǒng)、應(yīng)用程序和方法。信息代理系統(tǒng)提供執(zhí)行信息代理應(yīng)用程序(在此有時(shí)稱為IA應(yīng)用程序)的平臺(tái)。IA應(yīng)用程序隨后可以由最終用戶編程并且作為最終用戶執(zhí)行助理或代理使用。代理隨后可以用于極大地增進(jìn)最終用戶個(gè)人生產(chǎn)率,集成桌面應(yīng)用程序和所有個(gè)人通信介質(zhì)(例如,移動(dòng)電話、尋呼機(jī)、PDA...)。
信息應(yīng)用程序系統(tǒng)的中心是數(shù)據(jù)的系統(tǒng)化。系統(tǒng)化是以眾所周知并且良好定義的模式結(jié)構(gòu)化數(shù)據(jù),這使多個(gè)應(yīng)用程序能夠彼此識(shí)別和交互。信息屬性、信息事件和決策邏輯都可以被系統(tǒng)化。系統(tǒng)化的信息屬性指作為最終用戶應(yīng)用程序(例如,電子郵件、人、組、位置...)的基礎(chǔ)的數(shù)據(jù)。信息屬性可以被系統(tǒng)化成允許大量不同應(yīng)用程序一致地解釋數(shù)據(jù)。信息事件提供鉤子以系于程序邏輯。這些事件是高層的并且系于信息流以方便沒有經(jīng)驗(yàn)的最終用戶的理解。事件也可以被系統(tǒng)化。而且,決策邏輯可以被系統(tǒng)化。由于最終用戶是沒有訓(xùn)練過的開發(fā)者,因此沒有理由期望一個(gè)用傳統(tǒng)編程語言編寫的程序。相反,可以為最終用戶提供系統(tǒng)化的邏輯構(gòu)件塊(例如,IF-THEN命題),使得他們可以通過用簡單但豐富的組合將它們綁結(jié)在一起來編程。數(shù)據(jù)的系統(tǒng)化,信息鉤子(事件)和最終用戶編程能力讓最終用戶得到很大的價(jià)值,具有通過最終用戶邏輯耦合和合作的應(yīng)用程序的豐富生態(tài)系統(tǒng),它隨后允許新手最終用戶變成系統(tǒng)綜合者。
而且,按照本發(fā)明的一個(gè)方面,信息應(yīng)用程序系統(tǒng)包括一個(gè)靈活的執(zhí)行引擎,它可以編譯和執(zhí)行重量級(jí)和輕量級(jí)信息應(yīng)用程序兩者。重量級(jí)應(yīng)用程序尤其包括常常在高端服務(wù)器上運(yùn)行并且要求高吞吐量和可伸縮性的應(yīng)用程序。輕量級(jí)應(yīng)用程序是常常在較小的系統(tǒng)如個(gè)人計(jì)算機(jī)上執(zhí)行并且要求低延遲時(shí)間、小數(shù)據(jù)庫足跡和小工作集合的應(yīng)用程序。在較小的應(yīng)用程序中,在延遲時(shí)間與吞吐量之間的權(quán)衡與較大服務(wù)器應(yīng)用程序相反。因此,本發(fā)明的執(zhí)行引擎是靈活的,因?yàn)樗梢栽诙鄠€(gè)不同的應(yīng)用程序平臺(tái)上編譯和執(zhí)行應(yīng)用程序,通過作出權(quán)衡以強(qiáng)調(diào)特定的系統(tǒng)要求(例如,低延遲時(shí)間、小數(shù)據(jù)庫足跡...)。
按照綁定的另一方面,最終用戶首選項(xiàng)或規(guī)則以一次一個(gè)但在集合中執(zhí)行的方式開發(fā)。一次一個(gè)編程模型是對(duì)于開發(fā)者最自然的模型,它允許開發(fā)者針對(duì)一個(gè)首選項(xiàng)指定一個(gè)事件。然而,按照本發(fā)明的一個(gè)方面,系統(tǒng)檢索一次一個(gè)程序聲明并且構(gòu)思條件類查詢,以面向集合的方式執(zhí)行從而利用如索引和重復(fù)消除這樣的技術(shù)。這有利于以非常有效的方式評(píng)估首選項(xiàng),同時(shí)使開發(fā)者和最終用戶保持以一次一個(gè)方式概念化和編寫程序。
按照本發(fā)明的另一方面,提供一種新的應(yīng)用程序安裝系統(tǒng)和方法。在常規(guī)系統(tǒng)中,應(yīng)用程序安裝包括數(shù)據(jù)庫對(duì)象、表和存儲(chǔ)過程的激增。在某些實(shí)例中,應(yīng)用程序創(chuàng)建整個(gè)新數(shù)據(jù)庫。本發(fā)明通過提供一組基表來簡化和加快應(yīng)用程序安裝。為安裝一個(gè)應(yīng)用程序,系統(tǒng)僅更新基表。這可以通過將程序動(dòng)作、條件、事件和過程存儲(chǔ)為數(shù)據(jù)來完成。例如,對(duì)于過程,可以作為一卷文本來創(chuàng)建它們,存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器中。為運(yùn)行這類過程,可以簡單地從數(shù)據(jù)存儲(chǔ)器中拉出程序文本并執(zhí)行它。
按照本發(fā)明的又一方面,系統(tǒng)可以支持存取器常數(shù)以允許條件/動(dòng)作跨不同域的信息使信息聯(lián)系起來。存取器常數(shù)促進(jìn)信息交換或者跨不同域的數(shù)據(jù)共享。例如,可以定義一個(gè)存取器常數(shù)MyFamily(我的家庭),使得一個(gè)存取器函數(shù)能夠通過查詢由電子郵件應(yīng)用程序或日程表存儲(chǔ)的數(shù)據(jù)來確定MyFamily(我的家庭)的成員。系統(tǒng)化邏輯與存取器的組合至少是有利的,因?yàn)樗狗浅绦騿T能夠編寫有效的跨域查詢。而且,與相對(duì)少量的存取器約束組合在一起的相對(duì)少量條件類使大量感興趣的條件能夠使用,那是應(yīng)用程序開發(fā)者不會(huì)提供的。
按照本發(fā)明又一方面,用戶定義的首選項(xiàng)可以擴(kuò)展以支持應(yīng)用程序之間的關(guān)系。在很大程度上,IA應(yīng)用程序的測量是由向用戶提供的能力確定的。因此,IA應(yīng)用程序可擴(kuò)展的程度可以由使用戶在一個(gè)現(xiàn)有應(yīng)用程序的上下文中定義新首選項(xiàng)時(shí)可用的新條件和動(dòng)作的程度來確定。應(yīng)用程序可擴(kuò)展性主要瞄準(zhǔn)在一個(gè)應(yīng)用程序被安裝之后使新條件和動(dòng)作能夠添加到該應(yīng)用程序,不受原始應(yīng)用程序的作者進(jìn)一步干涉。因此,最終用戶,在沒有開發(fā)者輸入的情況下,可以創(chuàng)建利用由不同應(yīng)用程序提供的條件和動(dòng)作的首選項(xiàng),從而支持應(yīng)用程序之間的豐富關(guān)系。
另外,本發(fā)明的系統(tǒng)支持信息代理應(yīng)用程序。按照本發(fā)明的一個(gè)方面,一個(gè)這樣的應(yīng)用程序可以使個(gè)人化的文件夾、數(shù)據(jù)容器或者由數(shù)據(jù)存儲(chǔ)器提供的其它數(shù)據(jù)組織系統(tǒng)和相關(guān)聯(lián)的文件系統(tǒng)(例如,分層系統(tǒng)、通過任何或顯式關(guān)系相關(guān)的文件)聯(lián)系起來。個(gè)人化的文件夾是由最終用戶指定的邏輯或首選項(xiàng)定義和控制的。因此最終用戶可以定義在發(fā)生一個(gè)事件時(shí)控制文件夾的內(nèi)容的條件和動(dòng)作。在本發(fā)明的一個(gè)方面,事件相應(yīng)于文件夾數(shù)據(jù)中的變化(例如,添加、刪除或修改的文檔)。首選項(xiàng)(例如,條件、動(dòng)作)可以,為了這個(gè)概要,歸結(jié)為三個(gè)類別,代表用戶采取動(dòng)作的首選項(xiàng)(例如,將關(guān)于花費(fèi)報(bào)告的電子郵件移到一個(gè)相似名字的文件夾中),控制文件夾內(nèi)容的首選項(xiàng)(例如,將在最近兩周內(nèi)聽過的所有爵士樂歌曲保存到一個(gè)當(dāng)前的爵士樂文件夾中),以及前兩項(xiàng)的組合(例如,將小于某個(gè)金額所有花費(fèi)報(bào)告存儲(chǔ)在一個(gè)批準(zhǔn)的文件夾中并且發(fā)送一個(gè)電子郵件到一個(gè)最終用戶以通知他這個(gè)動(dòng)作)。
按照本發(fā)明的又一方面,在使用活動(dòng)文件夾時(shí)可以使用類似工作流的活動(dòng)。這里一個(gè)利用首選項(xiàng)的最終用戶可以指定通過文件夾中的條目表示的多步驟任務(wù)或工作片段。隨后可以在文件條目上采取動(dòng)作以完成該任務(wù)或工作片段。
按照本發(fā)明的一個(gè)方面也可以使用記事文件夾。記事表示與系統(tǒng)的一個(gè)或多個(gè)用戶相關(guān)的歷史和上下文信息。按照本發(fā)明的一個(gè)方面,記事可以存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器并且使最終用戶可以隨意訪問。因而,一個(gè)最終用戶可以保持對(duì)歷史數(shù)據(jù)的控制并且基于它編寫首選項(xiàng)。例如,一個(gè)用戶可以允許在它們工作組中的任何人查看關(guān)于某個(gè)股票價(jià)格的歷史信息,但希望限制查看諸如它們是否在辦公桌前或者在會(huì)議中之類上下文信息。
為完成前述和相關(guān)目的,本發(fā)明的某些例示性方面在此結(jié)合下面的說明和附圖來描述。這些方面表示可實(shí)施本發(fā)明的各種方式,所有這些目的是由本發(fā)明覆蓋。本發(fā)明的其它優(yōu)點(diǎn)和新穎特征通過本發(fā)明的下列詳細(xì)說明并結(jié)合附圖考慮變得顯而易見。
附圖簡述

圖1是按照本發(fā)明一個(gè)方面的信息代理系統(tǒng)的框圖。
圖2是按照本發(fā)明一個(gè)方面的通知組件的框圖。
圖3是按照本發(fā)明一個(gè)方面的信息代理應(yīng)用程序的框圖。
圖4是按照本發(fā)明一個(gè)方面的示例性邏輯模式的框圖。
圖5是按照本發(fā)明一個(gè)方面用于評(píng)估常數(shù)存取器系統(tǒng)的框圖。
圖6是按照本發(fā)明一個(gè)方面的首選項(xiàng)評(píng)估系統(tǒng)的框圖。
圖7是按照本發(fā)明一個(gè)方面的優(yōu)先權(quán)系統(tǒng)的示意框圖。
圖8是例示按照本發(fā)明一個(gè)方面的分類器的框圖。
圖9是例示按照本發(fā)明一個(gè)方面的消息分類的示意框圖。
圖10是例示按照本發(fā)明一個(gè)方面的標(biāo)量分類器的示意框圖。
圖11是例示按照本發(fā)明一個(gè)方面依照類和標(biāo)量輸出分類的文本的示意框圖。
圖12是例示按照本發(fā)明一個(gè)方面的線性優(yōu)先級(jí)模型的圖。
圖13是例示按照本發(fā)明一個(gè)方面的非線性優(yōu)先級(jí)模型的圖。
圖14是例示按照本發(fā)明一個(gè)方面確定用戶活動(dòng)的模型的圖。
圖15是例示按照本發(fā)明一個(gè)方面用于確定當(dāng)前用戶活動(dòng)的基于推理的模型的圖。
圖16是例示按照本發(fā)明一個(gè)方面用于確定報(bào)警代價(jià)的基于推理的模型的圖。
圖17是例示按照本發(fā)明一個(gè)方面用于確定報(bào)警代價(jià)的更詳細(xì)的基于推理的模型的圖。
圖18是例示按照本發(fā)明一個(gè)方面用于考慮保真度損失確定報(bào)警代價(jià)的更詳細(xì)的基于推理的模型的圖。
圖19是例示按照本發(fā)明一個(gè)方面用于產(chǎn)生和確定優(yōu)先級(jí)的方法的流程圖。
圖20是例示按照本發(fā)明一個(gè)方面的文本產(chǎn)生程序和分類器的圖。
圖21是例示按照本發(fā)明一個(gè)方面在執(zhí)行引擎與上下文分析程序之間的系統(tǒng)合作的示意框圖。
圖22是例示按照本發(fā)明一個(gè)方面的上下文分析程序的框圖。
圖23是例示按照本發(fā)明一個(gè)方面的源和接收器的框圖。
圖24是描繪隨著時(shí)間過去一個(gè)被映射的通知的實(shí)用性的圖。
圖25例示按照本發(fā)明一個(gè)方面的示例性界面。
圖26例示按照本發(fā)明一個(gè)方面用于按照直接測量確定用戶上下文的方法。
圖27是例示按照本發(fā)明一個(gè)方面用于確定上下文的一個(gè)示例性分層排序的規(guī)則集。
圖28是一個(gè)系統(tǒng)的示意框圖,該系統(tǒng)例示按照本發(fā)明一個(gè)方面由一個(gè)推理引擎執(zhí)行推理分析來確定用戶的上下文。
圖29例示按照本發(fā)明一個(gè)方面推理用戶在一個(gè)單個(gè)時(shí)間段內(nèi)的注意力的焦點(diǎn)。
圖30例示按照本發(fā)明一個(gè)方面在不同的時(shí)間段在若干上下文變量之間用戶注意的焦點(diǎn)的貝葉斯模型。
圖31是一個(gè)流程圖,例示按照本發(fā)明一個(gè)方面如何確定用戶的上下文。
圖32是一個(gè)流程圖,例示按照本發(fā)明一個(gè)方面的通知傳送過程。
圖33例示按照本發(fā)明一個(gè)方面的動(dòng)作/條件進(jìn)化鏈。
圖34是按照本發(fā)明一個(gè)方面用于應(yīng)用程序交互的系統(tǒng)的框圖。
圖35是按照本發(fā)明一個(gè)方面的個(gè)性化系統(tǒng)的框圖。
圖36是按照本發(fā)明一個(gè)方面用于使用首選項(xiàng)的方法的流程圖。
圖37是按照本發(fā)明一個(gè)方面用于安裝應(yīng)用程序的方法的流程圖。
圖38是按照本發(fā)明一個(gè)方面用于擴(kuò)展應(yīng)用程序的方法的流程圖。
圖39是按照本發(fā)明一個(gè)方面用于卸載應(yīng)用程序的流程圖。
圖40是按照本發(fā)明一個(gè)方面用于跨應(yīng)用程序擴(kuò)展編程常數(shù)的方法的流程圖。
圖41是描繪按照本發(fā)明一個(gè)方面用于個(gè)性化計(jì)算機(jī)功能的方法的流程圖。
圖42是例示按照本發(fā)明一個(gè)方面的合適操作環(huán)境的示意框圖。
圖43是本發(fā)明可以與其交互的示例計(jì)算環(huán)境的示意框圖。
詳細(xì)描述現(xiàn)在參考附圖描述本發(fā)明,其中相同的標(biāo)號(hào)代表在全部附圖中的相同元素。然而,應(yīng)當(dāng)理解,附圖及其詳細(xì)說明目的不是將本發(fā)明限制于所揭示的特定形式。相反,目的是要覆蓋落在本發(fā)明的精神和范圍內(nèi)的所有修改、等價(jià)和變更方案。
如在本申請(qǐng)中使用的,術(shù)語“組件(component)”和“系統(tǒng)(system)”目的是指計(jì)算機(jī)相關(guān)的實(shí)體,或者硬件、軟硬件組合、軟件或執(zhí)行中的軟件。例如,一個(gè)組件可以是,但不限于,在處理器上運(yùn)行的處理過程、處理器、對(duì)象、可執(zhí)行體、執(zhí)行的線程、程序和/或計(jì)算機(jī)。作為例示,在服務(wù)器上運(yùn)行的應(yīng)用程序和服務(wù)器都可以是組件。一個(gè)或多個(gè)組件可駐留在一個(gè)計(jì)算機(jī)上和/或分布在兩或多個(gè)計(jì)算機(jī)之間。
如在此使用的,術(shù)語“推理(inference)”一般指根據(jù)經(jīng)由事件和/或數(shù)據(jù)捕捉的一組觀測資料推斷或推理關(guān)于系統(tǒng)10、環(huán)境和/或用戶的狀態(tài)的過程。例如,可以使用推理來標(biāo)識(shí)一個(gè)特定的上下文或動(dòng)作,或者可以產(chǎn)生關(guān)于各狀態(tài)的分布概率。推理可以是概率的--即,基于數(shù)據(jù)和事件的考慮在感興趣的狀態(tài)上的概率分布的計(jì)算。推理也可以指用于根據(jù)一組事件和/或數(shù)據(jù)組成高層事件的技術(shù)。這樣的推理根據(jù)一組觀測到的事件和/或存儲(chǔ)的事件數(shù)據(jù)導(dǎo)致新事件或動(dòng)作的構(gòu)造,而不論事件是否在接近的時(shí)間上相關(guān)、以及事件和數(shù)據(jù)是來自一個(gè)還是多個(gè)若干事件和數(shù)據(jù)源。
信息代理平臺(tái)首先轉(zhuǎn)到圖1,例示按照本發(fā)明一個(gè)方面的信息代理系統(tǒng)100。信息代理系統(tǒng)100包括應(yīng)用程序編程接口(API)110、編譯器120、事件組件130、上下文分析程序140、系統(tǒng)化數(shù)據(jù)存儲(chǔ)器150、首選項(xiàng)執(zhí)行引擎160、動(dòng)作組件170和通知組件180。系統(tǒng)100提供一個(gè)平臺(tái),它促進(jìn)各種信息代理應(yīng)用程序的執(zhí)行。系統(tǒng)100可以是一個(gè)獨(dú)立系統(tǒng)或者是一個(gè)較大系統(tǒng)的一個(gè)組成部分。按照本發(fā)明的一個(gè)方面,可以結(jié)合計(jì)算機(jī)操作系統(tǒng)使用系統(tǒng)100,其中可以在多個(gè)不同計(jì)算設(shè)備包括但不限于個(gè)人計(jì)算機(jī)和移動(dòng)設(shè)備諸如電話和個(gè)人數(shù)字助理(PDA)上使用操作系統(tǒng)。也可以在服務(wù)器(例如,SQLServer、WinFS服務(wù)器)上并且結(jié)合訂閱服務(wù)使用系統(tǒng)100。因此,系統(tǒng)100可以用于提供在各種產(chǎn)品和服務(wù)(在客戶機(jī)、服務(wù)器提供信息代理能力)與客戶機(jī)-服務(wù)器-集群服務(wù)(例如,Outlook、Exchange和Hotmail)之間的協(xié)同。
在系統(tǒng)100中包括API 110以促進(jìn)與系統(tǒng)100的交互。API 110可以由開發(fā)者使用以在信息代理系統(tǒng)100中的建立各種組件。而且,API 110可以用于從一個(gè)或多個(gè)事件源和/或可用于在系統(tǒng)100上運(yùn)行的信息代理應(yīng)用程序的當(dāng)前用戶上下文構(gòu)造多個(gè)事件。而且,API 110可以用于反映存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器150中的邏輯模式并且編寫首選項(xiàng)到數(shù)據(jù)存儲(chǔ)器150。應(yīng)當(dāng)意識(shí)到,API 110的許多其它用途,其目的是落在本發(fā)明主題的范圍內(nèi),在閱讀這個(gè)說明書時(shí)對(duì)于本領(lǐng)域熟練技術(shù)人員變成顯而易見的。
數(shù)據(jù)存儲(chǔ)器150是用于系統(tǒng)化數(shù)據(jù)的結(jié)構(gòu)豐富的存儲(chǔ)器。數(shù)據(jù)的系統(tǒng)化,數(shù)據(jù)構(gòu)造成眾所周知和定義的模式,對(duì)于本發(fā)明特別重要,因?yàn)樗С侄鄳?yīng)用程序交互。如在下面詳細(xì)描述的,數(shù)據(jù)存儲(chǔ)器150可以由信息代理應(yīng)用程序用于存儲(chǔ),尤其是,與應(yīng)用程序相關(guān)聯(lián)的數(shù)據(jù)諸如例如事件和首選項(xiàng)的表。而且,盡管數(shù)據(jù)存儲(chǔ)器150被例示為包括在信息代理系統(tǒng)100中,但應(yīng)當(dāng)意識(shí)到,數(shù)據(jù)存儲(chǔ)器150可與系統(tǒng)外部的組件交互。
編譯器120也包括在系統(tǒng)100中。編譯器120用于編譯信息代理應(yīng)用程序。具體地說,編譯器120編譯開發(fā)者模式和最終用戶首選項(xiàng)。按照本發(fā)明的一個(gè)方面,促進(jìn)將模式和最終用戶首選項(xiàng)翻譯成存儲(chǔ)在例如數(shù)據(jù)存儲(chǔ)器150的表中的數(shù)據(jù)。
系統(tǒng)100還包括事件組件130。事件是開始和提供信息給首選項(xiàng)評(píng)估的觸發(fā)器。事件源自事件源,它或者可以是按照應(yīng)用程序和數(shù)據(jù)的內(nèi)部狀態(tài)變化,或者是世界上的外部變化。事件組件130可以捕捉從應(yīng)用程序通過API提交的事件并開始首選項(xiàng)評(píng)估。例如,事件可以由接收一個(gè)新SMTP消息的簡單郵件傳輸協(xié)議(SMTP)供應(yīng)者、在數(shù)據(jù)存儲(chǔ)器150中的數(shù)據(jù)變化、操作系統(tǒng)動(dòng)作、顯式用戶動(dòng)作和/或其它首選項(xiàng)的動(dòng)作提出。事件組件130也可以從第三方供應(yīng)者和從多個(gè)不同類型的源包括但不限于諸如因特網(wǎng)和基于網(wǎng)絡(luò)的通信和電話通信和電話通信之類的通信以及軟件服務(wù)、XML文件、應(yīng)用程序和數(shù)據(jù)庫,收集事件或接收事件。而且,事件組件130可以通過各種方法監(jiān)控和收集數(shù)據(jù)。收集數(shù)據(jù)的示例性方法包括但不限于,監(jiān)控文件添加的目錄、檢查用于某些類型條目的系統(tǒng)和應(yīng)用程序日志文件、從應(yīng)用程序捕捉警報(bào)、監(jiān)控網(wǎng)頁、跟蹤數(shù)據(jù)庫表中的變化和檢閱由網(wǎng)絡(luò)服務(wù)提供的數(shù)據(jù)。
還存在可以由事件組件130用于收集數(shù)據(jù)的各種不同模型。這些模型可以影響事件組件130如何頻繁和在什么環(huán)境下從各種事件源收集事件。
可以用至少兩種方式之一通知或者為事件組件130提供數(shù)據(jù)。事件組件130可等待信息被“推(push)”或者發(fā)送給它,或者它可以通過輪詢一源和收集任何新的或經(jīng)更新的數(shù)據(jù)從該源“拉(pull)”信息。例如,如果用戶希望每次在一個(gè)喜愛的新聞頁面上的標(biāo)題行故事變化時(shí)被通知,則可以實(shí)現(xiàn)事件組件130,例如,使得它監(jiān)控該頁面并且搜索標(biāo)題行文本的變化。當(dāng)文本變化時(shí),事件組件130可以提取新標(biāo)題行數(shù)據(jù)并且例如將它存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器150的事件表中來將它提供給系統(tǒng)100。在上面的例子中,事件組件負(fù)責(zé)收集所需要的數(shù)據(jù),因?yàn)椴粸槭录M件130提供來自事件源的數(shù)據(jù),如使用推方法的情況。
另外或者可供替換地,事件組件130可以獲得系統(tǒng)100的事件數(shù)據(jù),或者基于時(shí)間表或者基于符合預(yù)先規(guī)定的準(zhǔn)則的事件的出現(xiàn)。排定的事件組件130可以周期性地運(yùn)行,基于由應(yīng)用程序開發(fā)者實(shí)現(xiàn)的設(shè)置。排定的事件組件130可以開始運(yùn)行、檢索和提供新的事件數(shù)據(jù)并且隨后入眠直到下一個(gè)排定的觸發(fā)時(shí)間。事件驅(qū)動(dòng)的事件組件130也可以通過連續(xù)地運(yùn)行來監(jiān)控事件源。之后,當(dāng)符合用于收集的特定準(zhǔn)則的數(shù)據(jù)時(shí),事件組件可以收集或者表示事件的發(fā)生??晒┨鎿Q地,事件驅(qū)動(dòng)的事件組件130只能響應(yīng)于回調(diào)函數(shù)或者某些其它外部刺激來運(yùn)行。這個(gè)外部函數(shù)隨后將判定是否存在有效的事件數(shù)據(jù)要收集,并且使用事件組件130作為收集這類數(shù)據(jù)的裝置。一旦事件組件130從外部事件源收集到數(shù)據(jù),它應(yīng)將數(shù)據(jù)寫到事件表并且將該事件表保存到數(shù)據(jù)庫150。
無論使用什么方法或系統(tǒng)匯集和/或收集事件,應(yīng)當(dāng)意識(shí)到,為了效率可以按批編寫和處理事件。批,如在此一般定義的,可以是作為一個(gè)組處理的數(shù)據(jù)(例如,事件、首選項(xiàng)...)的集合。例如,組或批的大小可以由開發(fā)者在系統(tǒng)建立期間確定和指定和/或由用戶通過控制面板指定。
按照本發(fā)明的一個(gè)方面,由上下文分析程序140控制的信息,包括在由分析程序確定的上下文信息中。上下文信息是由分析程序140通過基于一個(gè)或多個(gè)上下文信息源(未示出)鑒別用戶的位置和注意狀態(tài)來確定的,如在本說明書的后面章節(jié)更詳細(xì)地描述的。上下文分析程序3122,例如,能夠通過作為用戶的汽車或蜂窩電話部件的全球定位系統(tǒng)(GPS)按精度確定用戶的實(shí)際位置。分析程序也可使用統(tǒng)計(jì)模型通過考慮背景估計(jì)和/或觀查資料(這是通過考慮這樣的信息如日子的類型、時(shí)刻、在用戶日程表中的數(shù)據(jù)和關(guān)于用戶的活動(dòng)的觀測收集的)來確定用戶在一個(gè)給定的注意狀態(tài)中的可能性。給定的注意狀態(tài)隨后可以用作用戶定義的首選項(xiàng)的事件或條件。
首選項(xiàng)執(zhí)行引擎160也可以涉及動(dòng)作處理。盡管首選項(xiàng)邏輯實(shí)際上只產(chǎn)生一組結(jié)果,但在此可供替換地將它稱為動(dòng)作,因?yàn)檫@是這類結(jié)果的共同影響。使用首選項(xiàng)執(zhí)行引擎160執(zhí)行動(dòng)作只是一種可以執(zhí)行動(dòng)作的方式。動(dòng)作也可以由僅從系統(tǒng)100檢索首選項(xiàng)結(jié)果并且對(duì)它們起作用的應(yīng)用程序執(zhí)行。通過作為系統(tǒng)100一部分的執(zhí)行引擎的動(dòng)作執(zhí)行具有更多主動(dòng)代理的味道,而通過應(yīng)用程序的動(dòng)作執(zhí)行具有更多被動(dòng)決定邏輯的味道。因此,系統(tǒng)100可以為應(yīng)用程序動(dòng)作處理程序提供一個(gè)主機(jī)服務(wù),應(yīng)用程序動(dòng)作處理程序可以用與系統(tǒng)100提供主機(jī)服務(wù)用于與事件組件130有關(guān)的事件檢索和處理相似的方式檢索和執(zhí)行動(dòng)作。而且,應(yīng)當(dāng)意識(shí)到按照本發(fā)明的一個(gè)方面,接近于數(shù)據(jù)的動(dòng)作(例如,將一個(gè)電子郵件移到一個(gè)特定文件夾)可以在系統(tǒng)100內(nèi)由執(zhí)行引擎160與首選項(xiàng)評(píng)估以及同一事務(wù)的一部分同步地執(zhí)行。
系統(tǒng)100的首選項(xiàng)執(zhí)行引擎160,除了別的以外,處理或評(píng)估首選項(xiàng)。首選項(xiàng)是由事件發(fā)生觸發(fā)的最終用戶定義的規(guī)則。存在兩個(gè)能由系統(tǒng)100支持的激活模型,同步和異步。在同步激活模型中,存在在事件提交與首選項(xiàng)評(píng)估之間的無關(guān)緊要的延時(shí)。即,首選項(xiàng)評(píng)估可以在對(duì)事件提交的應(yīng)答之前完成。作為對(duì)照,在異步激活方式中,在事件提高的完成與首選項(xiàng)評(píng)估的完成之間,存在著顯著的延時(shí)。例如,按照一種實(shí)現(xiàn)異步激活的方法,排隊(duì)所提交的事件,直到對(duì)它們起作用。系統(tǒng)100可以支持一個(gè)或兩個(gè)模型激活。而且,按照本發(fā)明的一個(gè)方面,可以在批提交期間動(dòng)態(tài)地選擇同步或異步行為,按照大量需要考慮的事項(xiàng),包括但不限于批尺寸和可用于處理的時(shí)間。首選項(xiàng)處理的另一個(gè)方面包括隔離和事務(wù)邊界。例如處理與一個(gè)單一事件批相關(guān)聯(lián)的首選項(xiàng)可以是事務(wù)的(transactional)??晒┨鎿Q地,許多事件批可以作為一個(gè)事務(wù)單元一起處理。系統(tǒng)100可以支持上述模型場景之一或兩者??晒┨鎿Q地,首選項(xiàng)執(zhí)行引擎160處理事件提交和首選項(xiàng)處理的事務(wù)范圍。系統(tǒng)100可以支持下列兩個(gè)模型之一或兩者。首先,事件提交和首選項(xiàng)處理可以共享同一事務(wù)且因此被一起執(zhí)行。否則,事件提交和首選項(xiàng)處理可以在不同事務(wù)中發(fā)生。
按照本發(fā)明一個(gè)方面,執(zhí)行引擎160和系統(tǒng)100可以支持輕量級(jí)和/或重量級(jí)信息代理或首選項(xiàng)應(yīng)用程序。輕量級(jí)應(yīng)用程序是那些要求低延遲時(shí)間、小數(shù)據(jù)庫足跡和小工作集的應(yīng)用程序。高吞吐量和可伸縮性對(duì)于輕量級(jí)應(yīng)用程序不是第一位的要求。重量級(jí)應(yīng)用程序是那些要求高吞吐量、可伸縮性、高可靠性、嚴(yán)格的正確性保證、可預(yù)測的崩潰恢復(fù)和簡便的可管理能力的應(yīng)用程序。低延遲時(shí)間和資源消耗對(duì)于重量級(jí)應(yīng)用程序不是最優(yōu)先考慮的事情。高性能服務(wù)器一般執(zhí)行重量級(jí)應(yīng)用程序,而輕量級(jí)應(yīng)用程序通常在包括但不限于個(gè)人計(jì)算機(jī)和移動(dòng)設(shè)備的較低性能的系統(tǒng)上使用。因此,執(zhí)行引擎160必須能夠區(qū)分重量級(jí)應(yīng)用程序與輕量級(jí)應(yīng)用程序并作出改變,以便以一種最響應(yīng)于一種特定應(yīng)用程序類型(例如,高吞吐量對(duì)低延遲時(shí)間)的方式執(zhí)行。通常,執(zhí)行引擎與數(shù)據(jù)庫足跡、組件激活時(shí)的延遲時(shí)間、處理、存儲(chǔ)器足跡和永久過程最有關(guān)系。重量級(jí)應(yīng)用程序的執(zhí)行可要求(1)大數(shù)據(jù)庫足跡的分配,以便支持,除其它的以外,多數(shù)據(jù)庫、表、視圖、存儲(chǔ)過程和用戶定義函數(shù);(2)事件收集、通知產(chǎn)生和通知分發(fā)的小輪詢間隔;和(3)信息的批處理。輕量級(jí)應(yīng)用程序的執(zhí)行不同點(diǎn)在于,它們能夠(1)在最小的存儲(chǔ)器和數(shù)據(jù)庫足跡的情況下被使用;(2)使用較大的輪詢間隔用于事件收集、通知產(chǎn)生和通知分發(fā)(如果允許);和(3)以小的批或個(gè)別處理信息如事件。而且,按照本發(fā)明的一個(gè)方面,不能在輕量級(jí)應(yīng)用程序中支持主含事件提供者和某些通知分發(fā),因?yàn)樗鼈円筮B續(xù)地運(yùn)行干預(yù)系統(tǒng)響應(yīng)時(shí)間的處理過程。然而,應(yīng)當(dāng)意識(shí)到,執(zhí)行引擎160是靈活的,因?yàn)樗苤С謶?yīng)用程序“輕度(lightness)”的遞增變化,取決于可用的資源和技術(shù)狀態(tài)。
應(yīng)當(dāng)注意,系統(tǒng)100還包括動(dòng)作組件170。在首選項(xiàng)的成功評(píng)估時(shí),首選項(xiàng)執(zhí)行引擎160可以按照一個(gè)或多個(gè)有效首選項(xiàng)啟用動(dòng)作組件170以執(zhí)行某些動(dòng)作。動(dòng)作可以影響在系統(tǒng)100內(nèi)或外的數(shù)據(jù)存儲(chǔ)器150(例如,插入、刪除或修改數(shù)據(jù))和/或其它組件和系統(tǒng)。一種特定類型的動(dòng)作是用戶通知。因此,動(dòng)作組件由通知組件180例示。
參考圖2,例示了通知組件180的更多細(xì)節(jié)。通知組件180包括格式化程序和交付協(xié)議274。通知組件180接收原始通知作為輸入并輸出最終到達(dá)用戶設(shè)備(例如,計(jì)算機(jī)、PDA、移動(dòng)電話...)的格式化的通知。在原始通知數(shù)據(jù)由通知組件180接收之后,通知被變換成為目的地設(shè)備格式化的可讀通知,并且有可能用用戶較喜歡的語言,隨后通過交付協(xié)議274發(fā)送到該設(shè)備。內(nèi)容格式化是由一個(gè)或多個(gè)內(nèi)容格式化程序組件272處理的任務(wù)。內(nèi)容格式化程序272用打包成數(shù)組的通知數(shù)據(jù)作為輸入。對(duì)于標(biāo)準(zhǔn)交付,在數(shù)組中應(yīng)當(dāng)只有一個(gè)元素,它包含單個(gè)通知記錄的信息。對(duì)于摘要交付,其中多個(gè)通知被搜索以在單個(gè)消息中發(fā)送到一個(gè)訂戶,在數(shù)組中可以有多個(gè)元素,它們每個(gè)包含來自一個(gè)通知的數(shù)據(jù)。內(nèi)容格式化程序272隨后格式數(shù)據(jù)用于顯示,例如,使用包含在通知數(shù)據(jù)中的接收者信息來確定合適的格式化。而且,如果使用摘要交付,則內(nèi)容格式化程序272還負(fù)責(zé)適當(dāng)?shù)鼐奂ㄖ畔ⅰT趦?nèi)部,內(nèi)容格式化程序272可以使用任何合適的模式來格式通知。例如,這樣的模式可以是與使用基本串操作一樣簡單,或者它可以更復(fù)雜,諸如使用可擴(kuò)展樣式表語言(XSL)變換或者ASP.NET呈現(xiàn)。當(dāng)內(nèi)容格式化程序完成其任務(wù)時(shí),它輸出一個(gè)包含格式化數(shù)據(jù)的串。該串連同可以產(chǎn)生的一些通知頭部信息被傳遞到交付協(xié)議組件274。
通知交付通過交付協(xié)議274完成。當(dāng)一批通知變成可供使用時(shí),通知組件180讀通知中的訂戶數(shù)據(jù)以確定合適的格式化。例如,通知組件180隨后可以經(jīng)由交付協(xié)議274發(fā)送通知到交付服務(wù),諸如.NET報(bào)警(Alert)或SMTP服務(wù)器。更明確地說,當(dāng)應(yīng)用程序正在運(yùn)行時(shí),通知組件172可以讀每個(gè)通知來獲得訂戶交付設(shè)備和地點(diǎn)。分發(fā)程序隨后將設(shè)備和地點(diǎn)的組合匹配一個(gè)特定的格式化程序?qū)ο髞懋a(chǎn)生最終的通知。通知本身可以包含原始通知數(shù)據(jù)、在格式化時(shí)計(jì)算的數(shù)據(jù)以及由內(nèi)容格式化程序272指定的文本的組合。這些選項(xiàng)允許專業(yè)的和用戶友好的通知文本并且包括網(wǎng)絡(luò)鏈接和標(biāo)記信息。
盡管系統(tǒng)100可處理內(nèi)部通知(例如,彈出通知),但系統(tǒng)100不必辦理將通知最終交付到外部第三方設(shè)備。相反,系統(tǒng)可以使用交付信道(未示出),這可以看作是到交付服務(wù)如電子郵件網(wǎng)關(guān)或.NET報(bào)警服務(wù)器的管道。更明確地說,交付信道可以由協(xié)議和終點(diǎn)地址組成。系統(tǒng)100可以配置交付協(xié)議274來提供一個(gè)從通知組件180到一個(gè)將通知發(fā)送到接收者的外部交付系統(tǒng)的管道。通知組件隨后可以將通知打包成一個(gè)使用交付協(xié)議組件274的協(xié)議數(shù)據(jù)包并且發(fā)送通知到一個(gè)或多個(gè)交付信道。交付信道隨后將數(shù)據(jù)包提供給外部交付服務(wù),它最終可以將通知發(fā)送給所希望的接受者。
信息代理應(yīng)用程序參考圖3,描繪按照本發(fā)明一個(gè)方面的信息代理應(yīng)用程序300。應(yīng)用程序300是在系統(tǒng)100上的部署單元并且包括邏輯模式310、用戶界面320、決策邏輯組件330、事件編程組件340和任務(wù)調(diào)度組件350。邏輯模式310定義系統(tǒng)化邏輯構(gòu)件或模板,它們可以由最終用戶放在一起。模式開發(fā)者負(fù)責(zé)構(gòu)造邏輯模式310,以及默認(rèn)行為,和在異常發(fā)生時(shí)的行為。實(shí)際上,邏輯模式310約束最終用戶邏輯的實(shí)際表達(dá)力,從而使它對(duì)于未受訓(xùn)練的最終用戶實(shí)際“編程”應(yīng)用程序是實(shí)際的和切實(shí)可行的。邏輯構(gòu)件可以包括一個(gè)首選項(xiàng)類、一組條件類定義和一組可能的結(jié)果或動(dòng)作。條件和動(dòng)作可以與相關(guān)應(yīng)用程序300和/或用戶上下文的功能有關(guān)。而且,應(yīng)當(dāng)意識(shí)到,按照本發(fā)明的一個(gè)方面,邏輯模式310可以使用XML(可擴(kuò)展標(biāo)記語言)來定義。
按照本發(fā)明一個(gè)方面,存在兩種模式邏輯310可以定義的構(gòu)件定義模板化布爾函數(shù)的條件類和定義模板化過程的動(dòng)作類。首選項(xiàng)類是信息代理模式開發(fā)的單元。首選項(xiàng)包括一組允許的條件類(例如,IsFrom(X),IsTo(Y))和動(dòng)作類(例如,MoveToFolder(Z),Delete())。而且,每個(gè)首選項(xiàng)與一個(gè)特定的事件類或開始一個(gè)動(dòng)作的觸發(fā)器(例如,EmailEvent(電子郵件事件))相關(guān)聯(lián)。在指定一個(gè)模式邏輯310之后,模式310可以由編譯器120編譯并且持久存留在數(shù)據(jù)存儲(chǔ)器150的標(biāo)準(zhǔn)化系統(tǒng)元表中。而且,存儲(chǔ)過程可以在可以評(píng)估首選項(xiàng)的編譯時(shí)段內(nèi)創(chuàng)建。模式邏輯310和過程兩者都可以存儲(chǔ)在系統(tǒng)化數(shù)據(jù)存儲(chǔ)器150用于稍后的訪問和執(zhí)行。之后,當(dāng)用戶搜索以指定時(shí),可以將首選項(xiàng)與邏輯模式122比較以驗(yàn)證它的形式一致并隨后存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器150中,例如在一個(gè)或多個(gè)首選項(xiàng)表中。當(dāng)一個(gè)適當(dāng)?shù)氖录l(fā)生時(shí),系統(tǒng)100隨后可以保證通過執(zhí)行在編譯時(shí)間內(nèi)創(chuàng)建的存儲(chǔ)的過程來評(píng)估適當(dāng)?shù)氖走x項(xiàng)。按照本發(fā)明一個(gè)方面,存儲(chǔ)過程可以有效地以面向組的方式一起評(píng)估多個(gè)首選項(xiàng),利用與索引和重復(fù)消除一樣的技術(shù)(下文描述)。
用戶界面320向最終用戶呈現(xiàn)首選項(xiàng)編寫或編程界面。最終用戶不是受過訓(xùn)練的開發(fā)者,因此標(biāo)準(zhǔn)過程編程或編腳本對(duì)于指定邏輯的用戶不是一個(gè)可行的選項(xiàng)。因此,邏輯可以用點(diǎn)擊和拖拉或拷貝和通過的方式,例如通過用戶界面320,來向最終用戶可視地表示和顯示。應(yīng)當(dāng)注意,用戶界面320可以是應(yīng)用程序300內(nèi)的工具欄或者完全獨(dú)立的圖形用戶界面(GUI)。而且,應(yīng)當(dāng)意識(shí)到,盡管應(yīng)用程序300例示為包含用戶界面320,但對(duì)于應(yīng)用程序沒有必要它們自己的用戶界面用于定義首選項(xiàng)。為了邏輯建立,可以將應(yīng)用程序設(shè)計(jì)為使用操作系統(tǒng)或應(yīng)用程序?qū)S糜脩艚缑妗?br> 應(yīng)用程序300還包含三個(gè)組件,最終用戶可以使用它們來產(chǎn)生首選項(xiàng)或變化功能的程序--決策邏輯組件330、事件編程組件340和任務(wù)調(diào)度組件430。決策邏輯組件330使最終用戶能夠定義決策邏輯(又稱最終用戶邏輯)。應(yīng)用程序隨后可以允許不同的決策受定義的最終用戶邏輯控制。例如,最終用戶可指定,如果、當(dāng)和如何報(bào)警可以在屏幕上彈出和打斷用戶。應(yīng)用程序也可以揭示最終用戶可以附加決策邏輯的事件。例如,只要新電子郵件到達(dá)一個(gè)文件夾,電子郵件應(yīng)用程序就可以提出一個(gè)事件。事件編程組件340允許最終用戶附加指定可以發(fā)生的行為的首選項(xiàng)或規(guī)則,例如,取決于消息的內(nèi)容和用戶的上下文。在規(guī)則中的條件可以訪問來自其它應(yīng)用程序的數(shù)據(jù)(例如,活動(dòng)目錄,以檢查發(fā)送者是否來自同一工作組),并且動(dòng)作可按照本發(fā)明一個(gè)方面影響其它應(yīng)用程序450或提出另一個(gè)事件。任務(wù)調(diào)度組件430使最終用戶能夠?qū)⑻貏e或預(yù)定義的任務(wù)附加到一個(gè)事件發(fā)生。例如,當(dāng)新的客戶申訴出現(xiàn)時(shí),最終用戶可以選擇開始預(yù)定的工作流以處理該申訴。
決策邏輯組件330允許最終用戶通過組合由開發(fā)者提供的條件和結(jié)論模板來編寫決策邏輯或最終用戶邏輯程序。決策邏輯可以使用“如果(條件)那么(結(jié)果)”首選項(xiàng)或規(guī)則來指定。這種類型的邏輯特別適合于最終用戶描述,因?yàn)樯踔两^對(duì)沒有任何編程經(jīng)驗(yàn)的最終用戶也能容易地理解和創(chuàng)建這類規(guī)則。考慮例如下面的如果(狗吠)或者(蜜蜂叮)那么(感覺難過)。這個(gè)規(guī)則是非開發(fā)者甚至小孩也能理解并在給定正確用戶界面時(shí)說清楚。這種類型如果-那么(IF-THEN)邏輯編程適合于最終用戶描述,至少因?yàn)樗先说耐评砀拍詈涂陬^交流。單個(gè)規(guī)則的語義是聲明性的并且很好理解。而且,對(duì)于最終用戶在活動(dòng)上下文中應(yīng)用首選項(xiàng)邏輯是直覺的。結(jié)果變成要采取的動(dòng)作而不只是真實(shí)性的語句。例如,如果(狗吠或者蜜蜂叮)那么(回想在玫瑰上的雨點(diǎn))。甚至在單個(gè)如果-那么規(guī)則內(nèi),在允許的表達(dá)力中可以存在變化程度的豐富性。前例在上面一般說來對(duì)應(yīng)于命題邏輯。命題邏輯基于可以組合起來以產(chǎn)生邏輯語句的簡單真/假命題的概念。然而,對(duì)于一般最終用戶用于描述太復(fù)雜的豐富的邏輯形式,包括但不限于謂詞邏輯、約束邏輯和遞歸,也可以結(jié)合本發(fā)明使用。
首選項(xiàng)可以通過用戶界面(例如,控制面板、工具欄)來指定。模式開發(fā)者可以提供一組基本謂詞作為條件邏輯的構(gòu)件。最終用戶可以隨后拾取適當(dāng)?shù)臈l件,在適當(dāng)?shù)牡胤街概蓞?shù)值,并且用布爾操作符(例如,AND(與)、OR(或)、NOT(非))將它們組合起來。同樣,最終用戶可以拾取適當(dāng)?shù)慕Y(jié)果并且在適當(dāng)?shù)牡胤街概蓞?shù)值。最終用戶指定的程序的豐富性來自開發(fā)者提供的系統(tǒng)化邏輯。這些條件和結(jié)果模板在它們的內(nèi)部邏輯方面是豐富的,訪問多種多樣信息,包括最終用戶應(yīng)用程序的結(jié)構(gòu)化數(shù)據(jù)。每個(gè)條件或結(jié)果模板可以具有一個(gè)描述參數(shù)列表的模式。最終用戶可以通過簡單地提供適當(dāng)?shù)膮?shù)值來使用這些構(gòu)件。
到這里已經(jīng)描述了信息代理系統(tǒng)100的被動(dòng)使用,下文描述更主動(dòng)的型式。按照系統(tǒng)100的被動(dòng)使用,應(yīng)用程序負(fù)責(zé)在適當(dāng)階段啟用決策邏輯并且提供必要的參數(shù)。應(yīng)用程序也可以負(fù)責(zé)調(diào)用另一個(gè)應(yīng)用程序?qū)Y(jié)果起作用。而且,應(yīng)當(dāng)注意,程序內(nèi)部結(jié)構(gòu),即系統(tǒng)100也需要一個(gè)解釋程序(未示出)來評(píng)估首選項(xiàng),處理多個(gè)首選項(xiàng)之間的沖突,并確定正確的結(jié)果集。
事件編程組件340為信息代理應(yīng)用程序300提供至少三個(gè)功能。第一,事件編程組件420可以提供一組系統(tǒng)化信息事件(例如,由模式開發(fā)者定義的),可以用作最終用戶程序的鉤子。每個(gè)事件可以用它攜帶結(jié)構(gòu)化數(shù)據(jù)。有許多機(jī)制用于事件實(shí)例捕捉(例如,事件提交的API)。還有一些信息事件的子類。一個(gè)事件子類相應(yīng)于在系統(tǒng)化數(shù)據(jù)存儲(chǔ)器150中的數(shù)據(jù)改變。因此,事件編程組件340可以提供機(jī)制,以訪問存儲(chǔ)器420中的數(shù)據(jù)變化并使它們可用作系統(tǒng)化改變事件。另一個(gè)事件子類可以相應(yīng)于再現(xiàn)定時(shí)器事件,它對(duì)于預(yù)定的首選項(xiàng)活動(dòng)是重要的。事件編程組件340也可以提供將“處理程序(handler)”邏輯關(guān)聯(lián)于特定事件的發(fā)生的能力。另外,事件編程組件340可以提供服務(wù)來捕捉事件、應(yīng)用適當(dāng)?shù)臎Q策邏輯和啟用動(dòng)作處理程序來執(zhí)行決策結(jié)果。
事件編程組件340可以與決策邏輯組件330交互以提供附加的功能。例如,最終用戶可以建立使用決策邏輯組件330的持續(xù)的決策邏輯,在新事件到達(dá)時(shí)它被反復(fù)地應(yīng)用程序。因此,在其上運(yùn)行的系統(tǒng)和/或程序可以是活動(dòng)的,因?yàn)槊總€(gè)觸發(fā)事件引起適當(dāng)?shù)臎Q策邏輯的評(píng)估。更具體地,觸發(fā)事件可以形成決策邏輯的輸入,并且首選項(xiàng)邏輯評(píng)估的結(jié)果可以形成事件編程組件340可以代表最終用戶執(zhí)行的動(dòng)作。另外,動(dòng)作可提出新出現(xiàn)的事件,它隨后使更進(jìn)一步的邏輯由編程組件340執(zhí)行。因此,存在特別鏈接式事件編程的概念。
任務(wù)調(diào)度組件350管理最終用戶任務(wù)調(diào)度或工作流。在此使用的時(shí)間表是一個(gè)經(jīng)過協(xié)調(diào)的任務(wù)集,在任務(wù)之間具有特定的排序和分段。在它們整體上執(zhí)行任務(wù)的目的一般是實(shí)現(xiàn)某個(gè)真實(shí)世界的目標(biāo),例如,調(diào)度一個(gè)四個(gè)人的會(huì)議。在這個(gè)會(huì)議例子中,在時(shí)間表中的任務(wù)可以包括,特別是,發(fā)送初始會(huì)議請(qǐng)求和處理肯定和否定的響應(yīng)。盡管工作流在業(yè)務(wù)處理自動(dòng)化中是共同的,但任務(wù)調(diào)度或工作流,如關(guān)于本發(fā)明所述的,與最終用戶活動(dòng)相關(guān)聯(lián)(例如,調(diào)度會(huì)議、檢閱文檔、委托請(qǐng)求...)。盡管這些工作流中的許多是簡單的過程,但它們對(duì)于最終用戶是能定制和透明的。
任務(wù)調(diào)度組件350可以與由決策邏輯組件330和事件編程組件340兩者提供的功能交互并利用它。事件編程組件340提供一個(gè)理想的鉤子來調(diào)用任務(wù)調(diào)度。例如,包括一個(gè)工作請(qǐng)求的新電子郵件的到達(dá)可啟動(dòng)一個(gè)任務(wù)調(diào)度。盡管某些任務(wù)調(diào)度是剛性的,處理流程是明確的,但許多其它任務(wù)調(diào)度是靈活的,允許最終用戶在不同路徑之間選擇。例如,如果一個(gè)會(huì)議請(qǐng)求被兩或多個(gè)被邀請(qǐng)者拒絕,則會(huì)議可以重新調(diào)度或者可供替換地會(huì)議可以進(jìn)行。這是使用最終用戶首選項(xiàng)和決策邏輯組件330的合適場所。而且,應(yīng)當(dāng)注意按照本發(fā)明的一個(gè)可替換方面,任務(wù)調(diào)度組件350可以被結(jié)合到事件編程組件340中,因?yàn)檎{(diào)度包括對(duì)改變作出反應(yīng)和啟用適當(dāng)?shù)膭?dòng)作??傊M管任務(wù)調(diào)度的某些部分可以由開發(fā)者硬編碼,但通過使流程動(dòng)態(tài)化添加一個(gè)有意義的值,并由顯式的用戶決策(它們有時(shí)是通過最終用戶編程被自動(dòng)化的)配置。
對(duì)于在此描述的信息代理概念有至少兩個(gè)主要元素。首先,最終用戶提供控制應(yīng)用程序行為的決策邏輯的能力是重要的。這只是最終用戶對(duì)應(yīng)用程序的編程能力,并且實(shí)際上不包括代表最終用戶起作用的代理。這在此稱為最終用戶邏輯的被動(dòng)啟用。第二,在信息代理概念中的一個(gè)重要元素是最終用戶提供主動(dòng)的決策邏輯的能力。主動(dòng)的決策邏輯可以在適當(dāng)?shù)男畔⑹录l(fā)生時(shí)反復(fù)地應(yīng)用程序,因而用作代表最終用戶的軟件代理。在兩種情況下,決策邏輯一般是上下文相關(guān)的--取決于用戶的上下文和應(yīng)用程序的狀態(tài)。下文將描述在這兩個(gè)上下文類別中的各種情況。而且,還將描述以信息代理可以采用的不同“人物(persona)”的形式的端對(duì)端情況。
最終用戶邏輯的被動(dòng)啟用的一個(gè)例子是操作系統(tǒng)使用一個(gè)信息代理控制對(duì)用戶的打擾。只要某個(gè)應(yīng)用程序想要在屏幕出現(xiàn)一個(gè)伴有聲音的彈出,操作系統(tǒng)可使用一個(gè)API調(diào)用信息代理決策邏輯組件來確定應(yīng)當(dāng)發(fā)生什么。存在若干能由決策邏輯組件展現(xiàn)的可能結(jié)論,包括顯示、推遲、刪除和轉(zhuǎn)送。一旦決策邏輯組件330告訴它做什么,操作系統(tǒng)隨后可實(shí)現(xiàn)實(shí)際的決策。
決策邏輯組件330也可用于定制常規(guī)程序的選項(xiàng)。例如,常規(guī)的電子郵件程序提供讀回執(zhí)、應(yīng)用簽名和郵件優(yōu)先級(jí)的的選項(xiàng)。關(guān)于讀回執(zhí),常常有一個(gè)檢查框表示是否應(yīng)當(dāng)允許讀回執(zhí)。決策邏輯組件330可定制這個(gè)選項(xiàng),只有重要的消息或者發(fā)送給他的管理的消息時(shí)允許讀回執(zhí)。而且,用戶一般可以將一個(gè)簽名應(yīng)用于外出的消息,然而使用決策邏輯組件330可以使操作更有代價(jià)并且通過取決于所想要的接收者附加簽名到消息來使操作個(gè)性化。最后,電子郵件優(yōu)先級(jí)一般由發(fā)送者確定和設(shè)置。通過使用決策邏輯組件330,郵件優(yōu)先級(jí)也能由接收者來確定,通過例如取決于接收者的當(dāng)前上下文。而且,應(yīng)當(dāng)注意,不僅可以使用最終用戶邏輯在如上述那些情況下確定做什么(例如,添加簽名),而且還確定動(dòng)作的內(nèi)容應(yīng)當(dāng)是什么(例如,應(yīng)當(dāng)實(shí)際添加什么簽名)。
經(jīng)由決策邏輯組件330的最終用戶邏輯的主動(dòng)啟用可以在多個(gè)情況下使用。例如,主動(dòng)邏輯可以按照組織規(guī)則用于經(jīng)組織的數(shù)據(jù),諸如按照在接收?qǐng)D片時(shí)是從照相機(jī)還是從電子郵件下載來分類圖片。主動(dòng)邏輯也可以用于對(duì)改變起反應(yīng),諸如當(dāng)新的電子郵件到達(dá)時(shí)并且接收者不在他/她的辦公桌前時(shí)將它轉(zhuǎn)送到它們的移動(dòng)電話。主動(dòng)邏輯也可以用于增強(qiáng)通信,例如通過當(dāng)他們不在時(shí)回答用戶的電話并且例如用用戶下次能接電話的時(shí)間來應(yīng)答。而且,主動(dòng)邏輯可以用于訂閱公布的信息,例如使得用戶可以在它們旅行目的地預(yù)期有壞天氣時(shí)通知它們。還有,主動(dòng)邏輯可以用于保持上下文。例如,當(dāng)用戶在不同的位置中進(jìn)入和離開會(huì)議時(shí),可以適當(dāng)?shù)馗律舷挛?例如,遠(yuǎn)程或本地、忙或閑...)。
信息代理可以扮演各種角色,就如同一個(gè)真實(shí)的人類代理能為用戶做的。因此,信息代理可以具有變化的人品,包括但不限于增強(qiáng)通信的秘書、組織信息的圖書館員、保證委托人/用戶知道機(jī)會(huì)的服務(wù)代理、保證委托人/用戶不陷入麻煩的伴護(hù)和使委托人/用戶形象良好的仆人。作為秘書,信息代理可執(zhí)行各種功能,諸如當(dāng)委托人/用戶不在時(shí)回答電話呼叫,將呼叫者轉(zhuǎn)移到不在的用戶的語音郵件并且即時(shí)通知用戶表示錯(cuò)過了一個(gè)電話。作為圖書館員,信息代理可組織數(shù)字照片和電子郵件。作為服務(wù)代理,例如,信息代理可保持委托人被通知購買售出的股票或者不動(dòng)產(chǎn)的機(jī)會(huì)。作為伴護(hù)的信息代理,當(dāng)委托人的銀行帳戶結(jié)余低于最低結(jié)余時(shí)通知委托人,當(dāng)接近委托人的信用卡限制時(shí)通知委托人,提供通知以保證準(zhǔn)時(shí)支付帳單,和/或在委托人的計(jì)算機(jī)上電池不足或盤滿時(shí)向委托人報(bào)警。作為仆人,信息代理可拉出與一個(gè)來自重要客戶的進(jìn)入呼叫有關(guān)的所有文檔和電子郵件和/或確保令人為難的通知不在演示當(dāng)中彈出。
邏輯模式轉(zhuǎn)到圖4,描繪按照本發(fā)明一個(gè)方面的示例性邏輯模式400。邏輯模式400包括條件類410、動(dòng)作類415、事件類420、首選項(xiàng)類425、綁定430、記事435、沖突解決445、顯式執(zhí)行排序450、要求的條件和動(dòng)作455、模板460和預(yù)定與再現(xiàn)的首選項(xiàng)465。提供示例性邏輯模式400和前述模式組件是為了簡化說明。因此,應(yīng)當(dāng)意識(shí)到,邏輯模式400可以包含所有上面提到的組件、它們的子集和/或在此沒有描述的其它模式組件。如前所述,模式開發(fā)者定義可以由最終用戶放在一起的系統(tǒng)化邏輯構(gòu)件。兩種構(gòu)件是條件類410和動(dòng)作類415。條件類410可以定義模板化的布爾函數(shù),而動(dòng)作類415可以定義模板化的過程。首選項(xiàng)類425是信息代理模式部署的單元。首選項(xiàng)類425可以包括,特別是,一組允許的條件類和動(dòng)作類、綁定430、沖突解決445和要求的條件455。而且,每個(gè)首選項(xiàng)類425可以與一個(gè)特定的事件類420相關(guān)聯(lián),后者定義首選項(xiàng)的觸發(fā)事件。下面是信息代理電子郵件應(yīng)用程序的首選項(xiàng)類InboxPreferenceClass(收件箱首選項(xiàng)類)·ConditionClass(條件類)*IsFrom(X)(是來自X的)*IsTo(Y)(是給Y的)·ActionClass(動(dòng)作類)*MoveToFolder(Z)(移到文件夾Z)*Delete()(刪除)·TriggeringEventClass(觸發(fā)事件類)*EmailEventClass(電子郵件事件類)·觸發(fā)事件的源*改變到一個(gè)收件箱文件夾*ApplyNow()(現(xiàn)在應(yīng)用程序)*SheduledEvent()(預(yù)定的事件)首選項(xiàng)是最終用戶邏輯的單元。首選項(xiàng)可以是“當(dāng)(事件)時(shí)如果(條件)那么(動(dòng)作集)”形式的邏輯語句。每個(gè)首選項(xiàng)因此應(yīng)當(dāng)?shù)灰缶哂邢铝袑傩?。首先,首選項(xiàng)應(yīng)當(dāng)發(fā)生一個(gè)首選項(xiàng)類。其次,首選項(xiàng)應(yīng)當(dāng)由某個(gè)用戶或委托人擁有。第三,條件應(yīng)當(dāng)是一個(gè)組合一個(gè)或多個(gè)條件類的聲明性布爾表達(dá)式,其中每個(gè)條件實(shí)例定義條件類的參數(shù)值。最后,動(dòng)作集應(yīng)當(dāng)是一組動(dòng)作類。每個(gè)動(dòng)作實(shí)例定義動(dòng)作類的參數(shù)值。例如UserPreference(用戶首選項(xiàng))·InBoxPreferenceClass(收件箱首選項(xiàng)類)的實(shí)例
·IF(IsFrom(John)OR IsTo(’bookclub″)THEN MoveToFolder(’BookClub’)(如果(是來自(約翰)或者是給(‘圖書俱樂部’)那么移到文件夾(‘圖書俱樂部’))最終用戶隨后可以通過定義事件處理程序來“編程”。每個(gè)事件處理程序是由一組相同首選項(xiàng)類的首選項(xiàng)定義的并且因此由相同的事件觸發(fā)。例如·IF(IsFrom(John)OR IsTo(’bookclub″)THEN MoveToFolder(’BookClub’)(如果(是來自(約翰)或者是給(‘圖書俱樂部’)那么移到文件夾(‘圖書俱樂部’))·IF(IsTo(’SillyStuffDL’)THEN Delete()(如果(是給(‘無聊內(nèi)容下載’)那么刪除)隨后,當(dāng)一個(gè)特定事件發(fā)生(例如,電子郵件到達(dá))時(shí),不止一個(gè)首選項(xiàng)可能具有有效的條件,導(dǎo)致執(zhí)行多個(gè)動(dòng)作的可能性。各種沖突解決機(jī)制隨后可應(yīng)用程序,如下所述。
而且,應(yīng)當(dāng)意識(shí)到,每個(gè)條件只是一個(gè)布爾函數(shù)連同它的啟用參數(shù)。按照本發(fā)明的一個(gè)方面,要求系統(tǒng)邏輯跨越應(yīng)用程序邊界。因此,條件需要能夠觀看由許多不同應(yīng)用程序創(chuàng)建的數(shù)據(jù)。例如·存在數(shù)據(jù)IF(IsFrom(’John’)AND SenderIsOnline())THEN...(如果(是來自(‘約翰’)并且發(fā)送者是在線的)那么...)·位置數(shù)據(jù)IF(IAmFarMeetingLocation())THENRemainderMinutesWindow(30)(如果(我在遠(yuǎn)的會(huì)議位置)那么提醒(30)分鐘窗口)·組織層次結(jié)構(gòu)IF(IsFromMyManagement())THENMarkAsHighPriority()(如果(是來自我的管理那么標(biāo)記為高優(yōu)先級(jí))所有上面的例子涉及用戶上下文。用戶上下文可以由上下文分析程序140(圖1)確定并且存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器150(圖1)中供信息代理應(yīng)用程序使用。因而,象“Bool IsOnline(X)(布爾)X(是在線的)”的函數(shù)可以返回真或假,基于傳入的個(gè)人X的身份和他/她的當(dāng)前上下文,如由上下文分析程序確定的。
繼續(xù)上面的例子,一個(gè)首選項(xiàng)類如InBoxPreferenceClass(收件箱首選項(xiàng)類)的模式開發(fā)者需要提供一個(gè)條件類410供最終用戶使用。這可以由若干方式來完成。例如,一個(gè)條件類可以是IsOnline()(是在線的)。在這個(gè)例子中,最終用戶可定義一個(gè)“IF(IsOnline(Email.Sender))THEN...(如果(電子郵件的發(fā)送者是在線的那么...)”形式的首選項(xiàng)??晒┨鎿Q地,條件類可以是SenderIsOnline()(發(fā)送者是在線的),并且在其聲明中模式開發(fā)者可定義一個(gè)首選項(xiàng)或規(guī)則如下“IF(SenderIsOnline())THEN...(如果(發(fā)送者是在線的)那么)”。因此,最終用戶可定義一個(gè)首選項(xiàng)或規(guī)則如下“IF(SenderIsOnline())THEN...(如果(發(fā)送者是在線的)那么...)”。盡管本發(fā)明支持大量指定條件類410的形式,但應(yīng)當(dāng)注意,在上述形式中存在顯著的區(qū)別。第一個(gè)形式是傳統(tǒng)的謂詞演算規(guī)則形式,其中編寫規(guī)則的個(gè)人(即,最終用戶)推理關(guān)于模式和可變綁定。第二個(gè)形式不太靈活,但對(duì)于最終用戶使用肯定更簡單。因此,條件類410是模式開發(fā)者可以限制最終用戶邏輯的表達(dá)力的地方,并且因而使它對(duì)于未用過的最終用戶來“編程”信息代理應(yīng)用程序更實(shí)用和切實(shí)可行。
簡言之,模式開發(fā)者編寫首選項(xiàng)類425,產(chǎn)生一組條件類聲明410。每個(gè)條件類聲明標(biāo)識(shí)一個(gè)執(zhí)行函數(shù)和由開發(fā)者定義的表達(dá)式綁定的函數(shù)的參數(shù)。剩余的參數(shù)是由最終用戶在建立首選項(xiàng)時(shí)為每個(gè)條件實(shí)例提供的常數(shù)。動(dòng)作是動(dòng)作類415的實(shí)例。每個(gè)動(dòng)作類415是具有參數(shù)的過程。就象條件一樣,參數(shù)由開發(fā)者綁定或者可由最終用戶指派。而且,事件類420提供事件的定義。事件類定義事件信息內(nèi)容,如由開發(fā)者指定或者由最終用戶指派,它觸發(fā)首選項(xiàng)評(píng)估。
如貫穿本說明書提到的,并且按照本發(fā)明的一個(gè)方面,最終用戶不預(yù)期為有經(jīng)驗(yàn)的程序員。因此,基于具有直觀的名字(例如,EmailIsFrom()(電子郵件來自))的條件創(chuàng)建首選項(xiàng),并且條件的自變量可以是簡單的用戶定義常數(shù)(例如,瑪麗)。這使最終用戶能夠編寫一個(gè)由EmailIsFrom(Mary)(電子郵件來自瑪麗)觸發(fā)的首選項(xiàng)。然而,具有僅基于用戶提供的串常數(shù)的自變量太受限制。因此,可以在邏輯模式400指定綁定430,作為首選項(xiàng)類425的一部分,以使編程對(duì)于最終用戶更容易并且擴(kuò)展可以檢索信息的范圍。存在至少三個(gè)可以在模式400中指定的參數(shù)綁定類型。第一,可指定預(yù)定義一個(gè)常數(shù)的常數(shù)綁定。指定一個(gè)常數(shù)綁定是有利的,至少因?yàn)樗棺罱K用戶免除必須選擇或指定一個(gè)常數(shù)。事件綁定的表達(dá)式也可以綁定到作為條件和動(dòng)作的自變量提供的值。更明確地說,可以定義使用事件字段和常數(shù)來計(jì)算值的表達(dá)式。例如·條件類SenderIsOnline()(發(fā)送者是在線的)·定義函數(shù)IsOnline()(是在線的)
·綁定X→Email.Sender(X→電子郵件.發(fā)送者)最后,可定義常數(shù)存取器。常數(shù)存取器是命名的對(duì)象分組,它代替用戶必須人工地指定每個(gè)這類對(duì)象,提供條件和動(dòng)作的自變量。
常數(shù)存取器是非常強(qiáng)大的常數(shù),允許編寫能夠?qū)Ш胶蛷母鞣N域檢索信息的首選項(xiàng)和條件。這些常數(shù)只是虛飾在用于找到和具體化正確信息的函數(shù)上的名字,即與常數(shù)的名字相關(guān)聯(lián)的分組成員。簡短地轉(zhuǎn)到圖5,例示了按照本發(fā)明一個(gè)方面用于檢索常數(shù)值的系統(tǒng)500。系統(tǒng)500包括一個(gè)存取器輸入組件510、鏈接組件520和多個(gè)域530、540和550(域1至域N,其中N大于一)。存取器輸入組件610接收一個(gè)常數(shù)如MyFamily(我的家庭)、MyCoworkers(我的同事)或MyFriends(我的朋友)作為輸入,并且提供該常數(shù)給存取器組件520。存取器組件520用于通過所有可訪問的域520、530和540搜索以嘗試和解析或者鏈接到與由輸入常數(shù)指定的分組成員相關(guān)聯(lián)的值。按照本發(fā)明的一個(gè)方面,域530、540和550可以是存儲(chǔ)在系統(tǒng)化數(shù)據(jù)存儲(chǔ)器中的應(yīng)用程序。例如,域520可以是一個(gè)電子郵件應(yīng)用程序,域530可以是一個(gè)日程表應(yīng)用程序,而域540可以是一個(gè)客戶帳戶應(yīng)用程序。因此,存取器組件520可在試圖確定一個(gè)常數(shù)(例如,MyFamily(我的家庭))值時(shí)訪問電子郵件應(yīng)用程序或者定位數(shù)據(jù)注冊(cè)表。如果組件530不能在該域或者在一個(gè)定位的數(shù)據(jù)注冊(cè)表中解析這個(gè)值,則它可以保持檢查其它可訪問的域,直到確定常數(shù)值或者它已經(jīng)檢查了所有可用的域。在一個(gè)例子中,存取器組件可在電子郵件應(yīng)用程序中查找數(shù)據(jù),諸如<MyFamily>
<Father>Bob Jones</Father>
<Mother>Barb Jones</Mother>
<Brothers>
<Brol>Michael Jones</Brol>
<Bro2>Jason Jones</Bro2>
</Brothers>
</MyFamily>
應(yīng)當(dāng)注意,與常數(shù)MyFamily(我的家庭)相關(guān)聯(lián)的分組成員的XML表示只用于例示的目的。一個(gè)分組的填充可以用許多方式由本發(fā)明定義和/或具體化。因此,存取器組件520可解析或鏈接MyFamily(我的家庭)到Bob Jones、BarbJones、Michael Jones和Jason Jones,基于從電子郵件應(yīng)用程序的檢索的數(shù)據(jù)。然而,存取器組件540可繼續(xù)其它域以保證數(shù)據(jù)完整性和準(zhǔn)確性。例如,它可在日程表應(yīng)用程序中找到<MySister>Jennifer Jones</MySister>,并且將這個(gè)值添加到與常數(shù)MyFamily(我的家庭)相關(guān)的值串。
到這里所討論的常數(shù)(例如,MyFamily(我的家庭)、MyCoworkers(我的同事)、MyFriends(我的朋友)、MyFavorite Musicians(我喜愛的音樂家))稱為一階常數(shù),因?yàn)樗鼈兪窍鄬?duì)于一個(gè)給定用戶定義的。存取器組件510或存取器隨后可以切斷用戶的身份或者其它起點(diǎn)。也應(yīng)當(dāng)注意,N階常數(shù)也可以由用戶通過使用首選項(xiàng)來組合以前定義的分組(例如,由常數(shù)命名的)來編寫和保存。作為例子,考慮常數(shù)命名的分組的組合,提供與介語短語相似的功能。例如,用戶可以編寫和保存象FriendsOfMyFamily(我的家庭的朋友)或EmailsFromPreferredCustomersInAppointmentsToday(來自今天預(yù)約的較喜歡的客戶的電子郵件)這樣的常數(shù)。從另一個(gè)角度,常數(shù)擴(kuò)展與也可以表示為常數(shù)存取器并且與其它常數(shù)組合的項(xiàng)目字段上的條件相似。
因此,常數(shù)存取器提供跨越不同域?qū)?shù)據(jù)的導(dǎo)航。系統(tǒng)化邏輯與導(dǎo)航的存取器的組合使非程序員能夠編寫跨域的首選項(xiàng)。而且,與相對(duì)小數(shù)量的存取器約束組合的相對(duì)小數(shù)量的條件類促進(jìn)了大量感興趣和強(qiáng)大的條件的指定,否則必須由應(yīng)用程序開發(fā)者參與。
另外,應(yīng)當(dāng)注意,也可以指定首選項(xiàng)分組。由最終用戶定義的決策邏輯由一個(gè)或多個(gè)首選項(xiàng)集表示。因此,首選項(xiàng)分組可以定義為相關(guān)聯(lián)首選項(xiàng)分組的容器。在一個(gè)首選項(xiàng)分組內(nèi)的首選項(xiàng)隨后可以(1)屬于同一首選項(xiàng)類,(2)被一起評(píng)估,結(jié)果接受沖突解決。而且,在首選項(xiàng)分組中的首選項(xiàng)可以共同地允許或禁止。首選項(xiàng)的共同允許和禁止在無數(shù)情況中是有用的。例如,最終用戶在工作時(shí)具有一組首選項(xiàng),并且在家里時(shí)具有另一組首選項(xiàng)。因而,可以基于用戶上下文允許或禁止首選項(xiàng)分組。
邏輯模式400還包括記事435。許多信息代理應(yīng)用程序需要保持狀態(tài)以便作出明智的決策。如一個(gè)簡單的例子,考慮新聞公布信息代理應(yīng)用程序。最終用戶訂閱感興趣的新聞文章。事件饋送運(yùn)送新聞文章的穩(wěn)定流。一個(gè)問題是同一文章可帶有輕微修改的內(nèi)容到達(dá)許多次,但帶有同一標(biāo)題。在這個(gè)上下文中,明智的條件是IsNewArticle()(是新文章)。這個(gè)條件可以檢查以前未見過的標(biāo)題。另一個(gè)例子是檢查更新的穩(wěn)定流是否使一篇文章成為一個(gè)斷續(xù)的故事。為了允許這種類型的功能,在處理事件時(shí)需要保持一個(gè)狀態(tài)。這個(gè)狀態(tài)在此稱為記事(chronicle),因?yàn)樗菓?yīng)用程序歷史的表示。
信息代理模式開發(fā)者可以定義記事(例如,作為關(guān)系數(shù)據(jù)庫中的表,或者在由操作系統(tǒng)管理的文件夾中)。更重要地,模式開發(fā)者可以定義在事件處理的重要階段運(yùn)行的邏輯,以便更新應(yīng)用程序狀態(tài)。例如,計(jì)算一個(gè)事件是否相應(yīng)于一個(gè)斷續(xù)故事的適當(dāng)時(shí)間是在事件被處理之前。另外,記錄一個(gè)新聞文章被處理的事實(shí)使得后續(xù)的具有相同標(biāo)題的事件示為復(fù)制品的適當(dāng)時(shí)間,是在事件被處理之后。而且,應(yīng)當(dāng)注意,記事也可以用于記錄動(dòng)作歷史以及事件歷史。
開發(fā)者可以指定沖突解決組件545中的沖突解決過程或邏輯作為邏輯模式400中首選項(xiàng)類425的一部分。當(dāng)一個(gè)事件發(fā)生時(shí),多個(gè)動(dòng)作可以引起,如果多個(gè)首選項(xiàng)符合該事件。因而,用于確定執(zhí)行的順序和/或最后采取的動(dòng)作的系統(tǒng)和方法是想要的。有至少三種方法來處理多個(gè)動(dòng)作的觸發(fā)。第一,模式500可允許最終用戶能夠定義動(dòng)作或首選項(xiàng)優(yōu)先級(jí)。例如,最終用戶可指派優(yōu)先級(jí)給每個(gè)首選項(xiàng)。另外,最終用戶可將一個(gè)停止處理指示符(例如,標(biāo)志)指派給某些首選項(xiàng)。因此,當(dāng)一個(gè)事件觸發(fā)多個(gè)動(dòng)作時(shí),可按優(yōu)先級(jí)的順序執(zhí)行動(dòng)作。另外和可供替換地,如果多個(gè)首選項(xiàng)在一個(gè)首選項(xiàng)分組內(nèi)符合,則可以執(zhí)行最高優(yōu)先級(jí)的首選項(xiàng)而丟棄其它的。而且,模式400可使最終用戶能夠指定沖突解決過程,諸如允許它們附加一個(gè)停止處理指示符到某些首選項(xiàng)以處理一個(gè)包含該指示符的首選項(xiàng)在其它首選項(xiàng)同時(shí)被觸發(fā)時(shí)的情況。另一個(gè)可以解決沖突的方式是通過定義模式400內(nèi)的動(dòng)作類優(yōu)先級(jí)。因此,模式開發(fā)者可以指定動(dòng)作類優(yōu)先級(jí)。例如,MoveToFolder(移到文件夾)動(dòng)作類可指定比Delete(刪除)動(dòng)作類更高的優(yōu)先級(jí)。其它沖突情況可以在同一動(dòng)作類的多個(gè)動(dòng)作被同時(shí)觸發(fā)時(shí)引起。模式開發(fā)者可以定義多個(gè)沖突解決邏輯以處理這種情況。例如,假定有一個(gè)動(dòng)作類設(shè)置想要的彈出的音量(例如,SetVolume()(設(shè)置音量))。還假定一個(gè)事件觸發(fā)兩個(gè)動(dòng)作,SetVolume(50)(設(shè)置音量50)和SetVolume(70)(設(shè)置音量70)。在這種情況下,在沖突解決組件545中定義的沖突邏輯可以這樣定義,使得相應(yīng)于兩個(gè)級(jí)別的最小、最大或平均來采取動(dòng)作。
首選項(xiàng)執(zhí)行順序也可以通過顯式執(zhí)行組件450在模式400中指定。在有些情況下,首選項(xiàng)的顯式排序是必要的,因?yàn)橐粋€(gè)首選項(xiàng)的動(dòng)作可以影響另一個(gè)中的條件。例如,關(guān)于電子郵件首選項(xiàng),一個(gè)首選項(xiàng)可以用于決定進(jìn)入消息的優(yōu)先級(jí),同時(shí)另一個(gè)首選項(xiàng)可被編寫為對(duì)消息的優(yōu)先級(jí)起反應(yīng)并且決定如何對(duì)它起作用。最終用戶首選項(xiàng)編寫者一般是沒有經(jīng)驗(yàn)的程序員。按照本發(fā)明一個(gè)方面,不要求最終用戶編寫具有副作用并因此具有排序要求的首選項(xiàng)或規(guī)則。最好是模式開發(fā)者向最終用戶隱藏排序依賴。這可以用多個(gè)不同方法來完成,包括但不限于首選項(xiàng)類排序、顯式鏈接和首選項(xiàng)分組排序。通過首選項(xiàng)分組排序,模式開發(fā)者可以排序首選項(xiàng)類以在另一個(gè)之前執(zhí)行。在上面提到的例子中,用于建立消息屬性(例如優(yōu)先級(jí))的首選項(xiàng)類應(yīng)當(dāng)在對(duì)消息起反應(yīng)的首選項(xiàng)類之間出現(xiàn)。按照本發(fā)明一個(gè)方面,向最終用戶呈現(xiàn)的用戶界面可被劃分成窗格,使得首選項(xiàng)類具有它自己的窗格。按照顯式鏈接,模式開發(fā)者可指定引起新出現(xiàn)事件的動(dòng)作及其排序。因此,首選項(xiàng)類可用動(dòng)作-事件鏈接而不是首選項(xiàng)類排序來實(shí)現(xiàn)。而且,模式開發(fā)者可使用首選項(xiàng)分組指定執(zhí)行排序。使用首選項(xiàng)分組排序提供與首選項(xiàng)類排序相同的能力,但以更靈活的形式。例如,每個(gè)首選項(xiàng)分組可在其中只有一個(gè)首選項(xiàng),導(dǎo)致等價(jià)于首選項(xiàng)的完全排序的順序列表。
使用要求的條件和動(dòng)作組件455,“要求的(required)”條件和動(dòng)作也可以在模式400中指定為首選項(xiàng)類425的一部分。每個(gè)首選項(xiàng)類可以包括要求的條件和動(dòng)作。要求的條件和動(dòng)作可以用于在所有首選項(xiàng)上強(qiáng)制某些共同的模式。例如,在熟悉的在服務(wù)器上應(yīng)用程序的電子郵件處理例子中,關(guān)于收件箱首選項(xiàng)的要求的條件為首選項(xiàng)的所有者也是電子郵件的接收者。
模板460也可以在邏輯模式400中定義。為方便沒有經(jīng)驗(yàn)的最終用戶對(duì)邏輯的編寫,可以由開發(fā)者或者第三方提供模板供最終用戶采納和使用。因此,如果模板可用于最終用戶,則系統(tǒng)100應(yīng)當(dāng)支持首選項(xiàng)模板的抽象。這可以簡單地相應(yīng)于一個(gè)具有部分未指定的參數(shù)的持久的完整首選項(xiàng)(選擇條件表達(dá)式和動(dòng)作)。
也可以定義模式400,以便通過預(yù)定和再現(xiàn)的首選項(xiàng)組件405處理預(yù)定和再現(xiàn)的首選項(xiàng)。許多信息代理應(yīng)用程序希望使用在再現(xiàn)調(diào)度上評(píng)估的首選項(xiàng)。許多例子之一包括每個(gè)工作日在5p.m.(下午5時(shí))發(fā)送概要狀態(tài)。按照本發(fā)明的一個(gè)方面,預(yù)定和再現(xiàn)的功能可以在模式400中使用兩個(gè)抽象來實(shí)現(xiàn)。第一,系統(tǒng)定義的事件類(例如,TimerEvent(定時(shí)器事件))可以用于為一個(gè)預(yù)定活動(dòng)提供事件鉤子。這個(gè)事件類可以配置為各種常見的粒度。而且,與事件相關(guān)聯(lián)的數(shù)據(jù)可以包括當(dāng)前時(shí)間和先前的激發(fā)時(shí)間。其次,每個(gè)預(yù)定的首選項(xiàng)可以包括一個(gè)條件,如RecurrenceInWindow(RecurrenceSchedule,StartTime,EndTime)(在窗口中再現(xiàn)(再現(xiàn)調(diào)度,開始時(shí)間,結(jié)束時(shí)間)),其中·RecurrenceSchedule(再現(xiàn)調(diào)度)是表示所想要的再現(xiàn)模式的常數(shù),如從最終用戶描述中捕捉的;·StartTime(開始時(shí)間)由開發(fā)者綁定到定時(shí)器模式的先前時(shí)間;以及·EndTime(結(jié)束時(shí)間)由開發(fā)者綁定到定時(shí)器事件的當(dāng)前激發(fā)時(shí)間。
總之,邏輯模式400可以包含許多不同的組件或者部分,以便為最終用戶首選項(xiàng)提供邏輯構(gòu)件。模式可以采用任何形式,例如XML文件。一旦模式完成,它就可以編譯成數(shù)據(jù)庫表示并且例如存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器150(圖1)中。應(yīng)當(dāng)意識(shí)到,模式文件可直接使用應(yīng)用程序諸如Visual Studio來編寫或構(gòu)造。因此,系統(tǒng)編譯器應(yīng)當(dāng)能夠支持使用大量模式編輯器應(yīng)用程序產(chǎn)生的模式文件。
應(yīng)用程序執(zhí)行信息代理應(yīng)用程序的執(zhí)行可以細(xì)分成三個(gè)不同的類別事件處理,首選項(xiàng)處理和動(dòng)作處理。事件處理涉及如何捕捉事件和它們?nèi)绾渭せ钍走x項(xiàng)邏輯。首選項(xiàng)處理可以用多種不同方式來完成,部分取決于不同的首選項(xiàng)處理方式。最后,應(yīng)用程序執(zhí)行包括確定如何處理動(dòng)作。
事件可以由某個(gè)應(yīng)用程序顯式地提交事件使用系統(tǒng)API 110(圖1)來捕捉。事件可以個(gè)別地或者一起作為一個(gè)批提交。有無數(shù)事件捕捉的情況,包括但不限于·作為常見應(yīng)用程序邏輯的一部分,例如,Exchange SMTP提供者可接收新的SMTP消息并且顯式地提出信息代理事件。
·從數(shù)據(jù)改變,例如,當(dāng)數(shù)據(jù)存儲(chǔ)器150中的數(shù)據(jù)改變事件觸發(fā)為IA邏輯·從操作系統(tǒng),例如,一個(gè)應(yīng)用程序可監(jiān)聽操作系統(tǒng)和/或它的相關(guān)聯(lián)運(yùn)行庫并且在檢測到特定動(dòng)作時(shí)提出事件。
·從信息代理首選項(xiàng),一個(gè)首選項(xiàng)的動(dòng)作可提出另一個(gè)導(dǎo)致跨首選項(xiàng)評(píng)估的鏈接的事件。
·用戶可顯式地指定要產(chǎn)生的事件。例如,用戶可指定要相應(yīng)于一個(gè)文件夾中每個(gè)文件產(chǎn)生的事件。
而且,應(yīng)當(dāng)注意,系統(tǒng)100可以為事件捕捉邏輯提供一個(gè)主機(jī)服務(wù),它不要求主動(dòng)執(zhí)行的較大應(yīng)用程序。例如,包信息代理應(yīng)用程序希望某個(gè)操作系統(tǒng)事件觸發(fā)應(yīng)用程序活動(dòng)。因此,有可能在一個(gè)服務(wù)中主這個(gè)事件提供者而不要求一個(gè)僅為此功能運(yùn)行的單獨(dú)應(yīng)用程序。
首選項(xiàng)由事件的發(fā)生激活。其處理可以是同步的、異步的或者兩者的組合。對(duì)于同步處理,在事件提交與首選項(xiàng)評(píng)估之間存在微不足道的小延遲。另一方面,異步處理,在事件提交與事件處理之間存在明顯的延遲。本發(fā)明的系統(tǒng)支持兩種處理模型并且可以實(shí)時(shí)基于事件批提交在這些模型之間選擇。
而且,按照本發(fā)明的一個(gè)方面,首選項(xiàng)處理利用強(qiáng)大的數(shù)據(jù)庫查詢來有效地評(píng)估首選項(xiàng)。向開發(fā)者并且最終向最終用戶揭示的是一個(gè)聲明性編程模型,允許條件功能按照一次一個(gè)模型來指定。一次一個(gè)編程模型是一個(gè)最自然使用的模型,并且使開發(fā)者和用戶能夠針對(duì)一個(gè)首選項(xiàng)指定一個(gè)事件。然而,按照本發(fā)明的一個(gè)方面,系統(tǒng)100制作以面向集合的方式執(zhí)行的條件類查詢,利用像索引和重復(fù)消除的技術(shù)。這是有利的,因?yàn)槭走x項(xiàng)是以有效方式評(píng)估的,同時(shí)開發(fā)者和用戶保留著以一次一個(gè)的方式概念化和編寫程序,盡管這易于理解和編寫,但這是一種效率低下的方式來執(zhí)行大量首選項(xiàng)。而且,盡管多個(gè)首選項(xiàng)可以成批處理,但應(yīng)當(dāng)注意,首選項(xiàng)可以在事件發(fā)生時(shí)個(gè)別地評(píng)估。
轉(zhuǎn)到圖6,例示按照本發(fā)明一個(gè)方面用于首選項(xiàng)評(píng)估的系統(tǒng)600。系統(tǒng)600包括一個(gè)數(shù)據(jù)存儲(chǔ)器150、大量表610、首選項(xiàng)執(zhí)行引擎160和一個(gè)結(jié)果表630。數(shù)據(jù)存儲(chǔ)器150容納大量表610,它們是由系統(tǒng)100從一個(gè)開發(fā)者模式以及最終用戶首選項(xiàng)產(chǎn)生的。作為一個(gè)事件發(fā)生的結(jié)果,首選項(xiàng)執(zhí)行引擎接收或檢索首選項(xiàng),例如從存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器150中的表。執(zhí)行引擎160隨后使用首選項(xiàng)以及一些存儲(chǔ)過程(它也可以存儲(chǔ)為數(shù)據(jù))到查詢表610并產(chǎn)生一個(gè)結(jié)果表630。結(jié)果表630可以存儲(chǔ)已經(jīng)滿足其條件使得指定的動(dòng)作可以在其上開始的首選項(xiàng)。
表610的數(shù)量和復(fù)雜性可以根據(jù)由開發(fā)者為支持最終用戶首選項(xiàng)編寫的模式的復(fù)雜度變化。下文提供一個(gè)例子,以便闡明系統(tǒng)600如何使用數(shù)據(jù)庫表和查詢來處理首選項(xiàng)。在本例中,有兩個(gè)人,杰克和吉爾,它們搜索所使用的若干首選項(xiàng)分組。如已經(jīng)討論的,在杰克和吉爾可以指定最終用戶首選項(xiàng)之前必須已經(jīng)產(chǎn)生一個(gè)模式。模式具有上述幾個(gè)部分,然而為了方便理解,在此描述一個(gè)非常簡單的模式。一個(gè)模式的基本部分之一是事件類的定義。在本例中,考慮兩個(gè)事件類,EmailEvent(電子郵件事件)和Stockevent(股票事件)。轉(zhuǎn)到附于本文的附錄,示出例示兩個(gè)事件類以及三個(gè)首選項(xiàng)類的模式定義的偽代碼。這兩個(gè)首選項(xiàng)類基于EmailEvent(電子郵件事件)而第三個(gè)類基于StockEvent(股票事件)。信息系統(tǒng)100隨后可以使用這個(gè)模式來產(chǎn)生一個(gè)首選項(xiàng)類表和條件類,它們可以存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器150中。例如PreferenceClass(首選項(xiàng)類)表

ConditionClass(條件類)表

杰克和吉爾隨后可以定義它們的首選項(xiàng)。為了這個(gè)例子,假定杰克定義三個(gè)首選項(xiàng)分組PG(杰克,1),PG(杰克,2)和PG(杰克,3)。而且杰克定義五個(gè)首選項(xiàng)分布在如下的分組之中PG(Jack,1)((PG(杰克,1))
P1On EmailEvent if MailIsFrom(Mary)AND MailContains(″Califonia″)then PopAToast(當(dāng)電子郵件事件時(shí)如果郵件來自瑪麗并且郵件包含加利福尼亞那么彈出一個(gè)祝酒詞)P2On EmailEvent if MailIsFrom(Bob)AND MailContains(″InfoAgent″)then PopAToast(當(dāng)電子郵件事件時(shí)如果郵件來自鮑伯并且郵件包含信息代理那么彈出一個(gè)祝酒詞)P3On EmailEvent if MailIsFrom(Home)AND MailContains(″MyWife″)OR MailIsFrom(MySon)then PopAToast(當(dāng)電子郵件事件時(shí)如果郵件來自家里或者郵件來自我的妻子或者郵件來自我的兒子那么彈出一個(gè)祝酒詞)PG(Jack,2)((PG(杰克,2))P3On EmailEvent if MailIsFrom(Home)AND MailContains(″MyWife″)OR MailIsFrom(MySon)then PopAToast(當(dāng)電子郵件事件時(shí)如果郵件來自家里或者郵件來自我的妻子或者郵件來自我的兒子那么彈出一個(gè)祝酒詞)(PG(Jack,3)((PG(杰克,3))P4On EmailEvent if MailIsFrom(Home)AND MailPriority(10)thenMoveToFolder(″URGENT″)(當(dāng)電子郵件事件時(shí)如果郵件來自家里并且郵件優(yōu)先級(jí)為10那么移動(dòng)到文件夾“急件”)P5On EmailEvent if MailPriority(15)then MoveToFolder(″VERYURGENT″)(當(dāng)電子郵件事件時(shí)如果郵件優(yōu)先級(jí)為15那么移動(dòng)到文件夾“非常急件”)為了本例的目的,假定吉爾定義兩個(gè)首選項(xiàng)分組(吉爾,1)和(吉爾,2)。而且,假定吉爾指定五個(gè)首選項(xiàng)分布在如下的分組之中PG(Gill,1)((PG(吉爾,1))P6On EmailEvents if MailIsFrom(Home)OR MailContains(″Vaction″)then PopAToast(當(dāng)電子郵件事件時(shí)如果郵件來自家里或者郵件包含“度假”那么彈出一個(gè)祝酒詞)P7On EmailEvents if MailIsFrom(Bob)OR!MailContains(″Work″)thenPopAToast(當(dāng)電子郵件事件時(shí)如果郵件來自鮑伯或者郵件不包含“工作”那么彈出一個(gè)祝酒詞)P8On EmailEvents if MailContains(″Bonus″)then PopAToast(當(dāng)電子郵件事件時(shí)如果郵件包含“獎(jiǎng)金”那么彈出一個(gè)祝酒詞)
PG(Jill,2)((PG(吉爾,2))P9On StockEvents if StockSymbol=(’EBAY’)AND TargetPrice>120 thenSendCellPhoneMessage(’Me’)(當(dāng)股票事件時(shí)如果股票符號(hào)=“EBAY”并且目標(biāo)價(jià)格>120那么發(fā)送蜂窩電話消息“Me”)P10On StockEvents if StockSymbol=(’AMZN’)AND TargetPrice>50 thenSendCellPhoneMessage(’Me’)(當(dāng)股票事件時(shí)如果股票符號(hào)=“AMZN”并且目標(biāo)價(jià)格>50那么發(fā)送蜂窩電話消息“Me”)信息代理系統(tǒng)100隨后可以使用這些首選項(xiàng)來產(chǎn)生另外的關(guān)系數(shù)據(jù)庫表,它們描述與其相關(guān)聯(lián)的首選項(xiàng)和條件。一次一個(gè)地考慮下列示例性表以及如何使用它們來評(píng)估首選項(xiàng)。
下面示出的首選項(xiàng)分組表包含五行,杰克和吉爾定義的每個(gè)首選項(xiàng)分組一行。而且注意,指定一個(gè)列來表示是否允許首選項(xiàng)分組。如前所述,這是有用的,例如,如果用戶想要指定一個(gè)當(dāng)他們?cè)诩依飼r(shí)允許的首選項(xiàng)分組和另一個(gè)在他們工作時(shí)允許的首選項(xiàng)分組。這里所有首選項(xiàng)分組被示為允許的。
PreferenceGroup(首選項(xiàng)分組)表

PreferenceGroupMemberShip(首選項(xiàng)分組成員資格)也可以定義為概括哪些首選項(xiàng)是哪些首選項(xiàng)分組的成員。下面例示的這個(gè)表包含十一行,每個(gè)首選項(xiàng)一行。
PreferenceGroupMemberShip(首選項(xiàng)分組成員資格)表


下面的首選項(xiàng)表可以存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器150以概括與由用戶定義的首選項(xiàng)相關(guān)的數(shù)據(jù)。這個(gè)表將包含十個(gè)相應(yīng)于這十個(gè)首選項(xiàng)每一個(gè)的行。請(qǐng)注意,這個(gè)表集中于僅示出重要的列和名字。
首選項(xiàng)表


注意總和=14應(yīng)當(dāng)注意,在上面的首選項(xiàng)表中一共有14個(gè)AND分組。
另外,上面一共有19個(gè)條件。關(guān)于這些AND分組和條件的信息可以在如下的附加表中捕捉ANDGroup(與分組)表


AND分組ID是從先前的表順序編號(hào)的。ConditionCount(條件計(jì)數(shù))記錄由與(AND)連接的條件的數(shù)量。在上面的表中唯一令人吃驚的行條目是下面示出一個(gè)。
711 1--From(Bob)AND!Contains(Work)(來自鮑伯并且不包含工作)注意,ConditionCount(條件計(jì)數(shù))是1而不是如所預(yù)期的2。為了解釋在查詢?cè)u(píng)估中非(NOT)的存在,條件計(jì)數(shù)定義為只有在其前面沒有非(Not)(!)的與分組中的那些條件的總和。在其前面具有非(NOT)的條件可以在如下所示的一個(gè)單獨(dú)的表中概括。
ANDGroup(與分組)可以進(jìn)一步在表中按照ANDGroupMembership(與分組成員資格)定義,如下面的串聯(lián)的表例示ANDGroupMembership(與分組成員資格)表


如上提到的,具有非(NOT)的條件可以看作是一種特殊情況并且在它們自己的表中概括,如下非(Not)表

還可以創(chuàng)建條件值表來存儲(chǔ)在首選項(xiàng)中指定的條件值。應(yīng)當(dāng)注意,這個(gè)目標(biāo)只考慮與每個(gè)條件相關(guān)聯(lián)的兩個(gè)參數(shù)值。為了這個(gè)例子的目的,這是足夠的,部分因?yàn)樗械臈l件只具有一個(gè)參數(shù)值,然而如果條件被允許包含多于兩個(gè)與其相關(guān)聯(lián)的值,則表可以被擴(kuò)展或者可供替換地另一個(gè)表可被實(shí)例化以如何處理額外的條件值。
ConditionValue(條件值)表


也可以提供ConditionsResult(條件結(jié)果)。ConditionsResuit(條件結(jié)果)表可以用作最后結(jié)果表730的預(yù)報(bào)器。ConditionsResult(條件結(jié)果)表是在執(zhí)行條件查詢時(shí)填充的。因?yàn)闂l件查詢還沒有運(yùn)行,所以在表中還沒有行。下面揭示用于評(píng)估條件和填充表的示例性過程。
ConditionResults(條件結(jié)果)表

如前面提到的,本發(fā)明的一個(gè)方面是要提供一個(gè)聲明性編程系統(tǒng),它允許向條件功能的開發(fā)者揭示一個(gè)一次一個(gè)模型,但這最終制作利用數(shù)據(jù)查詢效率的面向集的方式執(zhí)行的條件類查詢。因此,一對(duì)一條件類聲明可以被變換成查詢。例如,在EmailEvent(電子郵件事件)中,一個(gè)最終用戶首選項(xiàng)可以使一個(gè)動(dòng)作依賴于電子郵件的發(fā)送者(例如,杰克的P1)。因而,一個(gè)通過用戶界面的最終用戶可編寫MailIsFrom(Mary)(郵件來自瑪麗)。然而,當(dāng)執(zhí)行首選項(xiàng)時(shí),系統(tǒng)700可執(zhí)行表示用戶條件語句的數(shù)據(jù)庫查詢。例如,系統(tǒng)可執(zhí)行下列SQL查詢語句代替用戶聲明即CV.ParamValue1=’Mary’SELECT 1FROM EmailEvents E,ConditionValues CVWHERE E.Sender=CV.ParamValue1;因此,開發(fā)者應(yīng)當(dāng)定義用于每個(gè)條件的查詢代碼并將它們存儲(chǔ)在一個(gè)表中。盡管可能,但不需要為了表達(dá)的目的而創(chuàng)建一個(gè)新的表??梢院唵蔚匦薷那懊娑x的ConditionClass(條件類)表以包括如下面的偽代碼中所示的查詢文本。


一旦已經(jīng)定義了所有的表710,就可以針對(duì)這樣的數(shù)據(jù)評(píng)估首選項(xiàng),以便填充結(jié)果表730并且之后執(zhí)行與其相關(guān)的動(dòng)作。通過評(píng)估查詢可以執(zhí)行首選項(xiàng)??梢酝ㄟ^使用一個(gè)或多個(gè)過程評(píng)估查詢,可以將它們存儲(chǔ)為數(shù)據(jù)存儲(chǔ)器150中的數(shù)據(jù)并且在需求時(shí)按照本發(fā)明的一個(gè)方面來構(gòu)造它們。若干過程可以專用于評(píng)估條件和首選項(xiàng)并且隨后填充結(jié)果表,例如用首選項(xiàng)以及表示是否評(píng)估為真的首選項(xiàng)的標(biāo)記,使得相關(guān)聯(lián)動(dòng)作的執(zhí)行可以開始。例如,下面的過程可以用于評(píng)估或查詢條件并且將結(jié)果存儲(chǔ)在ConditionResults(條件結(jié)果)表中,隨后可以被評(píng)估以填充結(jié)果表730。
create proc NSStoreResultsIntoResultsTable@conditionClassId int
ASdeclare @query varchar(255)--這個(gè)數(shù)字可以更大select @query=Query_Textfrom CondtionClasseswhere conditionClassId=@conditionClassIdinsert ConditionResults exec(@query)return(0)而且,應(yīng)當(dāng)意識(shí)到,上面的過程可由一個(gè)循環(huán)來使用,使得所有條件查詢被執(zhí)行。然而,為每個(gè)條件啟用上面的過程一次更好,以便允許遞增的條件評(píng)估。一旦所有條件被評(píng)估,就可以使用另一個(gè)過程來評(píng)估首選項(xiàng),它們常常是具有在它們之間的布爾操作符的條件。
如對(duì)于在此描述的所有過程,存在大量不同的方式來編寫過程,尤其是依賴于程序員風(fēng)格、效率和所構(gòu)造的表的性質(zhì)。為了理解下面作為一個(gè)查詢例子提供的過程,它可以用于按照本發(fā)明的一個(gè)方面來評(píng)估首選項(xiàng)。應(yīng)當(dāng)注意,可使用更有效的查詢過程,它遞增地而不是在單次執(zhí)行中評(píng)估首選項(xiàng)的不同ANDGroup(與分組)。
select distinct(eventId,prefId)from ConditionResults C,AndGroupMemberShip Awhere C.condId=A.condIdgroup by C.eventId,C.prefId,A.AndGroupIdhaving sum(C.Bool)=(select ConditionCountfrom AndGroups A2where C.Prefid=A2.PrefIdand A.AndGroupId=A2.AndGroupId)為闡明上面的過程如何工作以給最終的結(jié)果表730產(chǎn)生行,下面提供一些例子。
例1假定ConditionResults(條件結(jié)果)表在其中具有下面的兩個(gè)行。


在首選項(xiàng)1中這兩個(gè)條件之間有一個(gè)AND(與)。因此,這個(gè)首選項(xiàng)只有在上面條件都為真時(shí)才評(píng)估為真。這兩個(gè)條件屬于第1個(gè)ANDGroup(與分組),其條件計(jì)數(shù)是2。因此,當(dāng)上面的表與AndGroupMembership(與分組成員資格)表連接時(shí),下面的表得到

合計(jì)=2在執(zhí)行分組(group by)之后,得到下面的行

現(xiàn)在(首選項(xiàng)ID,ANDGroupId(與分組ID))形成ANDGroup(與分組)表的鍵。在這個(gè)查找中提供條件值2,它等于sum(Bool)(Bool之和)。因此首選項(xiàng)是真的,并且可以將它添加到結(jié)果表730。
例2假定ConditionResults表具有下面的二個(gè)行


在首選項(xiàng)2的這兩個(gè)條件之間有一個(gè)(OR或)。因而,這個(gè)首選項(xiàng)只有在這兩個(gè)條件中任一個(gè)為真時(shí)才評(píng)估為真。這些條件分別屬于第2和第3個(gè)ANDGroup,并且它們的條件計(jì)數(shù)都是1。因此,當(dāng)上面的表與AndGroupMembership(與分組成員資格)表時(shí),得到下面的表

在上面的表被分組后得到,

上面的兩行都滿足having子句并且因此在應(yīng)用程序不同的之后,我們發(fā)現(xiàn)首選項(xiàng)(Pref.Id=2,Event Id=101)將被拷貝到結(jié)果表703)。
例3對(duì)于這個(gè)最后的例子,假定ConditionResults(條件結(jié)果)表具有下面的兩個(gè)行

回想在首選項(xiàng)7上的條件實(shí)際上是From(Bob)and!Contains(Work)。
按照本發(fā)明一個(gè)方面,在存在NOT時(shí),在上面第二行中的1變成-1。下面是提供這樣的功能的示例性查詢update CondtionResultsset Bool=-1where cond.Id IN(select cond Idfrom Not)而且,應(yīng)當(dāng)注意,如果使用聰明的查詢優(yōu)化器并且通知NOT表為空,則查詢應(yīng)當(dāng)立刻返回。因此,上述表變成

合計(jì)=0這些條件都屬于第11個(gè)ANDGroup(與分組)。從這個(gè)ANDGroup(與分組)表,它可以確定這個(gè)首選項(xiàng)(首選項(xiàng),ANDGroup(與分組))的條件計(jì)數(shù)是1。由于0≠1,因此從這個(gè)首選項(xiàng)評(píng)估查詢沒有行得到。然而,注意,如果第二行不在ConditionResults(條件結(jié)果)表中,則將得到合計(jì)為1(=1)且首選項(xiàng)7被評(píng)估為真。
在填充結(jié)果表730之后,可以執(zhí)行首選項(xiàng)動(dòng)作。動(dòng)作可以由信息代理系統(tǒng)100或者由信息代理應(yīng)用程序通過從系統(tǒng)100檢索首選項(xiàng)結(jié)果并且對(duì)它們起作用來執(zhí)行。如果動(dòng)作由應(yīng)用程序而不是信息代理系統(tǒng)100來執(zhí)行,則可以使用事件提交應(yīng)用程序或者某個(gè)其它應(yīng)用程序從系統(tǒng)100檢索動(dòng)作。按照系統(tǒng)100,可以由系統(tǒng)100為可以檢索和執(zhí)行動(dòng)作的應(yīng)用程序動(dòng)作處理程序提供主機(jī)服務(wù)。
優(yōu)先級(jí)動(dòng)作和上下文分析下面的討論涉及一種系統(tǒng)和方法,使與產(chǎn)生的動(dòng)作諸如通知或消息相關(guān)聯(lián)的多個(gè)信息,例如能夠由優(yōu)先權(quán)系統(tǒng)自動(dòng)地排列優(yōu)先順序用于向用戶或系統(tǒng)發(fā)送。而且,盡管為了說明簡單的目的,本討論集中在通知的優(yōu)先級(jí)和上下文分析,但應(yīng)當(dāng)意識(shí)到,任何動(dòng)作可以用相似的方式使用優(yōu)先級(jí)和上下文分析。優(yōu)先權(quán)系統(tǒng)可以使用分類器,它可以顯式地和/或隱含地訓(xùn)練成按照向用戶學(xué)得的重要性排列一個(gè)或多個(gè)收到的消息。如作為一個(gè)例子,通知可以通過一個(gè)訓(xùn)練實(shí)例集或者具有相似等級(jí)重要性的通知類型來分類成高、中、低或其它等級(jí)重要性??梢蕴峁┖笈_(tái)監(jiān)控程序來監(jiān)控用戶的關(guān)于消息處理的活動(dòng),以進(jìn)一步按照用戶關(guān)于消息重要性的個(gè)人決策來改進(jìn)或調(diào)整分類器。其它優(yōu)先級(jí)分類可以包括關(guān)于與消息的延遲檢閱或處理的時(shí)間相關(guān)的損失的確定。
在消息或其它通知已經(jīng)被自動(dòng)地排列優(yōu)先順序之后,用戶可以檢閱更重要的消息,而不必通過多個(gè)不太重要和/或不相關(guān)消息的排序。消息可以進(jìn)一步按照重要性收集到一個(gè)或多個(gè)文件夾中,其中用戶可以在希望的時(shí)間檢閱相似分類的重要性的消息。其它系統(tǒng)諸如信息代理系統(tǒng)100(例如,通過通知組件180)可以將消息指向一個(gè)或多個(gè)通知接受器(例如,移動(dòng)電話、手持式計(jì)算機(jī)),基于確定的優(yōu)先級(jí)。例如,如果一個(gè)電子郵件消息被確定為高重要性,則信息代理系統(tǒng)100可以確定用戶當(dāng)前是否在他們的辦公桌前來接收該消息。如果否,則通知平臺(tái)可以將該消息重新指向目前在用戶的配置中最有可能的通信設(shè)備,諸如蜂窩電話或家用膝上型計(jì)算機(jī),其中可以向用戶通知重要或緊迫的消息。
參考圖7,按照本發(fā)明的一個(gè)方面,系統(tǒng)700例示一個(gè)優(yōu)先權(quán)系統(tǒng)712和通知?jiǎng)幼黧w系結(jié)構(gòu)。優(yōu)先權(quán)系統(tǒng)712接收一個(gè)或多個(gè)消息或通知714,產(chǎn)生相關(guān)消息的優(yōu)先級(jí)或重要性的度量(例如,消息是高或低重要性的概率值),并且為一個(gè)或多個(gè)消息在輸出716提供相關(guān)聯(lián)的優(yōu)先級(jí)值。如下面將更詳細(xì)地描述的,分類器可以構(gòu)造和訓(xùn)練成自動(dòng)地為消息714指派優(yōu)先級(jí)的度量。例如,輸出716可以被格式化,使得消息被指派該消息屬于高、中、低類別或其它等級(jí)類別重要性的概率。消息可以自動(dòng)地分類到電子郵件程序(未示出)的收件箱中,例如,按照確定類別的重要性。分類也可以包括將文件指向具有定義的重要性標(biāo)簽的系統(tǒng)文件夾。這可以包括具有用重要性等級(jí)如低、中和高作為標(biāo)簽的文件夾,其中確定為一個(gè)特定重要性的消息被分類到相關(guān)聯(lián)的文件夾中。同樣,一個(gè)或多個(gè)音頻聲音或可視顯示(例如,圖標(biāo)、符號(hào))可以適合于向用戶報(bào)警已經(jīng)接收了一個(gè)具有所希望的優(yōu)先級(jí)的消息(例如,在收到消息時(shí),三聲蜂鳴表示高優(yōu)先級(jí)消息,兩聲蜂鳴表示中優(yōu)先級(jí)消息,一聲蜂鳴表示低優(yōu)先級(jí)消息,紅色或閃爍報(bào)警符號(hào)表示高優(yōu)先級(jí)消息,綠色和不閃爍報(bào)警符號(hào)表示中優(yōu)先級(jí)的消息)。
按照本發(fā)明另一個(gè)方面,信息代理系統(tǒng)717(圖1中的100)可以結(jié)合優(yōu)先權(quán)系統(tǒng)712用于將優(yōu)先化消息指向一個(gè)或多個(gè)用戶可訪問的通知接收器。如下面將更詳細(xì)描述的,IA系統(tǒng)717可以適合于接收優(yōu)先化消息716并且作出例如關(guān)于何時(shí)、何地以及如何通知用戶的決策。如一個(gè)例子,IA系統(tǒng)717可以確定通信形式(例如,用戶的當(dāng)前通知接收器718,如蜂窩電話或個(gè)人數(shù)字助理(PDA))和用戶的可能位置和/或可能的注意力焦點(diǎn)。如果接收了高重要性電子郵件,例如,則IA系統(tǒng)717可以確定用戶位置/焦點(diǎn)和指向/重新格式化消息到與該用戶相關(guān)聯(lián)的通知接收器718。如果接收了較低優(yōu)先級(jí)消息716,例如,IA系統(tǒng)717可以配置為將電子郵件留在用戶的收件箱中,在以后想看的時(shí)候檢閱。如下面將更詳細(xì)地描述的,其它路由和/或報(bào)警系統(tǒng)719可用于將優(yōu)先化消息716指向用戶和/或其它系統(tǒng)。
在下面描述的章節(jié)中,通過一個(gè)自動(dòng)分類系統(tǒng)和過程描述為文本文件如電子郵件產(chǎn)生一個(gè)優(yōu)先級(jí)。為所述文本產(chǎn)生優(yōu)先級(jí)隨后可以用于其它系統(tǒng),如下面更詳細(xì)描述的通知平臺(tái)。在本章節(jié)中的描述結(jié)合圖8和圖9提供,前者是例示一個(gè)文本分類器的顯式和隱式訓(xùn)練的圖,后者是描繪如何由到文本分類器的輸入產(chǎn)生一個(gè)文件的優(yōu)先級(jí)的圖。還結(jié)合圖10和11提供描述,它們是不同模式的圖,按照這些模式可以分類文本的優(yōu)先級(jí),并且結(jié)合圖8和11,它們是例示依賴于文件類型可應(yīng)用程序的代價(jià)函數(shù)的圖。
現(xiàn)在參考圖8,文本/數(shù)據(jù)分類器820可以顯式地訓(xùn)練,如由箭頭822表示,和隱式地訓(xùn)練,如由箭頭824表示,以按照優(yōu)先級(jí)執(zhí)行分類。由箭頭822表示的顯式訓(xùn)練通常在構(gòu)造分類器820的初始階段進(jìn)行,而由箭頭824表示的隱式訓(xùn)練一般在分類器820已經(jīng)構(gòu)造之后進(jìn)行--以更好地調(diào)整分類器820,例如,通過后臺(tái)監(jiān)控程序834。在此參考SVM分類器作出特定的描述,為了例示分類訓(xùn)練和實(shí)現(xiàn)方法的示例性目的??梢允褂闷渌谋痉诸惙椒?,包括Bayesian(貝葉斯定理)網(wǎng)絡(luò)、決策樹和提供不同獨(dú)立性模式的概率分類模型。在此使用的文本分類還包括用于開發(fā)優(yōu)先級(jí)模型的統(tǒng)計(jì)回歸。
按照本發(fā)明一個(gè)方面,眾所周知的支持向量機(jī)(SVM)用作分類器820。要意識(shí)到,其它分類器模型也可以使用,諸如Naive Bayes(單純貝葉斯)、BayesNet(貝葉斯網(wǎng))、決策樹和其它學(xué)習(xí)模型。SVM通過分類器構(gòu)造器和特征選擇模塊826內(nèi)的學(xué)習(xí)和訓(xùn)練短語來配置。分類器是一個(gè)函數(shù),將一個(gè)輸入屬性向量x=(x1,x2,x3,x4,xn)映射為該輸入屬于一個(gè)類的置信度--即,f(x)=confidence(class)。在文本分類的情況下,屬性是詞語或短語或從詞語導(dǎo)出的其它域?qū)S脤傩?例如,詞法、關(guān)鍵詞組的存在),類是感興趣的類別或范圍(例如,優(yōu)先級(jí)的級(jí)別)。
SVM的一個(gè)方面和其它歸納學(xué)習(xí)方法使用有標(biāo)簽的實(shí)例訓(xùn)練集來自動(dòng)學(xué)習(xí)分類函數(shù)。在與分類器構(gòu)造器826相關(guān)聯(lián)的數(shù)據(jù)存儲(chǔ)器830中描繪訓(xùn)練集。如所示的,訓(xùn)練集可包括分組G1至GN的一個(gè)子集,表示與一個(gè)特定類別相關(guān)聯(lián)的可能和/或?qū)嶋H的元素或元素組合(例如,詞語或短語)。數(shù)據(jù)存儲(chǔ)器830還包括多個(gè)類別1至M,其中分組可以與一個(gè)或多個(gè)類別相關(guān)聯(lián)。在學(xué)習(xí)期間,學(xué)習(xí)將輸入特征映射為類的置信度函數(shù)。因而,在學(xué)習(xí)一個(gè)模型之后,類別表示為輸入特征的有權(quán)重向量。
對(duì)于類別分類,二進(jìn)制特征值(例如,在一個(gè)類別中一個(gè)詞語出現(xiàn)或不出現(xiàn)),或?qū)嵵堤卣?例如,一個(gè)詞語以重要性權(quán)重r出現(xiàn))是經(jīng)常使用的。由于類別收集包含大量唯一的專用名詞,因此在將應(yīng)用機(jī)器學(xué)習(xí)技術(shù)應(yīng)用程序于分類時(shí)通常使用特征選擇。為減少特征的數(shù)量,可根據(jù)整體頻率計(jì)數(shù)移除特征,隨后按照較少數(shù)量的特征根據(jù)對(duì)類別的適合選擇特征。對(duì)類別的適合可通過相互信息、信息增益、x校驗(yàn)法和/或?qū)嵸|(zhì)上任何統(tǒng)計(jì)選擇技術(shù)來確定。這些較小的描述隨后用作到SVM的輸入。注意,線性SVM提供適當(dāng)?shù)囊话銣?zhǔn)確性并且提供相當(dāng)快的學(xué)習(xí)。非線性SVM的其它類包括多項(xiàng)式分類器和徑向基礎(chǔ)函數(shù)并且按照本發(fā)明也可使用。
分類器構(gòu)造器826使用學(xué)習(xí)模型832以便分析數(shù)據(jù)存儲(chǔ)器830中的分組和相關(guān)的類別來“學(xué)習(xí)”將輸入向量映射到類的置信度函數(shù)。對(duì)于許多學(xué)習(xí)模型,包括SVM,用于類別的模型可以表示為特征權(quán)重向量w,其中每個(gè)類別可以有一個(gè)學(xué)到的權(quán)重向量。當(dāng)學(xué)到了權(quán)重w時(shí),通過計(jì)算x和w的點(diǎn)乘來分類新的文本,其中w是學(xué)到的權(quán)重向量,x是表示新文本的向量。也可提供一個(gè)S形函數(shù)將SVM的輸出變換成概率P。概率在類別或類上提供可比較的評(píng)分,由此可以確定優(yōu)先級(jí)。
SVM是一個(gè)參數(shù)化函數(shù),在訓(xùn)練之前就定義了其函數(shù)的形式。訓(xùn)練SVM一般要求有標(biāo)簽的訓(xùn)練集,因?yàn)镾VM將從一組實(shí)例來適配函數(shù)。訓(xùn)練集可以由一個(gè)N個(gè)實(shí)例的集合組成。每個(gè)實(shí)例包括一個(gè)輸入向量xi,和一個(gè)類別標(biāo)簽yj,它描述輸入向量是否在一個(gè)類別中。對(duì)于每個(gè)類別,在用N個(gè)實(shí)例訓(xùn)練的SVM中可以有N個(gè)自由參數(shù)。為找到這些參數(shù),解決二次規(guī)劃(QP)問題是眾所周知的。存在多個(gè)眾所周所的技術(shù)用于解決QP問題。這些技術(shù)包括順序最小優(yōu)化技術(shù)以及其它技術(shù)。如圖9所示,已經(jīng)變換成輸入向量x的文本輸入936應(yīng)用程序于分類器920每個(gè)類別。分類器920使用由分類器構(gòu)造器926確定的學(xué)到的權(quán)重w(每個(gè)類別的一個(gè)權(quán)重向量)并且形成點(diǎn)積以提供優(yōu)先級(jí)輸出938,其中可將概率P指派給輸入文本936,表示一個(gè)或多個(gè)相關(guān)優(yōu)先級(jí)(例如,高、中、低)。
回來參考圖8,由箭頭822表示的文件分類器820的訓(xùn)練包括在826中構(gòu)造分類器,包括使用特征選擇。在顯式訓(xùn)練短語中,例如,可以給分類器820提供時(shí)間重要和非時(shí)間重要兩者的文本,因此分類器也能夠區(qū)別兩者。這個(gè)訓(xùn)練集可由用戶提供,或者可使用標(biāo)準(zhǔn)或默認(rèn)訓(xùn)練集。給定一個(gè)訓(xùn)練文集,分類器820首先應(yīng)用程序特征選擇過程,它試圖找出最有區(qū)別的特征。這個(gè)過程使用交互信息分析。特征選擇可以在一個(gè)或多個(gè)詞語或可供使用的更高級(jí)區(qū)別諸如用自然語言處理標(biāo)記的短語或詞法上操作。即,文本分類器820可以由特殊標(biāo)記的文本來播種,以區(qū)別認(rèn)為是重要的文本特征。
文本分類的特征選擇一般在單個(gè)詞語上進(jìn)行搜索。除信任單個(gè)詞語外,也可使域?qū)S枚陶Z和高級(jí)特征模式可用。特殊的記號(hào)可以增強(qiáng)分類。用于電子郵件臨界性的學(xué)到的分類器的質(zhì)量,例如,可以通過將標(biāo)識(shí)為用于區(qū)別不同時(shí)間臨界性的電子郵件的手工特征輸入到特征選擇過程中來增強(qiáng)。因而,在特征選擇期間,考慮用于區(qū)別不同級(jí)別時(shí)間臨界性的消息的一個(gè)或多個(gè)詞語以及短語和符號(hào)。
如下面的例子例示的,標(biāo)識(shí)消息臨界性的值的標(biāo)記和/或模式包括這樣的區(qū)別諸如下面的布爾組合,并且包括它們消息頭部中的信息例如TO(收件人)字段(接收者信息)只尋址于用戶,尋址于包括用戶在內(nèi)的一些人,尋址于少數(shù)人的別名,尋址于少數(shù)人的若干別名,
Cc(抄送)到用戶,Bcc(密送)到用戶。
FROM(發(fā)件人)字段(發(fā)送者信息)在預(yù)定的重要人物列表上的名字,可能被分段成各種個(gè)別人的類,(例如,家庭成員,朋友)發(fā)送者標(biāo)識(shí)為用戶的公司/組織的內(nèi)部,相對(duì)于從一個(gè)在線組織圖提取的用戶關(guān)于組織關(guān)系結(jié)構(gòu)的信息,諸如用戶向其報(bào)告的管理者,用戶的管理者的管理者,向用戶報(bào)告的人,外部業(yè)務(wù)人。
過去時(shí)信息這些包括關(guān)于已經(jīng)發(fā)生的事件的描述,諸如我們見面了,會(huì)議過去了,發(fā)生了,聚會(huì)了,照顧了,昨天的會(huì)議。
將來時(shí)信息明天,這個(gè)星期,你是否打算,什么時(shí)候我們可以,期望,這將,將是。
會(huì)議和協(xié)調(diào)信息聚會(huì),你是否能會(huì)面,將聚會(huì),
協(xié)調(diào),需要聚會(huì),見你,安排一個(gè)會(huì)議,想邀請(qǐng),來訪。
決定的日期將來對(duì)過去的日期和時(shí)間,由文本的模式表示,顯式地陳述日期和時(shí)間或者典型的縮寫詞,諸如在5/2,在12:00。
問題毗鄰于問號(hào)(?)的詞語,詞組表示人的請(qǐng)求你是否能,你是否是,你是否將,請(qǐng)你,你是否能做,請(qǐng)問,由你。
表示需要我需要,他需要,她需要,我想要,它會(huì)偉大,我想要,他想要,
她想要,照顧。
時(shí)間臨界性不久發(fā)生,立即,最終期限將是,最終期限是,盡可能快,立即需要,立即要做,立即完成,在[日期]前,在[時(shí)間]前。
重要性是重要的,是關(guān)鍵的,單詞,短語+!,顯式優(yōu)先級(jí)標(biāo)志狀態(tài)(低,無,高)。
消息的長度組成新消息的字節(jié)數(shù)。
商業(yè)或成人內(nèi)容垃圾電子郵件的符號(hào)免費(fèi)?。≡~語+?。。⌒∮?8歲,僅限成人,大寫詞語的百分比,非字母數(shù)字字符的百分比。
注意,上述單詞和短語分組例示了示例性單詞、分組或短語,它們可用于進(jìn)行分類器訓(xùn)練。要意識(shí)到,其它相似的語語、分組或短語可相似地使用并且因而本發(fā)明不限于所例示的例子。
而且,仍參考圖8,分類器820的隱式訓(xùn)練,如由箭頭824表示的,可以通過由后臺(tái)監(jiān)控程序824監(jiān)控用戶工作或使用模式來進(jìn)行,例如,后臺(tái)監(jiān)控程序824可以駐留在用戶的桌面或移動(dòng)計(jì)算機(jī)中。例如,在用戶工作時(shí),以及檢閱郵件列表時(shí),可以假定先讀時(shí)間臨界的消息,稍后檢閱和/或刪除較低優(yōu)先級(jí)的消息。即,當(dāng)提供新的電子郵件時(shí),監(jiān)控用戶以確定他或她是否立即打開電子郵件,并且以什么順序,在不打開的情況下刪除電子郵件,和/或在相對(duì)短的時(shí)間內(nèi)答復(fù)電子郵件。因而,調(diào)整分類器820,使得用戶在工作或操作系統(tǒng)時(shí)監(jiān)控用戶,周期性地通過在后臺(tái)訓(xùn)練來改進(jìn)分類器并且更新分類器以增強(qiáng)實(shí)時(shí)決策制定。用于建立分類器的后臺(tái)技術(shù)可以從用新訓(xùn)練消息更新分類器820的那些來擴(kuò)展。
可供替換地,可以收集較大數(shù)量的消息,其中在一個(gè)批處理過程中創(chuàng)建新的過濾器,或者按照每日調(diào)度,或者按照訓(xùn)練集承認(rèn)的消息的新數(shù)量的數(shù)字,和/或組合。對(duì)于每個(gè)輸入分類器的消息,例如,可以創(chuàng)建分類器的一個(gè)新案例。例如,這些案例存儲(chǔ)為文本的否定或主動(dòng)實(shí)例,它們是高或低優(yōu)先級(jí)。如一個(gè)例子,可以識(shí)別一個(gè)或多個(gè)低、中和高緊急類,使得在這些類的每一個(gè)中的成員資格的概率用于建立預(yù)期的臨界性??梢允褂幂^大數(shù)量臨界性類來尋求較高的分辨率。例如,如圖9所示,消息的訓(xùn)練集940(例如,非常高、高、中、正常、低、非常低等)最初可以用于訓(xùn)練分類器942,使得實(shí)時(shí)分類完成,如在944表示的,其中新消息按照由訓(xùn)練集940分析的實(shí)例數(shù)量來分類。在圖9中,為了示例性目的例示了三個(gè)這樣的類別,然而,要意識(shí)到,可按照所希望的重要性變化等級(jí)訓(xùn)練多個(gè)這樣的類別。如所例示的,新消息944可被加標(biāo)簽、加標(biāo)記和/或分類到一個(gè)或多個(gè)文件夾946中,例如,按照由分類器942指派的優(yōu)先級(jí)。如下面將更詳細(xì)地描述的,指派的優(yōu)先級(jí)還可由后續(xù)的系統(tǒng)用于對(duì)/為用戶作出消息格式、交付和形式?jīng)Q定。
按照本發(fā)明另一個(gè)方面,可以通過監(jiān)控用戶與電子郵件的交互,例如,而不是將案例或消息加標(biāo)簽為一組文件夾之一,來完成一個(gè)數(shù)字或值的估計(jì)。因而,分類器可以繼續(xù)被更新但具有一個(gè)移動(dòng)的窗口,其中考慮在某個(gè)時(shí)間之后的消息或文檔的案例,如由用戶指定的。
例如,一個(gè)與消息的延遲檢閱相關(guān)聯(lián)的常數(shù)損失率稱為消息的預(yù)期臨界性(EC),其中,
EC=ΣiCd(Hi)p(Hi|Ed)]]>其中C是代價(jià)函數(shù),d是延遲,E是事件,H是電子郵件的臨界性類,而EC表示為由用于可能的類的代價(jià)函數(shù)C描述的損失率加權(quán)的類的可能性之和。
作為一個(gè)例子,仍參考圖9,諸如電子郵件消息的文本936輸入到分類器920,它根據(jù)該輸入為文本936產(chǎn)生優(yōu)先級(jí)938。即,分類器920產(chǎn)生優(yōu)先級(jí)938,例如按照從0至100%的百從比測量。這個(gè)百分比可以是文本936是高或某種其它優(yōu)先級(jí)的可能性的量度,基于分類器920的先前訓(xùn)練。
注意,如已經(jīng)描述的本發(fā)明,例如,分類器920和優(yōu)先級(jí)938可以基于一個(gè)模式,其中在訓(xùn)練短語中的電子郵件被解釋為或者高優(yōu)先級(jí)或者低優(yōu)先級(jí)。這個(gè)模式參考圖10例示,其中文本分類器1020是由一個(gè)被預(yù)定為高優(yōu)先級(jí)的文本分組1047和一個(gè)被預(yù)定為低優(yōu)先級(jí)的文本分組1048訓(xùn)練的。要分析的文本輸入到分類器820,它輸出一個(gè)標(biāo)量數(shù)字1049,例如,測量被分析的文本是高或低優(yōu)先級(jí)的可能性。
例如,參數(shù)圖10和11,例示一個(gè)模式的圖,其中文本1036、1136被分類成低、中和高優(yōu)先級(jí)。如上所述,多個(gè)其它訓(xùn)練組可用于提供較大或較高分辨率的優(yōu)先級(jí)區(qū)別。文本分類器1020、1120是由高優(yōu)先級(jí)的文本分組1047、1147和低優(yōu)先級(jí)的文本分組1048、1148以及中優(yōu)先級(jí)的文本分組1150來訓(xùn)練的。因而,要分析的文本1036、1136輸入到分類器1020、1120,它們輸出標(biāo)量數(shù)字1049、1149,例如,如果希望這樣,可以測量被分析的文本是高優(yōu)先級(jí)或中優(yōu)先級(jí)或低優(yōu)先級(jí)的可能性。分類器1020、1120也能夠輸入類1152,它表示文本1136最有可能落入的低、中或高優(yōu)先級(jí)的類。如果想要,也可以添加更多的類。
本發(fā)明不限于優(yōu)先級(jí)的定義,因?yàn)檫@個(gè)術(shù)語是由分類器1020、1120使用來指派這樣的優(yōu)先級(jí)給一個(gè)文本如電子郵件消息。優(yōu)先級(jí)可以例如按照損失函數(shù)來定義。更明確地說,優(yōu)先級(jí)可以按照在每個(gè)在接收文本之后檢閱文本時(shí)的延遲時(shí)間的損失機(jī)會(huì)中的預(yù)期代價(jià)來定義。即,因文本的延遲處理導(dǎo)致的預(yù)期損失或代價(jià)。損失函數(shù)可以進(jìn)一步按照接收的文本類型變化。
例如,圖12例示了一個(gè)一般的例子,它是取決于文本優(yōu)先級(jí)的線性代價(jià)函數(shù)的圖1254。在圖1254中,隨著時(shí)間增加,沒有檢閱過文本的代價(jià)也增加。然而,與由直線1258表示的中優(yōu)先級(jí)消息或者由直線1260表示的低優(yōu)先級(jí)相比,由直線1256表示的高優(yōu)先級(jí)消息代價(jià)增加得更多。例如,高優(yōu)先級(jí)直線1256具有斜度為100,中優(yōu)先級(jí)直線1258具有斜度為10,而低優(yōu)先級(jí)直線1260具有斜度為一。這些斜度值隨后可以由分類器1020、1120在給一個(gè)給定的文本指派優(yōu)先級(jí)中使用,例如通過回歸分析。
然而,有些消息它們不具有由線性代價(jià)函數(shù)的使用良好近似的優(yōu)先級(jí)。例如,與一個(gè)會(huì)議有關(guān)的消息其代價(jià)函數(shù)隨著會(huì)議的時(shí)間接近而增加,并且之后,代價(jià)函數(shù)快速減少。即,在錯(cuò)過會(huì)議之后,用戶一般對(duì)于它就沒有什么可做的了。這個(gè)情況由非線性代價(jià)函數(shù)更好地近似,如圖13所示。在圖1362中,代價(jià)函數(shù)1364快速地增加,直到它到達(dá)由直線1366劃分界線的會(huì)議時(shí)間,之后它快速地減少。取決于消息的類型,代價(jià)函數(shù)可以由許多不同的線性和非線性表示代價(jià)函數(shù)之一來近似。
因而,如已經(jīng)描述的,文本的優(yōu)先級(jí)可以只是它是多個(gè)優(yōu)先級(jí)之一的可能性,基于分類器的輸出,或者是該文本最有可能應(yīng)用程序于的優(yōu)先級(jí)類,同樣基于分類器的輸出??晒┨鎿Q地,文本的預(yù)期時(shí)間臨界性如電子郵件消息可以被確定。這可以寫成EL=Σinp(criticali)C(criticali)]]>其中EL是預(yù)期損失,p(criticali)是一個(gè)文本具有臨界性i、C(criticali)是具有臨界性i的文本的代價(jià)函數(shù),并且n是臨界性類的總數(shù)減一。在函數(shù)是線性的情況下,代價(jià)函數(shù)定義一個(gè)關(guān)于時(shí)間的常數(shù)損失率。對(duì)于非線性函數(shù),損失率隨著延遲的檢閱或者文本的處理改變并且可以增加或減少,取決于延遲量。
在n=1的情況下,指定只存在兩個(gè)優(yōu)先級(jí)類低和高,預(yù)期的損失可以再表示成EC=p(criticalhigh)C(criticalhigh)+[1-p(criticallow)]C(criticallow)其中EC是文本的預(yù)期臨界性。而且,如果將低臨界性消息的代價(jià)函數(shù)設(shè)置為零,則這變成EC=p(criticalhigh)C(criticalhigh)直到一個(gè)文本的檢閱的時(shí)間為止的總損失可以表示為所表示的臨界性的積分,即,EL=∫0p(criticalhigh)C(criticalhigh,t)dt
其中t是在檢閱文檔之前的時(shí)間延遲。
符合用于分類文檔如按照重要分類電子郵件消息的值度量的其它量度。盡管上面的討論集中于按照時(shí)間臨界性的優(yōu)先級(jí),但也可以訓(xùn)練其它“重要性”的概念。例如,這可以通過給一組訓(xùn)練文件夾加標(biāo)簽來完成“高重要性”一直到“低重要性”,其中可以確定“預(yù)期重要性”的量度。另一個(gè)度量可以基于語義標(biāo)簽,“我希望在旅行中在1天內(nèi)聽到消息”,并且確定一個(gè)量度,用于按優(yōu)先級(jí)排列要轉(zhuǎn)送給旅行中的用戶的消息。而且,一個(gè)可使用的度量是緊急性或時(shí)間臨界性,因?yàn)樗哂星宄Z義用于決策制定、篩余和路由。在這種情況下,按照不同級(jí)別的緊急性給類加標(biāo)簽并且根據(jù)推斷的消息在每個(gè)類中的概率計(jì)算每個(gè)消息的預(yù)期緊急性。
對(duì)臨界性分類的擴(kuò)展,如在前面的章節(jié)中描述的,也可以按照本發(fā)明提供。例如,分類可以包括自動(dòng)搜索在特征類內(nèi)或特征類之間的高支付(high-payoff)特征的組合。如一個(gè)例子,在分類過程中可以搜索和使用的特殊區(qū)別、結(jié)構(gòu)等的組合,帶有已經(jīng)找到的對(duì)于某些用戶特別有用的詞語。兩個(gè)特征的組合稱為二元組(doublet),然而三個(gè)特征的組合稱為三元組(triplet),等等。特征的組合可以允許改進(jìn)的分類。
分類也可以通過使用遞增的索引(它在分類器中使用移動(dòng)窗口)來改進(jìn)。這使分類器能夠被例行公事地刷新,如舊數(shù)據(jù)超時(shí),并引進(jìn)新數(shù)據(jù)。
分類也可以基于在消息中指定事件的日期和時(shí)間的確定。這個(gè)確定可以向消息指派可以由分類器使用的特征。例如,指派的特征可包括今天在四小時(shí)內(nèi),今天在八小時(shí)內(nèi),明天,這個(gè)星期,這個(gè)月,和下個(gè)月及以后。這使分類器能夠具有改進(jìn)的準(zhǔn)確性,相對(duì)于被分類的消息。通常,分類可以基于被引用事件的時(shí)間,考慮事件在將來還是已經(jīng)過去了。關(guān)于將來的事件,分類因而考慮發(fā)送者對(duì)在將來事件發(fā)生的時(shí)間的引用。
其它新特征可以結(jié)合到分類過程中。例如,可以使用組織圖來按照發(fā)送者在圖中的位置確定消息的重要性。語言特征可以結(jié)合到分類器中。為適應(yīng)不同的語言,可根據(jù)發(fā)送者的來歷和/或編寫消息的語言來修改特征。分類可根據(jù)存儲(chǔ)消息的不同文件夾以及其它定標(biāo)(scaling)和控制規(guī)則變化。除電子郵件和其它源之外,分類可以在即時(shí)消息以及其它信息源如證券報(bào)價(jià)機(jī)等上執(zhí)行。
通常,可在分類過程中考慮發(fā)送者-接收者結(jié)構(gòu)關(guān)系。例如,如果用戶實(shí)質(zhì)上是消息的唯一接收者,則這個(gè)消息可看作是比發(fā)送給少數(shù)人的消息更重要。接著,發(fā)送給少數(shù)人的消息比發(fā)送用戶是隱蔽拷貝(密送)的或者復(fù)制拷貝(抄送)的消息更重要。關(guān)于發(fā)送者,可基于發(fā)送者的名字是否認(rèn)識(shí)來指派臨界性。臨界性也可根據(jù)發(fā)送者對(duì)于用戶相關(guān)聯(lián)的組織是內(nèi)部的還是外部的來指派。
在分類中可考慮的其它區(qū)別包括消息的長度,問題是否檢測到過,以及用戶的名字是否在消息中。與時(shí)間臨界性相關(guān)聯(lián)的語言可增加消息的重要性。例如,短語如“很快發(fā)生”、“立即”、“盡可能快”、“盡快”和“最后時(shí)限是”可表示消息更緊急??煽紤]過去時(shí)與將來時(shí)相比較的使用,并可考慮由短語如“聚會(huì)”、“我們是否能會(huì)面”等指定的協(xié)調(diào)任務(wù)。垃圾郵件的證據(jù)可降低消息的優(yōu)先級(jí)。謂詞表示的組合,如來自一個(gè)接近用戶在組織圖中位置的發(fā)送者的短問題,也可在分類過程中考慮。
在下一個(gè)章節(jié)中,描述提供一個(gè)何時(shí)向用戶報(bào)警高優(yōu)先級(jí)文本的決定的過程,例如,一個(gè)具有為高優(yōu)先級(jí)的可能性大于用戶設(shè)置的閾限或者大于由決策理論推理確定的閾限的文本。即,除了知道時(shí)間臨界性消息之外,決定何時(shí)向用戶報(bào)警時(shí)間臨界性消息也很重要,例如如果用戶不是直接觀看進(jìn)入的電子郵件。通常,確定將用戶從當(dāng)前正在解決的任務(wù)轉(zhuǎn)移到了解時(shí)間臨界性消息的代價(jià)。
可供替換地,可以使用各種策略用于報(bào)警和通知。例如,這些策略可以在通知平臺(tái)體系結(jié)構(gòu)內(nèi)實(shí)現(xiàn),下面更詳細(xì)地描述。這些策略的一些包括·在總損失上設(shè)置用戶指定的上邊界。這個(gè)策略指定一個(gè)系統(tǒng)應(yīng)當(dāng)在與一個(gè)消息的延遲檢閱相關(guān)聯(lián)的總損失超過某個(gè)預(yù)先指定的“可容忍”的損失“x”時(shí)產(chǎn)生警報(bào)。
·另一個(gè)策略可以是代價(jià)-利益分析,基于更完整的決策理論分析,如NEVA=EVTA-ECA-TC,其中NEVA是報(bào)警的凈預(yù)期值,EVTA是報(bào)警的預(yù)期值,ECA是報(bào)警的預(yù)期代價(jià),以及TC是與發(fā)送一個(gè)消息相關(guān)的傳輸代價(jià)。
通常,用戶應(yīng)當(dāng)在代價(jià)-利益分析建議用戶因沒有在時(shí)間t檢閱會(huì)招致的預(yù)期損失大于向用戶報(bào)警的預(yù)期代價(jià)時(shí)被報(bào)警。即,報(bào)警應(yīng)當(dāng)進(jìn)行,如果EL-EC>0其中EL是在當(dāng)前時(shí)間t不檢閱文本的預(yù)期損失,以及EC是在當(dāng)前時(shí)間t向用戶報(bào)警文本的預(yù)期代價(jià)。預(yù)期的損失如前面的描述章節(jié)所述。
然而,上面的公式可能不是最準(zhǔn)確的,因?yàn)橛脩舫3T趯碇鲃?dòng)地檢閱消息。因此,實(shí)際上,通常應(yīng)當(dāng)在稱為EVTA的報(bào)警預(yù)期值為正時(shí)就向用戶報(bào)警。報(bào)警預(yù)期值因而應(yīng)當(dāng)考慮現(xiàn)在向用戶報(bào)警文本的價(jià)值,與用戶在以后主動(dòng)檢閱消息的價(jià)值相反,減去報(bào)警的代價(jià)。這可以陳述為EVA=ELalert-ELno-alert-EC其中,ELalert是如果用戶現(xiàn)在要檢閱消息時(shí),在被報(bào)警時(shí),用戶檢閱消息的預(yù)期損失,與ELno-alert相反,它是用戶在某個(gè)點(diǎn)主動(dòng)檢閱消息的預(yù)期損失,在沒有被報(bào)警的情況下,基于轉(zhuǎn)移的考慮和基于發(fā)送信息的直接代價(jià)的報(bào)警的預(yù)期代價(jià)。
而且,來自幾個(gè)消息的信息可以被分組到一個(gè)單一的混合警報(bào)。在一個(gè)警報(bào)中關(guān)于多個(gè)消息的檢閱信息可以比一個(gè)中繼關(guān)于單個(gè)消息的信息的警報(bào)代價(jià)更大。在轉(zhuǎn)移注意力方面這樣的增加可以通過使警報(bào)的代價(jià)成為它信息復(fù)雜性的函數(shù)來表示??梢约俣ㄒ粋€(gè)電子郵件消息的EVA獨(dú)立于其它電子消息的EVA。例如,EVA(Mi,t),指在時(shí)間t向用戶報(bào)警一個(gè)單個(gè)消息Mi的價(jià)值,以及ECA(n)指中繼n個(gè)消息的內(nèi)容的預(yù)期成本。因而,可以通過將中繼關(guān)于一組n個(gè)消息的信息的預(yù)期值合計(jì)起來考慮多個(gè)消息,其中MEVA=Σi=1EVA(Mi,t)-ECA(n)]]>也要注意,為了確定報(bào)警的預(yù)期代價(jià),推理或直接訪問關(guān)于用戶是在還是不在的信息是有用的??梢允褂脗鞲衅鱽肀硎居脩艉螘r(shí)在辦公室時(shí),諸如紅外傳感器和壓力傳感器。然而,如果這類設(shè)備不存在,可以按照用戶在計(jì)算機(jī)上的活動(dòng)的函數(shù)來指派一個(gè)用戶在辦公室時(shí)的概率,例如,諸如自從最后一次觀察到鼠標(biāo)或鍵盤活動(dòng)起的時(shí)間。而且,在日程表中的調(diào)度信息也可以用于進(jìn)行關(guān)于用戶的距離和安排的推理并且用于考慮通過不同的過程轉(zhuǎn)送消息給用戶的代價(jià)。
在進(jìn)行用關(guān)于具有高時(shí)間臨界性的消息的信息打擾用戶的決策時(shí),知道用戶有多忙也是重要的??梢酝评?例如,推理決策制定)用戶是否在計(jì)算機(jī)上工作和以什么速度工作,或者用戶是在電話上與某人講話,或者在另一個(gè)地方開會(huì)。若干證據(jù)類可以用于評(píng)估用戶的活動(dòng)或者他或她的注意力焦點(diǎn),如圖14所示。貝葉斯定理網(wǎng)絡(luò)隨后可以用于執(zhí)行關(guān)于用戶活動(dòng)的推理。圖15描繪了這樣一個(gè)網(wǎng)絡(luò)的例子。
通常,應(yīng)當(dāng)基于預(yù)期臨界性和用戶活動(dòng)的推理,作出關(guān)于何時(shí)和如何向用戶報(bào)警消息和提供服務(wù)。例如,決策可以通過使用決策模型來進(jìn)行。圖16-18是影響圖,例示可以如何使用這類決策模型來作出報(bào)警決策。圖16顯示一個(gè)決策模型,用于關(guān)于打擾用戶的決策,它考慮了當(dāng)前活動(dòng)、消息的預(yù)期時(shí)間臨界性、和依賴于通信形式的報(bào)警代價(jià)。圖17還包括表示當(dāng)前位置的變量和該變量在活動(dòng)上的影響和替換的信息傳遞技術(shù)的代價(jià)。而且,圖18擴(kuò)展到考慮與保真度方面的損失相關(guān)聯(lián)的代價(jià),在將具有重要的圖形內(nèi)容的消息轉(zhuǎn)送到用戶而不呈現(xiàn)圖形內(nèi)容的時(shí)候。
可供替換地,關(guān)于何時(shí)和如何向用戶報(bào)警的決策可以通過使用一組用戶指定的閾限和定義關(guān)于報(bào)警的策略來作出。例如,用戶的存在可以根據(jù)鼠標(biāo)或鍵盤活動(dòng)來推理。因而,例如,可以使用戶輸入關(guān)于報(bào)警的閾限用于活動(dòng)和非活動(dòng)的推理的狀態(tài)。用戶也可以輸入在活動(dòng)之后的空閑活動(dòng)的量,其中報(bào)警交在較低的臨界性處發(fā)生。如果基于實(shí)質(zhì)上沒有檢測到計(jì)算機(jī)活動(dòng)的時(shí)間確定用戶不在,則可以存儲(chǔ)消息,并且按照臨界性的順序在用戶返回與計(jì)算機(jī)交互時(shí)向用戶報(bào)告。而且,用戶可以指定路由和尋呼選項(xiàng)作為參數(shù)的函數(shù),包括預(yù)期的臨界性、最大預(yù)期損失和向用戶報(bào)警的價(jià)值。
通知和/或報(bào)警系統(tǒng)還可估計(jì)預(yù)期用戶何時(shí)返回,使得它在用戶預(yù)期返回之前發(fā)送預(yù)期是重要的優(yōu)先級(jí)。這可以通過隨著時(shí)間過去了解用戶在和用戶離開模式來完成。用戶隨后可以設(shè)置合適的策略,按照預(yù)期他或她何時(shí)返回到系統(tǒng)以檢閱優(yōu)先級(jí)而不向用戶報(bào)警它們。例如,由系統(tǒng)確定的預(yù)期返回的時(shí)間可自動(dòng)地傳送到高緊急消息的發(fā)送者。如此,消息發(fā)送者接收預(yù)期用戶返回從而他或她可以答復(fù)消息的反饋。也可通知發(fā)送者他或她的消息已經(jīng)被傳送到用戶的移動(dòng)設(shè)備等等。
圖19例示一種按照本發(fā)明的方法,用于產(chǎn)生優(yōu)先級(jí)和基于優(yōu)先級(jí)執(zhí)行報(bào)警決策。盡管為了說明簡單的目的,將該方法示為和描述為一系列行為,但要理解和意識(shí)到,本發(fā)明不受行為順序的限制,如按照本發(fā)明,有些行為可按不同的順序和/或與在此所示和描述的其它行為同時(shí)發(fā)生。例如,本領(lǐng)域熟練技術(shù)人員將理解和意識(shí)到,一個(gè)方法可供替換地表示為一系列相關(guān)的狀態(tài)或事件,如在狀態(tài)圖中。而且,按照本發(fā)明,不要求所有例示的行為來實(shí)現(xiàn)一個(gè)方法。
參考圖19,流程圖1974例示按照本發(fā)明的產(chǎn)生和使用優(yōu)先級(jí)的方法。在1980,接收一個(gè)數(shù)據(jù),諸如要給它指派優(yōu)先級(jí)的文本。該數(shù)據(jù)可以是電子郵件消息,或者實(shí)質(zhì)上任何其它類型的數(shù)據(jù)或文本。在1982,產(chǎn)生該數(shù)據(jù)的優(yōu)先級(jí),基于分類器,如已經(jīng)描述的。另外,1982可以包括分類器的初始和后續(xù)訓(xùn)練,如已經(jīng)描述的。
隨后在1984輸出數(shù)據(jù)的優(yōu)先級(jí)。如圖19所示,這可以包括在1986、1988、1990、1992和1994處的處理。在1986,確定在當(dāng)前時(shí)間t不檢閱該數(shù)據(jù)的預(yù)期損失。這個(gè)決定考慮在將來時(shí)間不檢閱該文本的預(yù)期損失,基于用戶將在不被報(bào)警的情況下自己檢閱該文本的假定,如已經(jīng)描述的。在1988,確定報(bào)警的預(yù)期代價(jià),如已經(jīng)描述的。如果在1990損失大于代價(jià),則在1992在時(shí)間t不作出警報(bào),并且過程回到1986,在一個(gè)新當(dāng)前時(shí)間t?;氐?986可被執(zhí)行,因?yàn)殡S著時(shí)間前進(jìn),預(yù)期損失可在某個(gè)點(diǎn)超過報(bào)警代價(jià),使得在1990的計(jì)算會(huì)改變。在預(yù)期損失超過報(bào)警代價(jià)時(shí),則在1994執(zhí)行向用戶或其它系統(tǒng)的報(bào)警。
現(xiàn)在描述向用戶或其它系統(tǒng)報(bào)警的輸出??梢栽陔娮釉O(shè)備上向用戶報(bào)警,基于報(bào)警準(zhǔn)則,它表示何時(shí)應(yīng)當(dāng)向用戶報(bào)警一個(gè)優(yōu)先化文本。用于向用戶報(bào)警的電子設(shè)備可以是尋呼機(jī)、蜂窩式/數(shù)字移動(dòng)電話,或其它通信方式,如下面更詳細(xì)描述的。在電子設(shè)備如尋呼機(jī)或移動(dòng)電話上向用戶的報(bào)警,可以基于報(bào)警準(zhǔn)則,例如,該準(zhǔn)則可以被調(diào)整為對(duì)用戶的位置、推理的任務(wù)和/或注意力焦點(diǎn)的信息敏感。這樣的信息可以在不確定的情況下推理出來,或者可以從在線信息源被訪問。例如,來自一個(gè)在線日程表的信息,可以適合于控制用于作出關(guān)于中繼信息至設(shè)備(諸如下面更詳細(xì)描述的通知接收器)的決策的準(zhǔn)則。
報(bào)警可以通過基于路由準(zhǔn)則路由優(yōu)先化文本或其它數(shù)據(jù)來執(zhí)行。文本的路由可以包括轉(zhuǎn)送文本,和/或向發(fā)送者答復(fù)文本,在文本是電子郵件的情況下。例如,可以播放一個(gè)聲音來向用戶報(bào)警一個(gè)優(yōu)先化文檔??晒┨鎿Q地,可以打開代理或自動(dòng)助理(例如,交互顯示向?qū)?。即,代理可以出現(xiàn)在顯示屏幕上,來向用戶通知優(yōu)先化文檔。而且,可以打開優(yōu)先化文檔,諸如在屏幕上顯示。該文檔可以接收焦點(diǎn)。這也可以包括基于文檔的優(yōu)先級(jí)改變文檔的尺寸,使得文檔的優(yōu)先級(jí)越高,顯示它的窗口越大,和/或基于它的優(yōu)先級(jí)將文檔定位在顯示的中央。
現(xiàn)在參考圖20,這是按照本發(fā)明一個(gè)方面的文本產(chǎn)生和優(yōu)先權(quán)系統(tǒng)2000的圖。系統(tǒng)2000包括程序2002和分類器2004。注意,程序2002和分類器2004可以包括由計(jì)算機(jī)的處理器從其計(jì)算機(jī)可讀介質(zhì)執(zhí)行的計(jì)算機(jī)程序。
程序2002產(chǎn)生用于到分類器2004的輸入的文本。程序包括一個(gè)接收電子郵件的電子郵件程序,電子郵件隨后用作文本。分類器2004為相關(guān)聯(lián)的消息產(chǎn)生優(yōu)先級(jí)。如上所述,分類器2004可以是貝葉斯定理分類器,支持向量機(jī)分類器,或者其它類型的分類器。由分類器2004輸出的文本優(yōu)先級(jí)隨后可以結(jié)合代價(jià)-利益分析使用,如已經(jīng)描述的,來實(shí)現(xiàn)進(jìn)一步的輸出和/或基于其的報(bào)警。
現(xiàn)在轉(zhuǎn)到圖21,按照本發(fā)明的一個(gè)方面,系統(tǒng)2100例示首選項(xiàng)執(zhí)行引擎和上下文分析程序如何一起起作用。系統(tǒng)2100包括上下文分析程序2122、首選項(xiàng)執(zhí)行引擎2124、一個(gè)或多個(gè)事件或通知源1至N,2126,2127,2128,優(yōu)先權(quán)系統(tǒng)2130,以及一個(gè)或多個(gè)動(dòng)作或通知接收器1至M,2136,2137,2138,其中N和M分別是整數(shù)。按照本發(fā)明的一個(gè)方面,源也可以稱為事件發(fā)布者,而接收器也可以稱為事件訂戶??梢杂腥我鈹?shù)量的接收器和源。通常,執(zhí)行引擎2124傳送通知,通知也稱為事件或報(bào)警,從源2126-2128至接收器2136-2138,部分基于存儲(chǔ)在上下文分析程序2122中和/或由它訪問的參數(shù)信息。
上下文分析程序2122存儲(chǔ)/分析關(guān)于用戶的變量和參數(shù)的信息,它影響通知決策制定。例如,參數(shù)可包括上下文相關(guān)信息,如用戶的典型位置和注意力焦點(diǎn)或者一天每個(gè)時(shí)間和一周每天的活動(dòng),以及以這類參數(shù)為條件的附加參數(shù),如用戶在不同位置傾向于訪問的設(shè)備。這類參數(shù)也可以是通過一個(gè)或多個(gè)傳感器匿名地產(chǎn)生的觀察資料的函數(shù)。例如,基于關(guān)于用戶位置的信息(如可以由全球定位系統(tǒng)(GPS)子系統(tǒng)提供的),基于有關(guān)正在使用的設(shè)備類型和/或設(shè)備使用的模式以及由訪問一個(gè)特定類型的設(shè)備的最后時(shí)間,選擇或修改一個(gè)或多個(gè)概況(未示出)。而且,如下面更詳細(xì)地描述的,也可使用自動(dòng)推理,以動(dòng)態(tài)地推理出參數(shù)或狀態(tài),如位置和注意力。概況參數(shù)可存儲(chǔ)為可由用戶編輯的用戶概況。除依賴于預(yù)定義的概況的設(shè)置或動(dòng)態(tài)推理之外,通知體系結(jié)構(gòu)可以使用戶能夠?qū)崟r(shí)指定他或她的狀態(tài),如用戶在接下去的幾個(gè)小時(shí)里不在,除非是重要的通知,或者直到一個(gè)給定時(shí)間,例如。
參數(shù)也可以包括默認(rèn)的通知首選項(xiàng)參數(shù),關(guān)于用戶在不同設(shè)置中被不同類型的通知打擾的首選項(xiàng),可以用作由執(zhí)行引擎2124作出通知決策的基礎(chǔ),并且基于此用戶可以開始改變。參數(shù)可包括默認(rèn)的參數(shù),關(guān)于用戶希望在不同的情況下如何被通知(例如,諸如用蜂窩電話,用尋呼機(jī))。參數(shù)可以包括這樣的評(píng)估,如與在不同設(shè)置中由不同方式通知相關(guān)聯(lián)的中斷的代價(jià)。這可以包括表示用戶在不同位置的可能性、不同設(shè)備可用的可能性、在給定時(shí)間他或她的注意力狀態(tài)的可能性的上下文相關(guān)參數(shù),以及表示用戶希望在給定時(shí)間如何被通知的通知參數(shù)。
按照本發(fā)明的一個(gè)方面,由上下文分析程序2122存儲(chǔ)的信息,包括由分析程序確定的上下文相關(guān)信息。上下文相關(guān)信息是由分析程序2122通過基于一個(gè)或多個(gè)上下文相關(guān)信息源(未示出)識(shí)別用戶的位置和注意力狀態(tài)來確定的,如在后面的描述章節(jié)中更詳細(xì)地描述的。上下文分析程序2122,例如,能夠通過全球定位系統(tǒng)(GPS)(它是用戶的汽車或蜂窩電話的部件以一定的精度確定用戶的實(shí)際位置。分析程序也可使用一個(gè)統(tǒng)計(jì)模型來確定用戶在一個(gè)給定的注意力狀態(tài)中的可能性,通過考慮后臺(tái)評(píng)估和/或通過考慮諸如日子的類型、時(shí)刻、在用戶日程表中的數(shù)據(jù)和關(guān)于用戶活動(dòng)的觀察資料之類的信息而收集的觀察資料。給定的注意力狀態(tài)可以包括用戶是否開放接收通知、忙或不開放接收通知,并且可以包括其它考慮事項(xiàng)如工作日、周末、假期和/或其它時(shí)機(jī)/時(shí)段。
源2126-2128,2130產(chǎn)生目標(biāo)為用戶和/或其它實(shí)體的通知。例如,源2126-2128可包括通信,如因特網(wǎng)和基于網(wǎng)絡(luò)的通信,電話通信,以及軟件服務(wù)。通知源在此通知定義為產(chǎn)生事件的源,也可以稱為通知和報(bào)警,目的是向用戶或者用戶的代理報(bào)警,關(guān)于信息、服務(wù)和/或系統(tǒng)或世界事件。通知源也稱為事件源。
例如,可由優(yōu)先權(quán)系統(tǒng)2130產(chǎn)生電子郵件作為通知,使得它被優(yōu)先化,其中產(chǎn)生通知的應(yīng)用程序程序或系統(tǒng)為電子郵件指派一個(gè)相應(yīng)于電子郵件對(duì)于用戶的可能的重要性或緊急性的相對(duì)優(yōu)先級(jí)。也可在與對(duì)于用戶的相對(duì)重要性無關(guān)的情況下發(fā)送電子郵件。因特網(wǎng)相關(guān)的服務(wù)可以包括通知,它們包括用戶已經(jīng)訂閱的信息,例如,諸如經(jīng)常是當(dāng)前新聞的大字標(biāo)題和股票價(jià)格。
通知或事件源2126-2128可以是推型或拉型源。推型源是那些自動(dòng)產(chǎn)生和發(fā)送信息的源,沒有相應(yīng)的請(qǐng)求,如大字標(biāo)題新聞和其它因特網(wǎng)相關(guān)的服務(wù),它們?cè)诒挥嗛喓笞詣?dòng)地發(fā)送信息。拉型源是那些響應(yīng)于請(qǐng)求發(fā)送信息的源,如在查詢郵件服務(wù)器之后接收的電子郵件。還有其它的通知源,包括下列·電子郵件桌面應(yīng)用程序如日程表系統(tǒng);·計(jì)算機(jī)系統(tǒng)(例如,可用消息向用戶報(bào)警關(guān)于有關(guān)系統(tǒng)活動(dòng)或問題的報(bào)警的信息的計(jì)算機(jī)系統(tǒng));·因特網(wǎng)相關(guān)的服務(wù),約會(huì)信息,調(diào)度查詢;·在文檔中或在一個(gè)或多個(gè)共享文件夾中某種文檔的數(shù)量的改變;·響應(yīng)于對(duì)信息的常設(shè)或持久的查詢,新文檔的可用性;·用于有關(guān)人及其存在的信息源,他們?cè)谖恢蒙系母淖?,它們所接近?例如,在我正旅行時(shí),如果另一個(gè)同事或朋友在我的10英里之內(nèi),則讓我知道),或者他們所能夠做的(例如,讓我知道何時(shí)斯蒂芬可以交談并且靠近一個(gè)可以支持全視頻電話會(huì)議的高速鏈路)。
通知?jiǎng)幼鹘邮掌?136-2138能夠?yàn)橛脩籼峁┩ㄖ@?,這類通知?jiǎng)幼鹘邮掌?136-2138可以包括計(jì)算機(jī),如臺(tái)式和/或膝上型計(jì)算機(jī),手持式計(jì)算機(jī),蜂窩電話,陸上線路電話,尋呼機(jī),基于汽車的計(jì)算機(jī),以及其它系統(tǒng)/應(yīng)用程序,如可意識(shí)到的。注意,有些接收器2136-2138可以傳送比其它接收器更豐富的通知。例如,臺(tái)式計(jì)算機(jī)一般具有揚(yáng)聲器和與計(jì)算機(jī)耦合的相對(duì)大的彩色顯示器,并且在連接到本地網(wǎng)絡(luò)或因特網(wǎng)時(shí)具有較高帶寬用于接收信息。因而,可以由臺(tái)式計(jì)算機(jī)用相對(duì)豐富的方式將通知傳送給用戶。相反,例如,許多蜂窩電話具有較小的顯示器,可以是黑白的,并且以相對(duì)較低的帶寬接收信息。因此,例如,與由蜂窩電話傳送的通知相關(guān)聯(lián)的信息一般較短且適合于電話的界面能力。因而,通知的內(nèi)容取決于要發(fā)送到蜂窩電話還是臺(tái)式計(jì)算機(jī)而不同。按照本發(fā)明的一個(gè)方面,通知接收器可以指通過事件訂閱服務(wù)例如訂閱事件或通知的接收器。
執(zhí)行引擎2124訪問由上下文分析程序存儲(chǔ)和/或確定的信息,并且確定從源2126-2128接收的通知中哪些要傳送到接收器2136-2138中的哪些。而且,引擎2124可以確定如何傳送通知,取決于接收器2136-2138中哪些已經(jīng)被選擇要向其發(fā)送信息。例如,可確定在向被選擇的接收器2136-2138提供之間應(yīng)當(dāng)匯總通知。
本發(fā)明不是限制于引擎2124如何作出它的決策,關(guān)于哪些通知要傳送到哪些通知接收器,以及以什么方式傳送通知。按照一個(gè)方面,可以使用決策理論分析。例如,執(zhí)行引擎2124可以適合于推理出有關(guān)變量包括用戶的位置、注意力、設(shè)備可用性和直到用戶將訪問信息(如果沒有報(bào)警)為止的時(shí)間量的重要的不確定性。通知引擎2124隨后可以作出有關(guān)是否向用戶報(bào)警通知的通知決策,以及如果是,作出有關(guān)概要的性質(zhì)和用于中繼通知的合適設(shè)備的決策。通常,執(zhí)行引擎2124確定一個(gè)通知的凈預(yù)期值。在這么做的時(shí)候,它可以考慮下列·每個(gè)可用通知接收器的保真度和傳輸可靠性;·打擾用戶的注意力代價(jià);·信息對(duì)于用戶的新穎性;·直到用戶將主動(dòng)檢閱信息為止的時(shí)間;·信息的可能上下文敏感值;·隨著時(shí)間過去,包含在通知內(nèi)的信息的增加和/或減少的價(jià)值。
所作出的有關(guān)不確定性的推理因而可產(chǎn)生為值的預(yù)期可能性,例如,如打擾用戶的代價(jià),在給定用戶的某個(gè)注意力狀態(tài)時(shí)使用一個(gè)特定設(shè)備的特定方式的情況下。執(zhí)行引擎2124可以作出關(guān)于下列的一個(gè)或多個(gè)的決策·用戶當(dāng)前所注意和所做的(例如基于上下文相關(guān)信息);·用戶當(dāng)前在哪里;·信息有多重要;·推遲通知的代價(jià)是什么;·通知會(huì)如何轉(zhuǎn)移注意力;·到達(dá)用戶的可能性是什么;以及·與一個(gè)給定通知接收器的特定方式的使用相關(guān)聯(lián)的保真度損失是什么。
因此,執(zhí)行引擎2124可以執(zhí)行一個(gè)分析,如決策理論分析,關(guān)于未解決的和主動(dòng)的通知,評(píng)估由信息接收器和源提供的依賴上下文的變量,并且推理出被選擇的不確定性,如直到用戶有可能檢閱信息為止的時(shí)間以及用戶的位置和當(dāng)前注意力狀態(tài)。
而且,執(zhí)行引擎2124可以訪問由上下文分析程序2122代替或者為支持個(gè)性化的決策理論分析而存儲(chǔ)在用戶服務(wù)概況的信息。例如,用戶概況可表示在一個(gè)給定時(shí)間,用戶喜歡通過尋呼機(jī)來被通知,并且只有當(dāng)通知具有一個(gè)預(yù)定的重要性級(jí)別的時(shí)候。這樣的信息可以用作基線,從它開始決策理論分析,或者可以是執(zhí)行引擎2124確定如何與是否通知用戶所使用的方式。
按照本發(fā)明的一個(gè)方面,通知平臺(tái)體系結(jié)構(gòu)2100可以配置為一個(gè)駐留在事件或消息基礎(chǔ)結(jié)構(gòu)之上的層。然而,本發(fā)明不限于任何特定的事件基礎(chǔ)結(jié)構(gòu)。這樣的事件和消息系統(tǒng)和協(xié)議可以包括·超文本傳輸協(xié)議(HTTP),或者在本領(lǐng)域內(nèi)已知的HTTP擴(kuò)展;
·簡單對(duì)象訪問協(xié)議(SOAP),如在本領(lǐng)域內(nèi)已知的;·窗口管理工具,如在本領(lǐng)域內(nèi)已知的;·Jini,如在本領(lǐng)域內(nèi)已知的;以及·實(shí)質(zhì)上任何類型的通信協(xié)議,例如,諸如那些基于數(shù)據(jù)包交換協(xié)議的通信協(xié)議。
而且,該體系結(jié)構(gòu)可以配置為一個(gè)駐留在靈活的分布式計(jì)算基礎(chǔ)結(jié)構(gòu)之上的層,如本領(lǐng)域普通技術(shù)人員可以意識(shí)到的。因而,例如,通知平臺(tái)體系結(jié)構(gòu)2100可以使用底下的基礎(chǔ)結(jié)構(gòu)作為源發(fā)送通知的方式,以及作為接收器接收通知、報(bào)警和事件的方式。然而,不要這樣限制本發(fā)明。
現(xiàn)在參考圖22,這里在系統(tǒng)2200中更詳細(xì)地描繪了在前面的描述章節(jié)中描述的信息代理系統(tǒng)體系結(jié)構(gòu)的上下文分析程序2122。如圖22例示的上下文分析程序2222包括用戶通知首選項(xiàng)存儲(chǔ)器2240,用戶上下文模塊2260,它包括用戶上下文概況存儲(chǔ)器2262和白板2264。按照本發(fā)明一個(gè)方面的上下文分析程序2222可以實(shí)現(xiàn)為一個(gè)或多個(gè)可由計(jì)算機(jī)的處理器從其機(jī)器可讀介質(zhì)(包括但不限于存儲(chǔ)器)執(zhí)行的計(jì)算機(jī)程序。
首選項(xiàng)存儲(chǔ)器2262存儲(chǔ)用戶的通知參數(shù),如用戶的默認(rèn)通知首選項(xiàng),例如可以由用戶編輯和修改的用戶概況。首選項(xiàng)存儲(chǔ)器2262可以看作是存儲(chǔ)關(guān)于影響如何通知用戶的參數(shù)的信息的存儲(chǔ)器。如在此已經(jīng)描述的,首選項(xiàng)可以由用戶使用系統(tǒng)化邏輯來指定,例如,用如果-那么(IF-THEN)格式。用戶上下文模塊2260確定用戶的當(dāng)前上下文,例如,基于一個(gè)或多個(gè)上下文信息源2280,如向白板2264發(fā)布的。用戶上下文概況存儲(chǔ)器2262存儲(chǔ)用戶的上下文參數(shù),如用戶的默認(rèn)設(shè)置,可以由用戶編輯和修改。即,用戶上下文模塊2260提供有關(guān)用戶當(dāng)前上下文信息的最佳推測或估計(jì),通過訪問來自概況存儲(chǔ)器2262的信息和/或用實(shí)際的感覺更新在存儲(chǔ)器2262中的一組先前的信條,經(jīng)由一個(gè)或多個(gè)上下文源2280。概況存儲(chǔ)器2262可以看作是先驗(yàn)地存儲(chǔ)例如用戶在何處以用戶在做什么的存儲(chǔ)器。
用戶上下文概況存儲(chǔ)器2262可以是一個(gè)預(yù)先評(píng)估的和/或預(yù)定義的用戶概況,它捕捉諸如確定性或概率概況之類的信息。概況可以是關(guān)于典型位置、活動(dòng)、設(shè)備可用性和不同通知類的代價(jià)和價(jià)值的,作為諸如時(shí)刻、日子的類型以及用戶與一個(gè)或多個(gè)設(shè)備的交互之類的觀察資料的函數(shù)。例如,日子的類型可以包括工作日、周末和假期。用戶上下文模塊2260隨后可以主動(dòng)地確定或推理出用戶的上下文或狀態(tài)的方面,諸如用戶的當(dāng)前或?qū)淼奈恢煤妥⒁饬顟B(tài)。而且,上下文的實(shí)際狀態(tài)可以直接從上下文信息源2280通過白板2264來訪問,和/或,可以從各種各樣的這類觀察資料通過推理方法如在下面更詳細(xì)描述的貝葉斯推理來推理。
上下文信息源2280可通過白板2264提供關(guān)于用戶的注意力狀態(tài)和位置的信息給上下文模塊2260,模塊2260從這個(gè)信息可以作出關(guān)于用戶的當(dāng)前上下文(例如,用戶的當(dāng)前注意力狀態(tài)和位置)的決定。而且,本發(fā)明不限于特定數(shù)量或類型的上下文源2280,也不限于由用戶上下文模塊2260推理或訪問的信息類型。然而,上下文源2280可以包括多個(gè)桌面信息和事件,例如諸如鼠標(biāo)信息、鍵盤信息、應(yīng)用程序信息(例如,哪一個(gè)應(yīng)用程序當(dāng)前正在接收用戶的焦點(diǎn))、環(huán)境聲音和說話信息、在桌面上窗口中的文本信息。白板2264可以包括一個(gè)共同的存儲(chǔ)區(qū),上下文信息源2280可以向它發(fā)布信息,并且多個(gè)組件包括源和上下文模塊2260可以從它訪問這個(gè)信息。事件或動(dòng)作,也稱為通知或報(bào)警,通??梢园ㄓ嘘P(guān)關(guān)于一個(gè)或多個(gè)世界的狀態(tài)的觀察資料的信息。這類狀態(tài)可以包括系統(tǒng)組件的狀態(tài)、用戶的活動(dòng)和/或有關(guān)環(huán)境的測量。而且,事件可以通過對(duì)測量設(shè)備和/或事件源的主動(dòng)查詢,通過在改變時(shí)和/或每個(gè)不變的或變化的事件節(jié)拍發(fā)送的信息的接收來產(chǎn)生。
上下文源2280的其它類型包括用戶的個(gè)人信息管理器(PIM)信息,例如,它通??梢蕴峁╆P(guān)于用戶的調(diào)度的調(diào)度信息。當(dāng)前時(shí)刻,以及用戶的位置--例如,由全球定位系統(tǒng)(GPS)確定的,和/或用戶對(duì)可以確定位置的蜂窩電話、PDA或膝上型計(jì)算機(jī)的訪問--也是上下文源2280的類型。而且,實(shí)時(shí)移動(dòng)設(shè)備使用是上下文源2280的一種類型。例如,移動(dòng)設(shè)備如蜂窩電話能夠確定它當(dāng)前是否被用戶訪問,以及設(shè)備方向和傾斜性(例如,也表示有關(guān)設(shè)備使用的信息),和加速度與速度(例如,表示有關(guān)用戶是否正在移動(dòng)的信息)。
現(xiàn)在參考圖23,更詳細(xì)地例示上面描述的通知源。通知源2326-2328,通常產(chǎn)生傳送到通知執(zhí)行引擎2324的通知,它確定何時(shí)通知應(yīng)當(dāng)發(fā)生,并且如果要發(fā)生,確定哪些通知應(yīng)當(dāng)傳送到哪些通知接收器2336-2328,以及以什么順序。
依照本發(fā)明的一個(gè)方面,通知源2326-2328可以具有一個(gè)或多個(gè)下列在屬性和關(guān)系的標(biāo)準(zhǔn)描述中的參數(shù),在此稱為通知源模式或源模式。注意,可以為上面描述的源、接收器和上下文信息源提供模式。這類模式提供有關(guān)不同組件的聲明性信息并且可以使源2326-2328、通知引擎2324、接收器2336-2338和上下文分析程序2322能夠彼此共享語義信息。因而,不同的模式提供有關(guān)與通知相關(guān)聯(lián)的性質(zhì)、緊急性和設(shè)備信令形式的信息。即,模式通??梢远x為類和類之中的關(guān)系的集合,它們定義通知和事件的結(jié)構(gòu),包含例如包括事件或通知類、源、目標(biāo)、事件或通知語義、本體論(ontological)內(nèi)容信息、觀察資料可靠性和實(shí)質(zhì)上任何服務(wù)質(zhì)量屬性的信息。
用于通知源模式的參數(shù)(未示出)可以包括下列的一個(gè)或多個(gè)消息類;關(guān)聯(lián)性;重要性;時(shí)間臨界性;新穎性;內(nèi)容屬性;保真度權(quán)衡,和/或源信息概要信息。用于由通知源產(chǎn)生的通知的消息類例如表示通知的通信類型,如電子郵件、即時(shí)消息、數(shù)字財(cái)務(wù)更新和桌面服務(wù)。用于由通知源產(chǎn)生的通知的關(guān)聯(lián)性表示包含在通知內(nèi)的信息與一個(gè)或多個(gè)指定的上下文相關(guān)的可能性。例如,關(guān)聯(lián)性可以由一個(gè)邏輯標(biāo)志來提供,表示源是否與一個(gè)給定的上下文相關(guān)。通知的新穎性表示用戶已經(jīng)知道包含在通知內(nèi)的信息的可能性。即,新穎性是信息對(duì)于用戶是否為新的,隨著時(shí)間過去(表示用戶現(xiàn)在是否知道該信息,并且將來何時(shí)用戶在沒有向用戶報(bào)警該信息的情況下會(huì)了解該信息(如果發(fā)生的話))。
與通知相關(guān)聯(lián)的保真度權(quán)衡表示可以通過不同形式指定的且允許的例如切斷和/或概括所導(dǎo)致的在通知內(nèi)的信息的價(jià)值損失。要求對(duì)要傳送到某些類型的通知接收器2336-2338進(jìn)行這樣的切斷和/或概括,因?yàn)樗鼈兙哂袔捄?或其它限制,使它們不能接收原來產(chǎn)生的完整通知。保真度通常指與通知相關(guān)聯(lián)的原始內(nèi)容的完整性的性質(zhì)和/或等級(jí)。例如,可切斷一個(gè)長電子郵件,或者將它概括成蜂窩電話所允許的最多100個(gè)字符,招致保真度損失。同樣,在通過僅具有文本能力的設(shè)備傳輸時(shí),包含文本和圖形內(nèi)容的原始消息遭受保真度方面的損失。另外,設(shè)備可能只能夠描繪從源可得到完整分辨率的一部分。保真度權(quán)衡指按照順序(例如,按照?qǐng)D形在先,隨后聲音的順序呈現(xiàn)重要性)和/或表示通知的內(nèi)容的總價(jià)值如何隨著保真度方面的改變而消失的代價(jià)函數(shù)陳述的一個(gè)源的一組保真度首選項(xiàng)。例如,保真度權(quán)衡可以描述與一個(gè)完整的電子郵件消息的傳輸相關(guān)聯(lián)的全部價(jià)值如何隨著遞增加大的切斷量變化。內(nèi)容屬性,例如,可以包括內(nèi)容性質(zhì)的摘要,表示諸如核心消息是否包括文本、圖形和音頻組件之類的信息。內(nèi)容本身是構(gòu)成通知的消息內(nèi)容的實(shí)際圖形、文本和/或音頻。
通知的重要性指包含在通知的信息對(duì)于用戶的價(jià)值,假定信息與一個(gè)當(dāng)前上下文相關(guān)。例如,重要性可以表示為信息對(duì)于用戶的價(jià)值的美元值。時(shí)間臨界性表示在包含在通知中的價(jià)值時(shí)間相關(guān)地變化--即,信息的價(jià)值如何隨著時(shí)間過去而改變。在大多數(shù)但不是全部情況中,通知的信息價(jià)值隨時(shí)間衰減。這在圖24的圖中例示。圖2400描繪一個(gè)被映射的通知隨著時(shí)間過去的實(shí)用性。在圖內(nèi)的點(diǎn)2402處,代表開始時(shí)間,表示通知的重要性,而曲線2404表示實(shí)用性隨著時(shí)間過去而衰減。
回到圖23,使用于不同通知源的默認(rèn)屬性和模式模板可用于存儲(chǔ)在用戶通知首選項(xiàng)存儲(chǔ)器如圖22的存儲(chǔ)器2240中的通知源概況。這樣的默認(rèn)模板可以用于覆蓋由通知源提供的值或者用于在它們未得到由源提供的模式時(shí)提供屬性。源摘要信息使源能夠發(fā)送可從源得到的信息狀態(tài)和可能的通知的一般摘要。例如,來自一個(gè)消息源的源摘要信息可包括有關(guān)至少是某個(gè)優(yōu)先級(jí)的未讀消息總數(shù)、由人們?cè)噲D與用戶通信的狀態(tài)和/或其它摘要信息的信息。
通知接收器2336-2338實(shí)質(zhì)上可以是能向用戶或其它實(shí)體通知包含在通知中的信息的任何設(shè)備或應(yīng)用程序。關(guān)于哪個(gè)(些)接收器的選擇是要用于傳送一個(gè)由通知引擎2324確定的特定通知。
通知接收器2326-2338具有一個(gè)或多個(gè)在一個(gè)模式中提供的下列參數(shù)。例如,這些參數(shù)可包括一個(gè)設(shè)備類;信令(報(bào)警)的方式;以及,對(duì)于相關(guān)聯(lián)的方式,保真度/呈現(xiàn)能力,傳輸可靠性,通信的實(shí)際代價(jià),和/或中斷的注意力代價(jià)。對(duì)于適合于對(duì)報(bào)警屬性的參數(shù)化控制的設(shè)備,用于這些設(shè)備的模式可以另外包括用于控制屬性的報(bào)警屬性和參數(shù)的描述,以及其它屬性(例如,傳輸可靠性、分發(fā)代價(jià))在不同的報(bào)警屬性設(shè)置的情況下按其變化的函數(shù)。通知接收器的模式提供通知設(shè)備向通知執(zhí)行引擎2324和系統(tǒng)的其它組件傳送有關(guān)其性質(zhì)和能力的語義信息所用的方式??梢允褂糜诓煌O(shè)備類型的默認(rèn)屬性和模式模板可用于存儲(chǔ)在用戶通知首選項(xiàng)存儲(chǔ)器如圖22的存儲(chǔ)器2240中的設(shè)備概況,如在前面的章節(jié)中描述的。這類默認(rèn)模板可以用于覆蓋由設(shè)備提供的值或者用于在它們未得到由這類設(shè)備提供的模式時(shí)提供屬性。
現(xiàn)在依次描述每個(gè)模式參數(shù)。設(shè)備的類指設(shè)備的類型,例如,諸如蜂窩電話、臺(tái)式計(jì)算機(jī)和膝上型計(jì)算機(jī)。類也可以是更一般的,諸如移動(dòng)或文具設(shè)備。信令的方式指一個(gè)給定的設(shè)備可以向用戶報(bào)警一個(gè)通知的方式。設(shè)備可具有一個(gè)或多個(gè)通知方式。例如,蜂窩電話可只振動(dòng),可只以某個(gè)音量響鈴,和/或可以既振動(dòng)又響鈴。而且,用于一個(gè)報(bào)警系統(tǒng)的桌面顯示可以分解成若干離散方式(例如,在顯示的右上側(cè)的小通知窗口對(duì)在屏幕上面的小縮略圖--伴有或不伴有音頻通報(bào))。除不限于一組預(yù)定義的行為之外,設(shè)備可以支持帶有報(bào)警屬性的方式,它們是作為設(shè)備定義的一部分的參數(shù)。用于一種方式的這類連續(xù)的報(bào)警參數(shù)代表這樣的控制,例如,諸如在桌面播放警報(bào)的音量,在蜂窩電話上的響鈴,以及報(bào)警窗口的尺寸。
通知接收器2336-2338的一種方式的傳輸可靠性表示用戶將接收到所傳送的關(guān)于通知的警報(bào)的可能性,它是通過接收器以該方式傳送到用戶的。如傳輸可靠性取決于設(shè)備可用性和用戶的上下文,設(shè)備的不同方式的傳輸可靠性可以以諸如用戶的位置和注意力之類的上下文屬性為條件。一個(gè)或多個(gè)唯一上下文狀態(tài)的傳輸可靠性,由諸如唯一位置和唯一注意力狀態(tài)之類的屬性的叉積定義的,按這類屬性的抽象創(chuàng)建的邏輯和來定義的(例如,對(duì)于離開家里的任何位置,以及在8am之后中午之前的任何時(shí)段),也可以指定。例如,取決于用戶當(dāng)前所在位置,傳輸?shù)椒涓C電話的信息不是總能到達(dá)用戶,尤其是如果用戶在具有間隙覆蓋的區(qū)域中,或者用戶在這個(gè)位置(例如家庭假日)中不想有蜂窩電話。上下文也可以影響傳輸可靠性,因?yàn)榄h(huán)境噪聲和/或上下文的其它屏蔽或轉(zhuǎn)移注意力屬性。
通信的實(shí)際代價(jià)表示將信息傳送到用戶的實(shí)際代價(jià),當(dāng)被包含在被傳送到接收器的通知中的時(shí)候。例如,這個(gè)代價(jià)可以包括與蜂窩電話傳輸相關(guān)聯(lián)的費(fèi)用。中斷的代價(jià)包括關(guān)聯(lián)于與由一個(gè)設(shè)備的特定方式在一個(gè)特定的上下文中使用的警報(bào)相關(guān)的中斷的注意力代價(jià)。注意力代價(jià)一般對(duì)于用戶的注意力的特定焦點(diǎn)是敏感的。保真度/呈現(xiàn)能力是一個(gè)設(shè)備的文本、圖形描述和/或音頻/觸覺的能力,也是在給定的方式下。例如,蜂窩電話的文本限制可以是任何單個(gè)消息100個(gè)字符,以及電話可能沒有圖形能力。
現(xiàn)有轉(zhuǎn)到圖25,一個(gè)示例性界面2500例示可由用戶選擇的上下文描述,可以由上下文分析程序用于確定用戶的當(dāng)前上下文。描述按照用戶的直接描述的用戶上下文確定,和/或用戶可修改的概況。用戶的上下文可以包括用戶的注意力焦點(diǎn)--即,用戶當(dāng)前是否有責(zé)任接收通知警報(bào)--以及用戶的當(dāng)前位置。然而本發(fā)明不受此限制。
用戶對(duì)上下文的直接描述使用戶能夠表示他或她是否能接收警報(bào),并且用戶希望在何處接收它們。默認(rèn)的概況(未示出)可以用于表示默認(rèn)的注意力狀態(tài),并且用戶可以接收警報(bào)的默認(rèn)位置。默認(rèn)概況可以由用戶按所希望的修改。
參考圖25,按照本發(fā)明的一個(gè)方面,接口2500例示可以如何實(shí)現(xiàn)上下文的直接描述。窗口2502,例如,具有一個(gè)注意力焦點(diǎn)部分2520和一個(gè)位置部分2540。在焦點(diǎn)部分2520中,用戶可以選取一個(gè)或多個(gè)復(fù)選框2522,例如,表示用戶是否始終能接收警報(bào);用戶是否從不接收警報(bào);以及,用戶只能接收具有比一個(gè)預(yù)定閾限更高的重要性級(jí)別的警報(bào)。要意識(shí)到,可以提供其它可用性選擇。如圖25所示,閾限可以用美元測量,但這只是為了示例性目的,并且本發(fā)明不受此限制。用戶可以增加方框2524中的閾限,通過直接輸入新的值,或者通過用箭頭2526增加或減少閾限。
在位置部分2540中,用戶可以復(fù)選一個(gè)或多個(gè)復(fù)選框2542,以表示用戶希望讓警報(bào)在何處傳送。例如,用戶可以讓警報(bào)在桌面、通過電子郵件、在膝上型計(jì)算機(jī)、在蜂窩電話上、在他或她的汽車中、在尋呼機(jī)上或者在個(gè)人數(shù)字助理(PDA)設(shè)備上等等傳送。然而要意識(shí)到,這些只是例子,并且本發(fā)明本身不受此限制。
窗口2502,其中可以有部分2520的復(fù)選框2522和方框2524以及部分2540的復(fù)選框2542的預(yù)置默認(rèn)值,可以看作一個(gè)默認(rèn)用戶概況。概況是用戶可修改的,因?yàn)橛脩艨梢杂盟蛩约合M倪x擇覆蓋默認(rèn)的選擇。按照本發(fā)明也可以使用其它類型的概況。
現(xiàn)在參考圖26,按照本發(fā)明例示按照直接測量的用戶上下文確定,例如,使用一個(gè)或多個(gè)傳感器。用戶的上下文可以包括用戶的注意力焦點(diǎn),以及他或她的當(dāng)前位置。然而,本發(fā)明不受此限制。上下文的直接測量表示傳感器可以用于檢測用戶當(dāng)前是有責(zé)任接收警報(bào),以及檢測用戶當(dāng)前在何處。按照本發(fā)明的一個(gè)方面,結(jié)合直接測量的推理分析可以用于確定用戶上下文,如在稍后的描述章節(jié)中描述的。
參考圖26,例示系統(tǒng)2600,其中可以實(shí)現(xiàn)用戶上下文的直接測量。系統(tǒng)2600包括一個(gè)上下文分析程序2602,和以通信方式耦合到它的許多傳感器2604-2616,即,例如蜂窩電話2604、視頻攝像機(jī)2606、話筒2608、鍵盤2610、PDA 2612、汽車2614和GPS 2616。圖26所示的傳感器2604-2616只是為了示例性目的,并且不表示對(duì)本發(fā)明本身的限制。在此使用的術(shù)語傳感器是一個(gè)概括的和極大范圍的術(shù)語,指上下文分析程序2602可以用于確定用戶的當(dāng)前注意力焦點(diǎn)是什么和/或用戶的當(dāng)前位置是什么的任何設(shè)備或方式。
例如,如果用戶的蜂窩電話2604開著,這可以表示用戶可以在蜂窩電話2604上接收警報(bào)。然而,如果用戶當(dāng)前正在蜂窩電話2604通話,這可以表示用戶的注意力焦點(diǎn)在其它事物上(即,當(dāng)前的蜂窩電話),使得用戶目前不應(yīng)當(dāng)被通知警報(bào)打擾。視頻攝像機(jī)2606,例如,可以在用戶的辦公室,檢測用戶是否在他或她的辦公室中(即用戶的位置),以及其他人是否在他或她的辦公室中,暗示與他們的會(huì)見,使得用戶不應(yīng)當(dāng)被打擾(即用戶的焦點(diǎn))。同樣,話筒2608也可以在用戶的辦公室中,以檢測用戶是否正在與其他人談話,使得用戶不應(yīng)當(dāng)被打擾,檢測用戶是否正在打鍵盤(例如,通過從鍵盤發(fā)出的聲音),使得用戶目前也不應(yīng)當(dāng)被打擾。鍵盤2610也可以用于確定用戶當(dāng)前是否正在打字,使得,例如,如果用戶正在非??斓卮蜃郑瑒t這可表示用戶集中于計(jì)算機(jī)相關(guān)的活動(dòng),并且不應(yīng)當(dāng)被不適當(dāng)?shù)卮驍_(并且,也可以表示用戶實(shí)際上在他或她的辦公室里)。
如果PDA設(shè)備2612正由用戶訪問,則這可以表示用戶能夠在設(shè)備2612接收警報(bào)--即,應(yīng)當(dāng)傳送通知的位置是設(shè)備2612被定位的地方。設(shè)備2612也可以用于確定用戶的當(dāng)前注意力焦點(diǎn)。汽車2612也可以用于確定用戶當(dāng)前是否在汽車中--即,如果汽車當(dāng)前是由用戶操作的。而且,可以考慮汽車的速度,例如,以確定用戶的焦點(diǎn)是什么。如果速度大于一個(gè)預(yù)定的速度,例如,則可以確定用戶集中于駕駛,并且不應(yīng)當(dāng)被通知警報(bào)煩擾。GPS設(shè)備2616也可以用于確定用戶的當(dāng)前位置,如在本領(lǐng)域內(nèi)已知的。
在下面詳細(xì)描述的章節(jié)中,描述按照用戶可修改規(guī)則的用戶上下文確定。用戶的上下文可以包括用戶的注意力焦點(diǎn),以及他或她的當(dāng)前位置。然而本發(fā)明不受此限制。通過規(guī)則確定上下文表示可以按照一個(gè)分層的如果-那么規(guī)則集合來確定用戶的位置和/或注意力焦點(diǎn)。
參考圖27,這個(gè)圖例示一個(gè)示例性分排序的規(guī)則集2700。例如,規(guī)則集2700描繪了規(guī)則2702,2704,2706,2708,2710,2712和2714。注意,可相似地配置其它規(guī)則。如圖27所示,規(guī)則2704和2706是2702的子例程,而規(guī)則2706是規(guī)則2704的子例程,并且規(guī)則2714是規(guī)則2712的子例程。規(guī)則是排序的,因?yàn)橐?guī)則2702被第一個(gè)測試;如果為真,則測試規(guī)則2704,并且如果發(fā)現(xiàn)規(guī)則2704為真,則測試規(guī)則2706,等等。如果發(fā)現(xiàn)規(guī)則2704為假,則測試規(guī)則2708。如果發(fā)現(xiàn)規(guī)則2702為假,則測試規(guī)則2710,如果發(fā)現(xiàn)為真,引起規(guī)則2712的測試,如果發(fā)現(xiàn)為真則引起規(guī)則2714的測試。規(guī)則希望是用戶可創(chuàng)建和可修改的。否則-類型的規(guī)則也可以包括在規(guī)則集2700中(例如,如果發(fā)現(xiàn)如果-那么規(guī)則為假,則由否則規(guī)則控制)。
因而,規(guī)則集可以由用戶構(gòu)造,使得用戶的上下文被確定。例如,關(guān)于位置,規(guī)則集可以是這樣的,即第一個(gè)規(guī)則測試當(dāng)前日子是工作日。如果是,則作為第一個(gè)規(guī)則子例程的第二個(gè)規(guī)則是測試當(dāng)前時(shí)間是在9a.m與5p.m.之間。如果是,則第二個(gè)規(guī)則表示用戶在他或她的辦公室里,否則用戶在家里。如果發(fā)現(xiàn)第一個(gè)規(guī)則為假--當(dāng)前日子是周末并且不是工作日--則一個(gè)否則規(guī)則可陳述用戶在家里。注意,這個(gè)例子不是要關(guān)于本發(fā)明本身的限制性例子,其中可相似地配置一個(gè)或多個(gè)其它規(guī)則。
在下面的描述章節(jié)中,描述按照推理分析的用戶上下文確定,諸如通過使用統(tǒng)計(jì)和/或貝葉斯定理模型。注意通過推理分析的上下文確定可以依賴其它決定的某些方面,諸如通過傳感器的直接測量,如已經(jīng)描述的。在此使用的推理分析指使用在多個(gè)輸入變量上的推理處理過程,來輸出一個(gè)輸入變量,即,用戶的當(dāng)前上下文。在一個(gè)方面,分析可以包括統(tǒng)計(jì)模型和/或貝葉斯定理模型的使用。
參考圖28,按照本發(fā)明的一個(gè)方面,例示系統(tǒng)2800的圖,其中推理分析是由推理引擎2802執(zhí)行以確定用戶的上下文2804。在一個(gè)方面,引擎2802是由計(jì)算機(jī)的處理器從其計(jì)算機(jī)可讀介質(zhì)如存儲(chǔ)器執(zhí)行的計(jì)算機(jī)程序。用戶上下文3804可以看作是引擎2802的輸出變量。
引擎2802可以處理一個(gè)或多個(gè)輸入變量以作出上下文決策。這類輸入變量可以包括一個(gè)或多個(gè)傳感器2808,如已經(jīng)在前面的描述章節(jié)中結(jié)合上下文確定的的直接測量方法描述的傳感器,以及當(dāng)前時(shí)間和日子,例如,如由時(shí)鐘2810表示和日程表2812表示的,如可在用戶的調(diào)度或個(gè)人信息管理器(PIM)計(jì)算機(jī)程序中訪問的,和/或在用戶的PDA設(shè)備上。其它輸入變量也可以看作是除圖28所示之外的變量。圖28的變量不是要對(duì)本發(fā)明本身進(jìn)行限制。
現(xiàn)在參考圖29和30,按照本發(fā)明一個(gè)方面,描述一個(gè)示例性推理模型,諸如通過能由上述推理模型執(zhí)行的統(tǒng)計(jì)和/或貝葉斯模型提供的。通常,計(jì)算機(jī)系統(tǒng)可以是用戶狀態(tài)細(xì)節(jié)的某種程度的不確定。因而,可以構(gòu)造概率模型,它可以在不確定性之下進(jìn)行關(guān)于用戶的注意力或其它狀態(tài)的推理。貝葉斯定理模型可以推理在用戶的注意力焦點(diǎn)上概率分布。這類注意力狀態(tài)可以明確表示為一組原型情況或者一組由用戶解決的不同類的認(rèn)知問題的更抽象表示??晒┨鎿Q地,模型可以明確表示為進(jìn)行關(guān)于注意力焦點(diǎn)的連續(xù)測量的推理,和/或直接推理在不同類型通知的中斷代價(jià)上的概率分布的模型。
可使用貝葉斯定理網(wǎng)絡(luò),它可以推理替換活動(dòng)上下文或狀態(tài)的概率,基于一組有關(guān)用戶的活動(dòng)和位置的觀察資料。作為一個(gè)例子,圖29顯示一個(gè)貝葉斯定理網(wǎng)絡(luò)2900,用于推理用戶在一個(gè)單個(gè)時(shí)段的注意力焦點(diǎn)。變量的狀態(tài),注意力的焦點(diǎn)2920,指桌面和非桌面上下文。在模型中考慮的示例性注意力上下文包括例如情況意識(shí)、追趕、非特定的后臺(tái)任務(wù)、聚焦的內(nèi)容產(chǎn)生或檢閱、輕內(nèi)容產(chǎn)生或檢閱、瀏覽文檔、辦公室里的會(huì)議、辦公室外的會(huì)議、聽取介紹、私人時(shí)間、家庭時(shí)間、個(gè)人焦點(diǎn)、偶然交談和旅行。貝葉斯定理網(wǎng)絡(luò)2900表示用戶的當(dāng)前注意力和位置受用戶的預(yù)定約會(huì)2930、時(shí)刻2940和最終期限的臨近2950的影響。例如,在用戶注意力上的概率分布也受在用戶辦公室里監(jiān)控的環(huán)境聲音信號(hào)2960的狀態(tài)總和的影響。環(huán)境聲音信號(hào)2960的分段隨著時(shí)間過去提供有關(guān)活動(dòng)和交談存在的線索/輸入。軟件應(yīng)用程序的狀態(tài)和配置和由用戶與計(jì)算機(jī)交互產(chǎn)生的用戶活動(dòng)的輸出流也是有關(guān)用戶注意力證據(jù)的源。
如在網(wǎng)絡(luò)2900中描繪的,軟件應(yīng)用程序當(dāng)前在操作系統(tǒng)或其它環(huán)境中的頂級(jí)焦點(diǎn)2970影響用戶的焦點(diǎn)和任務(wù)的性質(zhì),并且用戶的注意力的狀態(tài)和在焦點(diǎn)處的應(yīng)用程序一起影響計(jì)算機(jī)為中心的活動(dòng)。這樣的活動(dòng)包括在較寬的時(shí)間范圍內(nèi)從鼠標(biāo)和鍵盤動(dòng)作和應(yīng)用程序使用的高級(jí)模式建立的用戶活動(dòng)的流。這類模式包括以電子郵件為中心和以詞語-處理器為中心,并且指涉及交織多個(gè)應(yīng)用程序的方法的活動(dòng)的原型類。
圖30例示在不同的時(shí)間段用戶在上下文變量之中的注意力焦點(diǎn)的貝葉斯定理模型3000。一組馬爾可夫(Markov)時(shí)間依賴性由模型3000例示,其中上下文變量的過去狀態(tài)在用戶當(dāng)前狀態(tài)的判定中考慮。實(shí)時(shí)地,例如,這樣的貝葉斯定理模型3000考慮由在線日程表提供的信息,以及有關(guān)如由事件檢測系統(tǒng)(未示出)報(bào)告的房間聲音和用戶活動(dòng)的觀察資料的流,并且繼續(xù)提供有關(guān)用戶注意力的概率分布的推理結(jié)果。
圖31和32例示按照本發(fā)明用于提供通知體系結(jié)構(gòu)的部分如上下文分析程序和通知引擎的方法。盡管,為了說明簡單的目的,按照一系列行為顯示和描述的這些方法,但要理解和意識(shí)到,本發(fā)明不受行為順序的限制,因?yàn)榘凑毡景l(fā)明,有些行為可按不同的順序和/或與在此所示和描述的其它行為同時(shí)發(fā)生。例如,本領(lǐng)域熟練技術(shù)人員將理解和意識(shí)到,一個(gè)方法能可供替換地表示為一系列相關(guān)的狀態(tài)或事件,諸如在狀態(tài)圖中。而且,按照本發(fā)明,不是所有例示的行為被要求用于實(shí)現(xiàn)一個(gè)方法。
參考圖31,流程圖3100例示按照本發(fā)明確定用戶的上下文。該過程包括在3102中確定用戶的位置,并在3104中確定用戶的焦點(diǎn)。這些行為可以由先前所述一個(gè)或多個(gè)方法完成。例如,可以使用一個(gè)概況;用戶可以指定他或她的上下文;可以使用上下文的直接測量;可以遵循規(guī)則集;也可以進(jìn)行推理分析,諸如通過貝葉斯定理或統(tǒng)計(jì)模型。要意識(shí)到,可以使用其它分析來確定用戶的上下文。例如,可以有集成的視頻攝像機(jī)源,它注意是否有人在計(jì)算機(jī)前或者他或她是否在看計(jì)算機(jī)。然而,注意,系統(tǒng)可以在有攝像機(jī)和沒有攝像機(jī)的情況下運(yùn)行。對(duì)于所有的源,系統(tǒng)實(shí)質(zhì)上可以以任何可用的輸入源運(yùn)行,不要求任何特定的源來推理上下文。而且,在其它方面,可以在小的PDA上有集成的加速度計(jì)、話筒和接近檢測器,它們給出用戶的位置和注意力的檢測值。
現(xiàn)在參考圖32,按照本發(fā)明一個(gè)方面,流程圖3200例示通知引擎的決策過程。在3202,一個(gè)或多個(gè)通知源產(chǎn)生通知,它由通知引擎接收。在3204,上下文分析程序產(chǎn)生/確定有關(guān)用戶的上下文信息,在3206中由通知引擎接收。即,按照本發(fā)明的一個(gè)方面,在3204,上下文分析程序訪問用戶上下文相關(guān)信息概況,它表示用戶的當(dāng)前注意力狀態(tài)和位置,和/或從一個(gè)或多個(gè)上下文相關(guān)信息源訪問有關(guān)用戶的當(dāng)前注意力狀態(tài)和位置實(shí)時(shí)信息,如已經(jīng)在前面的描述章節(jié)中描述的。在3208,通知引擎確定哪些通知要傳送到哪些通知接收器,部分基于從上下文分析程序接收的上下文相關(guān)信息。通知引擎也基于有關(guān)存儲(chǔ)在上下文分析程序中的用戶的通知參數(shù)的信息作出決定。即,按照一個(gè)方面,在3208,引擎執(zhí)行有關(guān)對(duì)于一個(gè)給定的通知用戶是否應(yīng)當(dāng)被報(bào)警和應(yīng)當(dāng)如何向用戶報(bào)警的決策理論分析。如將在下面更詳細(xì)地描述的,決策理論和/或啟發(fā)式分析、判定和策略可在3208使用。有關(guān)用戶的通知參數(shù)可以用于個(gè)性化分析,通過填充未得到的值或通過覆寫在源或接收器的模式中提供的參數(shù)。通知首選項(xiàng)也可以提供代替決策理論分析使用的策略(例如,啟發(fā)式)?;谶@個(gè)判定,通知引擎在3210傳送通知到分發(fā)程序。
數(shù)據(jù)驅(qū)動(dòng)的應(yīng)用程序安裝按照本發(fā)明另一個(gè)方面,信息代理應(yīng)用程序的安裝可以通過更新預(yù)定義表來完成。常規(guī)的通知系統(tǒng)以及其它應(yīng)用程序一般涉及在安裝它們時(shí)的數(shù)據(jù)庫對(duì)象激增。每個(gè)應(yīng)用程序按照慣例已經(jīng)不得不在安裝過程中存儲(chǔ)過程以及大量表和數(shù)據(jù)。然而本發(fā)明采取不同的方法。首先,當(dāng)系統(tǒng)或平臺(tái)諸如信息代理系統(tǒng)100在安裝時(shí),可以產(chǎn)生一個(gè)基本表集合。因此,應(yīng)用程序安裝只涉及將數(shù)據(jù)插入預(yù)先存在的表中。這個(gè)方法消除了數(shù)據(jù)庫對(duì)象隨著已安裝應(yīng)用程序的增加而激增并且支持可擴(kuò)展性(下面討論)。
為完成上述內(nèi)容,事件、首選項(xiàng)和過程,全部可以存儲(chǔ)數(shù)據(jù)。這使系統(tǒng)能夠利用不斷增加的數(shù)據(jù)庫引擎的處理能力和執(zhí)行大量應(yīng)用程序諸如信息代理應(yīng)用程序300(圖3)的查詢。如上所述,首選項(xiàng)可以由最終用戶定義并且隨后提取到表和數(shù)據(jù)庫的高級(jí)數(shù)據(jù)字段。事件可以捕捉或檢索并且隨后被存儲(chǔ)在數(shù)據(jù)庫中。常規(guī)存儲(chǔ)過程諸如查詢?cè)u(píng)估過程也可以表示為數(shù)據(jù),通過創(chuàng)建過程和滾動(dòng)數(shù)據(jù)到一個(gè)或多個(gè)數(shù)據(jù)庫表中。之后,當(dāng)過程被執(zhí)行時(shí),表示過程的文本串可以從數(shù)據(jù)庫表中拉出并且在數(shù)據(jù)庫表中動(dòng)態(tài)地評(píng)估。這個(gè)方法顯著地減少應(yīng)用程序需要?jiǎng)?chuàng)建的存儲(chǔ)過程的數(shù)量,并且使應(yīng)用程序安裝僅僅成為一個(gè)DML(數(shù)據(jù)操縱語言)數(shù)據(jù)驅(qū)動(dòng)操作。
可組成性和可擴(kuò)展性本章節(jié)描述信息代理應(yīng)用程序在初始創(chuàng)建時(shí)如何組成以及它們以后可以如何擴(kuò)展。信息代理應(yīng)用程序(IA應(yīng)用程序)設(shè)計(jì)為使最終用戶能夠通過事件-條件-動(dòng)作(ECA)模型與某個(gè)底下的系統(tǒng)或應(yīng)用程序域交互。更具體地,信息代理應(yīng)用程序設(shè)計(jì)為使用戶能夠指定控制如何應(yīng)用程序其它應(yīng)用程序能力尤其是用于處理信息路由、過濾和處理的問題域(其中對(duì)用戶上下文的敏感性是重要的)的首選項(xiàng)。在此基礎(chǔ)上,信息代理應(yīng)用程序的可組成性和可擴(kuò)展性應(yīng)當(dāng)理解為目標(biāo)在于用戶有效地創(chuàng)建首選項(xiàng)(新的ECA實(shí)例)而不是用于組成或擴(kuò)展底下的系統(tǒng)或應(yīng)用程序域。
信息代理應(yīng)用程序可組成性和可擴(kuò)展性的目標(biāo)不是創(chuàng)建一個(gè)新的應(yīng)用程序、組件或系統(tǒng)模型(盡管這是有可能的并且應(yīng)當(dāng)認(rèn)為是在本發(fā)明的范圍之內(nèi))。相反,目標(biāo)是支持對(duì)系統(tǒng)的層或組件的動(dòng)態(tài)擴(kuò)展,它允許用戶通過ECA模型指定首選項(xiàng)邏輯(例如,決策邏輯組件330)。明確地說,目標(biāo)是允許在一個(gè)給定的應(yīng)用程序被安裝之后使新的條件和動(dòng)作(ECA的CA(條件-動(dòng)作)部分)可用于最終用戶。而且,也應(yīng)當(dāng)意識(shí)到,事件(ECA的E(事件)部分)也可以動(dòng)態(tài)地以相似的方式擴(kuò)展。
按照本發(fā)明的一個(gè)方面,信息代理應(yīng)用程序沒有它們自己的用戶界面來定義首選項(xiàng),但代之以使用操作系統(tǒng)界面或者用于創(chuàng)建首選項(xiàng)的應(yīng)用程序?qū)S糜脩艚缑?。在這個(gè)上下文中,信息代理應(yīng)用程序可組成性和可擴(kuò)展性設(shè)計(jì)為添加條件和動(dòng)作,以這樣一種方式即現(xiàn)有用戶界面之后可以允許用戶用新條件和動(dòng)作創(chuàng)建新的首選項(xiàng)。在這點(diǎn)上,IA應(yīng)用程序可以支持在這類新條件和新動(dòng)作上的反射,使得這樣的新功能的特征可以適當(dāng)?shù)嘏c提供擴(kuò)展的描述一起顯示,以提供有關(guān)如何與何時(shí)適當(dāng)?shù)厥褂眯聴l件和動(dòng)作的最終用戶上下文。
在各種上下文內(nèi)且在各種信息代理應(yīng)用程序的不同時(shí)間存在相重性。具體地,盡管IA應(yīng)用程序能自足和獨(dú)立,但許多IA應(yīng)用程序?qū)嶋H上將與由其它IA應(yīng)用程序提供的能力交互并對(duì)此進(jìn)行杠桿調(diào)節(jié)。明確地說,由一個(gè)應(yīng)用程序提供的條件和動(dòng)作功能也可以由另一個(gè)應(yīng)用程序使用。IA代理也可以用若干其它方法與其它的交互。例如,在一個(gè)IA應(yīng)用程序中的首選項(xiàng)評(píng)估可以觸發(fā)一個(gè)動(dòng)作它創(chuàng)建一個(gè)要提交給另一個(gè)IA應(yīng)用程序的事件。
在可組成性與可擴(kuò)展性之間的不同對(duì)于理解信息代理應(yīng)用程序的集合如何交互和發(fā)展是重要的??山M成性是在創(chuàng)建一個(gè)新的信息代理應(yīng)用程序時(shí)使用的概念,它建立現(xiàn)有的和由其它信息代理應(yīng)用程序在最初創(chuàng)建該應(yīng)用程序時(shí)提供的能力??蓴U(kuò)展性指一個(gè)現(xiàn)有的信息代理應(yīng)用程序用在應(yīng)用程序被創(chuàng)建或安裝之后產(chǎn)生的新能力擴(kuò)展時(shí)所使用的概念和過程。而且,由于一組共同的機(jī)制用于支持可組成性和可擴(kuò)展性兩者,因此理解在這類共同機(jī)制被用于完成可組成性和可擴(kuò)展性的某種程度不同目的的之間的細(xì)微區(qū)別是重要的。IA應(yīng)用程序可組成性的概念可也應(yīng)用程序于一個(gè)單個(gè)IA應(yīng)用程序在從一組個(gè)別的片斷構(gòu)造時(shí)所使用的過程。可組成性的這個(gè)方面解決以模塊化方式開發(fā)IA應(yīng)用程序的軟件工程目標(biāo)。被引入到IA應(yīng)用程序系統(tǒng)中的可擴(kuò)展性概念與可擴(kuò)展性的傳統(tǒng)概念一致。也就是說,在IA應(yīng)用程序的原始定義之后添加新能力,這增強(qiáng)了應(yīng)用程序的能力。
在很大程度上,IA應(yīng)用程序的量度是由向用戶提供的能力確定的。因此,一個(gè)IA應(yīng)用程序可擴(kuò)展的程度可以由使新的條件和動(dòng)作(它們?cè)诂F(xiàn)有應(yīng)用程序內(nèi)定義新首選項(xiàng))可用于用戶的程度來確定。IA應(yīng)用程序可擴(kuò)展性主要瞄準(zhǔn)使新的條件和活動(dòng)能夠被添加到一個(gè)應(yīng)用程序,在該應(yīng)用程序被安裝之后,不需要原始應(yīng)用程序的作者的干預(yù)。為理解這是如何完成的,強(qiáng)調(diào)進(jìn)化鏈?zhǔn)侵匾模ㄟ^它一個(gè)動(dòng)作或條件函數(shù)的定義最終對(duì)于信息代理應(yīng)用程序的最終用戶變成可訪問的。
轉(zhuǎn)到圖33,按照本發(fā)明一個(gè)方面描繪了一個(gè)條件/動(dòng)作進(jìn)化鏈3300。條件和動(dòng)作作為條件或動(dòng)作函數(shù)在3310開始。例如,這個(gè)函數(shù)指定可以在參考一個(gè)SQL可調(diào)用函數(shù)/存儲(chǔ)過程的定義的形式特征來使用。在一個(gè)新的條件或動(dòng)作函數(shù)被定義時(shí)與該函數(shù)通過一個(gè)相應(yīng)條件或動(dòng)作的聲明被綁定到一個(gè)現(xiàn)有的應(yīng)用程序中時(shí)之間,該函數(shù)被認(rèn)為是一個(gè)候選函數(shù)。在3320,候選函數(shù)的開發(fā)者指定綁定,它們將允許一個(gè)作為目標(biāo)的要被擴(kuò)展的應(yīng)用程序從稱為候選條件或動(dòng)作的函數(shù)創(chuàng)建一個(gè)條件或一個(gè)動(dòng)作。在這個(gè)階段,條件或動(dòng)作是供現(xiàn)有的要擴(kuò)展的應(yīng)用程序使用,使得應(yīng)用程序可以使用條件或動(dòng)作但不要求接受它們。在要擴(kuò)展的應(yīng)用程序中的接受邏輯確定這樣的綁定是否被接受,例如基于誰監(jiān)署了所提議的擴(kuò)展/綁定的人。一旦一個(gè)應(yīng)用程序綁定它的首選項(xiàng)類到一個(gè)條件或邏輯函數(shù),在3330,候選條件或動(dòng)作就簡單地變成條件或動(dòng)作。最后,當(dāng)最終用戶使用在新定義的首選項(xiàng)內(nèi)的條件或動(dòng)作,該動(dòng)作或條件被稱為實(shí)例化,如在3340的鏈中所示。
圖34例示按照本發(fā)明一個(gè)方面的用于應(yīng)用程序交互的系統(tǒng)3400。系統(tǒng)3400包括一個(gè)實(shí)例注冊(cè)表組件3410,定義注冊(cè)表3412,綁定注冊(cè)表3414,應(yīng)用程序A 3420,應(yīng)用程序B 3430,和擴(kuò)展組件3440。在可擴(kuò)展性的一個(gè)實(shí)現(xiàn)中,部分的單位是應(yīng)用程序或擴(kuò)展。實(shí)例是通過添加應(yīng)用程序或應(yīng)用程序數(shù)據(jù)文件(ADF)擴(kuò)展的。ADF可以由開發(fā)者為用戶在部署單個(gè)應(yīng)用程序時(shí)創(chuàng)建。ADF通常定義應(yīng)用程序的核心邏輯并且可以包括用于,尤其是,事件、條件和動(dòng)作如通知的模式。應(yīng)用程序可以通過添加擴(kuò)展或擴(kuò)展數(shù)據(jù)文件(EDF)來擴(kuò)展。EDF可以由任何人創(chuàng)建并且在一個(gè)實(shí)例和應(yīng)用程序已經(jīng)創(chuàng)建(包括應(yīng)用程序的初始安裝)之后的任何時(shí)間使用。
對(duì)于共享功能的應(yīng)用程序,它們需要彼此知道。按照本發(fā)明的一個(gè)方面,這可以通過使用定義注冊(cè)表314和綁定注冊(cè)表3414組成的實(shí)例注冊(cè)表3410來存儲(chǔ)有關(guān)函數(shù)和函數(shù)如何與應(yīng)用程序綁定的信息。實(shí)例注冊(cè)表3410為應(yīng)用程序提供一個(gè)用于存儲(chǔ)數(shù)據(jù)的共享位置。實(shí)例注冊(cè)表3410包括定義注冊(cè)表3412和綁定注冊(cè)表3414。
定義注冊(cè)表3412存儲(chǔ)有關(guān)應(yīng)用程序函數(shù)的信息。按照本發(fā)明的一個(gè)方面,由應(yīng)用程序(例如,IA應(yīng)用程序)使用的應(yīng)用程序函數(shù)可以注冊(cè)或存儲(chǔ)在定義注冊(cè)表3412中。在定義注冊(cè)表3412中注冊(cè)的函數(shù)使這些函數(shù)對(duì)于運(yùn)行在系統(tǒng)上的所有應(yīng)用程序公開。因此,由應(yīng)用程序使用的函數(shù)或者完全是私有意義的,在定義注冊(cè)表中不注冊(cè),或者是公開意義的,在定義注冊(cè)表中注冊(cè)它們并且對(duì)于所有其它應(yīng)用程序是可訪問的。應(yīng)當(dāng)注意,這只是一種實(shí)現(xiàn)定義注冊(cè)表的方式。另一種實(shí)現(xiàn)機(jī)制可以是存儲(chǔ)一個(gè)指示器,表示一個(gè)函數(shù)是公開的還是私有的。一些可以包含在定義注冊(cè)表中的示例性信息包括下列

綁定注冊(cè)表3414可以存儲(chǔ)來自多個(gè)應(yīng)用程序的函數(shù)的所有綁定、條件、動(dòng)作和存取器。這都可以是真的,無論那些函數(shù)是從一個(gè)初始定義導(dǎo)出還是對(duì)應(yīng)用程序的以后擴(kuò)展。而且,應(yīng)當(dāng)注意,按照本發(fā)明的一個(gè)方面,公開函數(shù)在沒有綁定元數(shù)據(jù)的情況下不能使用。綁定元數(shù)據(jù)是指定一個(gè)公開函數(shù)如何綁定到一個(gè)應(yīng)用程序數(shù)據(jù)事件數(shù)據(jù)的信息。在綁定注冊(cè)表3414中注冊(cè)一個(gè)公開函數(shù)將一個(gè)函數(shù)綁定到一個(gè)應(yīng)用程序。這是一個(gè)一對(duì)多關(guān)系,其中一個(gè)函數(shù)可以綁定到許多不同應(yīng)用程序。
注冊(cè)在綁定注冊(cè)表3414中的綁定可以具有若干狀態(tài)。例如,一個(gè)綁定可以是候選綁定。候選綁定是由函數(shù)的定義者創(chuàng)建的并且使之可用于其它應(yīng)用程序。綁定還可以具有一個(gè)綁定功能的狀態(tài),表示綁定專用于一個(gè)給定的應(yīng)用程序,它表示該特定應(yīng)用程序如何綁定到一個(gè)給定的條件或動(dòng)作函數(shù)。而且,綁定可具有“不被接受”的狀態(tài)。這些是目標(biāo)在于一個(gè)特定應(yīng)用程序但不被作為目標(biāo)的應(yīng)用程序的接受邏輯接受的候選功能。接受邏輯可以在ADF中聲明,并且可以包括組件用于,尤其是,確保EDF源是可信的(例如,使用數(shù)字簽名),經(jīng)過授權(quán)的(例如,來自可信源的列表),和有書面證明的(已由一個(gè)可信源簽署的EDF)。在綁定注冊(cè)表3414中可容納的更多的信息包括但不限于


擴(kuò)展組件3420基于候選函數(shù)創(chuàng)建條件和動(dòng)作。擴(kuò)展組件3420是可以在安裝時(shí)由安裝腳本調(diào)用以將候選函數(shù)綁定到應(yīng)用程序的組件。如果在綁定注冊(cè)表3414中產(chǎn)生新的候選函數(shù)條目,則取決于在目標(biāo)應(yīng)用程序的部件上采取的動(dòng)作或不采取動(dòng)作,若干事情會(huì)發(fā)生。例如,如果目標(biāo)應(yīng)用程序沒有被安裝,則該條目可以被忽略。如果安裝目標(biāo)應(yīng)用程序但配置為不接受擴(kuò)展,則該條目被再次忽略。然而如果目標(biāo)應(yīng)用程序被安裝并且接受候選函數(shù),則使用擴(kuò)展組件3420為該應(yīng)用程序創(chuàng)建新條件、動(dòng)作或存取器綁定并且被綁定到應(yīng)用程序A3410。因此,在系統(tǒng)3400中,應(yīng)用程序A 3430包含一個(gè)本地函數(shù)“CondtionFuncx(條件函數(shù)x)”,它愿意使之可用于應(yīng)用程序B 3440。通過添加一個(gè)擴(kuò)展數(shù)據(jù)文件(EDF),可以使該函數(shù)可用于應(yīng)用程序B 3440。之后該函數(shù)存儲(chǔ)在實(shí)例注冊(cè)表3410中,以使它可用于應(yīng)用程序B 3440的方式。例如,ConditionFuncX(條件函數(shù)X)可以在定義注冊(cè)表3412中注冊(cè),并且候選函數(shù)可以存儲(chǔ)在綁定注冊(cè)表3414中。擴(kuò)展組件3420隨后可以從可以創(chuàng)建條件A的綁定注冊(cè)表3414讀取該候選函數(shù),通過將它綁定到應(yīng)用程序B 3440。因此,創(chuàng)建將條件A綁定到應(yīng)用程序A的conditonFuncX(條件函數(shù)X)的綁定3450。
一旦綁定或依賴性已經(jīng)建立,就應(yīng)當(dāng)注意,它們可以用許多方式斷開。例如,由一個(gè)應(yīng)用程序?qū)崿F(xiàn)的一個(gè)函數(shù)可變成不可用(即,斷開的依賴性),如果該應(yīng)用程序被卸除。一種斷開依賴性的方法的另一個(gè)例子是如果一個(gè)新應(yīng)用程序被安裝,具有新條件、動(dòng)作或存取器,它被綁定于一個(gè)不再可用的函數(shù)。而且,依賴性可以被斷開,如果一個(gè)應(yīng)用程序被重新配置為不典型示范接受所有或特定的擴(kuò)展。因而,現(xiàn)有的首選項(xiàng)可能對(duì)不再可用的條件、動(dòng)作或存取器有依賴性。斷開的依賴性可以用許多方法補(bǔ)償。按照本發(fā)明的一個(gè)方面,可以定義一個(gè)不可用的狀態(tài)。例如,在如果允許一個(gè)應(yīng)用程序徹底斷開依賴性之前可以通知所有其它的應(yīng)用程序,因此它們可以將依賴的首選項(xiàng)放在“NotAvailable(不可用)”狀態(tài)中。之后,只要應(yīng)用程序被安裝,系統(tǒng)或應(yīng)用程序可以檢查以查看是否已經(jīng)重新建立依賴性,使得不可用狀態(tài)可以改變成可用并且可以使用這些首選項(xiàng)。
首選項(xiàng)可以在信息代理應(yīng)用程序之間創(chuàng)建。首選項(xiàng)實(shí)例化表示可以用于實(shí)現(xiàn)在IA應(yīng)用程序之間的交互的方法。按照本發(fā)明的一個(gè)方面,至少兩個(gè)機(jī)制可以提供,使用戶能夠創(chuàng)建在多于一個(gè)的IA應(yīng)用程序中訪問的能力的首選項(xiàng)。一個(gè)機(jī)制是EDF綁定。應(yīng)用程序開發(fā)者可以創(chuàng)建EDF綁定以使在一個(gè)應(yīng)用程序中的首選項(xiàng)類能夠引用在另一個(gè)應(yīng)用程序中定義的條件和動(dòng)作。這使最終用戶能夠?qū)嵗脕碜远鄠€(gè)應(yīng)用程序的條件和動(dòng)作的首選項(xiàng)。事件提交動(dòng)作也可以利用大量應(yīng)用程序提供的能力。事件提交動(dòng)作函數(shù)可以隱式地在由應(yīng)用程序定義事件類時(shí)創(chuàng)建。之后,三個(gè)事件提交動(dòng)作函數(shù)可以通過EDF綁定到由其它應(yīng)用程序使用的動(dòng)作,從而使新創(chuàng)建用戶首選項(xiàng)的潛在能力變得更豐富。
為了使應(yīng)用程序能夠直接實(shí)例化由應(yīng)用程序開發(fā)者指定的首選項(xiàng)(與最終用戶相反),需要使用另外的機(jī)制或組件。一個(gè)機(jī)制或組件可相應(yīng)于首選項(xiàng)模板。首選項(xiàng)模板可以在首選項(xiàng)類的上下文內(nèi)定義并且包括一組條件和類。為了定義模板,首選項(xiàng)類的句法可以用新的標(biāo)記來擴(kuò)展。接著,這個(gè)標(biāo)記可以由EDF為了用新模板擴(kuò)展應(yīng)用程序的目的而使用。首選項(xiàng)實(shí)例化動(dòng)作也可以使用。當(dāng)創(chuàng)建一個(gè)新的首選項(xiàng)模板時(shí),可以隱式地創(chuàng)建一個(gè)動(dòng)作函數(shù)以從一個(gè)指定的模板實(shí)例化一個(gè)首選項(xiàng)。該動(dòng)作函數(shù)的參數(shù)表示從模板的一個(gè)固定的條件動(dòng)作集實(shí)例化一個(gè)首選項(xiàng)所需要的常數(shù)。
開發(fā)者也能夠在應(yīng)用程序內(nèi)和跨應(yīng)用程序在沒有最終用戶的顯式干預(yù)的情況下實(shí)例化首選項(xiàng)。若干機(jī)制可以用于實(shí)現(xiàn)這個(gè)功能。例如,一個(gè)新ADF標(biāo)記可以添加到一個(gè)首選項(xiàng)類以允許首選項(xiàng)在ADF內(nèi)在應(yīng)用程序定義時(shí)直接被實(shí)例化。可供替換地,一個(gè)新的EDF標(biāo)記可添加到首選項(xiàng)類。這將允許首選項(xiàng)在定義應(yīng)用程序期間和在定義應(yīng)用程序之后都能被實(shí)例化。另外,首選項(xiàng)實(shí)例化能通過在模式定義之外的腳本(例如,SQL腳本)來完成,例如通過系統(tǒng)API的使用。
有了上述能力,應(yīng)用程序(例如,IA應(yīng)用程序)交互可以在一個(gè)應(yīng)用程序發(fā)送事件、評(píng)估條件/動(dòng)作或者實(shí)例化在其它應(yīng)用程序中的首選項(xiàng)時(shí)發(fā)生。這類交互可以直接由開發(fā)者或者通過最終用戶定義的首選項(xiàng)來完成。
為進(jìn)一步理解應(yīng)用程序可組成性和可擴(kuò)展性的各種方面,在下面提供幾個(gè)例子。ShellApp(命令解釋程序應(yīng)用程序)是一個(gè)操作系統(tǒng)信息代理應(yīng)用程序。Office(辦公室)也是一個(gè)信息代理應(yīng)用程序。
例#1組成組成可以在一個(gè)新應(yīng)用程序被編寫以綁定到一個(gè)現(xiàn)有的已知函數(shù)時(shí)定義。在本例中,ShellApp(命令解釋程序應(yīng)用程序)先安裝,而Office(辦公室)在后安裝。當(dāng)Office(辦公室)被編寫時(shí),開發(fā)者知道并且設(shè)計(jì)Office(辦公室)以利用ShellApp(命令解釋程序應(yīng)用程序)的FuncX(函數(shù)X)條件函數(shù)。當(dāng)Office(辦公室)被安裝時(shí),它在綁定注冊(cè)表中注冊(cè)一個(gè)綁定,將FuncX(函數(shù)X)條件函數(shù)(舊函數(shù))綁定到在Office(辦公室)應(yīng)用程序(新應(yīng)用程序)中的一個(gè)條件上。Office(辦公室)應(yīng)用程序安裝腳本隨后調(diào)用擴(kuò)展組件,它讀取綁定注冊(cè)表。擴(kuò)展組件隨后可以檢測已經(jīng)定義的條件(“內(nèi)建的(built in)”),并且因此跳過下一個(gè)步驟即它重新評(píng)估實(shí)例級(jí)的NotAvailable(不可用)狀態(tài)。Office(辦公室)應(yīng)用程序稱為是由ShellApp(命令解釋程序應(yīng)用程序)擴(kuò)展的。
例#2擴(kuò)展擴(kuò)展可以在一個(gè)舊應(yīng)用程序用一個(gè)新函數(shù)擴(kuò)展時(shí)定義。在本例中,如上,ShellApp(命令解釋程序應(yīng)用程序)被安裝,隨后安裝Office(辦公室)。當(dāng)Office(辦公室)被編寫時(shí),開發(fā)者創(chuàng)建一個(gè)可以在ShellApp(命令解釋程序應(yīng)用程序)中使用的動(dòng)作函數(shù)FuncY(函數(shù)Y)。當(dāng)安裝Office(辦公室)時(shí),它在定義注冊(cè)表中注冊(cè)一個(gè)動(dòng)作函數(shù)并且在在綁定注冊(cè)表中注冊(cè)一個(gè)將Office(辦公室)應(yīng)用程序FuncY(函數(shù)Y)綁定到ShellApp(命令解釋程序應(yīng)用程序))(舊應(yīng)用程序)中的一個(gè)動(dòng)作的綁定。Office(辦公室)應(yīng)用程序腳本調(diào)用擴(kuò)展組件以檢測存在一個(gè)新的綁定,它在ShellApp(命令解釋程序應(yīng)用程序)中沒有相應(yīng)的動(dòng)作,并且因此通過在ShellApp(命令解釋程序應(yīng)用程序)中創(chuàng)建它來內(nèi)在化該動(dòng)作。隨后重新評(píng)估實(shí)例級(jí)NotAvailable(不可用)狀態(tài)。ShellApp(命令解釋程序應(yīng)用程序)稱為已經(jīng)用Office(辦公室)應(yīng)用程序擴(kuò)展了。
例#3補(bǔ)丁擴(kuò)展打補(bǔ)丁可以在函數(shù)和應(yīng)用程序兩者都已經(jīng)安裝在系統(tǒng)上時(shí)發(fā)生。因此,假定ShellApp(命令解釋程序應(yīng)用程序)和Office(辦公室)兩者都已經(jīng)安裝在系統(tǒng)上,并且隨后要安裝一個(gè)Office(辦公室)服務(wù)包。在Office(辦公室)應(yīng)用程序發(fā)布之后,應(yīng)用程序開發(fā)者知道在Office(辦公室)中有一個(gè)動(dòng)作函數(shù)是ShellApp(命令解釋程序應(yīng)用程序)能使用的。服務(wù)包,尤其是,包含一個(gè)定義將一個(gè)新Office(辦公室)應(yīng)用程序條件綁定到在Office(辦公室)應(yīng)用程序中的條件函數(shù)的EDF。當(dāng)該服務(wù)包在安裝中,它可以在綁定注冊(cè)表中注冊(cè)該綁定,并且調(diào)用擴(kuò)展組件。擴(kuò)展組件可以檢測在目標(biāo)應(yīng)用程序中存在沒有相應(yīng)動(dòng)作或條件的新綁定,并且之后在ShellApp(命令解釋程序應(yīng)用程序)和Office(辦公室)應(yīng)用程序中創(chuàng)建它們。隨后擴(kuò)展組件可重新評(píng)估實(shí)例級(jí)NotAvailable(不可用)狀態(tài)。ShellApp(命令解釋程序應(yīng)用程序)隨后稱為已經(jīng)由Office(辦公室)應(yīng)用程序擴(kuò)展,而Office(辦公室)可以稱為已經(jīng)由ShellApp(命令解釋程序應(yīng)用程序)擴(kuò)展。
例#4卸載假定已經(jīng)卸載了先前安裝的Office(辦公室),并且在這個(gè)過程中它從定義和綁定注冊(cè)表移除了它的所有注冊(cè)。ShellApp(命令解釋程序應(yīng)用程序)現(xiàn)在具有取決于由Office(辦公室)實(shí)現(xiàn)的函數(shù)的、現(xiàn)在被移除的動(dòng)作。因此,可以為具有斷開的依賴性的所有動(dòng)作聲明不可用或NotAvailable(不可用)狀態(tài)。最終用戶隨后能取得接收一個(gè)關(guān)于未得到的依賴性的線索。最終用戶隨后可選擇保持不可用的首選項(xiàng)或動(dòng)作(例如,假定Office(辦公室)會(huì)回來)或者簡單地刪除它們。
例#5重新安裝假定現(xiàn)在重新安裝先前被卸載的Office(辦公室)應(yīng)用程序,并且在安裝期間它重新注冊(cè)它的動(dòng)作函數(shù)將綁定到ShellApp(命令解釋程序應(yīng)用程序)。Office(辦公室)安裝腳本隨后可以調(diào)用擴(kuò)展組件在ShellApp(命令解釋程序應(yīng)用程序)中創(chuàng)建一個(gè)動(dòng)作。然而,擴(kuò)展組件可簡單檢測條件、動(dòng)作或存取器是否已經(jīng)存在于目標(biāo)應(yīng)用程序中(例如,應(yīng)用程序是先前安裝的)并且跳過創(chuàng)建步驟。函數(shù)的NotAvailable(不可用)狀態(tài)隨后可以被重新評(píng)估以保證所有可以活動(dòng)的函數(shù)被置于一個(gè)允許狀態(tài)中。
個(gè)性化的文件夾上面提到和描述的系統(tǒng)便于信息應(yīng)用程序的構(gòu)造,它自動(dòng)化對(duì)一個(gè)給定事件集的決策和動(dòng)作的處理。因此,可以建立使最終用戶能夠個(gè)性化對(duì)事件(包括但不限于桌面通知和電子郵件到達(dá))的應(yīng)答的應(yīng)用程序。一個(gè)這樣的應(yīng)用程序是個(gè)性化文件夾應(yīng)用程序,在下文描述。本發(fā)明通過使用,尤其是,系統(tǒng)化數(shù)據(jù)存儲(chǔ)器和系統(tǒng)化邏輯來支持諸如個(gè)性化事件處理的功能。
轉(zhuǎn)到圖35,按照本發(fā)明的一個(gè)方面,描述個(gè)性化系統(tǒng)3500。系統(tǒng)3500包括數(shù)據(jù)存儲(chǔ)器3550和信息代理應(yīng)用程序300,它包含個(gè)性化文件夾3510和首選項(xiàng)3512。個(gè)性化文件夾3510指可以基于可以由最終用戶直觀地指定的條件表達(dá)式來包括或排除項(xiàng)的文件夾或數(shù)據(jù)容器。在一個(gè)實(shí)例中,文件夾3510可以以分層方式安排并且由操作系統(tǒng)的一個(gè)組件來實(shí)現(xiàn)。然而,應(yīng)當(dāng)注意,術(shù)語文件夾或數(shù)據(jù)容器不是以受限制的方式使用的。文件夾3510可以擴(kuò)展到鏈接、指針或由一組關(guān)系定義的數(shù)據(jù)的任何集合。信息代理首選項(xiàng)3512表示一個(gè)非技術(shù)性最終用戶組合系統(tǒng)化邏輯和系統(tǒng)化數(shù)據(jù)(例如通過數(shù)據(jù)存儲(chǔ)器150)以提供豐富的個(gè)性化應(yīng)用程序和環(huán)境的能力。相反,常規(guī)的首選項(xiàng)僅利用具有直觀名字(提供串常數(shù))的簡單條件。首選項(xiàng)3512可以由最終用戶指定,例如,使用對(duì)他們熟悉的邏輯,諸如在事件IF(如果)條件THEN(那么)動(dòng)作或者以更多應(yīng)用程序?qū)S玫男g(shù)語在文件夾事件時(shí)IF(如果)條件THEN(那么)包括/排除動(dòng)作。而且,應(yīng)當(dāng)注意,首選項(xiàng)3512可以由推理邏輯開發(fā),諸如通過使用統(tǒng)計(jì)和/或貝葉斯定理模型基于用戶動(dòng)作來了解首選項(xiàng)。在此使用的推理分析指在許多輸入變量上使用推理過程,以給出一個(gè)輸出變量,即,用戶首選項(xiàng)或?qū)κ走x項(xiàng)開發(fā)工具的輸入。該分析可以包括,在一個(gè)方面,統(tǒng)計(jì)模型和/或貝葉斯定理模型的使用,但不限于此。除條件和動(dòng)作之外,首選項(xiàng)包含開始首選項(xiàng)評(píng)估的觸發(fā)器。按照本發(fā)明的一個(gè)方面,這類觸發(fā)器可以包括顯式用戶指令,按照時(shí)間調(diào)度的,和/或自動(dòng)地在一個(gè)文件夾中添加文檔、刪除文檔和/或修改文檔。還有,應(yīng)當(dāng)意識(shí)到首選項(xiàng)3512可以被分組,以實(shí)現(xiàn)將會(huì)太復(fù)雜的結(jié)果集能通過單個(gè)表達(dá)式容易地創(chuàng)建(例如,從文件夾包括/排除特定的項(xiàng),組合多個(gè)查詢的效果)。再有,應(yīng)當(dāng)注意個(gè)別和分組首選項(xiàng)3512可以表示為一個(gè)物理實(shí)體,使得用戶在文件夾3510之間可以拖、放、剪切和粘貼首選項(xiàng)。文件夾3510可以包含數(shù)據(jù)拷貝或者指向存儲(chǔ)在存儲(chǔ)設(shè)備(即虛擬文件夾)中的數(shù)據(jù)的簡單指針。所存儲(chǔ)的數(shù)據(jù)可以包括但不限于詞語處理文檔、電子表格、圖片和音樂。再有,個(gè)性化文件夾3510可以具有相關(guān)聯(lián)的首選項(xiàng)3512,它與在多個(gè)不同域中的項(xiàng)有關(guān)。為了支持這樣的功能,可以引入預(yù)定義的常數(shù)。更明確地說,來自一項(xiàng)域(例如,MyGrandparent(我的祖父))的預(yù)定義的常數(shù)可以用作來自其它域(例如,PhotofromMyGrandparent(來自我祖父的照片))的條件參數(shù)。預(yù)定義的條件和約束的組合提供一種簡單直觀的方法讓用戶聯(lián)系各種項(xiàng)域。當(dāng)然,用戶定義的常數(shù)也可以提供給個(gè)性化文件夾的條件。簡單的條件可以從一個(gè)項(xiàng)域的模式中推理。例如,條件EmailIsFrom()(電子郵件來自)或者SubjectContains()(主題包含)可以從一個(gè)電子郵件模式中推理。然而,模式開發(fā)者可肯定地顯式指定既更豐富又更小的有用條件集合。而且,還應(yīng)當(dāng)注意,新的條件可以添加到應(yīng)用程序300(可擴(kuò)展性)并且隨后由最終用戶用于定義新首選項(xiàng)。在新的模式安裝時(shí),用于個(gè)性化文件夾的新能力變成可能。
按照本發(fā)明的一個(gè)方面,文件夾3510可以分類成主動(dòng)或?qū)С龅?。主?dòng)文件夾代表用戶在一個(gè)文件夾中出現(xiàn)感興趣的內(nèi)容時(shí)(例如,事件--文件文本添加、刪除或修改)采取動(dòng)作。例如,可以從數(shù)字?jǐn)z像機(jī)下載圖片至一個(gè)稱為MyPictures(我的圖片)主動(dòng)文件夾。同時(shí)或者在之后的短時(shí)間內(nèi),主動(dòng)文件夾可咨詢?nèi)粘瘫響?yīng)用程序以確定在拍照時(shí)用戶要做什么并且隨后創(chuàng)建一個(gè)具有合適名字的新文件夾(例如,鉤魚旅行)并且將圖片移動(dòng)到該新文件夾。在一個(gè)電子郵件上下文中,電子郵件應(yīng)用程序可確定何時(shí)一個(gè)消息包含一個(gè)花費(fèi)報(bào)告并且如果它小于某個(gè)值則它可以將報(bào)告移到經(jīng)批準(zhǔn)的報(bào)告文件夾。在主動(dòng)文件夾的另一個(gè)示例性使用中,音樂可下載到一個(gè)主動(dòng)文件夾,它隨后確定藝術(shù)風(fēng)格(例如,爵士、經(jīng)典、說唱、搖滾...)并且將該音樂移到一個(gè)適當(dāng)?shù)奈募A。
導(dǎo)出文件夾使用首選項(xiàng)決定是否要包括或從文件夾排除特定的文件。另外,應(yīng)當(dāng)注意,導(dǎo)出文件夾可以是提供到文件的映射或指針的虛擬文件夾。虛擬文件夾用作容納數(shù)據(jù)的真實(shí)文件夾,但文件夾并沒有實(shí)際的物理存在。導(dǎo)出文件夾使用的一個(gè)例子包括這樣一種情況,即用戶定義一個(gè)文件夾以包括用戶在最近兩個(gè)星期內(nèi)至少聽過三次的所有爵士音樂。導(dǎo)出文件夾也可以由首選項(xiàng)來定義,以包括一種特定類型的所有文件,除某些例外之外。例如,可以定義一個(gè)文件夾來包括爵士音樂家Miles Davis(邁爾斯·戴維斯)的所有曲目,但排除特定的歌曲曲目(例如,Human Nature and New Rumba(人性和新倫巴))。而且,應(yīng)當(dāng)注意,可定義首選項(xiàng)使得用戶能將文件拖放到文件夾中并且文件夾會(huì)確定放入的文件是否是定義的類型。如果文件是允許的類型,則它可以被添加到該文件夾,如果不是,則該文件被拒絕(例如,不拷貝到該文件夾)或者可供替換地可提示用戶關(guān)于是否應(yīng)當(dāng)為該特定文件創(chuàng)建一個(gè)例外。
而且,應(yīng)當(dāng)注意,某些文件夾可以展示活動(dòng)文件夾和導(dǎo)出文件夾兩者特性。因此,有些文件夾可以具有與它們相關(guān)聯(lián)的首選項(xiàng),指定哪些項(xiàng)包含在一個(gè)文件夾中,并且具有當(dāng)某些事件在那些項(xiàng)上發(fā)生時(shí)要采取什么動(dòng)作的首選項(xiàng)。
可以使用系統(tǒng)100的執(zhí)行引擎來處理應(yīng)用程序。如前揭示的,可以將首選項(xiàng)存儲(chǔ)為數(shù)據(jù)并且以數(shù)據(jù)查詢的形式執(zhí)行。數(shù)據(jù)存儲(chǔ)器150可以在一個(gè)或多個(gè)表中存儲(chǔ)數(shù)據(jù),隨后可以使用首選項(xiàng)信息來查詢。按照慣例,對(duì)一個(gè)數(shù)據(jù)庫的表執(zhí)行查詢?cè)谟?jì)算上是不可行的,因?yàn)檫@些查詢必須在相對(duì)短的時(shí)間間隔內(nèi)連續(xù)地執(zhí)行以保證在文件夾中的數(shù)據(jù)保持最新。這在輕量級(jí)系統(tǒng)如個(gè)人計(jì)算機(jī)上尤其是不切實(shí)際的,其中的處理器不能有效地執(zhí)行大量程序同時(shí)不斷地運(yùn)行查詢以更新文件夾數(shù)據(jù)。然而,本發(fā)明通過在事件發(fā)生時(shí)諸如當(dāng)添加、刪除或修改數(shù)據(jù)時(shí)執(zhí)行查詢來克服這個(gè)問題。因此,處理器沒有負(fù)擔(dān)并連續(xù)地執(zhí)行查詢而文件夾數(shù)據(jù)保持最新。
基于活動(dòng)文件夾的類似工作流的活動(dòng)個(gè)性化(例如,ECA規(guī)則)與工作流或任務(wù)調(diào)度不同。工作流或任務(wù)調(diào)度是可以通過在文件夾中的項(xiàng)表示的多步驟的工作片段。個(gè)性化是使最終用戶能夠指定在系統(tǒng)/應(yīng)用程序攔截點(diǎn)應(yīng)用程序的首選項(xiàng)的概念,為了自動(dòng)化最終用戶有意義的事件(例如,電子郵件到達(dá))或者系統(tǒng)/應(yīng)用程序行為(例如,基于用戶上下文控制桌面中斷)的處理。個(gè)性化關(guān)心的是使最終用戶能夠表示一個(gè)其邏輯被定位在一個(gè)給定攔截點(diǎn)(例如,事件,在一個(gè)流程中的點(diǎn)...)的首選項(xiàng)。多個(gè)首選項(xiàng)的任何級(jí)聯(lián)的評(píng)估由于單個(gè)首選項(xiàng)的動(dòng)作,因此是偶然的,不是計(jì)劃的。因此個(gè)性化不是工作流的小型形式,相反,工作流與個(gè)性化是完全不同的事。用于處理事件的首選項(xiàng)的偶然級(jí)聯(lián)與在工作流中的一個(gè)計(jì)劃的任務(wù)/規(guī)則鏈不同。而且,個(gè)性化可以應(yīng)用程序于電子郵件、電話呼叫、桌面中斷和許多其它類型的最終用戶事件,與是否涉及工作流或任務(wù)調(diào)度無關(guān)。個(gè)性化工作流基于個(gè)性化與工作流無關(guān),但卻是工作流的互補(bǔ)概念的前提。
個(gè)性化可以應(yīng)用程序于工作流或任務(wù)調(diào)度,只要最終用戶決策是相關(guān)的。在任務(wù)的個(gè)性化中存在工作流個(gè)性化的各種機(jī)會(huì),工作流開始的個(gè)性化、工作流任務(wù)的個(gè)性化和工作流調(diào)度的個(gè)性化。個(gè)性化一個(gè)任務(wù)的一個(gè)例子是,用戶指定決策邏輯以自動(dòng)化某個(gè)任務(wù)的處理,諸如批準(zhǔn)由一個(gè)人直接報(bào)告的某個(gè)美元金額的訂貨單。工作流開始處理是否基于一個(gè)感興趣的事件(例如,電話呼叫、電子郵件到達(dá)...)打開/開始一個(gè)工作流。一個(gè)計(jì)劃的個(gè)性化有可能轉(zhuǎn)變成一個(gè)工作流,通過用與要跟蹤的時(shí)間表交互的適當(dāng)能力等來包裝它。換言之,個(gè)性化可用作在工作流內(nèi)的一個(gè)計(jì)劃的任務(wù),其中用戶首選項(xiàng)將完全確定任務(wù)的解決方案。最后,個(gè)性化可以涉及工作流調(diào)度。存在有關(guān)工作流中下一個(gè)步驟的選擇時(shí),個(gè)性化可以用于允許用戶指定用于這類決策的首選項(xiàng)。
包括許多上述類別的個(gè)性化的工作流的一個(gè)實(shí)際例子是花費(fèi)報(bào)告的處理。在本例中,電子郵件到達(dá)收件箱,檢測電子郵件的類型(例如,主題行,標(biāo)志為花費(fèi)報(bào)告...),掃描電子郵件數(shù)據(jù),并且如果發(fā)票金額小于某個(gè)美元金額則將該報(bào)告移到一個(gè)批準(zhǔn)的文件夾。之后,可以發(fā)送一個(gè)電子郵件回發(fā)送者,表示該報(bào)告已被批準(zhǔn)的狀態(tài)。隨后,可以創(chuàng)建一個(gè)日志讓用戶每月檢閱并且可以計(jì)算已批準(zhǔn)的總金額。
盡管工作流的個(gè)性化的所有上述類別增強(qiáng)了工作流的價(jià)值,但這類好處的應(yīng)用程序能力不排除工作流。那些好處可以應(yīng)用程序于許多其它領(lǐng)域,包括但不限于通信處理、路由、或個(gè)性化,其中這類領(lǐng)域可不參與工作流。
記事文件夾按照本發(fā)明一個(gè)方面的記事表示與用戶或系統(tǒng)的用戶有關(guān)的歷史和上下文信息。通知系統(tǒng)經(jīng)常包括可以用作基于先前的動(dòng)作評(píng)估是否采取動(dòng)作的一部分的歷史數(shù)據(jù)的概念。例如,用戶希望建立一個(gè)首選項(xiàng),它表示“當(dāng)MSFT股票達(dá)到一天的新高時(shí)通知我”。在這個(gè)例子中,系統(tǒng)必須能夠在這一天中保存MSFT股票的最高價(jià)格點(diǎn)并且在達(dá)到新高時(shí)更新這個(gè)信息。
按照本發(fā)明的一個(gè)方面,記事存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器中并且用戶可通過用戶界面(例如,由操作系統(tǒng)提供的)隨意地訪問。因而,最終用戶具有對(duì)這個(gè)歷史數(shù)據(jù)的控制;她可以用備份其它文件的方式備份它,她可以將它與她家里或辦公室里的其它計(jì)算機(jī)同步,她可以通過正常的文件共享機(jī)制來共享它,并且可以設(shè)置訪問許可和其它安全設(shè)置以準(zhǔn)確控制誰可以訪問這個(gè)上下文信息。例如,用戶可以允許在他們的工作組中的每個(gè)人看有關(guān)MSFT股票價(jià)格的歷史信息,但希望限制諸如他們是否在辦公桌前或者在開會(huì)的上下文信息。
而且,本發(fā)明的系統(tǒng)可以將某些共同的行為揭示為“內(nèi)建”的記事創(chuàng)建/維護(hù)邏輯,包括創(chuàng)建一個(gè)“審計(jì)(audit)”記事的能力,其中代表用戶采取的每個(gè)動(dòng)作被保存在一個(gè)記事中;“計(jì)數(shù)(count)”記事,其中系統(tǒng)保持它已經(jīng)看到的一個(gè)特定種類的事件或動(dòng)作的數(shù)量;以及“高/低水印(high/lowwatermark)”記事,它可以保持跟蹤在某個(gè)時(shí)段在歷史上見過的最高和最低值。
而且,本系統(tǒng)可以使不知道信息代理應(yīng)用程序的應(yīng)用程序更新這些記事成為可能。許多通知平臺(tái)使得在用戶規(guī)則(此也稱為首選項(xiàng))的正常處理期間更新上下文信息成為可能,但因?yàn)楸景l(fā)明使用存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器中的系統(tǒng)化數(shù)據(jù)并且作為規(guī)則或首選項(xiàng)處理的一部分,所以系統(tǒng)可以使用由任何應(yīng)用程序創(chuàng)建的上下文信息。例如,用戶可以下載并運(yùn)行由NASDAQ編寫的應(yīng)用程序,它使實(shí)時(shí)證券報(bào)價(jià)流到用戶的計(jì)算機(jī)。NASDAQ應(yīng)用程序?yàn)槊總€(gè)用戶感興趣的符號(hào)創(chuàng)建一個(gè)文件,并且在這些文件中保存相關(guān)的信息。因?yàn)楸景l(fā)明的信息代理應(yīng)用程序,按照一個(gè)方面,建立成使用這類具體化的上下文信息,所以信息代理系統(tǒng)可以在用戶規(guī)則或首選項(xiàng)處理期間利用這些文件作為記事。
記事也可以結(jié)合活動(dòng)文件夾使用。因?yàn)閭€(gè)性化文件夾系統(tǒng)包括監(jiān)視特定文件夾的能力,創(chuàng)建、修改或移動(dòng)到這類文件夾中的文件夾項(xiàng)可以視為對(duì)一個(gè)特定的記事或記事集的上下文更新。這樣,用戶有可能在沒有代表他們運(yùn)行的任何程序員編寫的代碼的情況下保存記事。相反,最終用戶可以僅使用操作系統(tǒng)的現(xiàn)有文件操縱機(jī)制來保持他們的上下文信息最新。
因而,使用產(chǎn)生軟件、固件、硬件或它們的任何組件的標(biāo)準(zhǔn)編程和/或工作技術(shù),可將本發(fā)明實(shí)現(xiàn)為方法、裝置或制造品。在此使用的術(shù)語“制造品(article of manufacture)”(或者,可供替換地,“計(jì)算機(jī)程序產(chǎn)品”)旨在包括可從任何計(jì)算機(jī)可讀設(shè)備、載波或介質(zhì)訪問的計(jì)算機(jī)程序。當(dāng)然,本領(lǐng)域熟練技術(shù)人員將認(rèn)識(shí)到,可以在不脫離本發(fā)明范圍的情況下作為這個(gè)配置作出許多修改。
通過上面描述的示例性系統(tǒng),參考圖36-41的流程圖將更好地理解按照本發(fā)明實(shí)現(xiàn)的方法。盡管為了說明簡單的目的,將該方法顯示和描述為一系列方框,但要理解和意識(shí)到,本發(fā)明不受這些方框的順序的限制,因?yàn)榘凑毡景l(fā)明,有些方框可以以與在此描繪和描述的其它方框不同的順序和/或同時(shí)發(fā)生。而且,實(shí)現(xiàn)按照本發(fā)明的方法,不是所有例示的方框都是必須的。
轉(zhuǎn)到圖36,按照本發(fā)明的一個(gè)方面,例示用于使用首選項(xiàng)的方法3600。在3610,由最終用戶基于開發(fā)者模式(例如XML模式)指定首選項(xiàng)并且例如存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器的表中。隨后,在3620,可以接收或檢測一個(gè)或多個(gè)事件。隨后在3630,可以使用查詢語言(例如SQL)查詢數(shù)據(jù)表來執(zhí)行或評(píng)估首選項(xiàng)。在3640,可以用有效條件的有效首選項(xiàng)產(chǎn)生或填充結(jié)果表。最后,在3650,可以基于結(jié)果表的結(jié)果執(zhí)行相應(yīng)的動(dòng)作。
轉(zhuǎn)到圖37,按照本發(fā)明的一個(gè)方面,例示用于安裝應(yīng)用程序的方法3700。在3710,在與將執(zhí)行已安裝應(yīng)用程序的系統(tǒng)或平臺(tái)(例如,信息代理系統(tǒng)數(shù)據(jù)存儲(chǔ)器150)相關(guān)聯(lián)的數(shù)據(jù)存儲(chǔ)器中建立基表。隨后在3720用應(yīng)用程序數(shù)據(jù)更新基表,而不是嚴(yán)格地為已安裝應(yīng)用程序創(chuàng)建新表和數(shù)據(jù)庫。在3730,例如,將應(yīng)用程序過程作為數(shù)據(jù)存儲(chǔ)在為應(yīng)用程序過程指定的基表中。為執(zhí)行,文本的應(yīng)用程序過程串從數(shù)據(jù)庫中移除并且按照一個(gè)方面實(shí)時(shí)執(zhí)行。
圖38描述按照本發(fā)明一個(gè)方面用于擴(kuò)展應(yīng)用程序的方法3800。在3810,從開發(fā)者接收EDF。EDF包含有關(guān)支持在一個(gè)應(yīng)用程序中的首選項(xiàng)類的信息,以引用在其它應(yīng)用程序中定義的條件、動(dòng)作和事件。之后,在3820,在一個(gè)中央位置如實(shí)例注冊(cè)表中注冊(cè)函數(shù)綁定。在3830,由擴(kuò)展組件檢索或接收綁定信息。接著,在3840接受邏輯可以應(yīng)用程序于綁定。當(dāng)安裝一個(gè)EDF時(shí)使綁定可用,然而,按照本發(fā)明的一個(gè)方面,它們不是自動(dòng)地應(yīng)用程序于應(yīng)用程序的。而是,應(yīng)用程序接受邏輯來確定是否接受該EDF。接受邏輯查詢,尤其是,由一個(gè)可信任源提供的綁定真實(shí)性、授權(quán)和或證明,以便確定是否接受它。在3850,由應(yīng)用程序作出關(guān)于它是否接受綁定的決定。如果“否”,則該過程將簡單地在沒有綁定的情況下終止。如果“是”,則在3860,將來自第一個(gè)應(yīng)用程序的候選函數(shù)綁定綁定到第二個(gè)應(yīng)用程序。
圖39是描繪按照本發(fā)明一個(gè)方面用于卸載應(yīng)用程序的方法3900的流程圖。在3910,被卸載的應(yīng)用程序從中央存儲(chǔ)位置移除其所有注冊(cè)。中央存儲(chǔ)位置可以是具有定義和綁定注冊(cè)的實(shí)例注冊(cè)表。在3920,應(yīng)用程序組件隨后可以被移除。隨后可以通知從屬的應(yīng)用程序被卸載的應(yīng)用程序(例如,通過擴(kuò)展組件)。而且,且如上面提到的,方法3900的方框可以是任何順序的。因此,本發(fā)明的另一個(gè)方面包括在任何卸載或移除過程之前通知從屬的應(yīng)用程序。
圖40是例示按照本發(fā)明一個(gè)方面跨應(yīng)用程序擴(kuò)展編程常數(shù)的方法的方法。在4010,接收一個(gè)常數(shù)。在4020,通過跨應(yīng)用程序域搜索確定常數(shù)的值。例如,如果收到常數(shù)MyManager(我的管理者),則該方法可搜索電子郵件應(yīng)用程序并且確定MyManager(我的管理者)的值。
圖41描繪按照本發(fā)明一個(gè)方面用于個(gè)性化計(jì)算機(jī)功能的方法4100。在4110,最終用戶按照提供的模式編寫首選項(xiàng)。按照本發(fā)明的一個(gè)方面,首選項(xiàng)只要包括多個(gè)由布爾操作符分開的如果-那么(IF-THEN)語句,可以是任何形式??梢杂蓱?yīng)用程序開發(fā)者提供一個(gè)模式來約束,并且因而簡化最終用戶編程。在4120,在事件發(fā)生時(shí)執(zhí)行首選項(xiàng)。事件可以是發(fā)生的任何東西,包括但不限于在文件夾數(shù)據(jù)方面的變化或在股票價(jià)格方面的變化。首選項(xiàng)的執(zhí)行或評(píng)估可以通過利用查詢數(shù)據(jù)存儲(chǔ)器組件中的數(shù)據(jù)來完成。在4120,基于有條件地有效的首選項(xiàng)采取動(dòng)作。
為了提供本發(fā)明各種方面的上下文,圖42和43以及下面的討論旨在提供合適的計(jì)算環(huán)境的簡要一般的描述,其中可實(shí)現(xiàn)本發(fā)明的各種方面。盡管本發(fā)明已經(jīng)在運(yùn)行在一個(gè)計(jì)算機(jī)或多個(gè)計(jì)算機(jī)上的計(jì)算機(jī)程序的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,但本領(lǐng)域熟練技術(shù)人員將認(rèn)識(shí)到,本發(fā)明也可結(jié)合其它程序模塊實(shí)現(xiàn)。通常,程序模塊包括執(zhí)行特定任務(wù)和/或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)等。而且,本領(lǐng)域熟練技術(shù)人員將意識(shí)到,本發(fā)明方法可由其它計(jì)算機(jī)系統(tǒng)配置實(shí)施,包括單處理器或多處理器計(jì)算機(jī)系統(tǒng)、小型計(jì)算設(shè)備、大型計(jì)算機(jī)、以及個(gè)人計(jì)算機(jī)、手持式計(jì)算設(shè)備、基于微處理器或可編程消費(fèi)電子產(chǎn)品等等。本發(fā)明的例示方面也可在分布式計(jì)算環(huán)境中實(shí)施,其中任務(wù)是由通過通信網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備執(zhí)行的。然而,有一些方面,如果不是本發(fā)明的全部方面,可以在獨(dú)立的計(jì)算機(jī)上實(shí)施。在分布式計(jì)算環(huán)境中,程序模塊可位于本地或遠(yuǎn)程兩者的存儲(chǔ)器存儲(chǔ)設(shè)備中。
參考圖42,用于實(shí)現(xiàn)本發(fā)明各種方面的示例性環(huán)境4210包括計(jì)算機(jī)4212。計(jì)算機(jī)4212包括處理單元4214、系統(tǒng)存儲(chǔ)器4212和系統(tǒng)總線4218。系統(tǒng)總線4218將系統(tǒng)組件包括但不限于系統(tǒng)存儲(chǔ)器4216耦合到處理單元4214。處理單元4214可以是任何各種可用的處理器。雙微處理器和其它多處理器體系結(jié)構(gòu)也可以用作處理單元4214。
系統(tǒng)總線4218可以是任何若干類型總線結(jié)構(gòu),包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外設(shè)總線或外部總線和/或使用任何各種各樣總線體系結(jié)構(gòu)的局部總線,包括但不限于,11位總線,工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA),微通道體系結(jié)構(gòu)(MSA),擴(kuò)展ISA(EISA),智能驅(qū)動(dòng)器電子設(shè)備(IDE),VESA局部總線(VLB),外設(shè)組件互連(PCI),通用串行總線(USB),高級(jí)圖形端口(AGP),個(gè)人計(jì)算機(jī)存儲(chǔ)器卡國際協(xié)會(huì)總線(PCMCIA),以及小型計(jì)算機(jī)系統(tǒng)接口(SCSI)。
系統(tǒng)存儲(chǔ)器4216包括易失性存儲(chǔ)器4220和非易失性存儲(chǔ)器4222。基本輸入/輸出系統(tǒng)(BIOS)包含在計(jì)算機(jī)4212的元件之間傳送信息如在啟動(dòng)時(shí)的基本例程,存儲(chǔ)在非易失性存儲(chǔ)器4222中。作為例示,且非限制性地,非易失性存儲(chǔ)器4222可以包括只讀存儲(chǔ)器(ROM)、可編程ROM(PROM)、電可編程ROM(EPROM)、電可擦除ROM(EEPROM)或閃存。易失性存儲(chǔ)器4220包括隨機(jī)訪問存儲(chǔ)器(RAM),它用作外部高速緩存存儲(chǔ)器。作為例示而非限制性地,RAM可以多種形式提供,諸如同步RAM(SRAM)、動(dòng)態(tài)RAM(DRAM)、同步DRAM(SDRAM)、雙倍數(shù)據(jù)速率SDRAM(DDR SDRAM)、增強(qiáng)型SDRAM(ESDRAM)、同步鏈路DRAM(SLDRAM)和直接存儲(chǔ)器總線(Rambus)RAM(DRRAM)。
計(jì)算機(jī)4212還包括可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。圖42例示,例如一個(gè)盤存儲(chǔ)器4224。盤存儲(chǔ)器4224包括,但不限于,設(shè)備如磁盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器、Jaz驅(qū)動(dòng)器、Zip驅(qū)動(dòng)器、LS-100驅(qū)動(dòng)器、閃存卡或存儲(chǔ)器棒。另外,盤存儲(chǔ)器4224可以包括與其它存儲(chǔ)介質(zhì)分開或組合起來的存儲(chǔ)介質(zhì),包括但不限于光盤驅(qū)動(dòng)器,諸如光盤ROM設(shè)備(CD-ROM)、CD可記錄驅(qū)動(dòng)器(CD-R驅(qū)動(dòng)器)、CD可重寫驅(qū)動(dòng)器(CD-RW驅(qū)動(dòng)器)或數(shù)字多功能ROM驅(qū)動(dòng)器(DVD-ROM)。為便于盤存儲(chǔ)設(shè)備4224連接到系統(tǒng)總線4218,一般使用可移動(dòng)或不可移動(dòng)接口,如接口4226。
要意識(shí)到,圖42描述在合適的操作環(huán)境4210中描述的、用作用戶與基本計(jì)算機(jī)資源之間媒介物的軟件。這樣的軟件包括操作系統(tǒng)4228。操作系統(tǒng)4228,可以存儲(chǔ)在盤存儲(chǔ)器4224上,用于控制和分配計(jì)算機(jī)系統(tǒng)4212的資源。系統(tǒng)應(yīng)用程序4230通過存儲(chǔ)在系統(tǒng)存儲(chǔ)器4216或盤存儲(chǔ)器4224上的程序模塊4232和程序數(shù)據(jù)4234,利用操作系統(tǒng)4228的資源管理。要意識(shí)到,本發(fā)明可以由各種操作系統(tǒng)或操作系統(tǒng)組合來實(shí)現(xiàn)。
用戶通過輸入設(shè)備4236向計(jì)算機(jī)4212輸入命令或信息。輸入設(shè)備4236包括但不限于,定點(diǎn)設(shè)備諸如鼠標(biāo)、軌跡球、輸入筆、觸摸板、鍵盤、話筒、操縱桿、游戲墊、衛(wèi)星天線、掃描儀、TV調(diào)諧卡、數(shù)字照像機(jī)、數(shù)字視頻攝像機(jī)、網(wǎng)絡(luò)攝像機(jī)等等。這些和其它輸入設(shè)備經(jīng)接口端口4238通過系統(tǒng)總線4218連接到處理單元4214。接口端口4238包括,例如,串行端口、并行端口、游戲端口和通用串行總線(USB)。輸出設(shè)備4240使用與輸入設(shè)備4236相同類型的一些。因而,例如,USB端口可用于提供輸入到計(jì)算機(jī)4212,并且從計(jì)算機(jī)4212輸出信息到輸出設(shè)備4240。除其它輸入設(shè)備4240以外,提供輸出適配器4242以例示存在一些輸出設(shè)備4240,如監(jiān)示器、揚(yáng)聲器和打印機(jī),它們均要求特殊的適配器。輸出適配器4242包括,作為例示且非限制性地,視頻和聲音卡,在輸出設(shè)備4240與系統(tǒng)總線4218之間提供一種連接的工具。應(yīng)當(dāng)注意,其它設(shè)備和/或設(shè)備系統(tǒng)提供輸入和輸出兩者的能力,諸如遠(yuǎn)程計(jì)算機(jī)4244。
計(jì)算機(jī)4212可以在使用邏輯連接至一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)如遠(yuǎn)程計(jì)算機(jī)4244的邏輯連接的網(wǎng)絡(luò)化環(huán)境中運(yùn)行。遠(yuǎn)程計(jì)算機(jī)4244可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、工作站、基于微處理器的家用電器、對(duì)等設(shè)備或其它公用網(wǎng)絡(luò)節(jié)點(diǎn)等,并且一般包括許多或全部相對(duì)于計(jì)算機(jī)4212描述的元件。為了簡要的目的,遠(yuǎn)程計(jì)算機(jī)4244只例示了存儲(chǔ)器存儲(chǔ)設(shè)備4246。遠(yuǎn)程計(jì)算機(jī)4244在邏輯上通過網(wǎng)絡(luò)接口4248連接到計(jì)算機(jī)4212,并且隨后物理地通過通信連接4250連接。網(wǎng)絡(luò)接口4248包括通信網(wǎng)絡(luò),諸如局域網(wǎng)(LAN)和廣域網(wǎng)(WAN)。LAN技術(shù)包括光纖分布式數(shù)據(jù)接口(FDDI)、銅分布式數(shù)據(jù)接口(CDDI)、以太網(wǎng)/IEEE 1102.3、令牌環(huán)/IEEE 1102.5等等。WAN技術(shù)包括但不限于,點(diǎn)對(duì)點(diǎn)鏈路、電路交換網(wǎng)絡(luò)如綜合業(yè)務(wù)數(shù)字網(wǎng)絡(luò)(ISDN)和其各種變體、包交換網(wǎng)絡(luò)和數(shù)據(jù)訂戶線路(DSL)。
通信連接4250指用于將網(wǎng)絡(luò)接口4248連接到總線4218的硬件/軟件。盡管為了例示清楚,通信連接4250在計(jì)算機(jī)4212的內(nèi)部,但也可以在計(jì)算機(jī)4212的外面。連接到網(wǎng)絡(luò)接口4248所需要的硬件/軟件包括,只為了示例性目的,內(nèi)部和外部技術(shù),諸如調(diào)制解調(diào)器(包括常規(guī)電話級(jí)調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和DSL調(diào)制解調(diào)器)、ISDN適配器和以太網(wǎng)卡。
圖43是本發(fā)明可以與其交互的示例計(jì)算環(huán)境4300的示意框圖。系統(tǒng)4300包括一個(gè)或多個(gè)客戶機(jī)4310??蛻魴C(jī)4310可以是硬件和/或軟件(例如,線程、過程、計(jì)算設(shè)備)。系統(tǒng)4300還包括一個(gè)或多個(gè)服務(wù)器4330。例如,服務(wù)器4330也可以是硬件和/或軟件(例如,線程、過程、計(jì)算設(shè)備)。服務(wù)器4330可以容納線程,例如,以執(zhí)行通過使用本發(fā)明的變換。在客戶機(jī)4310與服務(wù)器4330之間的一種可能的通信可以是適合于在兩或多個(gè)計(jì)算機(jī)過程之間傳輸?shù)臄?shù)據(jù)包形式。系統(tǒng)4300包括一個(gè)通信框架4350,可以用于促進(jìn)客戶機(jī)4310與服務(wù)器4330之間的通信??蛻魴C(jī)4310有效地連接到一個(gè)或多個(gè)客戶機(jī)數(shù)據(jù)存儲(chǔ)器4360,可以用于存儲(chǔ)客戶機(jī)4310的本地信息。同樣,服務(wù)器4330有效地連接到一個(gè)或多個(gè)服務(wù)器數(shù)據(jù)存儲(chǔ)器4340,可以用于存儲(chǔ)服務(wù)器4330本地的信息。
上面所描述的包括本發(fā)明的例子。當(dāng)然,沒有可能描述為了描述本發(fā)明的目的而描述每一個(gè)想象得到的組件和方法的組合,但本領(lǐng)域熟練技術(shù)人員可認(rèn)識(shí)到,許多其它的本發(fā)明組合和變換是可能的。因此,本發(fā)明旨在包括所有落入所附權(quán)利要求書的精神和范圍之內(nèi)的這類改變、修改和變體方案。而且,對(duì)于在詳細(xì)描述和權(quán)利要求書中使用的術(shù)語“包括(include)”,這樣術(shù)語指在以與術(shù)語“包括(comprising)”在權(quán)利要求中用作過渡詞時(shí)解釋的“包括(comprising)”相似的方式來包括。
附錄<EventClasses>
<EventClass>
<EventClassName>EMailEvents</EventClassName>
<Schema>
<Field>
<FieldName>Sender</FieldName>
<FieldType>nvachar(255)</FieldType>
<FieldTypeMods>NOT NULL</FieldTypeMods>
</Field>
<Field>
<FieldName>Receiver</FieldName>
<FieldType>nvachar(255)</FieldType>
<FieldTypeMods>NOT NULL</FieldTypeMods>
</Field>
<Field>
<FieldName>Priority</FieldName>
<FieldType>int</FieldType>
<FieldTypeMods>NOT NULL</FieldTypeMods>
</Field>
<Field>
<FieldName>Subject</FieldName>
<FieldType>nvachar(255)</FieldType>
<FieldTypeMods>NOT NULL</FieldTypeMods>
</Field>
<Field>
<FieldName>MessageText</FieldName>
<FieldType>nvachar(255)</FieldType>
<FieldTypeMods>NOT NULL</FieldTypeMods>
</Field>
<Schema>
</EventClass>
<EventClass>
<EventClassName>StockEvents</EventClassName>
<Schema>
<Field>
<FieldName>Symbol</FieldName>
<FieldType>nvachar(10)</FieldType>
<FieldTypeMods>NOT NULL</FieldTypeMods>
</Field>
<Field>
<FieldName>Price</FieldName>
<FieldType>float</FieldType>
<FieldTypeMods>NOT NULL</FieldTypeMods>
</Field>
<Field>
<FieldName>Time</FieldName>
<FieldType>Datetime</FieldType>
<FieldTypeMods>NOT NULL</FieldTypeMods>
</Field>
<Schema>
</EventClass><EventClasses><PreferenceClasses>
<PreferenceClass>
<PreferenceClassName>EmailPreference1</PreferenceClassName>
<EventClassName>EmailEvents</EventClassName>
<ConditionClasses>
<ConditionClass>
<Name>MailFrom</Name><!--條件類ID=1-->
Mail is From @Sender</CondtionClass>
<ConditionClass>
<Name>MailContains</Name><!--條件類ID=2-->
Mail Contains @KeyWord</CondtionClass>
</CondtionClasses>
<ActionClasses>
<ActionClass>
<Name>PopToast</Name>
Pop A Toast</ActionClass>
</ActionClasses></PreferenceClass><PreferenceClass>
<PreferenceClassName>EmailPreference2</PreferenceClassName>
<EventClassName>EmailEvents</EventClassName>
<ConditionClasses>
<ConditionClass>
<Name>MailPriority</Name><!--條件類ID=3-->
Priority>@Priority</CondtionClass>
<ConditionClass>
<Name>MailFrom</Name><!--條件類ID=4-->
Mail is From @Sender</CondtionClass>
</CondtionClasses>
<ActionClasses>
<ActionClass>
<Name>MoveToFolder</Name>
MoveToFolder(@TargetFolder)<
</ActionClass>
</ActionClasses></PreferenceClass>
<PreferenceClass>
<PreferenceClassName>StockPreference</PreferenceClassName>
<EventClassName>StockEvents</EventClassName>
<ConditionClasses>
<ConditionClass>
<Name>StockSymbol</Name><!--條件類ID=5-->
Symbol=@Ticker</CondtionClass>
<ConditionClass>
<Name>TargetPrice</Name><!--條件類ID=6-->
Price>@TargetPrice</CondtionClass>
</CondtionClasses>
<ActionClasses>
<ActionClass>
<Name>SendCellPhoneMsg</Name>
Send a message to cell phone of @subscriberId</ActionClass>
</ActionClasses>
</PreferenceClass></PreferenceClasses>
權(quán)利要求
1.一種用于擴(kuò)展應(yīng)用程序首選項(xiàng)類的系統(tǒng),其特征在于,包括一實(shí)例注冊(cè)表組件;第一應(yīng)用程序,包括在所述注冊(cè)表組件中注冊(cè)的一個(gè)或多個(gè)函數(shù);以及一擴(kuò)展組件,它從所述實(shí)例注冊(cè)表中讀取候選函數(shù),并且在第二應(yīng)用程序與第一應(yīng)用程序之間建立綁定,使得所述第二應(yīng)用程序可以使用所述第一應(yīng)用程序的函數(shù)。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述實(shí)例注冊(cè)表組件包括一用于存儲(chǔ)函數(shù)定義的定義注冊(cè)表和一用于存儲(chǔ)綁定數(shù)據(jù)的綁定注冊(cè)表。
3.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述函數(shù)提供條件。
4.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述函數(shù)提供事件。
5.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述函數(shù)提供存取器。
6.如權(quán)利要求1所述的系統(tǒng),其特征在于,候選函數(shù)只可用于綁定到特定應(yīng)用程序。
7.如權(quán)利要求2所述的系統(tǒng),其特征在于,所述綁定注冊(cè)表從一擴(kuò)展數(shù)據(jù)文件(EDF)接收函數(shù)綁定信息。
8.如權(quán)利要求1所述的系統(tǒng),其特征在于,在移除所述函數(shù)提供應(yīng)用程序后,斷開所述綁定。
9.一種用于擴(kuò)展條件常數(shù)的系統(tǒng),其特征在于,包括一輸入組件,用于接收一編程常數(shù);以及一附屬組件,用于從跨多個(gè)域存儲(chǔ)的數(shù)據(jù)確定所述常數(shù)值。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述常數(shù)是一階常數(shù)。
11.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述常數(shù)是N階常數(shù)。
12.一種用于擴(kuò)展應(yīng)用程序首選項(xiàng)類功能的方法,其特征在于,包括接收一擴(kuò)展數(shù)據(jù)文件(EDF),它包括有關(guān)候選函數(shù)綁定的信息;在一中央數(shù)據(jù)存儲(chǔ)中注冊(cè)一個(gè)或多個(gè)函數(shù)綁定;以及使用位于中央數(shù)據(jù)存儲(chǔ)中的綁定函數(shù)信息,將第一應(yīng)用程序的函數(shù)綁定到第二應(yīng)用程序。
13.如權(quán)利要求12所述的方法,其特征在于,還包括應(yīng)用接受邏輯以確定所述第二應(yīng)用程序是否接受所述綁定。
14.一種在其上存儲(chǔ)有用于執(zhí)行如權(quán)利要求12所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
15.一種卸載應(yīng)用程序的方法,其特征在于,包括從中央存儲(chǔ)位置移除所有應(yīng)用程序注冊(cè);移除程序組件;以及通知從屬的應(yīng)用程序。
16.如權(quán)利要求15所述的方法,其特征在于,所述中央存儲(chǔ)位置是一實(shí)例注冊(cè)表。
17.如權(quán)利要求16所述的方法,其特征在于,所述實(shí)例注冊(cè)表包括一定義注冊(cè)表和一綁定注冊(cè)表。
18.如權(quán)利要求17所述的方法,其特征在于,移除注冊(cè)包括在所述定義注冊(cè)表和所述綁定注冊(cè)表中移除注冊(cè)。
19.如權(quán)利要求15所述的方法,其特征在于,所述通知從屬應(yīng)用程序使從屬應(yīng)用程序?qū)⑺鼈兊囊蕾囆苑旁谝籒otAvaible狀態(tài)中。
20.一種在其上存儲(chǔ)有用于執(zhí)行如權(quán)利要求15所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
21.一種用于擴(kuò)展編程常數(shù)的方法,其特征在于,包括接收一編程常數(shù);以及通過跨應(yīng)用程序域搜索來解析所述常數(shù)的值。
22.如權(quán)利要求21所述的方法,其特征在于,所述常數(shù)是一階常數(shù)。
23.如權(quán)利要求21所述的方法,其特征在于,所述常數(shù)是N階常數(shù)。
24.一種在其上存儲(chǔ)有用于執(zhí)行如權(quán)利要求21所述的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)。
全文摘要
本系統(tǒng)和方法揭示一種用于個(gè)性化計(jì)算機(jī)功能的系統(tǒng)。為最終用戶提供容易地編寫豐富和復(fù)雜的首選項(xiàng)的工具,例如,通過使用多個(gè)簡單的如果-那么(IF-THEN)命題邏輯。首選項(xiàng)隨后被變換成查詢并且有效地在結(jié)構(gòu)化數(shù)據(jù)上執(zhí)行。滿足的首選項(xiàng)隨后執(zhí)行動(dòng)作,諸如提供通知或者在一個(gè)特定的文件夾中存儲(chǔ)數(shù)據(jù)。而且,按照本發(fā)明的一個(gè)方面,數(shù)據(jù)、邏輯、事件以及其它全部被系統(tǒng)化,從而能夠在應(yīng)用組件之間和跨應(yīng)用共享數(shù)據(jù)。
文檔編號(hào)G06F3/00GK1745364SQ200480003287
公開日2006年3月8日 申請(qǐng)日期2004年7月27日 優(yōu)先權(quán)日2003年10月24日
發(fā)明者H·耐特, R·H·格伯, C·T·門薩-安娜, S·帕西亞, V·H·柯利 申請(qǐng)人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
蓬溪县| 临桂县| 曲阳县| 辉南县| 临颍县| 临城县| 鞍山市| 通化县| 锡林郭勒盟| 普陀区| 子洲县| 宣武区| 闽侯县| 互助| 嘉峪关市| 西宁市| 泾阳县| 山阴县| 东海县| 桂阳县| 资溪县| 赤水市| 宝山区| 应城市| 龙岩市| 平邑县| 安新县| 荔浦县| 弥渡县| 且末县| 古浪县| 伊川县| 积石山| 马山县| 西吉县| 阿城市| 枞阳县| 松原市| 米易县| 如皋市| 河池市|