使用规则进行最终用户应用程序定制的制作方法

文档序号:6482812阅读:256来源:国知局
专利名称:使用规则进行最终用户应用程序定制的制作方法
技术领域
本发明涉及有助于应用程序定制的软件,更具体地,涉及一种有助于最终 用户定制应用程序的规则抽象架构。
(2)
背景技术
计算机和计算总是将用户世界分为两类知识渊博的"主教",他们懂 得如何将计算机用于复杂的方面,以编制程序和提供有价值的、丰富的行为;以及初学者用户,他们显得无能为力,缺乏简单或廉价的获取知识或 信息或教育的途径,以使计算机很好地服务于他们的需求。然而,在计算 方面己经发生了较大的突破,技术已经克服了获取途径上的这些障碍中的一些。
在大型机时代,计算机对于除了最大型的公司以外的所有人都太昂贵以
致难以承受。小型机以及之后的个人计算机(PCs)的出现,克服了价格障 碍,使计算机可以为小型公司和个人所使用。
在1980年代,程序员为了构建图形用户界面(GUI)应用程序而苦苦挣 扎,没有丰富和稳定的GUI,就无法为PC用户构建有价值的应用程序。 Visual Basic的革命、控件的使用以及基于事件的GUI结构使一大批应用程 序开发员可以容易地编制大型应用程序。这也建立了一个良性循环,使更 多的最终用户可以充分利用这些应用程序。
在1990年代,最终用户苦苦争取克服获取信息途径的缺乏。因特网和 网络的发展转变了这一空间,使几乎所有的有价值的信息通过浏览器提供 给任何人。然而,依然存在着大的障碍有待克服。
计算并不是个人的。PC中只有很少是真正"个人的"。本地磁盘上的 数据是个人的。但是机器的行为(它所做的代表了用户)在以百万计的用 户中接近于一致。即使拥有一台令人惊异的强大的通用计算机,普通用户 仍然视其为一个静态工具,作为通信终端很好用,作为搜索入口点很好用, 执行一些打包的畅销应用程序很好用,然而在其它方面不具备任何真正意 义上的"个人计算"。在目前应用程序中的个人化能力对可能的和想要的 来说仅仅是浅尝即止。
计算是手动的。考虑到大部分计算机最终用户的日常例行程序。PC收 集信息、响应通信、做决定并照此执行——启动通信或响应于通信、组织 信息、买卖货物、旅游等等。计算机已促进了人们之间的通信,并改善了 信息获取的途径。然而,PC几乎没有做什么来缓解最终用户在作决定并在 适当时候照此执行方面的责任。在商务领域,有用于较大组织的决定的决 策支持系统。软件仍然不能在众多日常的、却很重要的以及个人的决定上帮助普通PC用户。
计算没有上下文联系。计算机软件典型地提供任选的设置,这些设置相 当的静态且与用户实际环境无关(例如,"为什么我在公司和在家要有相同 的消息好友?")。
这样,用户仍然处于软件的"前工业时代",与日俱增地陷于手动信息 处理的统治中一一每天花费数小时于过滤、分类、搜索和反应于电子邮件、 文件和其它的个人数据。 -
最终用户软件应当个人化,明白最终用户的需求和喜好,以那些需求和 用户环境指导的方式运行。另外,计算机系统和软件应当为每个最终用户
提供一个个人执行助手,它每天24小时工作,收集和过滤最终用户感兴趣
的信息并对那些信息做出反应。
最有价值的一类最终用户计算活动涉及信息流和搜索,如确保最终用户 看见相关信息(例如,"如果学校由于坏天气而停课的话告诉我")、增 强具有个人化行为的个人间的通信(例如,"如果我不在办公室的时候我
妻子来电,则告诉她我何时回来")、确保重要信息不丢失(例如,"如 果有紧急的电子邮件,确保它会转发到我的移动设备上")以及自动化信
息管理(例如,"当收到新的照片,将它们根据它们的时间信息、GPS位 置以及其它相关的日历条目放置在正确的文件夹中并共享")。
实现这个功能的方法是通过允许最终用户对计算机的行为"编程"。然 而,传统的编程语言显然不是答案,原因在于,最终用户不是(也不可能 变成)一个受过训练的开发者。
所需要的是改进的机制,允许最终用户个人化操作系统和应用程序。
O)

发明内容
下文表述了本发明的简要内容,以提供本发明一些方面的基本理解。该 内容并不是本发明全面详尽的概述。它并不意图标识本发明的关键/重要元 素或者描述本发明的范围。它唯一的目的是以一种简化的形式表达本发明 的一些概念,作为之后表述的更为详细的说明的前序。
在此公开并请求其权利的本发明,在其一个方面,包括有助于应用程序的数据管理的架构。应用程序如今可以由最终用户为该最终用户个人化。 包含了一个有助于将应用程序生成的事件公开给最终用户的定制组件;及 一个允许最终用户创建一个或多个与事件相关联的规则的规则组件,该一 个或多个规则有助于提交与事件相关联的应用程序数据用于外部进程。由 于应用程序的每个支持规则的特征是由判定点定义的,所以判定点的事件/ 触发/改变可根据各种目的由最终用户来管理。由判定点公开的应用程序数 据可在外部进程并向修改该应用程序行为的应用程序返回结果。
应用程序的各种功能是支持规则的。最终用户则可以为那些功能创建规 则以进一步处理与那些功能相关联的数据。两种应用程序的定制被称为松
散绑定的(loosely bound)定制和紧密绑定的(tightly bound)定制。在松 散绑定的定制中,应用程序公开了一个拦截点,或"判定点",在该点处 最终用户可以附加定制规则。规则与判定点通过设置附件类型相关联。多 条不同的规则可以被附加至一个单独的使用相应附件类型的应用程序定制 判定点。应用程序并不"知道"附加的规则,而是在判定点项目上调用方 法,然后处理结果。方法调用导致在正确的规则上调用一个规则引擎。
在紧密绑定的定制中,不使用判定点。应用程序直接调用规则,这使得 对基于规则调用的应用程序,以及当规则引擎处理规则以向应用程序返回 定制结果时哪类规则被允许方面可以更好的控制。这样,紧密绑定的应用 程序通过给出一个文件系统查询,查找对应于该应用程序、用户、判定和 随规则而提供的输入的规则,为基于规则的判定和用户识别正确的规则。 不同于松散绑定的应用程序,无论何时判定点输入方法被调用程序所调用, 基于用户、判定、和输入的规则的选择都由规则平台决定。
在本发明的另一方面,提供了一个有助于应用程序学习最终用户的行 为,并以规则的形式捕捉该行为的学习组件。
为了实现前述的以及相关的方面,在此结合下面的描述和附图描述本发 明的某些示例性的方面。然而,这些方面仅指示了可以使用本发明的原理 的各种方法的一小部分,而本发明将包含所有这些方面和它们的等价物。 本发明的其它优点和新颖的特性通过下面的本发明的详细描述同时结合附图将变得清楚。
(4)


图1图示说明了根据本发明的一个有助于应用程序定制的系统。 图2图示说明了根据本发明的一个定制的应用程序与一个规则引擎间的 交互模型的方框图。
图3图示说明了项目类型和它们的规则架构关系的示图。
图4图示说明了根据本发明的、运行时间角度上的松散绑定的模5^的应
用程序定制的流程图。
图5图示说明了根据本发明的、运行时间角度上的紧密绑定的模型的方
法的流程图。
图6图示说明了根据本发明的、与判定点的实例化相关联的方法的流程图。
图7图示说明了根据本发明的、使用了一个学习组件的系统。 图8图示说明了用于执行所公开的架构的计算机的方框图。 图9图示说明了根据本发明的、示例性计算环境的方框图。
(5)
具体实施例方式
现在将参照附图对本发明进行描述,其中所使用的附图标记始终对应于 类似的元件。在下面的描述中,为了解释,提出了大量详细的细节以提供 本发明的彻底的理解。然而,显然本发明可以不用这些详细细节来实现。 在其它实施例中,方框表中示出些知名的结构和设备以有助于描述本发明。
如本发明所使用的,术语"组件"和"系统"指的是一个计算机相关的 实体,可以是硬件、硬件与软件的组合、软件,或执行中的软件中的任意 一种。例如,组件可以是,但不限于, 一个运行在处理器上的进程、 一个 处理器、 一个对象、 一个可执行程序、 一个执行线程、 一个程序,和/或一 台计算机。通过图示,无论一个运行在服务器上的应用程序还是服务器都 可以是一个组件。 一个或多个组件可以存在于一个进程和/或执行线程中, 并且一个组件可以定位在一台计算机和/或分布在两台或多台计算机之间。
如此处所使用的,术语"推断"或"推论" 一般指的是通过由事件和/或数据所捕捉的一组观测而推究或推断系统、环境,禾B/或用户状态的过程。 推论可以用于识别特定的环境或动作,或者例如,生成一个状态的概率分 布。推论可以是随机的一一即,基于数据和事件的考虑的、感兴趣的状态 的概率分布的计算。推论也可指用于由一组事件和/或数据构成更高等级的 事件的技术。这种推论导致了由一组观测的事件和/或储存的事件数据所得 的新事件或动作的构成,无论事件在很小的时间近似上是否相关,也无论 事件和数据是否来自一个或数个事件和数据源。 规则架构
本发明的规则架构是一个平台,倚靠该平台开发者可以构建以规则的形 式运行丰富的最终用户逻辑的应用程序。应用程序定制提供了松散绑定的 模型、紧密绑定的模型或者两者的选择,这些可以用于应用程序以支持数 据驱动的最终用户选择。应用程序可以公开一个或多个触发事件。如果应 用程序使用紧密绑定的模型,就可能不会有任何公开的触发事件一一只是 应用程序的逻辑流程中的一个位置,其中应用程序提供对一个或多个规则 的输入、得到结果,并处理那些结果。应用程序查询被选择的规则。在松 散绑定的模型中,应用程序本身提供规则触发事件(以被称为判定点的项 目的形式)作为规则引擎的输入。通过提供一个判定点,应用程序给与最 终用户使用规则来控制应用程序的决定的能力。规则引擎随即评估规则状 况并向应用程序返回那些状态评估为真的规则的详细结果。规则然后由规 则定制的应用程序来解释。
现在参照图l,图示说明了一个根据本发明的、有助于应用程序为数据 管理所做的定制的系统。系统100包括一个定制组件102,该组件有助于向
最终用户公开应用程序104中的应用程序生成事件。规则组件106允许最 终用户创建一个或多个规则与事件相关联,该一个或多个规则有助于提交 与事件相关联的应用程序数据用于外部进程。应用程序的各种功能是支持
规则的。然后最终用户可以为那些功能创建规则以进一步处理与那些功能 相关联的数据。应用程序的每个支持规则的特性是由判定点决定的,判定 点被包含作为定制组件102的一部分。这样,判定点的事件/触发/改变可根据各种目的由最终用户来管理。由判定点公开的应用程序数据可在外部进 程而向应用程序返回修改该应用程序的行为的结果。
现在参照图2,图示说明了根据本发明的、 一个定制的应用程序202与
一个规则引擎204间交互模型200的方框图。规则架构是一个平台,倚靠
该平台开发者可以构建以规则的形式运行丰富的最终用户逻辑的应用程 序。为了应用程序定制,应用程序本身提供规则触发事件206作为引擎204 的输入,规则引擎204评估规则状态,并向应用程序返回那些状态评估为 真的规则的详细结果208。规则然后由规则定制的应用程序来解释。进程边 界将外部进程(例如,应用程序202)与其中运行着规则引擎204的存储进 程分隔开。应用程序202跨过进程边界将事件提交至规则引擎204,引擎 204随即跨过边界返回结果,该结果由外部进程运行。
应用程序202于规则引擎204间进程边界的存在仅仅是一个实施选择, 如虚线所示。另一个实施选择可以是将规则引擎204嵌入到应用程序202 中,这样使得调用它不会导致进程转换。
规则引擎204支持应用程序定制。应用程序定制是用于支持数据驱动的 最终用户对应用程序中那些传统地相对被固定的选项设置的选择的模型。 例如,今天,大多数电子邮件写作程序允许用户指定一个用于外发邮件的 签名文件。应用程序定制的一个例子是使用规则允许用户根据电子邮件的 接收者设置用于外发邮件的签名文件。
规则平台有助于下面应用程序定制的模型中的一个或全部两个的使用 第一种模型称为松散绑定的,第二种模型称为紧密绑定的。
现在参照图3,图示说明了本发明的项目类型和它们的规则架构的关系
的示图。 一个最终用户逻辑"程序"是一个规则---组语句。规则是完
整的逻辑单元。每个规则是一个创作单元。注意规则的输入是一个数据项 目。规则是一种关于一个特定项目类型的项目的声明语句。作为基本模型 的扩展,非项目数据(瞬态数据或XML)可以被提供作为规则输入。规则 应用的项目取决于规则的部署。规则是可部署的最终用户逻辑的单元。规 则通过将其附加在一个项目范围(项目输入源或判定点)上来配置。这种关联作为规则组附件(RSA)记录在文件系统中。 一个RSA代表关联判定 点项目和规则项目间的连接。这些连接可以模型化既可作为物理上的、存 储的"链接",或者作为计算的"公共值关联"。任何一种情况,功能是 相同的——是为了从规则至判定点的连接而创建的。规则都是文件系统项 目。
输入的范围是任何类型的任何项目。输入范围被操作系统用于限制规则 评估的范围为一个具体的项目或文件夹,但通常不被单独的应用程序所使 用。在上图中的线上的标签显示了项目间关系的名称。规则组附件项目联 系着判定点和规则(以及输入范围,如果存在一个的话)。规则组项目包 含了与零或多个规则语句的关系。判定点项目使应用程序可以使用规则平
台。规则描述规则项目,包括约束、状态和结果。规则包含规则语句。规 则语句是具有"对输入,如果条件,则结果"形式的语句。对于应用程序
定制,结果由应用程序定义并由应用程序处理。规则组附件项目储存关于 判定点和规则间连接的信息。用户附加规则组中的规则,而应用程序提供 判定点的输入以返回结果。
现在参照图4,图示说明了根据本发明的、运行时间角度上的松散绑定 的模型的应用程序定制的流程图。然而,为了解释的简明,例如,以流程 图的形式在此显示的一个或多个方法,被显示并描述成一系列的动作,可 以了解和理解的是本发明并不限制于动作的次序,因为有些动作可以,根 据本发明,以不同的次序发生和/或于其它在此处显示和描述的动作同时发
生。例如,本领域的技术人员可以了解并理解方法可以选择地表示为一组 相互联系的状态或事件,如状态图。另外,并不是所有图示的动作都是实 现本发明的方法所必需的。
在400,应用程序在应用程序安装期间向操作系统注册一组判定点。判 定点由应用程序作为一种向规则引擎提交输入的机制创建。通过公开判定 点,应用程序给予最终用户通过规则控制应用程序决定的能力。输入数据 流向规则引擎(既可直接的也可通过判定点)以产生应用程序定制结果。 判定点只在松散绑定的应用程序定制中需要。在402,在应用程序的行为受到定制处公开一个应用程序判定点。在404,在每个判定点对象处调用一个 方法以处理最终用户在该判定点的定制。当应用程序代码碰到一个需要做 出判定的点,它就调用一个关于判定点对象(项目)的方法。这使规则引
擎评估合适的最终用户规则并返回所期望的结果。在406,方法向规则引擎 提交判定点规则。在408,规则引擎处理规则并向应用程序传回一个或多个 结果。应用程序随即以特定于应用程序的形式来处理结果。然后流程结束。
如图所示,对于松散绑定的应用程序定制,应用程序不知道规则。它简 单地调用一个关于判定点项目的方法,然后处理返回的结果。方法调用导 致在正确的规则上调用一个规则引擎。
现在参照图5,图示说明了根据本发明的、运行时间角度上的紧密绑定 的模型的方法的流程图。在500,应用程序为定制执行而选择规则。在502, 应用程序直接执行规则以产生应用程序定制的判定。在504,判定被送到规 则引擎。在506,规则引擎处理该判定,并向应用程序返回结果,由应用程 序以特定于应用程序的形式来处理结果。然后流程结束。
如图所示,紧密绑定的应用程序是直接调用规则的应用程序,这使得对 应用程序在哪些规则被调用,以及当规则引擎处理规则以向应用程序返回 定制结果时哪类规则被允许方面可以更好的控制。这种控制为紧密绑定的 应用程序加了更大的负担。具体的,紧密绑定的应用程序通过提交对与应 用程序和用户、判定、提供给规则的输入相对应的规则的查询,为基于规 则的判定和用户识别正确的规则。取代了使用判定点,应用程序可以直接 调用规则的执行方法,将输入项目和规则约束传给该方法。规则约束用于 识别应用于特定输入的规则的子集。
规则约束可以更准确地被视为规则签名。签名用于通过给其一个具有特 定输入的特定调用来过滤哪些规则运行。规则约束指定于两处在每个规 则上,以及在每个提交点上。不存在任何关于RSA的规则约束。
关于规则,规则约束用于执行以确保规则符合它所称符合的约束。每个 动作的输出与该规则约束所称的输出相吻合。这对输入来说也是相同的。 对规则的约束指示了它可以被附加到哪里。如果尝试不恰当的规则的附加则确认会失败。规则被附加于判定点。只有于判定点限制所一致的规则才 会被允许附加。
与此相反,对于松散绑定的应用程序,无论何时判定点输入方法被调用 程序所调用,基于用户、判定和输入的规则的选择都由平台实现。
一个或多个规则通过设置RSA与判定点相关联。 一个特定的RSA可以 比判定点提供的规则约束更具限制性。即,它可规定应用程序只能应用规
则于判定点可能调用的子集。具体地,它可以在任何下述方面限制规则 用户每个RSA与一个特定用户相关联,并且只为哪些由代表用户所
请求的判定所调用。
类型RSA可以规定附加的规则必须只应用于特定类型的输入。 输入范围RSA, 一般地,可以规定特定于应用程序的信息,这使得只
会为可能调用的子集而调用规则。在内建应用程序的情况下,允许项目库
中的改变的控制由用户通过规则来控制,下述输入范围的类型是所预期的 一个定义用于查询或改变事件的包含范围的项目;以及,如果应用程序支 持在一个单独的判定点(例如,新项目或修改的项目)上的复合操作,则
RSA可规定一个进一步的约束,该约束可以规定操作的子集。
输入内容RSA, 一般地,可以规定基于内容的过滤器(例如,只将该
规则应用于属于用户的输入项目)。在一个实施例中,这些过滤器可以从 附加的规则中推断而得。
注意的是基于这个原因,可以有多个RSA被附加到一个应用程序定制
判定点上,而平台不得不支持这一点。
现在参照图6,图示说明了根据本发明的、与判定点的实例化相关联的 方法的流程图。在600,方法是定义每个判定点。在602,应用程序提供一 个名称。这标识了最终用户规则应该被应用的判定上下文(或环境)。在 604,应用程序提供一个签名(或应用程序名称),该签名根据输入数据类 型和期望结果类型标识了判定点的拥有者。在一个实施例中,也支持瞬态 数据(例如,通过XML —扩展标记语言)以支持数据不存储在存储系统中 以及保存数据的总开销是不切实际的情况。在606,应用程序提供任何对于这类被该判定所允许的规则逻辑的约束。例如,有些情形被允许而有些不 被允许。在一个实施例中,规则约束的粒度可以限制为所有项目类型(即, 规则限制可以以项目类型的形式来表达)。然后流程结束。
当用特定类型的特定输入来调用判定点时,只有那些约束(用户、类型、
范围、内容过滤)符合该输入的RSA才会被调用。所有RSA的结果聚合 至一个单独的ResultSetElement (结果集元件RSE)。这个返回值包含所有 附加的规则的聚合结果(在冲突解决之后)。
应用程序应预期所有的结果对应于由判定点定义的规则约束并且对应 用程序来说区别每个匹配的RSA的结果是可能的。
根据一种最优化情况,规则可以允许有不同种类的规则,即有不同约束 的规则。这样的效果在于规则引擎动态地评估这些规则约束以决定应该应 用哪个规则。这也意味着"直接"执行接口需要一个规则约束。如果只要 求它其中具有相同约束的规则,则约束检查可以在规则附加和成员时实现。 然而,这降低了使用规则作为一种组织工具的灵活性。
在紧密绑定的应用程序中缺少RuleConstraint(规则约束)并不意味着不 存在最终用户定制。在紧密绑定的应用程序中规则可以像松散绑定的应用 程序中一样丰富。在紧密绑定的情况中所缺少的是通用规则用户接口 (UI) 以表示定制选项的能力。为了确定那些选项,它不需要任何供思考。可由 紧密绑定的应用程序实现它的用于规则构建的定制UI。用此方法,它可以 控制可能的情形和动作。
规则输入/输出(I/O)模型
规则引擎接收输入、根据该输入评估规则,以及返回所有符合的规则的 结果作为向调用应用程序的输出。为了支持应用程序定制和非项目数据, 扩充了 1/0模型以返回应用程序视图而非RSE。应用程序视图描述由规则 评估返回的结构化数据。扩充了动作模型以执行应用程序视图中包含的动 作。如果应用程序要求,RSE可以任选地被保存,但它不会成为定制应用 程序的扩展模式。
规则引擎的输入包含操作名称并,任选地,可以指向一个它涉及到的项目。输入可以理解为"动词",如同"创建的项目",它可具有一个指向 已被"创建"的项目的指针。例如,已知一个新的MP3文件在一个文件夹 中被创建,则项目的创建就是输入动作,而MP3则是该输入提交所引用的 项目。
另外为了支持引用项目作为向规则引擎的输入提交的部分,输入可能引
用XML数据。
DecisionPoint项目包含方法,例如,开发者使用DecisionPoint.Submit() 与DecisionPoint.SubmitAndWait()向规则引擎提交输入。每个DecisionPoint
定义了作为输入所接受的操作名称和(任选的)项目类型。
这样提交引用存在的类型的输入就容易理解了。当应用程序想要提交一
组非架构化的数据,有两种可能开发者定义一个使用一个定制架构的新 项目类型,其中这种项目类型具有适当的信息,并且这种类型的实例被提 交给规则引擎;另一可能是开发者使用XML支持提交数据。作为第一选项 的例子,考虑应用程序的开发者想要使用户能够围绕应用程序事件之一的 处理(非架构化的数据)创建规则。为了阐述,开发者想要创建一种类型, 并通过提交提供作为判定点的输入的类型。然后开发者相应地期望该类型 的方法之一就是最终用户想要采用的动作。例如,如果对象是一个苏打水 罐,则方法是Drink(饮用)、CrushAndDiscard(压碎并丢弃),以及SetOnTable
(放在桌上),那么情形就是如果"空"且"附近有垃圾箱",则 CrushAndDiscard (压碎并丢弃)。如果"不空",且"不渴",则SetOnTable
(放在桌上)。
DecisionPoints (判定点)可任选地要求"输入范围"。某些判定点可将 规则约束包含在文件系统的特定部分。这些判定点要求任何附加在其上的 规则包含一个与输入范围的关系。例如,上述假定的"创建的项目"判定 点可要求输入范围一一这样就指示了它要求任何附加在其上的规则提供一 个在文件系统中的、这些项目创建输入所来自的范围。
基于规则架构的逻辑构建块是集合。集合是由一个"范围"项目和一个 关系类型组成的。任何属于"范围"项目散发的具体类型的关系的对象的项目被认为是根源于范围项目的集合的一部分。
RuleSetAttchment项目包含用于同时评估整个集合的方法(例如,
在这些方法中,附加的输入范围内的项目由引擎作为输入考虑。项目就像 它们是独立提交的一样被评估。规则引擎并不为了评估目的特别对待集合。
每个对于DecisionPoint submit()方法或者RuleSetAttachment evaluate() 方法的调用将导致一个或多个附加的规则由规则引擎进行评估。这些评估 的结果在每一调用写入一个单独的RuleSetEvalution项目。
RuleSetEvalution项目有RuleResul伍lement的一个嵌套元素组。每个 RuleResultElements携带了描述结果必需的结果名称和结构化数据。这些结 果是特定于应用程序的;即,它们应当是可以被应用程序理解的,规则是 通过/为该应用程序而创建并向规则提交事件。在许多情况下, RuleSetEvalution中所携带的结果名称实际上可是一个完全限定的类别等级 (静态)CLR (公共语言运行库)的方法名称,并且结构化数据可对应于 该方法的参数。RuleResul伍lement类型包括一个能够接受该数据的execute() 方法,并且通过使用CLR反射,RuleResultElement类型通过适当参数调用 指定的方法。在一个实施例中,在输入项目和在规则定制应用程序的执行 环境中可用的、创建在库中的静态方法存在对于设置者/取得者方法的限制。
在另一实施例中,为每个输入提交至的判定点的附件生成一个新的 RuleSetEvalution项目。
Functionlnfo类型在嵌套的类型RuleResultElement和Action之间共享, 后者作为规则定义的一部分。
对于那些希望以XML格式接收结果的应用程序,提供了一个可选的、 可包含选择的XML数据的RuleResultElement形式。
现在参照图7,图示说明了根据本发明的、使用了一个学习组件702的 系统700。系统700包含有助于向最终用户公开应用程序104中应用程序生 成的事件的定制组件102。规则组件106允许最终用户创建一个或多个规则 以与事件相关联,该一个或多个规则有助于提交与事件相关联的应用程序数据108用于外部进程。应用程序的各种功能是支持规则的。随后最终用 户可以为那些功能创建规则以进一步操作与那些功能相关联的数据。应用 程序的每个支持规则的特性由一个判定点定义,这可以外部进程并向应用 程序返回修改该应用程序行为的结果。
本发明可使用各种基于人工智能的方案来实现本发明的各个方面。例 如,通过自动分类器系统和进程可有助于确定在何处放置判定点的过程。
分类器是一个函数,将输入属性矢量,X=(xl,x2,x3,x4》映射于输入属于某 一类的可信度,即f(x)-confidence(class)。这种分类可使用一个概率的和/ 或基于统计学的分析(例如,将分析工具和成本计算在内)以预测或推断 用户希望自动实现的动作。
支持向量机(SVM)是一个可以使用的分类器的例子。SVM通过在可 能输入的空间中寻找一个超曲面而运行,该超曲面试着从非触发事件中分 离出触发标准。直观地,这是分类对于测试相近的数据是正确的,但对于 训练数据则不同。其它直接的和非直接的模型分类逼近包括,例如,朴素 贝叶斯(naiVeBeyes)、贝叶斯型网络、决策树,以及提供不同的可使用 的独立性模式的概率分类模型。此处使用的分类还包括用于开发优先级模 型的统计回归。
正如可以从说明书容易理解的,本发明可使用显性训练的分类器(例如, 通过通用训练数据)也可使用隐性训练的分类器(例如,通过观察用户行 为、接受外来信息)。例如,SVM通过分类器构造器和特性选择模块内的 学习或训练情况来配置。这样,分类器可用于自动实现一些功能,包括但 不限于基于特定最终用户或将定制的应用程序来确定判定点的位置、根据 判定点放置的最终用户历史记录来确定在何处放置判定点,以及根据应用 程序的类型所使用的判定点。分类器可以用于为松散绑定的模型确定将哪 个规则附加至判定点。
在一个更健壮的实施例中,分类器根据最终用户首选项和过去的定制为 最终用户实现完整的终端至终端应用程序定制过程。另外,分类器可用于 根据给定最终用户确定何时使用应用程序定制的松散绑定的或紧密绑定的模型。
现在参照图8,图示说明了用于执行所公开的结构的计算机的方框图。 为了提供本发明各个方面额外的环境,图8和下面的讨论将提供一个简明
的、概括的合适的计算环境800的描述,该环境中可实现本发明的各个方
面。虽然本发明已描述在可运行在一台或多台计算机上的计算机可执行指 令的一般上下文中,本领域的技术人员能理解本发明可用其它程序模块和/ 或硬件与软件的组合来实现。 —
一般地,程序模块包括实现特定任务或实现特定抽象数据类型的例程、 程序、组件、数据结构等。另外,本领域技术人员可以理解创造性方法可 以用其它计算机系统配置来实现,包括单处理器或多处理器计算机系统、 小型机、大型机,以及个人计算机、手持计算设备、基于微处理器的或可 编程的消费电子产品,以及类似,这些中的每一个都可以有效地与一个或 多个关联设备耦合。
本发明的图示方面也可实施于分布式计算环境,在该环境中某些任务是 由通过通信网络连接的远程处理设备实现的。在一个分布式计算环境中, 程序模块既可位于本地存储设备中也可位于远程存储设备中。
计算机通常包括多种计算机可读媒体。计算机可读媒体可以是任何计 算机所接受的可用媒体,包括易失性的和非易失性的媒体、可移动的和不 可移动的媒体。作为例子,但非限制,计算机可读媒体可包含计算机储存媒 体或通信媒体。计算机储存媒体包括以任何方法和技术实现来存储诸如计算机 可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性、可移
动和不可移动媒体。计算机储存媒体包括,但不限于RAM、 ROM、 EEPROM、 闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、 磁带盒、磁带、磁盘储存或其它磁储存设备,或者能够用来存储所要求的信息 并能够由计算机访问的任何其它媒体。
通信媒体通常在载波或其它传输机制等已调制数据信号中具体化计算机 可读指令、数据结构、程序模块或其它数据,并且包括任何信息递送媒体。术 语"已调制数据信号"指其一个或多个特征以在信号中编码信息的方式而设置 或改变的信号。作为例子,但非限制,通信媒体包括有线媒体,如有线网络或直接线路连接,以及无线媒体,如声学、RF、红外和其它无线媒体。以上各种 组合也应该被包括在计算机可读媒体的范围之内。
再次参照图8,图示说明了一个用于实现本发明的各方面的示例性的环境
800,环境800包括计算机802,计算机802包括处理单元804、系统存储器806 以及系统总线808。系统总线808耦合着系统组件,包括但不限于,将系统存 储器806连接至处理单元804。处理单元804可以是任何一种可购买到的处理 器。双微处理器和其它多处理器结构也可用作处理单元804。
系统总线808可以是几种总线结构中的任意一种,其可进一步互联至存储 器总线(通过或不通过存储控制器)、外围总线,以及使用任何可购买到总线 结构的局部总线。系统存储器806包括只读存储器(ROM) 810和随机存取存 储器(RAM) 812。基本输入/输出系统(BIOS)包含如在启动时帮助在计算 机802中的元件之间传输信息的基本例程,储存在非易失存储器810中,如 ROM、 EPROM、 EEPROM。 RAM 812还可包括高速RAM如用于缓存数据的 静态RAM。
计算机802进一步包括内部硬盘驱动器(HDD)814(例如,EIDE、 SATA), 该内部硬盘驱动器814还可配置在合适的底盘(未示出)中作为外部使用,磁 软盘驱动器(FDD) 816 (例如,读取或写入可擦除的磁盘818),以及光学驱 动器820 (例如,读取CD-ROM盘822或,读取或写入其它高容量光学媒体如 DVD)。硬盘驱动器814、磁盘驱动器816和光学驱动器820可分别通过硬盘 驱动器接口 824、磁盘驱动器接口 826和光学驱动器接口 828连接至系统总线 808。用于外部驱动器实施例的接口 824至少包括通用串行接口 (USB)和 IEEE1394接口技术中的一个或两个。
驱动器和它们所关联的计算机可读媒体提供数据、数据结构、计算机可读 指令等的非易失性存储。对于计算机802,驱动器和媒体容纳了任何合适的数 字格式的数据的存储。虽然上述计算机可读媒体提到HDD、可擦除磁盘,以 及可擦除光学媒体如CD或DVD,本领域的技术人员可以理解其它类型的可 被计算机读取的媒体如ZIP驱动器、磁带盒、闪存卡、盒(catridge),及其 类似也可用于示例性的操作环境,另外,任何这类媒体可包含实现本发明的方 法的计算机可读指令。许多程序模块可存储于驱动器和RAM 812中,包括操作系统830、 一个或 多个应用程序832、其它程序模块834和程序数据836。所有或部分操作系统、 应用程序、模块,和/或数据也可缓存在RAM812中。
可理解的是本发明可用各种可购买到的操作系统或操作系统的组合来实现。
用户可以通过一个或多个有线/无线输入设备,如键盘838和定位设备如鼠 标840,来输入命令和信息到计算机802。其它输入设备(未示出)可包括话 筒、IR远程控制器、操纵杆、游戏手柄、手写笔、触摸屏等等。这些和其它输 入设备经常通过耦合到系统总线808的输入设备接口 842连接到处理单元804, 但是也可以由其它接口和总线结构,如并行端口、 IEEE1394串行接口、游戏 端口、 USB端口、 IR接口等连接。
监视器844或其它类型显示设备也通过接口,如视频接口 846连接到系统 总线808。除了监视器844以外,计算机通常还可包括其它外围输入设备(未 示出),如扬声器、打印机等。
计算机802可以使用到一个或多个远程计算机(如远程计算机848)的逻 辑连接在网络环境中操作。远程计算机848可以是个人计算机、服务器、路由 器、网络PC、对等设备或其它公共网络结点,并且通常包括许多或所有关于 计算机802所描述的元件,尽管为了简单,仅仅示出了存储器储存设备850。 描述的逻辑连接包括局域网(LAN) 852和/或较大的网络,例如广域网(WAN) 854。这样的LAN和WAN网络环境普遍存在于办公室以及企业,并有助于企 业范围计算机网络,如内联网,所有这些网络可连接至全球通信网络如因特网 中。
当在LAN网络环境中使用时,计算机802通过网络接口或适配器856连 接到局域网852。适配器856可有助于与LAN 852的有线或无线通信,LAN 852 还可包括无线接入点分布在其上用于与无线适配器856的通信。当在WAN网 络环境中使用时,计算机802通常包括调制解调器858,或连接至LAN上的 通信服务器,或通过WAN 854 (例如因特网)建立通信的其它装置。调制解 调器858可以是内置或者外置的、有线的或无线的设备,它可以通过串行输入 接口 842连接到系统总线808。在网络环境中,相对于计算机802所描述的程序模块或其部分可以存储在远程存储器储存设备850中。将会明白,示出的网 络连接是示例性的,并且可以使用在计算机之间建立通信链路的其它手段。
计算机802可用于与任何无线设备或有效地布置在无线通信中的实体进
行通信,例如打印机、扫描仪、桌上和/或便携式计算机、便携式数据助理、 通信卫星、任何与无线可检测标签(例如,信息站、新闻台、休息室)相
关联的设备或位置,以及电话。这至少包括Wi-Fi和蓝牙TM无线技术。这
样,通信可以是一预定义的结构如在至少两个设备间使用传统网络或仅仅 是特别的通信。
Wi-Fi,或无线高保真,允许从家中的睡椅、旅馆房间中的床或办公地 点的会议室无线连接至因特网。Wi-Fi是一种像移动电话般的无线技术,它 使得这种设备,例如计算机,能在室内或室外一在基站范围内的任何地方 一发送和接收数据。Wi-Fi网络使用称为IEEE802.il (a、 b、 g等)的无线 电技术以提供安全、可靠、快速的无线连接。Wi-Fi网络可用于将计算机互 相连接、连接至因特网,以及连接至(使用IEEE802.3或以太网的)无线 网络。Wi-Fi网络运行于无需许可证的2.4GHz和5GHz的无线电频带,具 有llMbps (802.11a)或54MBPS (802.11b)的数据传输率或者通过包含 两种频带(双频带)的产品,因此网络可提供类似于适用于许多办公室的 基础的10BaseT有线以太网实际性能。
现在参照图9,图示说明了根据本发明的、示例性计算环境900的示意 方框图。系统900包括一个或多个客户端902。客户端902可以是硬件和/ 或软件(例如,线程、进程、计算设备)。客户端902可以通过例如使用 本发明来放置cookie和/或关联的环境信息。系统900还包括一个或多个服 务器904。服务器904也可以是硬件和/或软件(例如,线程、进程、计算 设备)。服务器904可以通过例如使用本发明来放置线程以实现转化。在 客户端卯2和服务器904间的一个可能的通信可以以数据包的形式适用于 在两个或多个计算机进程中传送。例如,.数据包可包含cookie和/或关联的 环境信息。系统900包括一个可用于有助客户端902和服务器卯4间通信 的通信框架906 (例如,全球通信网络如因特网)。可通过连线(包括光纤)和/或无线技术有助于通信。客户端902有效地
连接至一个或多个可用于存储客户端902的本地信息(例如,cookie和/或关 联的环境信息)的客户端数据存储908。类似地,服务器904有效地连接至一 个或多个可用于存储服务器904的本地信息的服务器数据存储910。
以上所述包含了本发明的例子。当然,不可能为了描述本发明而描述出每 一个可能的组件或方法的组合,但本领域的普通技术人员可理解本发明的许多 进一步的组合和变换时可能的。相应地,本发明将包括所有这些属于附加的权 利要求的精神和范围的选择、修改和变化。另外,就用在详细的说明书或权利 要求书中的术语"包括(includes)"而言,该术语意为一种类似于术语"包 含(comprising)"的情形,当作为权利要求中所惯用的词时使用"包含 (comprising),,。
权利要求
1.一种有助于应用程序的数据管理的系统,包括有助于向最终用户公开应用程序生成的事件的定制组件;以及允许最终用户创建一个或多个规则以处理事件的规则组件,该一个或多个规则有助于提交与该事件相关联的应用程序数据用于处理。
2. 如权利要求l所述的系统,其特征在于,所述事件与基于规则的判 定点相关联。
3. 如权利要求l所述的系统,其特征在于,所述应用程序数据至少 由外部和内部之一处理,以向应用程序返回修改该应用程序的行为的结果。
4. 如权利要求l所述的系统,其特征在于,所述最终用户创建显式规 则,定义如何处理事件以及定制应用程序。
5. 如权利要求l所述的系统,其特征在于,其特征在于,还包括有助于应用程序学习最终用户行为,并以规则的形式捕捉该行为的学习组件。
6. 如权利要求l所述的系统,其特征在于,所述最终用户可显式地修 改一个或多个规则。
7. 如权利要求l所述的系统,其特征在于,所述应用程序公开是判定 点的项目,最终用户可以在该判定点定制应用程序的行为。
8. 如权利要求7所述的系统,其特征在于,所述应用程序公开了标识 了一个或多个规则所应用于的判定的上下文的名称。
9. 如权利要求7所述的系统,其特征在于,所述应用程序公开了描述 输入数据类型和期望结果类型的签名。
10. 如权利要求7所述的系统,其特征在于,所述判定点在应用程序 安装时被注册。
11. 如权利要求1所述的系统,其特征在于,所述定制组件有助于选 择松散绑定的模型和紧密绑定的模型之一用于应用程序定制。
12. 如权利要求1所述的系统,其特征在于,所述紧密绑定的的应用 程序选择一个或多个由最终用户创建的规则的子集,并直接执行该子集以 产生一个定制判定。
13. 如权利要求1所述的系统,其特征在于,所述应用程序公开判定 点,该判定点提供识别将要作出的判定的性质的名称、识别所属应用程序 的应用程序名称,以及识别对判定点允许的规则类型的规则约束。
14. 一种在其上存有用于实现权利要求1所述的系统的计算机可执行 指令的计算机可读媒体。
15. —种在其上存有权利要求l所述的组件的计算机可读媒体。
16. —种使用权利要求1所述的系统的计算机。
17. —种有助于应用程序的数据管理的系统,包括通过向最终用户公开应用程序生成的判定点有助于由最终用户实现的应用程序的定制的定制组件;以及有助于最终用户通过创建一个或多个规则以与判定点相关联的规则组 件,该一个或多个规则有助于提交与判定点相关联的应用程序数据用于外 部进程。
18. 如权利要求17所述的系统,其特征在于,所述最终用户可直接修 改一个或多个规则。
19. 如权利要求17所述的系统,其特征在于,所述应用程序公开了标 识了一个或多个规则所应用于的判定点的上下文的名称,以及描述输入数 据类型和期望结果类型的签名。
20. 如权利要求17所述的系统,其特征在于,所述应用程序直接执行 一个或多个规则以产生定制判定。
21. 如权利要求17所述的系统,其特征在于,所述应用程序根据对一 个或多个正确的对应于该应用程序的规则集的查询识别一个或多个正确的 规则。
22. 如权利要求21所述的系统,其特征在于,所述査询对应于应用程 序、用户、判定,以及提供给一个或多个规则的输入。
23. 如权利要求21所述的系统,其特征在于,所述判定点与被调用应 用程序所调用的判定点输入方法相关联。
24. 如权利要求17所述的系统,其特征在于,所述规则组件有助于规则约束与判定点相关联,该规则约束过滤哪些规则用于给定的调用和特定 的输入。
25. —种具有用于实现一种有助于最终应用程序的最终用户定制方法 的计算机可执行指令的计算机可读媒体,该方法包括公开应用程序的应用程序生成的判定点; 创建一个或多个基于判定点的数据工作的规则; 关联所述一个或多个规则与所述判定点;以及 处理所述一个或多个规则以公开所述数据用于外部处理。
26. 如权利要求25所述的方法,其特征在于,还包括直接执行一个或 多个规则以产生定制判定。
27. 如权利要求25所述的方法,其特征在于,还包括查询一个或多个 正确的、对应于应用程序的规则。
28. 如权利要求25所述的方法,其特征在于,所述最终用户显式修改 一个或多个规则。
29. 如权利要求25所述的方法,其特征在于,还包括调用被调用应用 程序所调用的判定点输入方法。
30. 如权利要求25所述的方法,其特征在于,还包括通过处理与判定 点相关联的规则约束过滤哪些规则用于给定的调用。
31. 如权利要求25所述的方法,其特征在于,还包括公开标识了一个 或多个规则所应用于的判定点的上下文的名称,以及描述输入数据类型和 期望结果类型的签名。
32. 如权利要求25的所述方法,其特征在于,还包括将规则约束与判 定点和一个或多个规则相关联。
33. 如权利要求25的所述方法,其特征在于,还包括以下动作 直接调用关于一个或多个规则的执行方法; 传送是一个或多个规则的输入的输入项目;以及 传送实施输入和输出的规则约束。
34. —种有助于应用程序的最终用户定制的方法,包括公开应用程序的应用程序生成的判定点; 由最终用户创建一个或多个用于应用程序的数据的规则; 在第一模式,附加一个或多个规则至判定点并调用关于判定点的项目的方法以公开用于处理的数据;以及在第二模式,为应用程序识别一个或多个规则,并直接处理该正确的一个或多个规则以公开用于处理的数据。
35. 如权利要求34所述的方法,其特征在于,还包括通过处理与判定 点相关的规则约束过滤一个或多个规则中的哪些用于给定的调用。
36. 如权利要求34所述的方法,其特征在于,还包括同时将第一模式 和第二模式用于应用程序的最终用户定制。
全文摘要
有助于应用程序的数据管理,使应用程序可以由最终用户为该最终用户个人化的规则架构。包括一个有助于向最终用户公开应用程序生成的事件的定制组件。规则组件允许最终用户创建一个或多个规则以处理事件,该一个或多个规则有助于提交与事件相关联的应用程序数据以用于外部和内部进程。
文档编号G06F17/00GK101292236SQ200480011768
公开日2008年10月22日 申请日期2004年7月30日 优先权日2004年4月30日
发明者H·耐特, P·瑟沙德瑞, R·H·格伯, S·E·多西克, S·帕西亚, V·H·科雷 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1