说明书
尽管下文描述了多个不同实施例的详细说明,但应该理解到该说明的合法范围由在该专利所附的权利要求的文字定义。仅仅将该详细说明视为是示范性的,并且由于描述每个可能的实施例即使是可能的,也将是不切实际的,因此该详细说明没有描述每个可能的实施例。可以使用当前技术或者在该专利申请日之后研发的技术来实现多种替换实施例,其仍将落入权利要求的范围之内。
同样应该理解到,除非使用句子“如同在此所使用的,在此定义的术语‘——’表示...”或者相似的句子来在本专利中明确地对术语进行了定义,否则并不希望明确地或者隐含地限制该术语的意思以超越其平常的或普通的意思,并且这样的术语不应被解释为限制于以在本专利的任何部分进行的任何陈述(除了权利要求的语言之外)为基础的范围之中。就在本专利所附权利要求中所列举的任何术语而言,在本专利以与单一含义一致的方式被引用,这是为了清楚以避免使读者混淆的,并且并不希望这样的权利要求术语隐含或者明显地受到那个单一含义的限制。最后,除非通过叙述词语“手段(means)”和功能并且没有叙述任何结构而对权利要求元素进行定义,否则这并不意味着在35U.S.C§112,第六段的应用的基础上来对任何权利要求元素的范围进行解释。
图1说明了合适的计算系统环境100的例子,在该计算系统环境上可实现用于所要求的方法步骤和装置的系统。计算系统环境100仅仅是一个合适的计算环境的例子,并且不旨在对权利要求的装置或方法的使用范围或者功能做出任何的限制。也不应该将计算系统环境100解释为对示范性的操作环境100中示出的任何一个组件或其组合相关有依赖性或者要求。
所要求的方法步骤和装置可用于很多其它通用的或者专用的计算机系统环境或者配置。适合用于权利要求的方法或装置的公知的计算系统、环境、和/或配置的例子包括但是不局限于,个人计算机、服务器计算机、手持或膝上型装置、多处理机系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机、大型计算机、包括以上所述的任何系统或装置的分布式计算环境等等。
可以用诸如程序模块等由计算机执行的计算机可执行指令的一般上下文来描述所要求的方法步骤和装置。通常,程序模块包括执行具体任务或者实现具体抽象数据类型的例程、程序、对象、组件、数据结构等等。该方法和装置同样可以在分布式计算环境中实现,在分布式计算环境中任务是通过经由通信网络链接的远程处理装置来执行的。在分布式计算环境中,程序模块可以位于包括存储器存储装置的本地以及远程计算机存储介质两者中。
参考图1,用于实现所要求的方法步骤和装置的示范性系统包括以计算机110形式出现的通用计算装置。计算机110的各组件可包括但不局限于,处理单元120、系统存储器130和系统总线121,其中该系统总线121将包括系统存储器的各种系统组件耦合至处理单元120。系统总线121可以是几种类型总线结构中的任何一种,这些总线结构包括存储器总线或存储控制器、外围总线、以及使用各种总线体系结构中任一种的局部总线。举例来说,而不是限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及外围部件互联(PCI)总线又名附加板总线(Mezzaninebus)。
计算机110一般包括各种计算机可读介质。计算机可读介质可以是任何可以由计算机110进行访问的任何可用介质,并且包括易失性和非易失性的介质、可移动的和不可移动的介质。作为示例,而并非限制,计算机可读介质可包括计算机存储介质以及通信介质。计算机存储介质包括易失性和非易失性的、可移动的和不可移动介质,其可以用任何方法或者技术来实现以用于例如计算机可读指令、数据结构、程序模块或其它数据的信息存储。计算机存储器介质包括但是不局限于,RAM、ROM、EEPROM、闪存或者其它的存储技术,CD-ROM、数字多用途盘(DVD)或者其它光盘存储,磁带盒、磁带、磁盘存储或者其它的磁存储装置,或者任何其它的可用来存储所希望的信息并且可由计算机110进行访问的介质。通信介质一般地具体表现为在已调制数据信号例如载波或者其它的传送机构中的计算机可读指令、数据结构、程序模块或者其它的数据,并且包括任何信息传输介质。术语“已调数据信号”表示使其一个或多个特征用在信号中编码信息的方式设置或改变的信号。作为示例,而非限制,通信介质包括有线介质,例如有线网络或者直接线连接,以及无线介质,例如声学、射频、红外线及其它无线介质。以上所述任何的组合同样也包括在计算机可读介质的范围内。
系统存储器130包括了以易失性和/或非易失存储器形式的计算机存储介质,例如只读存储器(ROM)131和随机存取存储器(RAM)132。一般将基本输入/输出系统133(BIOS)存储在ROM 131中,该基本输入/输出系统133包括,有助于例如在启动期间,在计算机中的元件之间转输信息的基本例程。RAM 132一般包括了处理单元120可立即访问和/或当前正操作的数据和/或程序模块。作为示例,而不是限制,图1说明了操作系统134、应用程序135、其它的程序模块136以及程序数据137。
计算机110可以同样包括其它可移动的/不可移动的、易失性/非易失性的计算机存储介质。仅仅是举例来说,图1显示了对不可移动、非易失性磁介质读写的硬盘驱动器140、对可移动、非易失性磁盘152读写的磁盘驱动151以及对诸如CDROM或其它光介质的可移动、非易失性光盘156读写的光盘驱动器155。可以用于该示范性操作环境中的其它可移动/不可移动的、易失性/非易失性计算机存储介质包括但是不局限于,盒式磁带、闪存卡、数字多用途盘、数字录像带、固态RAM、固态ROM,等等。硬盘驱动器141一般通过不可移动存储器接口例如接口140连接至系统总线121,磁盘驱动器151以及光盘驱动器155一般通过可移动存储器接口例如接口150来连接至系统总线121。
上面进行讨论并在图中示出的驱动器以及与它们相关联的计算机存储介质,为计算机110提供了对计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图1中将硬盘驱动器141示为存储了操作系统144、应用程序145、其它程序模块146和程序数据147。注意这些组件可以与操作系统134、应用程序135、其它的程序模块136和程序数据137相同或者不同。在这里对操作系统144、应用程序145、其它的程序模块146和程序数据147给定了不同的编号以说明至少他们是不同的副本。用户可通过输入装置,例如键盘162和定点装置161(通常指的是鼠标、跟踪球或触摸垫)来向计算机20输入命令以及信息。其它输入装置(未示出)可包括麦克风、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些及其他输入装置常常通过耦合至系统总线的用户输入接口160来连接至处理单元120,但是也可通过其它接口和总线体系结构,例如并行端口、游戏端口或者通用串行总线(USB)进行连接。监视器191或者其它类型的显示装置同样经由接口,例如视频接口190连接到系统总线121上。除监视器之外,计算机也可包括其它外围输出装置例如扬声器197和打印机196,其可以通过输出外围接口190进行连接。
计算机110可以在联网的环境中进行操作,其中该联网的环境采用了到一个或多个远程计算机,例如远程计算机180,的逻辑连接。尽管在图1中仅仅示出存储器存储装置181,但远程计算机180可以是个人计算机、服务器、路由器、网络PC对等装置或者其它公用网络节点,并且一般包括以上相对于计算机110描述的许多或者所有元件。在图1中描绘的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但是也可包括其它网络。这样的联网环境在办公室、企业级的计算机网络、内联网以及因特网中是常见的。
当计算机110用于LAN联网环境中时,其通过网络接口或者适配器170连接至LAN 171。当计算机110用于WAN联网环境中时,其一般包括调制解调器172或者用于通过WAN 173,例如因特网建立通信的其它装置。调制解调器172可经由用户输入接口160,或者其它适当的机制来连接至系统总线121,调制解调器172可以是内置或者外置的。在联网环境中,相对于计算机110描述的程序模块,或者其部分被存储在远程存储器存储装置中。作为示例,而不是限制,图1说明远程应用程序185驻留在存储装置181上。可以理解所示网络连接是示范性的并且可以使用建立计算机之间通信连接的其它手段。
图2是根据权利要求的方法的说明。在方框200,接收数据同步请求。可以以各种方法来接收数据同步请求。同步可以以一段时间为基础。例如,如果可以通过无线连接与脱机装置进行联系,则可以周期性地生成数据同步请求如此来周期性地传输数据。也可以由用户生成同步请求。例如,顾客关系管理系统的用户可以从远程计算机登录并且该登录可触发数据同步请求。在另一个例子中,某些数据的修改或许会触发数据同步请求。另一个例子是当收集到预定数量的新数据时,可触发同步请求。当然,其它的触发事件也是可能的。
在方框205,该方法可以加载过滤程序或查询。查询可由用户定义。脱机用户不必接收自该脱机用户最后一次联机以来所有的添加到在线应用程序的数据。相应地,用户也可定义将获得该脱机用户想要进行更新的数据的查询。例如,当用户的顾客下了新定单时,那么那个用户就希望从顾客关系管理(“CRM”)应用程序中获知。仅仅除了那些由他或她的顾客下的定单之外,用户可能不需要知道公司接收的每个订单。用户也能定义将返回自脱机用户最近接收更新以来由他或她的顾客下的所有订单的查询。更宽泛的查询可以是用该联机装置上、自脱机装置的最近一次更新以来添加到该联机装置上的所有信息来更新该脱机装置上的所有的信息。用户可以定义的查询的种类和数量实际上是无限的。仅仅作为另一个例子,CRM脱机用户可以创建获得关于所下的、高于阈值,例如5千万美元的任何新定单的数据的查询。信息可以是任何想要的信息,包括顾客关系管理系统(CRM)信息,其通常过于庞大而难以同步。
在另一个实施例中,可以从多个预先定义的查询中选择查询。可以由软件供应商提供查询或者查询可以是由另一个用户创建的模板。也可以由用户对这些预先定义的查询进行修改以进一步符合他们的需要。
可以以传统的自顶向下的方式或者自底向上的方式来创建查询。自底向上的查询可以允许更加简单地对基于分层结构的脱机数据进行细化。例如,代替创建如“给我我拥有所有的帐户以及任何与该帐户相关联的任何记录。但是我不想要任何时间超过一年的、关闭服务事件的任何销售定单…”的顶层查询,用户可以定义用户想要什么帐户,以及在父记录存在的基础上在子记录的查询中使用子句。例如,帐户查询可以是“给我我所拥有的帐户”。然后销售定单查询可以是“给我一年之内、我也正在下载父帐户的销售定单”。
如图3中说明的,可使用简单用户界面来创建查询,其中该简单用户界面不要求用户了解任何程序设计语言或SQL代码。例如,可以显示查询列表310并且将其选为未来同步的一部分。图4说明了更加详细的屏幕,它可以弹出并且允许对从图3中选择的查询310作进一步的修改。图5是图4中所显示的弹出窗口的显示。图5说明了该用户(user)(505)期望使由用户(505)所拥有的约会(appointment)(502)、加上任何与帐户(account)(510)或者(or)(520)用户正在下载的用户联系人(contact)(515)相关的约会被同步,并且其中用户出席了在最近的(last)(540)30天(550)内进行了修改的约会(525)。当然,用户总是可以创建无限量的查询。在另一个例子中,可显示向导(wizard)或新建窗口以帮助用户设计查询。
可以为应用程序的每一用户定义查询。例如,公司A的每个销售人员都可以具有他们自己的查询。此外,查询可被进一步分解。例如,销售人员可能想要对关于对顾客A超过5千万美元的所有销售进行更新但是也可能想要对关于对顾客B超过50美元的所有销售进行更新。
再一次参考图2,在方框210,可将过滤程序转换为SQL查询。由于许多应用程序用户不擅长于创建SQL查询,该方法可自动执行该变换。可以使用固定的选项集合(例如已知姓名和已知判断例如大于、小于等等)来创建查询。SQL查询可以是取回针对数据库,例如CRM数据库发出的命令。
在方框215,可以针对所希望的数据库执行SQL语句。如同先前所指出的,数据库可以是CRM数据库并且SQL语句可以是在方框205由用户创建的查询的SQL转换。获取所希望的数据及其他数据源的其它方式是可能的。
在方框220,可以将SQL语句的结果存储在文件中,其中该文件可以是同步文件。作为例子,如果方框205的查询请求了由脱机销售人员的顾客所下的所有新定单,那么可以将自上次同步以来由该脱机销售人员的顾客所下的所有新定单存储在文件中。在一个例子中,该文件可以是表,但是只要联机和脱机应用程序理解该文件中的数据,同步文件实际上可以具有任何形式。如果同步文件是表,则可以使用传统的SQL语句来创建该表。例如,可以使用归并命令来向同步文件添加已删记录和更新记录。此外,可以使用插入命令将新记录插入到同步文件中。
在方框225,可以将同步文件传送给脱机应用。脱机应用可具有各种形式,例如登录到网络中的基于web的应用程序、以单向和/或双向方式接收数据的无线装置、手机型装置、或任何其它的可以与联机装置通信的电子装置。当使脱机装置联机的时候,存在在联机装置和脱机装置之间进行通信的各种方式。协议和标准已经就位来控制联机装置以及变为联机的脱机装置之间的通信。例如,如果脱机装置使用因特网,则常用的方法包括http、TCP/IP、ftp等等。
如前所述,可以将同步文件分成大小适合于与脱机装置进行通信的方法的包。例如,如果脱机装置连接到也连接到联机装置的10兆比特以太网,那么就不用太考虑同步文件包的大小。但是,如果脱机装置通过无线连接以低带宽例如每秒10kb、并且以容易丢包的低质量情况下连接,则适合使用较小大小的包。可以由应用程序预先设置或动态修改包的大小,也可以由用户或模板对包的大小进行修改。
在方框230,一旦已经将同步文件传送给脱机装置,则联机装置可执行某些内务处理(housekeeping)。可以对同步文件清空所有已被传送给脱机装置的条目。此外,可以更新脱机装置的状态文件。状态文件可以跟踪脱机装置的状态,诸如最近一次传送同步文件的时间。此外,可检查脱机装置是否成功接收到同步文件。
尽管上述文本列出了很多不同实施例的详细说明,但是应该理解到本专利的范围是由在本专利所附的权利要求的文字所定义的。仅仅将该详细说明视为是示范性的,并且由于描述每个可能的实施例即使是可能的也将是不切实际的,因此该详细说明没有描述每个可能的实施例。可以使用当前技术或者在本专利申请日之后研发的技术来实现多种替换实施例,其仍将落入权利要求的范围之内。
因此,可以对在此描述和说明的技术和结构做出许多修改和变化,而不会脱离现有权利要求的精神和范围。相应地,应理解,此处描述的方法和装置仅仅是说明性的并且不对权利要求范围进行限定。