信息对象系统的制作方法

文档序号:11532478阅读:188来源:国知局
信息对象系统的制造方法与工艺

联邦政府资助的研究

本发明是在由国防部高级研究计划局(“darpa”)授予的第w31p4q-10-c-0010号合同下由政府支持做出。政府在本发明中有某些权利。

相关申请

本申请涉及于2014年3月13日提交的题为“visualizationinterfaceforinformationobjectsystem”的美国专利申请14/208,346,并且该申请通过引用以其整体并入本文。

背景

许多程序以特定于特定程序的格式保存数据。为了使程序处理由另一程序输出的数据,该程序必须能够处理特定于其它程序的格式的数据。

概述

公开了用于以独立于机器和应用的方式存储信息的各种技术。数据被存储为一系列的信息对象。应用可以生成、存储和访问信息对象,包括由其它应用或设备生成的信息对象。

在实施方式中,提供了包含(embodying)在至少一个计算设备中可执行的程序的非暂时性计算机可读介质,

所述程序包括:响应于从应用接收到存储数据的请求而创建信息对象的代码,其中存储数据的请求包括第一文件和第一文件类型或数据流和该数据流的数据源的标识,并且信息对象至少部分地基于第一文件类型或数据源的标识来创建;响应于从应用接收到修改信息对象的请求而修改信息对象的代码,其中当信息对象被修改时,该信息对象被锁定;响应于从应用接收到对信息对象的请求而将该信息对象的副本提供给应用的代码;以及响应于接收到导出信息对象的请求而将信息对象导出到第二文件的代码,其中导出信息对象的请求指定第二文件的第二文件类型。在任何一个或多个实施方式中,信息对象封装:内容数据,其包括与信息对象相关的多个属性以及对另一信息对象的引用;形式数据,其描述如何在应用的用户界面内呈现信息对象;以及函数,其用于操纵信息对象。在任何一个或多个实施方式中,第一文件和第一文件类型与第一应用相关联,并且第二文件和第二文件类型与第二应用相关联。

在实施方式中,提供了一种系统,该系统包括:计算设备;以及在计算设备中执行的第一应用,所述应用包括:响应于从第二应用接收到存储数据的请求而创建信息对象的逻辑;响应于从第二应用接收到修改信息对象的请求而修改信息对象的逻辑;以及响应于从第二应用接收到对信息对象的请求而将信息对象的副本提供给第二应用的逻辑。在任何一个或多个实施方式中,信息对象包括内容数据,该内容数据包括与信息对象相关的属性或对另一信息对象的引用中的至少一个。在任何一个或多个实施方式中,信息对象包括形式数据,该形式数据描述如何在另一计算设备上执行的客户端应用的用户界面内呈现信息对象。在任何一个或多个实施方式中,信息对象包括用于操纵信息对象的函数,其中该函数可由应用或在客户端计算设备内执行的客户端应用来调用。在任何一个或多个实施方式中,修改信息对象的逻辑调用信息的函数来修改信息对象。在任何一个或多个实施方式中,响应于从第二应用接收到对信息对象的请求而将信息对象的副本提供给第二应用的逻辑还包括:确定信息对象是否位于计算设备的存储器中的逻辑;响应于确定信息对象位于计算设备的存储器中而向第二应用提供信息对象的逻辑;以及响应于确定信息对象不位于计算设备的存储器中而向在另一计算设备中执行的第三应用发送查询的逻辑,其中该查询请求第三应用确定信息对象是否位于第二计算设备的存储器中。在任何一个或多个实施方式中,响应于从第二应用接收到对信息对象的请求而将信息对象的副本提供给第二应用的逻辑还包括:当第三应用以信息对象位于第二计算设备的存储器中的指示响应查询时,从另一计算设备获取信息对象的逻辑;以及响应于从另一计算设备获取到信息对象而向第二应用提供信息对象的逻辑。在任何一个或多个实施方式中,响应于从第二应用接收到对信息对象的请求而将信息对象的副本提供给第二应用的逻辑还包括:当第三应用以信息对象位于第二计算设备的存储器中的指示响应查询时,向第二应用提供信息对象的位置的逻辑。

在实施方式中,提供了一种方法,所述方法包括:响应于从应用接收到存储数据的请求,通过计算设备创建信息对象;响应于从应用接收到修改信息对象的请求,通过计算设备修改信息对象;以及响应于从应用接收到对信息对象的请求,通过计算设备将信息对象的副本提供给应用。在任何一个或多个实施方式中,存储数据的请求包括文件和文件类型。在任何一个或多个实施方式中,响应于从应用接收到存储数据的请求而通过计算设备创建信息对象还包括:通过计算设备识别用于创建信息对象的规则,其中规则对应于文件类型;通过计算设备根据规则来创建信息对象;以及通过计算设备将数据从文件复制到所创建的信息对象中。在任何一个或多个实施方式中,存储数据的请求包括数据流。在任何一个或多个实施方式中,响应于从应用接收到存储数据的请求而通过计算设备创建信息对象还包括:通过计算设备识别数据流的数据源;以及至少部分地基于数据源,通过计算设备创建多个信息对象,其中多个信息对象中的每一个封装数据流的至少部分。在任何一个或多个实施方式中,信息对象封装以下中的至少一个:内容数据,其包括与信息对象相关的多个属性和对另一信息对象的引用;形式数据,其描述如何在应用的用户界面内呈现信息对象;或用于操纵信息对象的函数。在任何一个或多个实施方式中,响应于从应用接收到对信息对象的请求而通过计算设备将信息对象的副本提供给应用还包括:通过计算设备确定信息对象当前被存储的数据存储库;以及通过计算设备将到数据存储库的路径提供给应用。在任何一个或多个实施方式中,该方法还包括响应于从应用接收到将信息对象导出到文件的请求,通过计算设备将该信息对象导出到文件。在任何一个或多个实施方式中,响应于从应用接收到将信息对象导出到文件的请求而通过计算设备将信息对象导出到文件还包括:通过计算设备识别文件的目标文件类型;通过计算设备识别用于将信息对象转换为目标文件类型的规则;通过计算设备创建该文件;以及通过计算设备将封装在信息对象内的内容的至少部分从信息对象复制到所创建的文件。

附图简述

可以参考下面的附图更好地理解本公开的很多方面。在附图中的组件不一定按比例绘制,相反强调清楚地说明本公开的原理。此外,在附图中,相似的参考数字在全部几个视图中表示相应的部件。

图1是根据本公开的各种实施方式的联网环境的图。

图2是根据本公开的各种实施方式的在图1的联网环境中描绘的信息对象的图。

图3是图示根据本公开的各种实施方式的被实现为在图1的联网环境中的计算环境中执行的协作服务器的部分的功能的一个示例的流程图。

图4是图示根据本公开的各种实施方式的被实现为在图1的联网环境中的计算环境中执行的协作服务器的部分的功能的一个示例的流程图。

图5是图示根据本公开的各种实施方式的被实现为在图1的联网环境中的计算环境中执行的协作服务器的部分的功能的一个示例的流程图。

图6是图示根据本公开的各种实施方式的被实现为在图1的联网环境中的计算环境中执行的协作服务器的部分的功能的一个示例的流程图。

图7是图示根据本公开的各种实施方式的被实现为在图1的联网环境中的计算环境中执行的协作服务器的部分的功能的一个示例的流程图。

图8是根据本公开的各种实施方式的提供在图1的联网环境中使用的计算环境的一个示例图示的示意性方框图。

详细描述

本公开涉及用于提供通用数据存储格式的各种实施方式。数据被存储在各种信息对象中,信息对象可以包括一个或多个嵌套信息对象、信息原语、属性和/或其它数据。每个信息对象还可以包括形式信息以及功能信息,该形式信息详细描述信息对象如何通过用户界面被最好地显示给用户,该功能信息描述和/或定义由信息对象提供的一组行为或程序功能。在一些实施方式中,数据可以从各种数据和/或文件类型导入到信息对象中。在一些实施方式中,数据也可以从信息对象导出到各种数据和/或文件类型中。在下面的讨论中,提供了系统及其组件的一般描述,后面是系统及其组件的操作的讨论。

参考图1,示出了根据各种实施方式的联网环境100。联网环境100包括计算环境103和客户端计算设备106,计算环境103和客户端计算设备106经由网络109彼此进行数据通信。网络109包括例如互联网、内联网、外联网、广域网(wan)、局域网(lan)、有线网络、无线网络或其它合适的网络等或两个或更多个这样的网络的任何组合。

计算环境103可包括例如服务器计算机或提供计算能力的任何其它系统。可选地,计算环境103可使用多个计算设备,,该多个计算设备可被使用并例如被布置在一个或多个服务器组、计算机组或其它布置中。这样的计算设备可位于单个装置中或可分布在很多不同的地理位置当中。例如,计算环境103可包括多个计算设备,该多个计算设备一起可包括云计算资源、网格计算资源和/或任何其它分布式计算布置。在一些情况下,计算环境103可对应于弹性计算资源,其中被分配的处理能力、网络、存储或其它计算相关资源可随着时间变化。

根据各种实施方式可在计算环境103中执行各种应用和/或其它功能。此外,各种数据被存储在数据存储库111中,计算环境103可访问该数据存储库111。如可认识到的,数据存储库111可代表多个数据存储库111。存储在数据存储库111中的数据例如与下面描述的各种应用和/或功能实体的操作相关。

在计算环境103上执行的组件例如包括协作服务器113和未在本文详细讨论的其它应用、服务、进程、系统、引擎或功能。协作服务器113被执行以允许一个或多个用户创建并共享一个或多个信息对象116和可能其它数据。

存储在数据存储库111中的数据包括例如一个或多个信息对象116、一个或多个数据过滤器117和可能其它数据。

信息对象116是数据存储对象,该数据存储对象被构造成基于在单独条的信息之间的关系来对数据建模。因此,信息对象116可包括与其它信息对象116的一组关联以指示数据关系。例如,两个信息对象116之间的链接可指示数据依赖性、结构层次或由两个或更多个信息对象116建模的数据的其它关联。信息对象116也可被组合和/或从其它信息对象得到以表示这些关系。因此,大部分信息对象116可从其它信息对象116的组合创建或由其它信息对象116的组合表示。

然而,可以为不能容易地被表示为两个或更多个其它信息对象116的组合的特定类型的数据保留一些类型或类别的信息对象116。例如,重复数据块(例如图像、声音、视频、压缩数据和加密数据)可能需要用作底层数据的封装器的信息对象116的预留或唯一实例。连续流数据(例如来自传感器的数据流)也可能需要信息对象116的唯一或预留实例以表示流数据,因为流数据具有开始部分但不一定具有结尾。

在本公开的一些实施方式中,也可以为各种类型的信息原语保留某些类别或类型的信息对象116。信息原语是可能不被表示或分解成更多的子组件的信息或数据的基本表示。例如,信息原语可以包括未格式化的字符串、文本、数字、颜色、简单形状和其它这样的数据。

数据过滤器117表示指令、规则或其它合适的逻辑,该指令、规则或其它合适的逻辑由协作服务器113用于至少部分地基于从一个或多个源提供的数据来创建信息对象116。例如,数据过滤器117可以对应于指令、规则或其它合适的逻辑,该指令、规则或其它合适的逻辑由协作服务器113用于将封装在文件中的文件或数据转换或导入到信息对象116中。在一些实施方式中,数据过滤器117还可由协作服务器113用于将信息对象116导出或转换成文件或文件类型,以供未被配置为与协作服务器113或信息对象116一起工作的应用使用。

客户端计算设备106代表可耦合到网络109的多个客户端计算设备。客户端计算设备106可包括例如基于处理器的系统,例如计算机系统。这样的计算机系统可以以台式计算机、膝上型计算机、个人数字助理、蜂窝电话、智能电话、机顶盒、音乐播放器、网络板、平板计算机系统、游戏控制台、电子书阅读器或具有相似能力的其它设备的形式体现。客户端计算设备106可包括显示器119。显示器119可包括例如一个或多个设备,诸如液晶显示(lcd)显示器、基于气体等离子体的平板显示器、有机发光二极管(oled)显示器、lcd投影仪或其它类型的显示设备等。

客户端计算设备106可被配置为执行各种应用,例如客户端应用123和/或其它应用。可在客户端计算设备106中执行客户端应用123,以例如访问由计算环境103和/或其它服务器提供的网络内容,从而在显示器119上呈现用户界面133。为此,客户端应用123可以包括例如浏览器、专用应用等,并且用户界面133可以包括网络页面、应用屏幕等。客户端计算设备106可以被配置为执行超出客户端应用123的应用,诸如例如,电子邮件应用、社交网络应用、字处理器、电子表格和/或其它应用。

此外,一个或多个传感器和其它数据馈源126可与协作服务器113或客户端应用123进行网络通信。传感器和其它数据馈源可包括能够生成或记录数据并将数据传输到协作服务器113的任何电子设备。传感器和其它数据馈源126的示例包括加速计、温度传感器或恒温器、视频或网络摄像机、麦克风、噪声传感器、压力传感器、计量器、定时器、流量计、光传感器、应用或程序的输出或结果和其它这样的设备或程序。

最后,一个或多个其它计算环境129可以经由网络109连接到计算环境103、客户端计算设备106和/或一个或多个传感器和其它数据馈源126。在各种实施方式中,可以以与计算环境103的方式类似的方式配置其它计算环境129。在这样的实施方式中,其它计算环境129将包括存储在其它计算环境129中的一个或多个协作服务器113、一个或多个数据存储库111和一个或多个信息对象116。在一些实施方式中,客户端计算设备106可以被配置为与计算环境103或其它计算环境129中的协作服务器113一起工作。在各种实施方式中,协作服务器113可以能够与存储在其它计算环境129中的信息对象116进行交互。

虽然图1描绘了代表客户端-服务器模型的网络中心配置,但这并不排除其它配置。例如,在一些实施方式中,客户端计算设备106可以是位于计算环境103内的计算设备。在各种实施方式中,客户端应用123可连同协作服务器113一起位于计算环境103中,但客户端应用123可在客户端计算设备106的显示器119上传递或呈现用户界面133。在其它实施方式中,协作服务器113、数据存储库111和客户端应用123都可位于单个计算设备内,例如客户端计算设备106或在计算环境103内的单个计算机内。

接着,提供了联网环境100的各种组件的操作的一般描述。首先,客户端应用123做出对一个或多个信息对象116或信息对象116的副本的请求。例如,客户端应用123可请求信息对象116用于在演示文稿、报告或类似的文档中使用。作为另一示例,客户端应用123可以请求一个或多个信息对象116用于在数据分析中使用。

响应于客户端应用123的请求,协作服务器113确定所请求的信息对象116是否存储在数据存储库111内。如果所请求的信息对象116位于数据存储库111内,则协作服务器将所请求的信息对象116提供给客户端应用123。如果所请求的信息对象116不位于数据存储库111内,则协作服务器113确定所请求的信息对象116是否位于其它计算环境129中的其它数据存储库111中。如果发现所请求的信息对象116位于其它计算环境129中的其它数据存储库111中,则协作服务器113可以从其它计算环境129请求信息对象116并将所请求的信息对象中继到客户端应用123。然而,在一些实施方式中,协作服务器113可以替代地将所请求的信息对象116在其它计算环境129内的位置提供给客户端应用123。在这样的实施方式中,客户端应用123接着随后将从其它计算环境129请求和/或获取信息对象116。如果无法找到所请求的信息对象116,则协作服务器113向客户端应用123返回错误或其它消息。在一些实施方式中,协作服务器113还可以将所请求的信息对象116锁定在数据存储库111中,以防止其它客户端应用123操纵所请求的信息对象116,从而防止由信息对象116存储的数据被同时修改并随着时间的推移变为不相干。

一旦客户端应用123接收到所请求的信息对象116的副本,客户端应用123就使用或操纵所请求的信息对象116。对信息对象116的使用和/或操纵可以是程序化的或可以是用户干预的结果。

例如,客户端应用123可以是状态监控器或类似的应用。在这样的实施方式中,客户端应用123可以请求一个或多个信息对象116,分析所请求的信息对象116,以及创建或修改表示对所请求的信息对象116进行的分析的结果的第三信息对象116。在这样的实施方式中,客户端应用123还可以在客户端计算设备106的显示器119上的用户界面133内呈现通知。

作为另一示例,客户端应用123可以是演示应用或类似的应用。在这样的实施方式中,客户端应用123可以允许用户将一个或多个信息对象116作为演示的部分在用户界面133内显示,使用用户界面133来操纵一个或多个信息对象116,并创建表示两个不相关的信息对象116之间的新关系或新数据的新的信息对象116。在2014年3月13日提交的题为“visualizationinterfaceforinformationobjectsystem”的相关美国专利申请14/208,346中进一步详细描述了这样的实施方式,并且该专利申请通过引用以其整体并入本文。

然而,在其它实施方式中,客户端应用123可以替代地从协作服务器113请求可供客户端应用123使用的信息对象116的列表。信息对象116的列表可以包括可由客户端应用123使用或操纵的每个信息对象116的所有标识符,以及存储在信息对象116中的数据类型和/或由信息对象116提供的函数,该函数用于操纵信息对象116或在信息对象116中查询存储在信息对象116内和/或由信息对象116封装的数据。

响应于客户端应用123的请求,协作服务器113确定所请求的信息对象116是否存储在数据存储库111内。如果所请求的信息对象116位于数据存储库111内,则协作服务器113将所请求的信息对象116的列表提供给客户端应用123。如果所请求的信息对象116不位于数据存储库111内,则协作服务器113确定所请求的信息对象116是否位于其它计算环境129中的其它数据存储库111中。如果发现所请求的信息对象116位于其它计算环境129中的其它数据存储库111中,则协作服务器113可以从其它计算环境129请求信息对象116,并将它们包括在提供给客户端应用123的信息对象116的列表中。然而,在一些实施方式中,协作服务器113可以替代地将所请求的信息对象116在其它计算环境129内的位置提供给客户端应用123。在这样的实施方式中,客户端应用123接着随后将从其它计算环境129请求另一个信息对象116的列表。如果无法找到所请求的信息对象116,则协作服务器113向客户端应用123返回错误或其它消息。

在接收到信息对象116的列表之后,客户端应用123然后可以调用由信息对象116提供的一个或多个函数。例如,客户端应用123可以调用函数以更新存储在信息对象116中或由信息对象116封装的信息,获取与特定信息对象116相关的信息对象116的列表,或者调用由信息对象116提供的其它函数,如将在本文中进一步描述的。

在一些实施方式中,客户端应用123可在显示器119上的用户界面133内呈现信息对象116中的一个或多个的实施方式。例如,客户端应用123可以呈现多个信息对象116并说明不同的信息对象116之间的关系,以向用户提供由各种信息对象116表示的数据的映射。客户端应用123还可以为用户提供使用用户界面133来探索信息对象116之间的关系的能力。在2014年3月13日提交的题为“visualizationinterfaceforinformationobjectsystem”的相关美国专利申请14/208,346中进一步详细描述了这样的实施方式,并且该专利申请通过引用以其整体并入本文。

在一些实施方式中,协作服务器113还可以从传感器和其它数据馈源126接收数据。传感器和其它数据馈源126可包括能够生成或记录数据并将数据传输到协作服务器113的任何电子设备。传感器和其它数据馈源126的示例包括加速计、温度传感器或恒温器、视频或网络摄像机、麦克风、噪声传感器、压力传感器、计量器、定时器、流量计、光传感器、应用或程序的输出或结果和其它这样的设备或程序。

从传感器和其它数据馈源126接收的数据可以包括要由协作服务器113验证的信息对象116和/或要由协作服务器113存储在数据存储库111中的信息对象116。从传感器和其它数据馈源126接收的数据还可以包括原始和/或非封装数据,协作服务器113将原始和/或非封装数据转换成或包括在存储在数据存储库111中的信息对象116中。例如,连接到协作服务器113的制造机器可以提供一个或多个信息对象116,该一个或多个信息对象116封装并表示制造机器、与制造机器相关的状态更新以及类似的数据。在一些实施方式中,协作服务器113、客户端应用123或能够访问信息对象116的其它应用可以能够通过操纵与传感器和其它数据馈源相关的信息对象116来向传感器和其它数据馈源126发出命令。例如,客户端应用123可以能够通过由表示制造机器的信息对象116提供的函数来向以上描述的示例中的制造机器发出命令。

接着参考图2,示出了信息对象116的数据结构的描绘。每个信息对象116具有至少一个唯一标识符203,其唯一地识别在数据存储库111(图1)内的信息对象116的特定实例。每个信息对象116还包括内容206。包括在信息对象116的内容206中的可以是一个或多个信息对象引用,例如信息对象引用209a到信息对象引用209n。信息对象116的内容206也可包括描述信息对象116的属性213。此外,信息对象116可包括形式数据216和多个函数219。

唯一标识符203可以是唯一的字母数字号码,例如密码散列函数的结果,或可以是当信息对象116被创建时由协作服务器113(图1)生成的唯一号码。例如,协作服务器113可将密码散列函数例如安全散列算法的一种版本应用于信息对象116,以生成唯一标识符203。在另一示例中,协作服务器113可在信息对象116被创建时使计数器递增且然后将唯一标识符203设置为等于计数器的值。在一些实施方式中,这两种方法可被组合以最小化来自密码散列函数的冲突的风险或由整数溢出错误产生的重复计数器值。例如,可以使计数器递增,并且值被加到密码散列函数的结果前或附加到密码散列函数的结果以创建唯一标识符203。

内容206对应于由信息对象116表示的数据,该信息对象116可包括一个或多个信息对象引用209a...n和/或一个或多个属性213。每个信息对象引用209a...n指向或链接到相关信息对象223。相关信息对象223可对应于作为信息对象116的组成部分的信息或以某种方式与信息对象223相关的信息。例如,表示国家“俄罗斯”的信息对象116可具有信息对象引用209,该信息对象引用209将信息对象116链接到与城市“莫斯科”对应的相关信息对象223。表示“俄罗斯”的信息对象116也可包括对表示国家的列表的相关信息对象223的第二信息对象引用209和对表示“共产主义”的相关信息对象223的第三信息对象引用209。

信息对象116的属性213表示存储在信息对象116内的数据,其可以或可以不直接呈现给用户作为主要内容。信息对象116的属性213可包括例如最初创建信息对象116的用户的用户名、修改信息对象116的每个用户的用户名、记录信息对象116的创建和/或信息对象116的修改的时间戳、由信息对象116支持的供协作服务器113(图1)或客户端应用123(图1)使用的界面标准的版本、由信息对象116表示的数据的语言和/或文化标识以及其它这样的数据。在一些实例中,属性213本身可由其它信息对象116表示。例如,信息对象116的创建者的用户名可由表示用户帐户的信息对象116表示。

形式数据216对应于在显示器119(图1)上表示或显示信息对象116所必需的数据。例如,形式数据216可以表示在显示器119上的信息对象116的尺寸、在显示器119上的信息对象116的位置、信息对象116的透明度值、是否相对于相关信息对象223中的各个相关信息对象在显示器119上覆盖在信息对象上面或置于信息对象下面,以及类似的数据或值。在一些实例中,形式数据216还可以指定在显示器119上的相关信息对象223相对于信息对象116的默认位置。更一般地,形式数据216描述如何在客户端计算设备106的显示器119上呈现信息对象116和与信息对象116相关的用户界面选项,诸如菜单、菜单选项和其它用户界面元素。对于诸如其中第一信息对象116封装或链接到一个或多个子级或同级信息对象116的多级封装,可以在一个信息对象116或多个信息对象116上使用多组形式数据216,每个信息对象116具有表示信息封装一个级别或类似关系的一组形式数据216。

函数219对应于可编程界面、方法或类似的机制,通过这些可编程界面、方法或类似的机制,客户端应用123(图1)或协作服务器113可与信息对象116交互或以其它方式操纵信息对象116。例如,函数219可包括用于设置信息对象116在显示器119上可见或不可见的函数、用于编辑或以其它方式修改信息对象116的函数、用于创建新的信息对象引用209或以其它方式将信息对象116链接到相关信息对象223的函数。函数219还可以包括用于将数据导入到信息对象116中或将数据从信息对象116导出到诸如应用指定的数据文件的另一格式中的函数。在一些实施方式中,函数219还可以允许数据被添加到信息对象116和/或从信息对象116移除,以及允许包含在信息对象116内的数据被修改。在各种实施方式中,函数219还可以被客户端应用123或协作服务器113调用或使用,以根据相应的信息对象116内的形式数据216来将信息对象116呈现在客户端计算设备106的显示器119上。

在一些实施方式中,一个或多个函数219可由信息对象116提供,以允许对包含在信息对象116内的数据的分析。例如,表示在常规棒球赛季期间的棒球队在每场棒球比赛的出席人数的信息对象116可以提供算术函数219,该算术函数219提供在常规棒球赛季期间棒球队的平均出席人数和中值出席人数。根据存储在信息对象116中的数据和由本文所述的各种实施方式的各种实现提供的函数219,更复杂的数据分析函数可由单独的信息对象116提供。

信息对象116或相关信息对象223也可具有与由信息对象表示的用户界面元素对应的单独的信息对象引用209,例如导航信息对象226、菜单区域信息对象229和客户端设备信息对象233。例如,导航信息对象226可描述或定义当前选择的信息对象116相对于其它信息对象116的关系或结构。在一些实施方式中,菜单区域信息对象229可描述或定义各种菜单或其它用户界面133(图1)的组成部分,该组成部分可用于与信息对象116交互,例如编辑、拷贝或删除信息116。在一些实施方式中,菜单区域信息对象229也可提供创建新的信息对象116的功能。此外,在一些实施方式中,客户端设备信息对象233可包含用户和系统范围的设置,例如音量、显示亮度、网络连接设置和其它设置。

接下来参考图3,示出了根据各种实施方式的提供协作服务器113的一部分的操作的一个示例的流程图。应理解的是,图3的流程图仅提供许多不同类型的功能布置的示例,该示例可被采用以实现如本文所述的协作服务器113的部分的操作。作为可选方案,图3的流程图可被视为描绘根据一个或多个实施方式的在计算环境103(图1)中实现的方法的要素的示例。

从框303开始,协作服务器113接收创建信息对象116的请求和要存储在新创建的信息对象116中的数据。该请求可接收自许多源,诸如与协作服务器113交互的客户端应用123(图1)、周期性地向协作服务器113发送数据的传感器或其它数据馈源126(图1)或其它这样的源。

接下来进行到框306,协作服务器113确定创建信息对象116的请求是否有效。例如,协作服务器113可以确定请求实体是被授权还是具有创建信息对象116的权限。协作服务器113还可以验证所发送的数据对于协作服务器113已被请求创建的信息对象116类型是有效数据。例如,如果已经请求协作服务器113创建用于存储视频数据的信息对象116,则协作服务器113可以检查以确定数据确实是视频数据,而不是某种其它类型的数据。如果请求是无效的,则执行进行到框309。否则,执行进行到框313。

移动到框309,协作服务器113向请求者返回错误消息、错误代码或表示错误的信息对象116。执行随后结束。

接下来参考框313,协作服务器113创建信息对象116。协作服务器113可以在计算环境103(图1)中分配存储器以存储和/或表示信息对象116及其相应的数据结构。在需要空或“空白”信息对象116的那些实施方式中,执行进行到框316。然而,在响应于存储信息的请求而创建信息对象116的那些实施方式中,例如当协作服务器113从客户端应用123或传感器和/或其它数据馈源126接收数据时,该信息被复制或放置到信息对象116的内容206(图2)中并且适于信息对象219的形式数据216和函数219被分配给信息对象116。例如,在视频数据将被保存在新创建的信息对象116内的情况下,协作服务器113还可以向信息对象分配适当的形式数据216和函数219,以用于查看、修改和/或以其它方式交互或操纵信息对象116内的视频数据。

进行到框316,协作服务器113生成用于信息对象116的唯一标识符203(图2),并将唯一标识符203分配给信息对象116。可以使用多种方法中的任何一种或多种来生成唯一标识符203。例如,唯一标识符203可以是数字序列内的数字,例如将使用计数器或类似的跟踪机制来生成。在这样的实施方式中,唯一标识符203将等于计数器的值。在分配唯一标识符203之后,计数器然后将被增加以用于在创建后续的信息对象116中使用。

唯一标识符203还可以使用一个或多个散列函数诸如消息摘要算法的各种版本(例如,md4、md5和类似算法)、安全散列算法(例如,sha-1、sha-3和类似的算法)、race原始完整性校验消息摘要(ripemd)算法和其它这样的方法来生成。在这样的实施方式中,内容206(图2)或其他数据可被用作散列函数的输入,并且散列函数的结果可被用作唯一标识符203。也可以使用其它方法来生成唯一标识符203。

移动到框319,协作服务器113将信息对象116保存到数据存储库111(图1)。将信息对象116保存到数据存储库111可涉及将信息对象116写入存储器、磁盘或其它这样的存储介质。在一些实施方式中,信息对象116可被保存到数据库或类似系统。在这样的实施方式中,例如当二进制数据存储在关系数据库或其它这样的数据库内时,信息对象116可作为二进制对象被写入到数据库。在将信息对象116保存到数据存储库111之后,执行结束。

接下来参考图4,示出了根据各种实施方式的提供协作服务器113的一部分的操作的一个示例的流程图。应理解的是,图3的流程图仅提供可被采用以实现如本文所述的协作服务器113的部分的操作的许多不同类型的功能布置的示例。作为可选方案,图3的流程图可被视为描绘根据一个或多个实施方式的在计算环境103(图1)中实现的方法的要素的示例。

从框403开始,协作服务器113接收修改信息对象116的请求以及要添加到信息对象116、从信息对象116移除和/或在信息对象116内修改的数据。该请求可接收自许多源,诸如与协作服务器113交互的客户端应用123(图1)、周期性地向协作服务器113发送数据的传感器或其它数据馈源126(图1)或其它这样的源。

接着进行到框406,协作服务器113确定修改信息对象116的请求是否有效。例如,协作服务器113可以确定请求实体是被授权还是具有修改信息对象116的权限。协作服务器113还可以验证所发送的数据是协作服务器113已被请求修改的信息对象116的类型的有效数据。例如,如果协作服务器113已请求修改用于存储视频数据的信息对象116,则协作服务器113可以检查以确定数据确实是视频数据或适当的元数据,而不是某种其它类型的数据。如果请求是无效的,则执行进行到框409。否则,执行进行到框413。

移动到框409,协作服务器113向请求者返回错误消息、错误代码或表示错误的信息对象116。执行随后结束。

接下来参考框413,协作服务器113锁定要修改的信息对象116。锁定信息对象116可以包括使用一个或多个控制机制来防止其它进程、应用、机器和/或用户通过协作服务器113同时操纵或修改信息对象116。例如,协作服务器113可以使用令牌、互斥体、自旋锁或其它这样的机制来防止其它进程、应用、机器和/或用户同时操纵或修改信息对象116。如果信息对象116已被锁定以进行修改,则协作服务器113将暂停执行直到该信息对象116被解锁。否则,执行继续到框416。

进行到框416,协作服务器113从数据存储库111(图1)获取要修改的信息对象116,或以其它方式访问信息对象116。例如,协作服务器113可以使用在请求中指定的信息对象116的唯一标识符203(图2)来修改信息对象116,以便定位、识别和/或从数据存储库111获取信息对象116。协作服务器113然后继续进行修改信息对象116的内容206(图2)、信息对象引用209a-n(图2)、属性213(图2)、形式数据216(图2)和/或函数219(图2),使得信息对象116将反映所请求的改变和/或修改。

移动到框419,协作服务器113解锁信息对象116,使得其它进程、应用、机器和/或用户将能够修改或以其它方式使用信息对象116。解锁信息对象116可以包括释放令牌、互斥体、自旋锁或其它这样的机制。执行随后结束。

接下来参考图5,示出了根据各种实施方式的提供协作服务器113的一部分的操作的一个示例的流程图。应理解的是,图3的流程图仅提供可被采用以实现如本文所述的协作服务器113的部分的操作的许多不同类型的功能布置的示例。作为可选方案,图3的流程图可被视为描绘根据一个或多个实施方式的在计算环境103(图1)中实现的方法的要素的示例。

从框503开始,协作服务器113确定要导入的文件的类型。可以使用几种方法中的一种或多种来确定文件的类型。例如,可以通过检查文件的名称是否包括与已知文件类型匹配的文件扩展名来确定文件的类型。在其它实施方式中,协作服务器113可以检查文件的前几个字节或前几千字节,以确定文件数据是否包括与已知文件类型匹配的文件头或标识符值。在其它实施方式中,协作服务器113可以基于其它数据来识别要导入的文件的类型。例如,客户端应用123(图1)的用户可能在将文件发送到协作服务器113以导入时已经识别文件类型,或者传感器或其它数据馈源126可能类似地在导入被发送到协作服务器113的文件的请求中已经包括文件类型的标识。除了或代替以上描述的示例方法,可以使用用于识别文件类型的其它方法。一些实施方式可以使用以上明确的方法的一个或多个组合来增加文件类型的识别的准确性和/或可靠性。

移动到框506,协作服务器113确定是否存在用于为所接收的文件的类型创建信息对象116的适当的数据过滤器117(图1)。如果不存在相应的数据过滤器117,则执行进行到框509。如果针对所接收的文件的类型找到相应的数据过滤器117,则执行相反进行到框513。

进行到框509,协作服务器113创建基本信息对象116并将该文件插入到信息对象116中。因此,基本信息对象116用作封装器,该封装器允许接收到的文件存储在数据存储库111中并且响应于对协作服务器113的关于文件或文件中的数据的未来请求而可用。所创建的信息对象116被认为是基本信息对象116,只要信息对象116可以不包括任何属性213(图2)、形式数据216(图2)或函数219(图2),该任何属性213(图2)、形式数据216(图2)或函数219(图2)将被包括在特定类型的文件或数据的信息对象116中。例如,为位图图像文件创建的信息对象116可以包括与由位图图像文件、位图图像文件中使用的特定位图编码表示的图片的尺寸相关的属性213以及其它图像特定的属性213。相反,基本信息对象116可以具有将文件存储在信息对象116内所必需的绝对最少属性213。在将文件存储在基本信息对象116中之后,执行随后结束。

接下来参考框513,协作服务器113根据所识别的数据过滤器117中规定的要求和/或规则来创建信息对象116。这包括在存储器中保留用于信息对象116的内容206(图2)的足够的空间,并且在信息对象116内包括由数据过滤器117指定的函数219和形式数据216。此时,唯一标识符203(图2)也被分配给新创建的信息对象116。此时,还创建了对相关信息对象223(图2)的任何信息对象引用209(图2)。

移动到框516,协作服务器113检查和/或解析文件以从由数据过滤器117指定的文件中提取数据。然后,所提取的数据根据数据过滤器117要求而被复制和/或插入到信息对象116的内容206中。执行随后结束。

还应该注意的是,虽然在从文件创建信息对象116的上下文中讨论了上述操作,但类似的操作将适用于从非文件数据创建信息对象116。例如,可以使用与以上描述的那些方法类似的方法基于诸如音频流或视频流的数据流来创建一个或多个信息对象116。

接下来参考图6,示出了根据各种实施方式的提供协作服务器113的一部分的操作的一个示例的流程图。应理解的是,图3的流程图仅提供可被采用以实现如本文所述的协作服务器113的部分的操作的许多不同类型的功能布置的示例。作为可选方案,图3的流程图可被视为描绘根据一个或多个实施方式的在计算环境103(图1)中实现的方法的要素的示例。

从框603开始,协作服务器113接收将信息对象116导出到文件的请求。该请求可以识别要导出的文件的类型,或者信息对象116可以指定信息对象116可被导出到的文件的类型。例如,表示音频信息的信息对象116可以指定由信息对象表示的音频信息可被导出到特定格式和/或文件类型。该请求可以接收自一个或多个源,包括客户端应用123(图1)、传感器或其它数据馈源126(图1)或一些其它源。

移动到框606,协作服务器113确定是否存在数据过滤器117,该数据过滤器117用于信息对象116将被导出到的文件的相应文件类型。如果不存在相应的数据过滤器117,则执行进行到框609。如果针对所接收的文件的类型找到相应的数据过滤器117,则执行相反进行到框613。

接下来参考框609,协作服务器113向请求者返回错误消息、错误代码或表示错误的信息对象116。执行随后结束。

继续进行到框613,协作服务器113根据数据过滤器117的规格将信息对象的内容206写入文件。例如,表示图像的信息对象116可使存储在信息对象116的内容206中的图像数据被写入到位图文件,但是诸如形式数据216或函数219的数据将不被写入位图文件。执行随后结束。

接下来参考图7,示出了根据各种实施方式的提供协作服务器113的一部分的操作的一个示例的流程图。应理解的是,图3的流程图仅提供可被采用以实现如本文所述的协作服务器113的部分的操作的许多不同类型的功能布置的示例。作为可选方案,图3的流程图可被视为描绘根据一个或多个实施方式的在计算环境103(图1)中实现的方法的要素的示例。

从框703开始,协作服务器113验证从客户端应用123(图1)接收的对表示传感器或其它数据馈源126(图1)的信息对象116(图1)的请求。为了验证请求,协作服务器113可以确定客户端应用123是否具有访问所请求的信息对象116的权限、确定所请求的信息对象116是否存在、确定请求是否被正确地格式化和/或做出其它这样的确定。如果请求被确定为无效,则执行结束。否则,执行进行到框706。

进行到框706,协作服务器113将信息对象116提供给客户端应用123。例如,协作服务器113可以向客户端应用123提供信息对象116的副本,以使客户端应用123在客户端计算设备106(图1)上进行本地操作。在这样的实施方式中,协作服务器113可以锁定信息对象116,使得其它客户端应用123不能操纵信息对象116,以便防止信息对象116由于不同客户端应用123的多次和可能冲突的修改而进入非相干状态。在其它实施方式中,协作服务器113可以将信息对象116的一个或多个函数219(图2)和/或信息对象116的内容206暴露(expose)给客户端应用123。

移动到框709,协作服务器113从客户端应用123接收要由传感器或其它数据馈源126执行的一个或多个命令。在协作服务器113先前已经将信息对象116的副本提供给客户端应用123的那些实施方式中,当客户端应用123将信息对象116的更新版本返回到协作服务器113时,可以接收命令。对信息对象116的改变将表示由传感器或其它数据馈源126执行的命令。在协作服务器113暴露信息对象116的一个或多个函数219和/或内容206的那些实施方式中,客户端应用123可以提供由协作服务器113在信息对象116上调用或执行的函数219的列表或一系列的函数219。例如,客户端应用123可以使用远程过程调用(rpc)或类似的机制来调用信息对象116的特定函数219或一系列函数219。

接着参考框713,协作服务器113确定从客户端应用123接收的命令是否是有效。例如,协作服务器113可以确定客户端应用123是否已经向由信息对象116提供的任何函数219提供适当的自变量、客户端应用123是否具有调入或调用所使用的特定函数219的权限,和/或其它类似的确定。如果协作服务器113确定命令中的一个或多个是无效的,则执行结束。如果协作服务器113确定从客户端应用123接收的所有命令是有效的,则执行进行到框716。

进行到框716,协作服务器113执行从客户端应用123接收的命令,并将任何必要的指令中继到由信息对象116表示的传感器或其它数据馈源126。例如,协作服务器113可以执行必要的函数219以更新存储在数据存储库111中的信息对象116的内容206。在一个或多个命令对应于指示或以其它方式要求传感器或其它数据馈源126执行特定动作的一个或多个函数219的程度上,协作服务器113将任何所需的指令或命令中继到传感器或其它数据馈源126。

例如,客户端应用123可能已经正确地调用由表示制造机器的信息对象116提供的“关断电源(poweroff)”函数219。作为响应,协作服务器113可以执行信息对象116的“关断电源”函数219,以将信息对象116的属性213设置为等于“关闭”状态的值或其它表示。协作服务器113然后可以向制造机器发送命令以开始掉电例程。在一些实施方式中,命令可对应于协作服务器113可访问的命令,协作服务器113通过由传感器或其它数据馈源126(例如制造机器)暴露的应用程序编程接口(api)。在这样的实施方式中,协作服务器113可以使用远程过程调用(rpc)或类似的机制来调用命令。

移动到框719,如果必要,协作服务器113将在向传感器或其它数据馈源126发送任何命令之后更新信息对象116。例如,响应于接收到来自协作服务器113的rpc,传感器或其它数据馈源126可以用结果、错误代码或其它返回值进行响应。在这样的实例中,协作服务器113可以更新信息对象116以反映接收到的结果、错误代码或其它返回值。协作服务器113然后将操作的结果发送给客户端应用123。例如,协作服务器113可以向客户端应用123提供信息对象116的更新版本、向客户端应用123提供指示由客户端应用123调用的函数219或多个函数219的结果的返回代码或结果代码,或者向客户端应用123提供其它这样的结果。执行随后结束。

参考图8,示出了根据本公开的实施方式的计算环境103的示意性方框图。计算环境103包括一个或多个计算设备800。每个计算设备800包括至少一个处理器电路,例如具有都耦合到本地接口809的处理器803和存储器806。为此,每个计算设备800可包括例如至少一个服务器计算机或类似设备。本地接口809可包括例如,具有附属的地址/控制总线或可被认识的其它总线结构的数据总线。

存储在存储器806中的是可由处理器803执行的数据和几个组件两者。特别地,存储在存储器806中并可由处理器803执行的是协作服务器113和可能的其它应用。此外,存储在存储器806中的可以是数据存储库111和其它数据。此外,操作系统811可存储在存储器806中并可由处理器803执行。

应理解,可以存在存储在存储器806中并可由处理器803执行的其它应用,如可认识到的。在本文中所讨论的任何组件以软件的形式实现的情况下,可采用若干编程语言中的任何一个,诸如例如,c、c++、c#、objectivec、perl、php、visualruby、或其它编程语言。

多个软件组件存储在存储器806中并可由处理器803执行。在这方面,术语“可执行”意指处于可最终由处理器803运行的形式的程序文件。可执行程序的示例可以是例如编译程序,其可被转换成以可被加载到存储器806的随机存取部分中并由处理器803运行的格式的机器代码、可以用正确格式表示的源代码例如能够被加载到存储器806的随机存取部分中并由处理器803执行的目标代码或可由另一可执行程序解释以在存储器806的随机存取部分中生成由处理器803执行的指令的源代码等。可执行程序可存储在存储器806的任何部分或组件中,包括例如随机存取存储器(ram)、只读存储器(rom)、硬盘驱动器、固态硬盘、usb闪存驱动器、存储卡、光学盘例如光盘(cd)或数字多功能盘(dvd)、软盘、磁带或其它存储器组件。

存储器806在本文被定义为包括易失性和非易失性存储器和数据存储组件。易失性组件是在失去电力时不保留数据值的那些组件。非易失性组件是在失去电力时保留数据的那些组件。因此,存储器806可包括例如随机存取存储器(ram)、只读存储器(rom)、硬盘驱动器、固态硬盘、usb闪存驱动器、经由存储器读卡器访问的存储卡、经由相关联的软盘驱动器访问的软盘、经由光盘驱动器访问的光盘、经由适当的磁带驱动器访问的磁带和/或其它存储器组件或这些存储器组件中的任意两个或更多个的组合。另外,ram可包括例如,静态随机存取存储器(sram)、动态随机存取存储器(dram)或磁随机存取存储器(mram)和其它这种设备。rom可包括例如,可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)或其它类似的存储器设备。

此外,处理器803可代表多个处理器803和/或多个处理器核心,且存储器806可代表分别在并行处理电路中操作的多个存储器806。在这样的情况下,本地接口809可以是便于在多个处理器803中的任两个之间、在任一处理器803和任一存储器806之间或在存储器806中的任两个之间等通信的适当网络。本地接口809可包括被设计成协调该通信的附加系统,包括例如执行负载平衡。处理器803可具有电气或一些其它可用结构。

虽然协作服务器113和本文所述的其它各种系统可体现在由如上讨论的通用硬件执行的软件或代码中,但作为可选方案,它们也可体现在专用硬件或软件/通用硬件和专用硬件的组合中。如果体现在专用硬件中,则每个可被实现为使用多种技术的任一个或组合的电路或状态机。这些技术可包括但不限于具有用于在应用一个或多个数据信号时实现各种逻辑功能的逻辑门的分立逻辑电路、具有适当的逻辑门的专用集成电路(asic)、现场可编程门阵列(fpga)或其它组件等。这样的技术通常是本领域中的技术人员所公知的,因此在本文中没有被详细描述。

图3-7的流程图示出了协作服务器113的部分的实现的功能和操作。如果体现在软件中,则每个块可表示包括程序指令以实现指定的逻辑功能的代码的模块、段或部分。程序指令可体现在包括以编程语言编写的人可读语句的源代码或包括可由在计算机系统或其它系统中的适当执行系统例如处理器803识别的数字指令的机器代码的形式中。机器代码可从源代码等转换。如果体现在硬件中,则每个块可表示用于实现指定的逻辑功能的电路或多个互连电路。

虽然图3-7的流程图示出了特定的执行顺序,但应理解的是,执行顺序可与所描绘的顺序不同。例如,两个或更多个块的执行顺序可相对于所示的顺序被改动。此外,在图3-7中连续示出的两个或更多个块可同时执行或部分同时执行。此外,在一些实施方式中,在图3-7中示出的块中的一个或多个可被跳过或被省略。另外,为了增强的实用性、记账、性能测量或提供故障排除帮助等的目的,任何数量的计数器、状态变量、警告信号灯或消息可被添加到本文所述的逻辑流程。应理解,所有这样的变化都在本公开的范围内。

此外,包括软件或代码的本文所述的任何逻辑或应用(包括协作服务器113)可体现在任何非暂时性计算机可读介质中以用于由或结合指令执行系统例如在计算机系统或其它系统中的处理器803来使用。在这个意义上,逻辑可包括例如,包含可从计算机可读介质找取并被指令执行系统执行的指令和声明的语句。在本公开的上下文中,“计算机可读介质”可以是可包含、存储或维持本文所述的逻辑或应用以用于由指令执行系统使用或结合指令执行系统使用的任何介质。

计算机可读介质可包括许多物理介质中的任一个,诸如例如磁、光或半导体介质。合适的计算机可读介质的更具体的示例将包括但不限于磁带、磁软盘、磁硬盘驱动器、存储卡、固态硬盘、usb闪存驱动器或光盘。此外,计算机可读介质可以是随机存取存储器(ram),包括,例如,静态随机存取存储器(sram)和动态随机存取存储器(dram)或磁随机存取存储器(mram)。另外,计算机可读介质可以是只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)或其它类型的存储器设备。

此外,本文所述的包括协作服务器113的任何逻辑或应用可以以各种方式来实现和构造。例如,所描述的一个或多个应用可以被实现为单个应用的模块或组件。此外,本文所描述的一个或多个应用可以在共享或单独的计算设备或其组合中执行。例如,本文所描述的多个应用可以在相同的计算设备800中或在同一计算环境103中的多个计算设备中执行。此外,应当理解的是,诸如“应用”、“服务”、“系统”、“引擎”、“模块”等的术语可以是可互换的,且不旨在是限制性。

除非另有明确说明,否则诸如短语“x、y或z中的至少一个”的析取语言在上下文被理解为通常用于呈现项目、术语等可以是x、y或z或其任何组合(例如,x、y和/或z)。因此,这样的析取语言通常不旨在并且不应当意味着某些实施方式要求x中的至少一个、y中的至少一个或z中的至少一个各自存在。

应强调,本公开的上述实施方式仅仅是为了清楚理解本公开的原理而阐述的实现的可能的示例。可以对上述实施方式做出许多变化和修改而实质上不偏离本公开的精神和原理。所有这样的修改和变化都旨在在本文中被包括在本公开的范围内并由下面的权利要求保护。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1