自动化数据组织的制作方法

文档序号:6554389阅读:212来源:国知局
专利名称:自动化数据组织的制作方法
相关申请的交叉引用本发明要求于2005年2月28日提交名为“AUTOMATED DATAORGANIZATION(自动化数据组织)”的美国专利临时申请第60/657,519号符合35U.S.C.§119(e)的优先权。前述申请的整体,包括对其的所有附件或展示,通过引用包含在此。
背景技术
现代计算系统包括在任何一个时刻上活动的处于各个执行状态中的众多的软件进程。这些进程可由操作系统启动,可以是开机时或启动用户应用程序之后启动的监视或服务进程,或者可以是用户应用程序本身。即使不是大多数这些进程或这些进程的特征,也有众多进程及其特征超出用户能够直接控制的能力。从而,如果要完全访问由这些进程提供的功能,此类访问通常必须由另一软件进程完成。
软件应用程序代表最终用户管理信息。运行在计算系统上的软件应用程序或进程的数量一般是系统必须处理的数据量以及访问系统以执行的任务的数量的函数。这些计算职责的最低效部分是需要与人交互的那些。尽管机器功能日益强大,最终用户一般必须手动处理大量计算机化的信息。
通用计算系统的一个主要组件是诸如硬盘驱动器的存储设备,它一般被用于对诸如数据文件和可执行程序等电子信息的持久存储。为了组织电子信息,使其能够以可用的形式被定位和检索,可以使用文件系统。存在众多文件系统,但它们一般都提供对存储设备上的信息的格式和位置的概念组织层。
由文件系统提供的概念组织层可以由如操作系统的那些软件进程来使用,以创建、访问、检索、删除或以其它方式管理存储在存储设备上的信息。为了保护文件系统的完整性,并确保对文件系统的格式的一致性,一般而言,仅有例如操作系统的输入-输出进程等某些特权软件进程被允许直接访问文件系统。访问文件系统的应用程序和用户一般必须通过由操作系统提供的功能来访问文件系统。这些功能一般向最终用户隐藏,后者甚至不知晓这些功能的存在。通常,此类受限访问导致用户不能够完全开发文件系统的特性以使计算任务更容易,例如,通过使用文件系统的属性来自动进行诸如文件组织或定位等任务。
一般而言,最终用户根据信息生存周期在他/她的计算机上管理信息。在生存周期期间,最终用户一般创建信息或从某些源中获取信息,然后信息被存储在文件系统中。在某些点上,最终用户检索信息并基于该信息采取措施——该周期可重复多次。目前的系统不允许最终用户以对最终用户的需求有效并个性化的方式自动执行该生存周期的一部分。

发明内容
以下呈现简要的概述,以提供基本的理解。该概述不是宽泛的概观。它既不旨在标识本发明的关键/重要的元素,也不旨在描绘范围。它唯一的目的是以简化的形式呈现某些概念,作为之后呈现的更详细描述的序言。另外,此处所用的章节标题仅用于提供方便,而不应被理解为以任何方式限制。
最终用户程序设计模块为计算系统的最终用户提供标识可被用作一个或多个用户定义的动作的触发器的事件的能力。通过使用该模块,最终用户可以定义在所选事件发生之后自动执行的数据处理任务。这些数据处理任务可包括文件组织和对文件进行属性和内容的过滤等。这样的任务执行可由计算系统的一个或多个组件执行。从而,通过使用最终用户程序设计模块,用户可生成协助数据存储和组织的定制最终用户程序。
可以从一个或多个基础类型中创建使用最终用户程序设计模块创建的最终用户程序,该基础类型可被结合来形成可被用于执行任务的复杂实体。基础类型还可与其它组件结合来执行更复杂的任务。可由预选的事件自动触发将被执行的动作,而无需最终用户在任务被执行时来启动动作或与计算系统交互。从而,用户通过利用前述的基础类型可以使得数据可被自动过滤并被存储在所期望的位置中,而不必被迫审阅这样的数据并作出关于何处存储这样的数据的决定。可以在事件(诸如,数据接收)发生之后,自动采取动作。在一个示例中,用户可以指定,每次一从特定个人中接收到电子邮件消息,就调用即时消息通信应用程序,并将即时消息传递给特定联系人。因此,可认识到,通过利用基础类型(或基础类型的结合),指定的动作可以跨不同的应用程序发生。在另一示例中,由用户定义的动作可以由来自最终用户的命令显式地调用。
为有助于可用性,最终用户程序设计系统可与文件系统集成来提供对存储在计算系统上的信息的统一接口。最终用户程序设计模块与文件系统之间的集成为最终用户提供了定义在存储的数据上所采用的规则和动作的能力,其中可以随用户交互,或无需用户交互来在数据上应用规则和采取动作。该类型的最终用户程序设计系统可以向最终用户提供使用底层文件系统的功能来管理数据的能力,底层文件系统的功能以其它方式隐藏而最终用户对此被禁止访问。
所揭示和描述的组件和方法包括此后在权利要求书中描述和特别指出的特征。以下描述和附图详细描述了某些说明性的方面。然而,这些方面仅指示可在其中实现所揭示和描述的组件和方法的多种方式中的少数。所揭示和描述的组件和方法的特定实现可包括某些、众多或所有这样的组件、方法以及其等效实现方式。通过结合附图阅读以下详细描述,对此处所呈现的特定实现和示例的变化将是显而易见的。


图1是最终用户程序设计系统的系统框图。
图2是最终用户处理系统的系统框图。
图3是规则模式的示意图。
图4是具有集成的文件系统的最终用户程序设计系统的系统框图。
图5是具有集成的文件系统的最终用户程序设计系统的系统框图。
图6是具有集成的文件系统的最终用户程序设计系统的系统框图。
图7是具有集成的文件系统的最终用户程序设计系统的系统框图。
图8是可以结合此处揭示和描述的组件使用的一般处理方法的流程图。
图9是可以结合此处揭示和描述的组件使用的一般处理方法的流程图。
图10是信息生存周期的流程图。
图11是示例性连网环境的系统框图。
图12是示例性操作环境的系统框图。
具体实施例方式
如在本申请中所用,术语“组件”、“系统”、“模块”等指的是计算机相关的实体,诸如硬件、软件(例如,执行中的软件)和/或固件。例如,组件可以是,运行在处理器上的进程、处理器、对象、可执行代码、程序和/或计算机。同样,运行在服务器上的应用程序和服务器本身都可以是组件。一个或多个组件可以驻留在进程内,且组件可以位于一台计算机上和/或分布在两台或多台计算机之间。
此处参考附图描述了所揭示的组件和方法,贯穿附图,其中相同的参考标号指的是相同的元素。在以下描述中,为说明起见,描述了众多特定细节以提供对所揭示的主体的彻底的理解。然而,显然,在特定的实现中这些特定细节中的某些可以被省略,或与其它细节相结合。在其它的实例中,以框图的形式示出某些结构和设备以便于描述。另外,尽管所述的特定实例可以使用与客户机/服务器体系结构一致的术语,甚至可以是客户机/服务器实现的示例,但是本领域的技术人员可以理解,客户机和服务器的角色可以逆转,所揭示和描述的组件和方法不限于客户机/服务器体系结构,而可以容易地适用于其它体系结构,尤其包括对等(P2P)体系结构,而不背离此处揭示和描述的组件和方法的精神或范围。而且,应该注意,尽管此处所呈现的特定示例包括或引用特定组件,但是此处揭示和描述的组件和方法的实现不必限于那些特定组件,且也可以使用在其它上下文中。
根据此后所描述的本发明的一个或多个方面,可使用基于人工智能的系统(例如,显式和/或隐式训练的分类器)结合用于执行推断和/或概率性判断和/或基于统计的判断。如此处所用,术语“推断”一般指的是从通过事件和/或数据捕捉到的一组观察值中推出或推断系统、环境和/或用户的状态的过程。推断例如可以被用来标识具体的上下文或动作,或者可以生成状态上的概率分布。推断可以是概率性的,即,基于对数据和事件的考虑进行对所关心的状态上的概率分布的计算。推断也可以指的是用于从一组事件和/或数据中组成更高级的事件的方法。这样的推断导致从一组观察到的事件和/或存储的事件数据中构造出新的事件或动作,而不论原先的事件是否在时间上紧密相关,也不论原先的事件和数据是来自一个还是若干个事件和数据源。可以使用各种分类方案和/或系统例如,例如,支持向量机、神经网络、专家系统、贝叶斯置信网络、模糊逻辑、数据融合引擎等,用于执行结合此处揭示和描述的组件和方法的自动和/或推断出的动作。
图1是最终用户程序设计系统100的系统框图。最终用户程序设计系统100包括操作平台110,后者为最终用户程序设计系统100提供处理环境。在该上下文中,操作平台110可以包括硬件以及软件组件。具体地,操作平台110可以是个人计算机、工作站或服务器的操作系统。事件120可以由操作平台110创建,其中事件120可以用作为指示正在执行或已经执行处理任务的指示器。诸如事件120等事件可以由其它计算组件检测,并可以被用为启动预定义计算任务执行的触发设备。
最终用户程序设计(“EUP”)模块130可提供可由最终用户操作的组件,以定义诸如用户定义的动作140等在事件120出现之后采取的动作。应该注意,用户定义的动作140可以是将要执行的单个或一组任务。EUP模块130可以提供对系统功能的接口,后者可以手动地操作,或之前仅可由其它软件组件访问,诸如但不限于,操作系统或服务组件。
在操作中,最终用户访问EUP模块130以标识可以被用来触发用户定义动作的事件,诸如事件120。最终用户也可以定义用于想要系统在发生所标识的事件之后自动执行的一个或一组动作。于是,事件绑定至用户定义的动作——换言之,在事件120发生之后,操作平台执行用户定义的动作。
例如,最终用户可以将从特定个人接收电子邮件消息标识为触发事件。最终用户然后可以创建动作,使得接收这样的电子邮件消息之后,将消息传送给定义的邮箱文件夹,将验证接收该消息的回复发送给发送者,从文件服务器检索文档并在适当的程序中开启该文档,发出听得到的警报声以通知用户文档已经在计算机上了。可以无需用户干涉而通过利用系统100自动执行这些步骤。
图2是最终用户处理系统200的系统框图。最终用户处理系统200包括可为人类用户提供对系统访问的用户界面210。用户界面210可以是任何合适的人机界面,诸如图形用户界面、命令行界面或基于网络的界面等,且可以被耦合至可包含硬件及软件组件的操作平台220。用户界面220也可被连接至事件处理器230和规则数据存储240,其中事件处理程序230可以检测事件245的发生并访问处理子系统250。
操作中,用户界面210向用户提供对事件处理程序230和规则数据存储240的访问,最终用户可以标识事件将被用为触发事件,并引起该事件与用户定义动作的绑定。用户定义的动作然后反过来又可以存储在规则数据存储240中。操作平台220创建由事件处理程序230检测的事件245,事件处理程序230可访问规则数据存储240以确定是否有用户定义的动作被绑定至所检测到的事件。如果是,事件处理程序230访问处理子系统250以指导用户定义动作的执行。
可以根据规则代数制定在最终用户定义任务的创建和执行过程中应用的规则。可被使用的适当的规则代数的细节可以根据EUP模块的特定实现而有很大差异。将在以下更详细地呈现和描述一个示例性的规则代数。示例性的规则代数可以包含可被集成来形成规则平台的各种逻辑组件。这些组件之一是可以被用为其它术语和表达式的构件块的基本术语。从其它术语或表达式构造的术语和表达式本身可以被用作创建更复杂术语或表达式的构件块。以这种方式,可以创建将在最终用户定义任务执行过程中使用的愈加复杂的规则。
属性(T)可以描述最终用户类型T的属性。最终用户可使用一个或多个属性来描述另一个逻辑组件,诸如过滤器或动作。属性可以是最终用户类型T的某些通用描述符。当应用于不同类型时,诸如T或T-prime,可以使用同一描述符。以这种方式,属性(T)和属性(T-prime)均可被用作为描述符,并可以是不同的组件。具有输入项类型T和输出项类型O的规则可以被定义为类型O的属性优于类型T的属性。
过滤器(T)可以是能被用为类型T的项上的过滤器的一个布尔函数。具体地,过滤器(T)可以是返回布尔类型作为执行该规则执行处理结果的规则。被应用于项集合的过滤器(T)规则可以通过检查随在集合中单个项上执行过滤器(T)之后返回的布尔类型的值来过滤不满足该规则条件的项。满足过滤器(T)规则的条件的项可以提示让所应用的过滤器(T)规则为所返回的布尔类型返回值真。
以类似的方式,不满足所应用的过滤器(T)规则的条件的项可以提示让过滤器(T)规则为所返回的布尔类型返回值假。过滤器(T)规则可以被迭代地应用于集合中的每一项,以获取或者满足或则不满足所应用的过滤器(T)规则的条件的项的子集。以这种方式,可以创建包含性或排他性的子集。包含性的子集可以含有满足所应用的过滤器(T)规则的条件的项,这些项提示返回布尔值真,导致这些项被描述为被包含。排他性子集可以含有不满足所应用的过滤器(T)规则的项,这些项提示返回布尔值假,导致这些项被描述为被排除。这两个子集中的任一个都可以在进一步处理中使用。
动作(T)可被创建作为类型T的项的方法,其中该方法可以具有创建结果的某些所期望的副作用。一般,动作(T)可使用或要求其它参数。具有输入类型T并输出闭集的规则可以在类型T上的项定义动作。集合(T)是类型T的项的分组。
事件(T)可以被用于定义所关注的某些发生事件,且一般与数据项相关联,例如,类型T的事件数据。事件(T)可以被用于定义简单事件或可被用为构件块来通过使用二元代数运算来创建更复杂的事件。当与过滤器(T)结合时,事件(T)可以被用于创建导出事件(T)。以代数术语表示,导出事件(T)=事件(T)+过滤器(T).
一般而言,导出事件可以通过将过滤器应用于事件来创建。也可使用代数原理来形成其它构件。例如,可以如下结合互补项类型(例如,均为同一父类型的子类型的两种类型)上的两个过滤器过滤器(T)=过滤器1(T_子类型_1)Union(并)过滤器2(T_子类型_2).
批处理可以定义要由程序模块执行的面向集合的任务。批处理的语义可以被定义来引起在集合中每一项上执行某些预定义的动作。如同其它模块一样,批处理可以在手动命令或某些事件的自动发生之后被执行。可以如下通过将集合与动作结合来创建批处理批处理=集合(T)+动作(T).
代理可以定义在预定义事件发生之后将被执行的某些动作,其中该预定义事件可以被用作为激活代理的执行以及与代理相关联的动作的实行的触发器。以代数术语表示代理=事件(T)+动作(T).
可以使用可以某种逻辑方式连接的各种条件来创建规则。在每一规则内,可以以各种方式组成条件。例如,可以如下来描述具有制定属性的项<属性><比较运算符><表达式>
<现有过滤器>
任何/每个<关系目标>匹配<过滤器>
任何/每个<关系目标>位于<集合>.
其它条件也是可能的,且可以被用于组成规则。
可以在应用程序内评估单个EUP逻辑组件。这样的评估可被执行为后台任务从而对用户不可见。另外或者,这些任务可以是服从用户输入的命令而被显式执行的。一般而言,可以使用若干类型的程序作为程序的核心组。例如,诸如导出集的核心类型可以是完全的最终用户程序。当激活或执行导出集时,与集合定义的逻辑相关联的命令可以被执行,并可显示该执行的结果。此外,可以在代数运算中使用导出集。例如,可以如下结合两个导出集集合(T)=集合1(T)Union(并)集合2(T).
作为另一示例,代理可以被创建来在预定义事件发生之后执行指定的动作。如前所定义,代理是与动作(T)结合的事件(T)。在代理的事件部分发生之后,可以执行代理的动作部分的处理步骤。以这种方式,可以无需来自最终用户的干涉而触发执行代理。
可以通过应用程序编程接口(API)来访问EUP代数,API提供访问由规则代数规定的对象类型和运算的手段。另外,API可以提供一组预定义的组件,诸如先前构造的EUP逻辑组件,作为基本术语构造这样的组件的替换,也可直接访问这些组件。
图3是规则类型分层结构300的示意图。规则类型分层结构300的模式可被用于将类型组织成一个或多个功能性组件,诸如此处所述的事件、规则或最终用户程序。另外或者,可以根据特定实现的细节创建某些其它组件或所述的组件中的一个或多个的变体。取决于最终用户汇编或定义的组件的细节,可以适当地单独或组合使用所创建的事件、规则或最终用户程序,来执行某些数据处理任务。在图3中所呈现的示例中,事件可以是诸如可触发可执行组件的执行的诸如规则事件320的规则事件。规则可以是诸如定义将被应用于计算情景的逻辑的规则逻辑330等规则逻辑。规则程序,诸如规则程序340,可以是最终用户程序或另一可执行组件。在该特定示例中,规则事件320、规则逻辑330和规则程序340中的每一个可以与一个或多个子组件相关联。从而,这些子组件中的每一个可以,例如是诸如事件的简单项类型,或者可以替换地为诸如导出集的用户创建的类型或复杂类型。
规则事件组件320可以是由最终用户创建的规则平台代理所使用的所有事件类型的基础类型,且可以是概念上抽象的,并用于提供可由每一代理引用的公共类型。代理可以引用诸如规则事件组件320等规则事件组件的实例,后者可以通知代理,何时执行或触发这样的执行。规则事件组件320可以,例如,是诸如基本事件322的基本事件或是诸如过滤事件324的导出事件,或与之相关联。在一个实例中,可以从规则事件组件320中导出基本事件322。诸如基本事件322的基本事件类型,可以作为应用程序的钩点(hook point)来对规则系统提交输入项,以表示逻辑事件的启动。例如,基本事件可以将这样的事件表示为添加至数据存储的项,或者被修改的数据存储的项等。通过事件项提交输入项可以传递,事件已经发生,并开始可以导致启动另一事件的进程的事实。
过滤事件324也可以从规则事件组件320中推导出。过滤事件324可以包括对另一规则事件的引用和对用来过滤事件的激发的过滤器逻辑类型的实例的引用。可以基于其源规则事件组件,诸如规则事件组件320来启动过滤事件324。在启动源事件之后,过滤事件324可以采用基于其启动源事件的输入项,并在该输入项上评估其过滤器逻辑组件的实例。当且仅当过滤器逻辑评估为真时,才启动过滤事件324。在该实例中,诸如过滤事件324的过滤事件不能使用API函数调用来直接引发,而仅当其源事件被启动且其过滤器逻辑对其上启动源事件的输入项被评估为真时,才可能引发。
在规则逻辑组件可以含有可引起一个或多个计算任务由使用或以其它方式与规则逻辑组件330相关联的组件执行的定义的处理步骤的意义上,规则逻辑组件330可以被描述为规则。规则组件330可以是,过滤器逻辑332、属性逻辑334、动作逻辑336和关联逻辑338,或与之相关联。过滤器逻辑332、属性逻辑334、动作逻辑336和关联逻辑338被用来创建规则逻辑。过滤器逻辑332可以定义过滤输入类型的给定项实例的规则逻辑。过滤器逻辑332的输出类型可以是布尔值或空值。属性逻辑334也可以定义规则。当给定特定项实例时,所定义的规则可以计算指定类型的值从而可以用作为计算出的属性。为了支持此概念,属性逻辑334的输出类型可以被表示为属性类型。
动作逻辑336可以定义当给定指定输入类型的特定项实例时可生成执行的动作序列的规则。动作逻辑336的输出可以是可枚举并编码将要执行的动作序列的对象。关联逻辑338可以从规则定义中导出,且可以定义当给定源类型的特定项实例时可生成指定目标类型的项集合的规则。关联逻辑338的输出可以是构成该项集合的可枚举项的实例。
由该示例性规则代数所描述的一类术语包括可执行组件。这些可执行组件本身不包括逻辑语句,而作为可由最终用户创作的包装程序,且被用于将规则逻辑定义与输入集合连接在一起。一个可执行组件可以是规则程序340。规则程序340可以为最终用户程序类型形成一个公共基本类型。规则程序340的主要功能可以是,允许最终用户程序类型的所有实例,诸如批处理和代理,持久保存、能被检索和能基于这种公共输入类型来被过滤。
规则程序340可以与诸如查询342、代理344和批处理346等其它组件相关联。查询345可以表示根据查询的束缚能够被评估的项的计算出的结果集。代理344可以表示在事件启动之后或某些意外事件发生之后执行的一个或多个动作。批处理346可以表示在项集合上执行的一个或多个动作。最终用户可以以各种方式来结合这些组件以创建可执行规则程序。
图4是包括集成文件系统的最终用户程序设计系统400的系统框图。最终用户程序设计系统400可以从该底层文件系统的特定特征推导出对其程序设计功能的支持。具体地,EUP系统和适当的底层文件系统的集成可以提供基础,在该基础上最终用户可与之交互的计算系统的每个方面可成为可编程的。
最终用户程序设计系统400包括用户界面410,后者可以是任何适当的用户界面,诸如图形用户界面、基于Web的界面、基于文本的界面或命令行界面等。用户界面410被耦合至规则层420和最终用户程序设计模块430。规则层420可以包括EUP系统的所有预定义的组件,包括最终用户创建的代理、批处理和其它组件。
最终用户程序设计模块430提供一种机制,使用该机制,终端用于可以定义诸如代理等组件。连同用户界面420,最终用户程序设计模块430可以提供即使不是全部也是多个集成的开发环境能提供给传统软件开发员的功能。这样的功能可以包括,重用组件、版本组件、通过拖放图形窗口部件或通过脚本动作等其它方法构建组件的能力。
文件系统层440可以提供对数据项是如何存储在诸如硬盘或光盘等某些物理介质上等概念化表示。在该特定实例中,提供了大量利用面向对象设计概念的文件系统。更具体地,文件系统层440可以提供一种框架,在此框架内,项可以被存储为总表达式的一部分,其中可以通过API来访问该表达式,且可以评估该表达式以产生某些期望的结果。文件系统层440也可以包括仅可用于持久性而不能被用作为参数或方法的结果的内联类型的集合。
文件系统层440可以包含一组逻辑运算符,诸如“非”、“与”以及“或”。另外,文件系统层440可以提供健壮的程序设计构件诸如条件运算符、算术运算符、聚集运算符、日期、事件和串运算符和类型的强制转换等。同样,也提供了调用这样的方法的方法和能力。例如,可以通过API访问各个构造器、析构器、值访问器和值设置器。
文件系统层440可以提供的支持功能之中是,用于管理、命名、共享、存储、同步和搜索数据的各种基础架构功能。文件系统层440可以向规则层420和最终用户程序设计模块430提供所有这些能力,使得最终用户可以访问作为构造最终用户程序的一部分能提供的文件系统400所有能力。在此处所呈现的示例中,规则的模式必须遵循由文件系统支持的类型系统。同样,对最终用户程序设计概念的整个API表面追随文件系统API的标准模型。这些设计选择的一个副作用是,针对文件系统项工作的普通用户界面应用程序也将针对最终用户程序设计项工作。
逻辑上,文件系统层440中可以存在两个模式层次。在第一层上,可以存在开发员代码的模式。该开发员代码模式可以定义项的类型和这些项的行为方面。通过使用该层次模式,开发员使用引用的共同框架来共享数据抽象。在第二层上,可以存在最终用户逻辑模式。该最终用户逻辑层可以被用于为最终用户规则提供框架。
对最终用户和文件系统440的类型系统均可以被紧密地对准。具体地,在该示例中,最终用户类型的类型分层结构可以是文件系统类型的类型分层结构的简化。文件系统分层结构中的某些类型可以潜在地被省略,因为它们与最终用户无关。另外,可以创建从每个最终用户类型至底层文件系统类型的映射或绑定。映射或绑定可以被用于在最终用户层和文件系统层之间的间隔上建立桥梁。绑定可以作用于多个目的,包括本地化最终用户模式元素名称的能力。具体地,在该示例中,绑定可以是规则。在平凡的示例性情况中,绑定可以是具有条件永远为真且结果是开发员类型上特定底层属性的单个语句的规则。
绑定也可以提供开发员层模式和最终用户层模式之间的间接层。取决于特定实现,此处可应用各种访问控制策略。例如,文件系统开发员可以被允许定义,开发员创建的哪些类型的属性可以由最终用户访问。或者,可以对最终用户给出能力来决定,最终用户想要访问开发员创建的类型的哪些属性。这两种方法的某种组合也是可能的。
图5是包括集成文件系统的的最终用户程序设计系统500的系统框图。最终用户程序设计系统500可以被用来定制可以运行在由最终用户控制或拥有的空间中的应用程序。或者另外,最终用户程序设计系统500可以被用于创建修改运行在诸如系统进程或影子(daemon)等其它空间中的应用程序的行为的组件等。
最终用户程序设计系统500包括用户界面510,它可以是诸如图形用户界面、基于Web的界面、基于文本的界面或命令行界面等任何适当的用户界面。也有可能是诸如用于盲人的布莱叶界面和音频界面等专用界面。用户界面510被耦合至应用程序层520,后者包括此类最终用户控制的应用程序,诸如电子邮件客户程序、文字处理程序、电子表格和Web浏览器等。另外或者,应用程序层520可以包括对其它执行计算机程序提供诸如域名系统(DNS)查寻和连网能力等服务的所谓系统进程。
规则层530被耦合至应用程序层520。规则层530提供最终用户程序设计组件,以及对应用程序层520的支持,并可以以类似于图4的规则层420的方式实现。同样,最终用户程序设计模块540被耦合至规则层530和用户界面510两者。最终用户程序设计模块540可以提供对规则层530的访问以及创建新规则的能力,非常类似于图4的最终用户程序设计模块530。
文件系统550可以提供存储框架,在其上,规则层530的规则以及可由最终用户程序设计模块540创建的其它最终用户程序可以由应用层520访问或以其它方式使用。在该环境中,任何合适的文件系统可以被使用或适用。具有可与最终用户程序设计功能的API集成或映射至其的API的文件系统尤其适用于此。
在操作中,最终用户可以通过用户界面510来与最终用户程序设计系统500交互。最终用户可以使用最终用户程序设计模块540来创建规则、代理或批处理等,这些都可以被添加至规则层530。最终用户也可以通过用户界面510来访问应用层520的应用程序。
当事件或某些其它触发对象使得规则被激活时,可以在应用层520和规则层530之间传递消息。取决于规则激活的细节,这些消息可以是同步或异步的。无论激活了哪个或哪些规则,被激活的规则然后可以根据它们的设计来执行,并通过使用文件系统API被映射和绑定的部分来在文件系统层550上进行任何适当的修改。
图6是可以被用来创建管理存储在文件系统上的电子信息的最终用户定义程序模块的最终用户程序设计系统600的系统框图。这些程序模块可以自动应用由最终用户创建的规则以根据来自最终用户的特定指令来操纵存储在文件系统上的信息。这样的指令可以包括,应用过滤器来分组信息或在某个预定义事件发生之后执行特定信息管理任务,诸如组织任务。
最终用户程序设计系统600包括可以提供对诸如规则创建或修改和事件定义的最终用户程序设计支持功能的访问的最终用户程序设计模块610。最终用户程序设计模块610具体地可以被实现为之前结合其它附图所述的最终用户程序设计模块中的任一个。使用最终用户程序设计模块610创建的最终用户程序可以如同事件驱动程序那样自动执行,或可以由来自最终用户的特定命令调用。
人机界面620可以提供对最终用户程序设计模块610的功能和特征的访问。取决于特定的实现需求和需要,可以使用各种组件来实现人机界面620。例如,人机界面620可以被实现为图形用户界面,诸如操作系统的图形用户界面。或者,人机界面620可以基于Web浏览器,可以是诸如命令行的基于文本的界面,可以是布莱叶基于触摸的界面,或可以是基于语音的界面等。
规则平台630可以包括使用最终用户程序设计模块610创建的最终用户定义的程序。另外,可以在规则平台630中包括可被用于创建最终用户程序的构件块组件。最终用户程序设计模块610和人机界面620均可以访问规则平台630,以允许最终用户在规则平台630中创建、修改、删除最终用户程序和调用最终用户程序的执行。
规则平台630被耦合至文件系统640。文件系统640可以被实现为可支持数据组织和检索任务的任何适当的文件系统。具体地,文件系统640,以及提供对文件系统640的功能的访问的API,可以与规则平台630的API紧密配合,使得规则平台630的功能可以被映射或绑定至文件系统640的功能。以这种方式将规则平台630与文件系统640集成有效地向最终用户展示了文件系统640的功能,使得最终用户可以使用文件系统的功能,用于各种计算任务,包括信息组织和自动化处理任务等。是通过规则平台630由最终用户访问了文件系统640的功能,此访问为文件系统640提供了保护层,使其免于可能破坏或以其它方式损坏文件系统的疏忽或恶意的动作。例如,诸如将文件从存储设备上的一个物理位置移动到另一位置而不改变该文件的逻辑位置的特定功能,可能保持对最终用户程序设计模块610或规则平台630的功能的未映射或未绑定,阻止最终用户访问该功能。
文件系统640可以在一个或多个持久存储设备650、660、670(PS)上使用逻辑文件组织模式。持久存储设备650、660、670可以是硬盘驱动器、光盘驱动器、闪存设备或其它合适的存储设备,且可以作为各自使用一个文件系统的分离的盘而独立操作。另外或者,持久存储设备650、660、670可以是一个或多个物理磁盘驱动器上的逻辑分区。在这种配置中,最终用户可以意识到存在提供存储空间的多个磁盘或分区的事实。持久存储设备650、660、670也可被集成为单个逻辑存储卷的一部分,如同独立磁盘冗余阵列(RAID)。当配置为RAID阵列时,持久存储设备650、660、670可以作为使用单个文件系统的单个实体被访问。同样,持久存储设备650、660、670可以是存储区网络(SAN)或某些其它存储系统的一部分。
在操作中,最终用户程序设计系统600可以如下工作。最终用户可以通过人机界面620来访问最终用户程序设计模块610以创建最终用户程序。最终用户程序驻留在规则平台630上,直到由来自最终用户的命令调用或特定或预定义事件发生之后执行。规则平台630向文件系统640发送消息,请求文件系统640在持久存储设备650、660、670上执行某些信息操纵任务。在成功完成或不能完成所请求的任务之后,并在同步的消息通信环境中,文件系统640向规则平台630发送消息,以向最终用户程序通知所请求的任务的结果。或者,如同异步消息通信系统,文件系统640可以执行或试图执行所请求的任务,而不向规则平台630发送回应消息。在人机界面620上显示关于所请求动作的信息,用于由最终用户查看。
图7是可被用于创建最终用户定义程序模块的网络化最终用户程序设计系统700的系统框图,该最终用户定义程序模块管理存储在远程文件系统上的电子信息,其中可以通过网路访问所述信息。网络化最终用户程序模块可以自动应用由最终用户创建的规则以访问或操纵存储在远程文件系统上的信息。网络化最终用户程序设计系统700包括可以提供对如规则创建、规则修改和触发事件的定义或标识的最终用户程序设计支持功能的访问的最终用户程序设计模块710。最终用户程序设计模块710具体可以被实现为之前结合其它附图所述的最终用户程序设计模块中的任一个。与这样的实现一致,使用最终用户程序设计模块710创建的最终用户程序可以如同事件驱动程序那样自动执行,或可以由来自最终用户的特定命令调用。
规则平台720可以包括使用最终用户程序设计模块710创建的最终用户定义的程序。另外,可以在规则平台720中包括可被用于创建最终用户程序的构件块组件。最终用户程序设计模块710和人机界面730均可以访问规则平台720,以允许最终用户在规则平台720中创建、修改、删除最终用户程序和调用最终用户程序的执行。规则平台720也可以提供最终用户程序或规则平台720的其它组件与文件系统740之间的连网或其它通信功能,诸如消息传递。为此,规则平台可以使用网络750。网络750可以是任何适当的有线或无线网络,可以是局域网(LAN)、广域网(WAN)、内联网或因特网等。与该实现一致,规则平台720可以包括连网组件,诸如通信栈,如传输控制协议/因特网协议(TCP/IP)栈等。或者,规则平台720可以仅访问由诸如操作系统或连网应用程序等另一组件提供的这样的功能。
文件系统740可以在远程存储设备760上施加组织化分层结构。远程存储设备可以是持久存储设备,诸如磁盘驱动器或任何其它类型的持久存储设备,具体包括结合其它附图揭示和描述的各类型。另外或者,远程存储设备可以是数据库或另一类型的数据存储,它们可以与文件系统类似的方式提供访问和操纵特征。
在操作中,网络化最终用户程序设计系统700可以如下工作。最终用户可以通过用户界面730来访问最终用户程序设计模块710以创建一个或多个最终用户程序。这些最终用户程序驻留在规则平台720上,直到由来自最终用户的命令调用或特定或预定义事件发生之后执行。规则平台720使用网络750向文件系统740传递消息,请求文件系统740结合远程存储设备760执行某些信息相关的任务。在成功完成或不能完成所请求的任务之后,文件系统740使用网络750向规则平台720传递消息,以向最终用户程序通知所请求的任务的结果。在人机界面730上显示关于结果的信息,用于由最终用户查看。
参考附图8-9,呈现了根据各种方法或过程的流程图。尽管,为了说明的简明性起见,此处例如以流程图形式所示的一个或多个方法,被示出和描述为一连串动作,但是可以理解和领会,所示出和描述的方法和过程及对其可使用这样的方法或过程的任何组件都可使用而不必受动作的顺序的限制,如某些动作可以按与此处示出和描述的不同的顺序发生和/或与其它动作同时发生。例如,本领域的技术人员可以理解和领会,方法可以替换地被表示为诸如状态图中的一连串互相关联的状态或事件。而且,并非所有示出的动作都是实现方法或过程所必需的。
图8是可结合此处参考附图揭示和描述的组件使用的进程800的流程图。进程800的执行在开始框810处开始,并继续至处理框820,在那里最终用户访问EUP界面。然后在处理框830处,最终用户选取触发事件。例如,触发事件可以是邮件消息的到达、文档的创建或某些其它事件。在处理框840处,定义了动作集合,包括多个动作、单个动作或没有动作。这些动作可以是诸如,将文件移动至指定位置、自动回复电子邮件或将文件从一种格式转换为另一种格式等。在处理框850处动作集被绑定至事件。在处理框860处用新的绑定来更新规则基础。处理在结束框870处结束。
图9是可以结合此处参考其它附图揭示或描述的组件所使用的进程900的流程图。处理在开始框905处开始,并继续至处理框910处,在那里计算平台启动事件。在处理框915处,EUP组件检测到该事件。处理继续至处理框920处,在那里EUP访问规则数据存储。在判定框925处,作出判断,为所检测出的事件,是否存在规则绑定。如果是,那么处理继续至处理框930处,在那里获取最终用户所定义的动作。在处理框935处,启动或激活进程来执行最终用户所定义的动作。在处理框940处从这些进程接收到完成消息。
在判定框945处,作出是否所有的进程成功完成的判断。如果是,那么在955处创建总体成功指示符。如果否,那么在处理框950处创建总体出错消息。来自处理框950和处理框955的处理都在结束框960处结束。类似地,如果在判定框925处进行的判断为否,那么处理在结束框960处结束。
图10是信息生存周期1000的流程图。信息生存周期可一般描述数据项在计算系统上的存在。这样的存在可当用户首次创建或获取特定数据项时开始,并当用户删除该项或以其它方式丢弃数据时结束。信息生存周期100包括组织阶段1010,它指示了当最终用户已创建或获取信息项并期望保存该信息项并使其可用时的时刻点。至少存在可被用来组织数据的两种技术。参考第一种技术,可以为项的属性分配值例如,项可以被给出可被存储为元数据或属性等的名称或某个其它描述符。参考第二种技术,可以分配项的关系。通过手动导航或搜索,关系的分配可以协助项的定位。具体地,某些关系可与应用程序中的特殊组织语义相关联。例如,文件夹容器关系可以是公共的分层结构方式,使用该方式可根据公共的主题组织信息。
至少可以以两种不同的方式为属性和关系分配值。可以用项数据物化和维护实际值。另外或者,可在请求之后,从其它数据计算出值。在该情形中,可以将要执行来获取数据的计算的定义存储为元数据。当数据组织的规则定义良好、易于表达且完全基于可用信息时,那么用于数据组织的所计算出的机制是适当的。所计算出的机制也可以缩放自如来处理大量数据。当数据组织逻辑不能被容易地表达,或是基于诸如内容或内容信息等不能轻易捕捉的信息时,物化机制是适当的。最终用户程序可以定义计算出的属性和关系。这样的程序也可被用于自动维护物化的属性和关系。
存储阶段1020可以指示用户正以稍后可访问的一种持久的格式保存信息项。可被使用的持久格式包括文件和对象等。根据其中存储持久格式的文件系统的特定细节,这样的持久格式的细节有所不同。例如,硬盘驱动器和光盘均可以被用作持久存储设备。然而,硬盘驱动器的文件系统格式与诸如ISO 9660等可被用于光盘上的文件系统格式大有不同。
发现阶段1030可以指示当最终用户想要检索以某种持久格式存储的信息时的阶段。术语发现可包括可使项被标识为可用以供最终用户在其上动作的任何活动。至少存在用户可使用来发现数据的三种方式。第一种中,最终用户可以浏览或导航至数据。以这种方式,最终用户在诸如主页或引用目录等某个开始点开始。数据项之间的关系可以提供浏览或遍历数据存储中的项的路径。一个具体的示例是通过分层结构的目录树导航。
在第二种方法中,最终用户可以执行查询。由最终用户定义的查询可以描述可匹配某些说明性描述的数据存储中的项的子集。使用第三种方法,最终用户可使用事件来发现项。这种类型的事件被用于将注意力关注于某些特定项。例如,将文件添加至目录可以是将注意力置于所添加的文件的事件。
这些方法中的每一种皆有长处和短处。可以当用于发现项的逻辑是就数据存储中建模的概念而言定义良好且易于表达时使用基于查询的机制。查询的执行可以是可缩放且有效的——然而,即使使用了相对高效的查询机制,查询执行也可能是计算上高强度的。导航机制可被用于提供灵活性,但要求比查询更多的用户参与。另外,导航机制不像查询机制那样缩放良好以处理大的数据集。
事件驱动的机制适于当目标是没有直接用户参与的情况下在适当的时刻发现适当的数据的情形。至少存在两种基本类型的事件。第一,应用程序事件可以由特定的一个或一组应用程序的执行而引起。第二,数据改变事件可以由任何改变数据的任何活动引起,独立于引起数据中的改变的应用程序。数据改变事件可以由数据管理系统引发。可以同步或者异步地引发特定类型的事件。对同步事件,应用程序或系统在继续之前期望有对该事件的响应。对异步事件,在引发应用程序可以继续处理其任务之前,不需要这样的响应。
使用阶段1040可以指示最终用户已经发现并检索了数据,并准备好来使用它或以其它方式在数据上动作。项上的基本动作可以由将该项展示给用户的应用程序提供。某些动作对一种项类型而言可能是固有的。例如,动作可被用于设置项的属性。其它动作可以对可使用该项的应用程序固有。此处的示例是,以特定颜色显示消息项文本的动作。
可以使用至少一种以下机制来从其它动作中构造计算出的动作。第一,可以使用关系上的动作。以这种模式,项上的动作可以被定义成包括目标或项关系上的动走。例如,当使用关系来定义诸如文件夹组的项集合时,计算出的动走可以指定集合所有成员上的统一动作。该进程可以被称为批处理。也可使用条件动作。现有的动作可以与条件逻辑结合来定义条件计算动作。例如,如果文档被标记为机密的,那么可以将优先级标志置为指示高优先级。如果文档没有被标记为机密的,那么优先级标志将被置为指示该文档具有普通优先级。而且,可以创建动作序列,使得可以在列表上放置必须被顺序执行的多个动作。例如,可以使用动作序列来打印文档然后删除该文档。诸如此类的动作可能具有副作用,它可能会创建这样的情形,其中动作的顺序必须是确定性的,以便所定义的行为可被感知。
为了提供实现本发明各方面的附加环境,图11-12及以下讨论旨在提供可在其中实现本发明各方面的合适的计算环境的简要、一般的描述。尽管以上在本地计算机和/或远程计算机上运行的计算机程序的计算机可执行指令的通用语境中描述了本发明,但是本领域的技术人员可以认识到,本发明也可以结合其它程序模块来实现。一般而言,程序模块包括例程、程序、组件、数据结构等,它们执行特定任务和/或实现特定抽象数据类型。
本领域的技术人员可以理解,本发明性的方法可以结合其它计算机系统配置实现,包括单处理器或多处理器计算机系统、小型机、大型机、以及个人计算机、手持式计算设备、基于微处理器的和/或可编程消费屯子产品等,其中的每一个可用来与一个或多个相关联的设备通信。本发明示出的方面也可以在分布式计算环境中实现,其中任务由通过通信网络连接的远程处理设备执行。然而,即使不是全部,本发明的某些部分也可以在独立计算机上实现。在分布式计算环境中,程序模块可以位于本地和/或远程计算机存储介质中。
而且,所揭示和描述的组件或进程可被实现为使用标准程序设计和/或工程技术来生产软件、固件、硬件或其任何组合来控制计算机实现所揭示和描述的组件或进程的方法、装置或制造品。如此处所用术语“制造品”,旨在包含可从任何计算机可读设备、载波或介质访问的计算机程序。例如,计算机可读介质可包括,但不限于,磁性存储设备例如,硬盘、软盘、磁条等,光盘例如,紧致光盘(CD)、数字多功能盘(DVD)等,智能卡和闪存设备如,卡、棒、键驱动器等。另外,应该理解,可使用载波来携带计算机可读电子数据,诸如在发送和接收电子邮件和访问诸如因特网或局域网(LAN)等网络中所使用的那些。当然,本领域的技术人员可以认识到,可以对此配置进行多种少量的修改。
也应该理解,尽管所呈现的特定示例可能描述或描绘了基于个人计算机上的文件系统的内容搜索的系统和方法,但本申请不限于此领域。例如,所揭示和描述的组件和方法也可被用于内联网、私人网络或因特网。另外或者,所揭示和描述的组件和方法可以被用作存储区网络(SAN)的一部分。本领域的技术人员将容易地认识到,所揭示和描述的组件和方法可被用于搜索和操纵其它类型的信息,包括Web网页、数据库查询、照片信息和音频或视频信息等。
最终用户程序设计(EUP)可被描述为最终用户控制信息为中心的软件应用程序的行为的每一和每个方面的能力。EUP原理和组件可以被用来定制和个性化由一个软件应用程序或多个应用程序在最终用户的控制之下执行的自动信息处理任务。至少存在三种互相关联的方式用于EUP原理和组件协助用户。
第一种方式中,正常地最终用户必须手动执行的可能的大量处理步骤可以根据最终用户的特定需求和期望自动化。例如,使用以非常高分辨率存储的大量数字图像集合工作的最终用户可能期望创建这些图像的低分辨率版本以便在网页中使用。为手动进行这些操作,最终用户一般必须在编辑程序中打开每一单张图像,根据各种程序设置创建低分辨率的副本,并使用新的文件名或在新的位置中保存该低分辨率的版本。EUP模块可以被创建来在将新的图像添加至指定目录之后自动执行这些任务。
在使用EUP原理的第二种方式中,EUP模块可以为最终用户执行大量的计算。例如,众多搜索任务是计算上高强度的,而EUP模块可以自动执行搜索(和其他计算上消耗很大的任务)并将搜索的结果报告给最终用户。另外或者,EUP模块可当由最终用户具体调用或执行时执行这样的任务。以第三种方式,EUP模块可无需来自用户的干预而自动起作用,从而允许最终用户将注意力集中于其它任务上而不是特定的计算任务上。该自动起作用可以通过将最终用户从手动执行的时间上高强度的诸如将电子文件分类并将这样的文件分组成逻辑集合等任务中解放来提高最终用户的生产率。
此处呈现的EUP概念和组件提供了一个通用且灵活的平台,在该平台上可以创建大量实现。某些可能的实现可以提供健壮的平台,后者可被用于支持跨整个平台的最终用户程序设计任务,使得每个用户应用程序可以访问最终用户程序设计功能并从中受益。其它可能的实现可以支持仅对单个应用程序的这样的功能,而其它的实现将位于这两个极端之间。本领域的普通技术人员可以通过阅读本揭示而容易地认识到,可能有众多替换和变化。
最终用户程序可以定义此处在示例中呈现的计算出的动作的所有形式,以及其它实例。一种值得注意的形式包括动作与事件的关联,这可被称为代理。涉及同步事件的代理可以包括所关注的两个特殊范例。在第一范例中,这样的代理可以通过执行可能对应用固有的动作来提供应用的定制。例如,邮件应用程序可以在发送邮件消息之前引发同步事件。当该代理的动作为条件动作时,代理可以基于消息的属性选择签名文件。在第二情况中,涉及数据上的约束。数据约束代理可以动作来接受或拒绝对引起引发事件的数据的改变。例如,文件的所有权的改变可能引起引发事件。所引发的事件可能触发评估所有权改变的代理的动作。基于诸如文件当前拥有者、文件的新的拥有者以及实行该改变的用户的身份等准则,数据约束代理可以接受或拒绝该所有权信息中的改变。
使用更复杂的组件可能有更复杂的评估。这样的组件包括各种人工智能组件,它们可标识或匹配模式或执行各种分类任务。可使用的合适的人工智能组件包括神经网络和支持向量机等。所揭示和描述的组件(例如,创建来执行过滤或管理任务的代理)可以使用这些各种各样的基于人工智能的模式来执行已编程序的任务。例如,可以由神经网络、基于规则的处理组件或SVM来执行标识复杂数据模式和将新数据分类为属于含有该复杂数据模式的数据集。
分类器是将输入属性向量X=(x1,x2,x3,x4,xn)映射至该输入属于类的置信度的函数,即f(X)=confidence(class)。这样的分类可以使用概率和/或基于统计的分析(例如,分解为分析效用和开销)来预测或推断用户想要自动执行的动作。在最终用户程序设计系统的情况中,可以通过检查那些数据项的属性来分类数据项。支持向量机(SVM)是可以使用的分类器的示例。SVM通过寻找可能的输入空间中的超曲面来操作,其中超曲面试图从非触发事件中分离触发标准。直观地,这使分类对于接近但不同于训练数据的测试数据是正确的。可以使用其它有向或无向的模型分类方法包括,例如单纯贝叶斯、贝叶斯网络、决策树,并可以提供不同独立性模式的概率分类模型。此处所用的分类也包括用于开发优先级模型的统计回归。
可以通过本说明书中容易地理解,此处揭示和描述的组件可以使用显式训练(例如,通过普通训练数据)以及隐式训练(例如,通过观察用户行为、接收外部信息…)的分类器。例如,可以通过分类器构造器和特征选择模块内的学习或训练阶段来配置SVM。因此,分类器可被用于自动执行多个功能,包括但不限于,确定是否应向一设备发送数据。
图11是所揭示和描述的组件和进程可与之交互的示例计算环境1100的示意框图。系统1100包括一个或多个客户机1110。客户机1110可以是硬件和/或软件(例如,线程、进程、计算设备)。系统1100也包括一个或多个服务器1120。服务器1120可以是硬件和/或软件(例如,线程、进程、计算设备)。例如,服务器1120可以容纳通过使用所揭示和描述的组件和进程来执行转换的线程或进程。
客户机1110和服务器1120之间的一种可能的通信手段可以是适于在两个或多个计算机进程之间传输的数据包的形式。系统1100包括可以被用来便于客户机1110和服务器1120之间通信的通信架构1140。客户机1110可操作地连接至可用来存储对客户机1110本地的信息的一个或多个客户机数据存储1160。类似地,服务器1120可操作地连接至可被用来存储对服务器1140本地的信息的一个或多个服务器数据存储1130。
参考图12,用于实现本发明各方面的示例性环境1210包括计算机1212。计算机1212包括处理单元1214、系统存储器1216和系统总线1218。系统总线1218将包括但不限于系统存储器1216的系统组件耦合至处理单元1214。处理单元1214可以是任何各种可用的处理器。也可以使用双微处理器和其它多处理器体系结构作为处理单元1214。
系统总线1218可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线或外部总线和/或使用各种可用的总线体系结构中的任一种的局部总线,可用的总线体系结构包括,但不限于,工业标准体系结构(ISA)、微通道体系结构(MCA)、扩展的ISA(EISA)、智能驱动器电子接口(IDE)、VESA局部总线(VLB)、外围部件互连(PCI)、插件总线、通用串行总线(USB)、高级图形接口(AGP)、个人计算机存储卡国际协会总线(PCMCIA)、火线(IEEE1394)以及小型计算机系统接口(SCSI)。
系统存储器1216包括易失性存储器1220和非易失性存储器1222。基本输入/输出系统(BIOS)包含有助于诸如启动时在计算机1212中元件之间传递信息的基本例程,它通常存储在非易失性存储器1222中。作为说明,而非限制,非易失性存储器1222可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除ROM(EEPROM)或闪存。易失性存储器1220可以包括用作外部高速缓存的随机存取存储器(RAM)。作为说明,而非限制,RAM以多种形式可用,诸如同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)以及直接Rambus RAM(DRRAM)。
计算机1212也包括可移动/不可以移动、易失性/非易失性计算机存储介质。例如,图12示出磁盘存储1224。磁盘存储1224包括,但不限于,如磁盘驱动器、软盘驱动器、磁带驱动器、Jaz驱动器、Zip驱动器、Ls-100驱动器、闪存卡或记忆棒的设备。另外,磁盘存储1224可以包括独立或与其它存储介质结合的存储介质,包括但不限于,诸如光盘ROM设备(CD-ROM)、CD可记录驱动器(CD-R驱动器)、CD可重写驱动器(CD-RW驱动器)或数字多功能盘ROM驱动器(DVD-ROM)等的光盘驱动器。为了便于将磁盘存储设备1224连接至系统总线1218,一般使用诸如接口1226等可移动或不可移动接口。
可以理解,图12描述了作为用户和在合适的操作环境1210中描述的基本计算机资源之间的中介的软件。这样的软件包括操作系统1228。可被存储在磁盘存储1224上的操作系统1228用来控制和分配计算机系统1212的资源。系统应用程序1230利用了操作系统1228通过存储在系统存储器1216或者磁盘存储1224上的程序模块1232和程序数据1234执行的资源管理。可以理解,本发明可以使用各种操作系统或操作系统的组合来实现。
用户通过输入设备1236向计算机1212输入命令或信息。输入设备1236包括,但不限于,诸如鼠标、跟踪球、指示笔等定点设备、触摸垫、键盘、麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪、TV调谐器卡、数码相机、数码摄像机、网络摄像头等。这些和其它输入设备经由接口端口1238通过系统总线1218连接至处理单元1214。接口端口1238包括,例如串行端口、并行端口、游戏端口和通用串行总线(USB)。输出设备1240使用某些与输入设备1236相同类型的端口。从而,例如,USB端口可以用于对计算机1212提供输入,并对输出设备1240提供来自计算机1212的输出信息。提供输出适配器1242来示出,存在类似监视器、扬声器和打印机以及其它需要专用适配器的输出设备1240的某些输出设备1240。作为说明而非限制,输出适配器1242包括提供输出设备1240和系统总线1218之间的连接手段的显卡和声卡。应该注意,诸如远程计算机1244等其它设备和/或设备系统同时提供输入和输出能力两者。
计算机1212可使用至一台或多台远程计算机,诸如远程计算机1244的逻辑连接在网络化环境中操作。远程计算机1244可以是个人计算机、服务器、路由器、网络PC、工作站、基于微处理器的装置、对等设备或其它常见网络节点等,且通常包括上文相对于计算机1212描述的许多或所有元件。为简洁起见,对于远程计算机1244仅示出存储器存储设备1246。远程计算机1244通过网络接口1248被逻辑连接至计算机1212,并且然后通过通信连接1250被物理地连接。网络接口1248包括诸如局域网(LAN)和广域网(WAN)的有线和/或无线通信网络。LAN技术包括光纤分布式数据接口(FDDI)、铜线分布式数据接口(CDDI)、以太网、令牌环等。WAN技术包括,但不限于,点对点链路、类似综合业务数字网(ISDN)及其变体的电路交换网络、分组交换网络和数字用户线(DSL)。
通信连接1250指的是用来将网络接口1248连接至总线1218的硬件/软件。尽管为说明清楚,将通信连接1250示为位于计算机1212内,然而它也可以在计算机1212外部。仅为示例的目的,连接至网络接口1248所必需的硬件/软件包括内部和外部技术,诸如包括常规电话级调制解调器、线缆调制解调器和DSL调制解调器等的调制解调器、ISDN适配器以及以太网卡。
以上描述的包括某些组件和方法的说明性示例。当然,不可能描述每个可想象的组件或方法的组合,但是本领域的普通技术人员可以认识到,本发明的众多其它组合和排列是可能的。从而,示例旨在包括落入所附权利要求书精神和范围内的所有这样的变更、修改和变化。
特别地,关于由以上所述的组件、设备、电路、系统等执行的各种功能,用于描述这样的组件的术语(包括对“装置”的引用)除非以其它方式指出,否则它旨在对应于执行所述组件的指定功能的任何组件(例如,功能等效物),即使与执行此处所示示例性中的功能的所揭示的结构在结构上不同。就此,也可以认识到,所揭示和描述的组件和方法包括系统以及含有用于执行此处揭示和描述的各种方法的动作和/或事件的计算机可执行指令的计算机可读介质。
另外,尽管仅参考若干实施例中的一个揭示本发明的特定特征,然而这样的特征可以按照所期望的与其它实现的一个或多个特征相结合,并对任何给定或特定应用程序是有利的。而且,就在详细描述或者在权利要求书中所使用的术语“包括”和“包含”及其变化而言,这些术语旨在以类似于术语“含有”的方式为包括性的。
权利要求
1.一种用于自动数据处理的系统,包括最终用户程序设计模块,它与底层文件系统集成,并将计算系统的事件映射至由最终用户定义的至少一个自动动作;以及事件处理程序,它响应于所述事件,并使得响应于所述事件的发生执行所述至少一个自动动作。
2.如权利要求1所述的系统,其特征在于,所述事件是由操作系统创建的。
3.如权利要求1所述的系统,其特征在于,所述事件是由监视应用程序创建的。
4.如权利要求1所述的系统,其特征在于,所述事件是由用户应用程序创建的。
5.如权利要求4所述的系统,其特征在于,所述自动动作是由不同于创建所述事件的用户应用程序的第二用户应用程序执行的。
6.如权利要求4所述的系统,其特征在于,还包括与所述最终用户程序设计模块集成来提供对存储的数据的访问的文件系统。
7.如权利要求6所述的系统,其特征在于,所述文件系统是分布式文件系统。
8.如权利要求7所述的系统,其特征在于,所述分布式文件系统是被分布在多个网络化的协作存储设备上的。
9.一种用于自动处理数据的方法,包括标识计算系统上可被用于启动集成文件系统中的数据上的用户定义动作的触发事件;指定在检测到所标识的事件之后要采取的最终用户定义的动作;以及在检测到所标识的事件发生之后,自动执行所述最终用户定义的动作。
10.如权利要求9所述的方法,其特征在于,所述触发事件是由操作系统、监视应用程序和用户应用程序中至少一个创建的事件。
11.如权利要求9所述的方法,其特征在于,所述自动执行最终用户定义的动作是由操作系统、监视应用程序和用户应用程序中至少一个执行的。
12.如权利要求9所述的方法,其特征在于,还包括访问数据存储以获取用于所述最终用户定义的动作的处理指令。
13.如权利要求12所述的方法,其特征在于,所述访问数据存储包括访问集成的文件系统。
14.如权利要求13所述的方法,其特征在于,所述访问集成的文件系统包括访问分布式文件系统。
15.一种用于自动处理数据的系统,包括用于标识计算系统上可被用于启动集成文件系统中的数据上的用户定义动作的触发事件的装置;用于指定在检测到所标识的事件之后要采取的最终用户定义的动作的装置;以及用于在检测到所标识的事件发生之后自动执行所述最终用户定义的动作的装置。
16.如权利要求15所述的系统,其特征在于,所述触发事件是由操作系统、监视应用程序和用户应用程序中至少一个创建的事件。
17.如权利要求15所述的系统,其特征在于,所述用于自动执行最终用户定义的动作的装置包括操作系统、监视应用程序和用户应用程序中的至少一个。
18.如权利要求15所述的系统,其特征在于,还包括用于访问数据存储以获取用于所述最终用户定义的动作的处理指令的装置。
19.如权利要求15所述的方法,其特征在于,所述用于访问数据存储的装置包括用于访问集成文件系统的装置。
20.如权利要求19所述的系统,其特征在于,所述用于访问集成文件系统的装置包括用于连接至远程文件系统的装置。
全文摘要
呈现了一种用于自动化数据处理的系统。该系统包括与底层文件系统集成并将计算系统的事件映射至由用户定义的至少一个自动动作的最终用户程序设计模块。系统也包括响应事件并使得至少一个自动动作要被执行的事件处理程序。也提供了使用该系统的方法。
文档编号G06F9/44GK1828530SQ20061000466
公开日2006年9月6日 申请日期2006年1月27日 优先权日2005年2月28日
发明者H·奈特, K·艾斯瓦, P·赛沙德瑞, S·阿比利 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1