【具体实施方式】
如图1所示,其为一典型的通讯系统100的方块图,该系统100可支持本发明所揭露的方法。通讯塔105提供有多重无线通讯信道,比如与个人数字助理(PDA)101连接的通讯信道115以及与膝上型电脑103连接的通讯信道117。通讯系统100、个人数字助理101以及膝上型电脑103均为可支持本发明方法的典型移动式电脑系统和设备。为简便起见,一电脑设备,无论其是否为可移动,只要采用了无线通讯技术,我们均称它为“移动式电脑设备”。许多类型的移动式设备,包括已在使用的和即将被发明的,均包含于本发明的权利要求中。例如,当今使用的许多移动电话即可利用本发明的方法可使其对资料和国际互联网的访问更加便利。另一类可利用本发明所揭示方法的系统为无线电子证章以及用来与其通讯的发射机和接收器。
通讯塔105通过专用或公用的通讯信道119与服务器107相连。当然,对于熟知此项技艺的人士来说,通讯信道119可以是有线通讯,也可以是无线通讯。服务器107可实现本发明标的的部分内容,以下会对其作更为详细的说明。服务器107和局域网(LAN)121相连。局域网121又与电脑设备109及111相连,其可为服务器107及电脑设备109及111提供访问国际互联网113的信道。个人数字助理101以及膝上型电脑103也可经由局域网121、服务器107、通讯信道119以及通讯信道115或者117来访问国际互联网113。
通讯系统100仅为本发明的一实例,由该系统所衍生出的其它一些系统,甚至是不同类型的系统,也可以采用本发明的方法。例如,本发明的方法可以于局域网的资料服务器架构中实现。对于熟知此项技艺的人士来说,所揭露的方法可以方便地在任何通讯系统或其它类型存在着频宽和/或设备内存问题的系统内展开具有一定优势。本发明非仅限于采用无线通讯链路的系统;虽然在该领域本发明的便利性最容易体现出来。
图2是图1所示的个人数字助理101的示意图。个人数字助理101可以执行本发明所揭示的方法,其输入与输出分别由资料输入区205以及显示屏203提供。本实施例所述的资料输入区205为一小键盘,用户可以在上面键入信息。另外,显示屏203也提供有资料输入功能。显示在显示屏203上的小图标(图中未画出)代表着预先定义好的、个人数字助理101可以执行的动作。用户可利用指示笔207来点选显示屏203上的一个特定的图标从而开始相应的动作。排列于个人数字助理101底部的控制按钮209可以供用户设置不同的功能,比如音量和显示屏203的亮度等。在另一实施例中,资料输入区205可被程序化以使指示笔207可以在其上书写,然后利用个人数字助理101中的笔迹分析软件分析该笔迹以决定一合适的动作。
图3是一无线应用程序的示例架构的方块图,该应用程序库在客户端,如个人数字助理101以及如服务器107(如图1所示)之类的服务器上运行,并采用了本发明所揭示的技术。无线应用架构301包括有一无线资料复制器307以及一移动交换器309,并向诸如个人数字助理101之类的可移动式设备提供促进无线应用程序发展的服务。该无线应用架构301是基于标准建构,并可容易地成为设备、操作系统或独立的数据库。
移动交换器309为移动客户端和跨平台客户端提供实时的访问企业服务器或其它类型的服务器的通路。内存的动作和配置,诸如在服务器中所执行或配置的程序和对象,可以由一客户端无线设备所控制。在本实施例中,移动交换器309也是基于可扩展标示语言(XML)和超文件传输协议(HTTP),可扩展标示语言(XML)使设计者可以定义、传送、验证以及解释应用程序之间和组织之间的资料,超文件传输协议(HTTP)是国际互联网所运用的根本协议,其定义了信息采用何种格式化及如何传送,以及网络服务器或浏览器应该采用什么动作以响应一特定的需求。XML和HTTP均使用了一种流行的方式—远程过程调用(Remote Procedure Call,RPC),以利用网络在不同电脑中的单独程序之间实现进程间通讯(Inter-ProcessCommunication,IPC)。当然,RPC和IPC也可以在单独的电脑设备上被执行。所揭露的无线应用架构301提供简洁有效的环境,以发展在无线结构中运行的主从式应用程序。
无线应用架构301的客户端库提供如下用于关系型客户应用程序的功能:
(1)生成远程过程调用的内容(方法名称和参数);
(2)形成XML信息;
(3)利用HTTP协议将该XML信息传送至服务器;以及
(4)接收并解释来自于服务器的相应的响应。
无线应用架构301的服务器端库提供如下用于关系型客户应用程序的功能:
(1)接收并解释一客户端的请求信息,尤其是利用上述的客户端库所产生、形成以及传送的请求信息;
(2)根据客户端的请求信息所请求的特定RPC,搜索一适合的程序;
(3)调用该合适的程序;
(4)将该合适的响应发回至客户端。
本发明中的远程过程调用(RPC)支持无线环境中以下的数据类型:整数(4位);布尔函数;字符串;日期;双精度;base-64;数组;结构以及杂凑表(hash table)。
无线资料复制器307处理并管理无线设备中的资料,它使用户能够在无线设备中选择用户所需要的特定信息,并且仅复制所选择的信息,利用该方法以节省传输媒介中的频宽和无线设备中的内存资源。无线资料复制器307将系统数据库用作客户端资料缓存,并给每位用户提供一无线设备资料过滤器,或称用户化脚本(customizable scripts),用以说明特定用户选择存储在移动式设备上的信息。资料过滤器可以由特定的用户在该用户的移动式设备上定义,或者,由系统管理器或系统程序员来生成一公用数据过滤器(或称标准过滤器)的菜单,然后用户依其特定的环境和职责从该菜单上做简单的选择即可。标准过滤器也可以简单地模块化,这样用户就可选择并定制。资料过滤器和标准过滤器可以很简单,就如等式匹配游戏一样,也可以很复杂,就如运用了乘法规则的乘算表一样。
无线资料复制器307和移动交换器309提供有一平台,专用应用程序可以建构于其上。在本实施例中,专用应用程序包括有移动电子商务应用程序310、移动医院应用程序320、移动物流应用程序330以及移动金融应用程序340。该专用应用程序310、320、330和340都仅仅是作为例子。实际上,本发明所揭露的方法可以用来实现任何应用程序,这些应用程序可以利用移动式访问中心应用程序或数据库服务器来获得帮助。应用程序310、320、330和340都是本系统的应用程序组件303之一。
任何一个应用程序310、320、330和340都包括有应用程序产品305。在本实施例中,移动电子商务应用程序310的应用程序产品305包括有应用程序A1 311(APP A1)、应用程序A2 312(APP A2)和应用程序A3 313(APP A3)。移动医院应用程序320的应用程序产品305包括有应用程序B1 321(APP B1)和应用程序B2 322(APP B2)。移动物流应用程序330的应用程序产品305包括有应用程序C1 331(APP C1)、应用程序C2 332(APP C2)和应用程序C3 333(APP C3)。最后,移动金融应用程序340的应用程序产品305包括有应用程序D1 341(APP D1)、应用程序D2 342(APP D2)和应用程序D3 343(APP D3)。如应用程序组件303一样,应用程序产品305的特定构成对本发明而言并非是必要的,而仅仅是作为一个例子。例如,APP A1 311可以是一个移动销售力自动控制应用程序;APP B1321可以是一个移动病人管理系统;APP C1 331可以是一个移动传输管理系统;APP D1 341可以是一个移动银行业务应用程序。
图4是本发明的服务器组件的方块图。如下的流程是在图1所示的服务器107上执行并支持上述与图3结合起来所描述的服务器端库。Java服务引擎401执行透过其它流程访问到该引擎的软件、或Java applets和/或servlets。虽然本例所使用的是Java语言,但是本发明实际上可以用任何软件语言来实现。特定的语言对本发明的实质并不重要。在本实施例当中,这些组件均以Java servlets构成。Java servlets与applets类似,也是一些应用程序,或为软件代码的集合,其可扩展网络浏览器和Java服务引擎401的功能。这种方法可以减小生成不同的扩充以和不同的后端系统相连接的需求。Java服务引擎401可根据不同的后端系统负载新的servlets,而不必修改Java服务引擎401本身。这样,servlets只有在它被需要的第一时间才被安装,并且并非所有时间都会生成对特定后端系统过程的需求。
通讯管理器403控制进出移动式设备的信息,为方便以下的描述,该移动式设备设为个人数字助理101。通讯管理器403使服务器107和个人数字助理101之间保持基于传输控制协议(TCP)的联接。在联接的服务器107端,通讯管理器403接收个人数字助理101处的字符串流形式的远程过程调用,并解析该远程过程调用字符串流,将字符串流参数转换成数据结构,然后调用具有已转换的数据参数的合适的本地程序。由远程过程调用所生成的结果被存储于数据结构的输出参数中。
和通讯管理器403通讯连接的是一复制管理器405、一缓存管理器411以及一图表管理器407。复制管理器403控制客户端之间的双向资料同步,比如个人数字助理101和服务器107之间的资料同步。此外,复制管理器403提供端对端的传输交易控制,该传输交易控制可以检测并解决不同客户端之间的资料冲突。与复制管理器405连接在一起的是初级域管理器409,详述如下。
资料之间的冲突可以基于下述四类方法来解决。这四类方法是“最后所写”、“基于时间标示”、“基于值”以及“基于时间标示和值”,详述如下:
(1)在“最后所写”冲突解决方法中,写入数据库的最后的值会成为对象的值。这类方法适用于那些极不可能发生的情形,即多人希望更新同一份资料。这会产生一个问题,那就是如果前一次的修改是在离线状态下进行的,而且直到后一次修改进行以后才被复制,则该前一次的修改会覆盖后一次的修改。
(2)在“基于值”的方法中,如果个人数字助理101的“旧值”和服务器107的当前值相匹配的话,服务器107就接受修改。
(3)在“基于时间标示”方法中,如果修改的时间标示大于(时间上晚于)服务器107中对象的当前时间标示,修改就被接受。这种方法之前提是假设个人数字助理101的时钟与服务器的时钟同步。
(4)在“基于时间标示和值”的冲突解决方法中,由个人数字助理101所提供的修改时间标示必须晚于服务器07上的修改时间标示。此外,由个人数字助理101所提供的作为“旧值”的值必须和服务器107上的当前值相匹配。这些条件可以确保修改是最近的,而且在做出修改时,用户可以知道服务器107中对象的当前表示法。注意如果个人数字助理101的数据库和服务器107的数据库都能够操纵对象属性层(相较于对象层)中的时间标示,则在更新操作进行时,可以生成一多重请求以更新一特定的对象。
对那些没有被服务器107中的复制管理器405所解决的资料所作的未被接受的修改,会被存储起来供系统管理员检查。系统管理员可以根据caseby case来决定一特定的修改是否应该被接受。
在本实施例中,图表管理器407管理有两个图表,皆为XML格式。第一图表,或称主图表描述服务器107以及存储在数据存储器417中的主数据库的图表,以及该主数据库的图表之间的关系。当然,如同上述与图1结合所述的内容一样,主数据库和数据存储器417无需一定处于服务器107上,其可以处于电脑设备109和111之一或二者上,并能被服务器107透过网络121所访问。图表管理器407中之一第二图表描述个人数字助理101的数据结构。当资料从主数据库检索出来后,图表管理器407就从所检索的资料中提取信息,并将该提取的信息传送至通讯管理器403以传给个人数字助理101。图表管理器407还有一附加的次图表,用以从其它移动式设备,诸如膝上型电脑103中提取信息。
缓存管理器411在资料对象从主数据库中被提取出来前为其提供一缓存,以使来自个人数字助理101的复制资料请求更有效。缓存的目的和功能是为电脑领域内的人士所熟知的。
开放式数据库互连(Open Database Connectivity,ODBC)连接管理器413(以下简称为ODBC连接管理器413)和图表管理器407进行通讯连接。除了为熟知此项技术的人员所熟悉的连接池服务(connection pool services)和本文服务(context services)外,ODBC连接管理器413在数据访问管理器415和图表管理器407之间还预建了一套ODBC连接,以从ODBC连接获得并返回开放式连接,以及在停工时返回所有的资源。ODBC连接管理器413也处理连接失效和通讯失效的情形。
资料访问管理器415控制着对数据存储器417的访问。在本说明书中,数据存储器417是指“远程”的数据存储器,而个人数字助理101上的数据存储器是指“本地”数据存储器。“本地”及“远程”的指定仅为简便起见,数据存储器417也可以被称为本地数据存储器,而移动式电脑设备上的数据存储器也可以被称为远程数据存储器。对“本地”及“远程”的指定仅为基于这样一个事实,即两个数据存储器没有驻存于同一设备上。资料访问管理器415可以是任何商用的数据库管理系统,或者是用户构建的系统。资料访问管理器415的具体的细节对本发明的精神并不重要,而且也应当为熟知本项技术的人士所熟悉。
资料应按技术域进行编排以使资料的存储、收集以及分发降低对特定服务器程序,如数据库管理系统和其它所采用的系统的依赖。特定技术域包含有特定对象的定义,包括构成对象的单个的资料组件,或“属性”。每条属性均具有数据类型和一个或多个值。例如,一“账户”对象可以包含与银行账户有关的属性,比如所有者姓名和余额等。在一服务器中,一对象也可以是相关的资料的逻辑表示。每个对象都有唯一的识别符,或相应对象的唯一的密钥。当一特定的对象被更新时,所有与该对象有关的资料也会被更新。诸如移动电子商务应用程序310、移动医院应用程序320、移动物流应用程序330以及移动金融应用程序340(图3所示)之类的应用程序都有与其相对应的域集合。
例如,移动医院应用程序320可具有病人对象和医生对象,移动电子商务应用程序310可包含产品对象。特定的应用程序310、320、330或340的对象均置于域管理器中,如域管理器一421,域管理器二422,域管理器三423。由于不同类型的对象需要不同类型的操作,因此每一域管理器421~423都包含有一套客制化的功能或者商业逻辑,比如商业逻辑431、商业逻辑432和商业逻辑433等。域管理器421~423透过资料访问管理器415从数据存储器417中提取与各自对象有关的信息。每一域管理器421~423都是相关域内信息管理的控制点。诸如搜索、增加、更新和删除等操作均是透过域管理器来完成。商业逻辑431~433为客制化的域,以使每一特定域的处理过程能够进行。商业逻辑431~433也可以包含用于解决数据冲突的逻辑。
为了防止不必要的软件复制,所有域管理器421~423的公共功能都集中在初级域管理器409。初级域管理器409是一个基础对象,域管理器421~423可从它那里继承一些属性和方法。
图5是客户端移动式电脑设备如个人数字助理101上的数据管理程序500的流程图。该流程始于开始步骤501,紧接着即为交易初始化步骤503,在这一步骤中个人数字助理101的用户执行一些动作以处理资料。例如,使用个人数字助理101的销售人员可以从客户那里接收购买特定棒球的请求。个人数字助理101上的本地数据库被更新以显示棒球库存量的变化,该库存量由服务器107上的数据库表示。在本例中,上述个人数字助理101的本地数据库可以被服务器107上的中央数据库所同步,也可以不被该中央数据库所同步。当然,一旦该棒球的库存量被输入到该本地数据库,则该本地数据库和中央数据库就彼此不同步了。
在资料创建或更新步骤507中,程序500确定该交易是代表新的资料还是对已有资料的更新。新的资料可以是销售人员在输入新的客户信息时所生成的帐户对象。虽然不大可能,但是如果生成或接收的资料没有改变或产生本地数据库,或者如果资料被标以“没有存储”(下面会解释),则控制过程会从步骤507跳到结束步骤523,交易的处理过程就此结束。如果资料是新的或被更新,则转至当前连接步骤509。在此步骤中,程序500确定在个人数字助理101和服务器107之间是否具有一当前动态连接。如果没有,则转到插入同步序列步骤511,在该步骤,资料被置于个人数字助理101的存储区域,那些未决的交易均存储于此。此外,这些资料的状态被设为“陈旧”,以下会对此做更为详细的解释。如果该程序在步骤509确定个人数字助理101和服务器107在当前是连接着的,则流程会转到同步步骤513。
资料在步骤509被插入到同步序列和在步骤513的同步化均涉及到将资料格式化为适合传送的格式,比如生成远程过程调用的内容(方法的名称和参数),以及基于所生成的内容和在步骤503所生成或者接收的资料形成XML信息。为了实现正确有效的同步,程序500将下列资料状态之一分配到每个对象:
(1)新:这种状态指在个人数字助理101上已经生成但在服务器107中未存在的对象。适合于相应对象的“增加”对象操作,或者“方法”必须在下一同步过程中被传送至服务器。该新对象的一些属性比如唯一的对象密钥须由服务器107生成并回传给个人数字助理101,并确定服务器107中的增加操作是成功的。当然,如果增加的操作不成功,服务器107需要将此情形传送给个人数字助理101,这样,个人数字助理101就可以采取合适的动作。
(2)更新:一个对象的更新指自从上次同步后已经在本地个人数字助理101资料存储区被更新。在更新的同一时刻,该对象的更新值必须被传送到服务器107上。任何可能发生的冲突,如两个互不相识的销售员都试图销售同一产品时发生的冲突,都会在服务器107上通过复制管理器405解决(图4)。然后更新过的对象重新被传送到个人数字助理101以确保个人数字助理上的副本资料与服务器107上的一致。如果复制管理器405确定来自于个人数字助理101的对象因为数据冲突而无效时,传送到个人数字助理101的更新对象还必须简要说明该冲突事实。
(3)不能存储:被指定为“不能存储”的对象来自服务器107并保存到个人数字助理101上。如果有必要的话,该对象可以会被个人数字助理所遗弃。一个典型的例子是个人数字助理临时需要某数据项目,而其属性不能被修改。当环境改变时,个人数字助理101可以将对象状态从“不能存储”状态改为“可存储”状态。
(4)存储:被指定为“存储”的对象不管是在本地的还是在远程的资料存储区都被作为永久的一部分,并与至少一个包含在同步过程中的预先定义的资料过滤器相匹配,从而使其属性值被保留在一个同步状态。
(5)陈旧:被指定为“陈旧”的对象被保留在个人数字助理101上但不包括在同步过程中。个人数字助理101可以根据其自身需求及(或)该陈旧对象的自身特性来决定保留还是清除该指定为陈旧的对象。
(6)删除:被指定为“删除”的对象是指已经从个人数字助理101的资料存储区移除的对象,且在一个同步过程中该删除信息需被传送到服务器107中。客户可以从本地资料存储区移除该删除的对象,而只需在一个同步过程中传送该对象的唯一密钥至服务器,或者标注该对象为删除状态,而正如同步过程所要求的那样,只有当该对象从服务器107成功删除时才将其从本地资料存储区移除。
个人数字助理101特定对象的状态维持追踪的方式对于本发明的精神并不很重要。如果个人数字助理101将对象保存在一个关系数据库中,该对象的指定状态可以简单地作为表格中的一个属性值范围。另外一种可替代的保存该状态信息的方法是,通过将对象的不同状态隔离在不同的文件里。例如,一个“不能保存”的对象可以保存在一临时文件中,只有当该“不能保存”状态转换为“保存”状态时才被保存到资料存储区。
步骤509是向步骤511进行还是向步骤513进行取决于个人数字助理101是处于在线状态还是处于离线状态。如果个人数字助理101处于在线状态,则转向步骤513且在步骤509创建的XML信息被传送到服务器107上。如果个人数字助理101处于离线状态,则转向步骤511,在该步骤,XML信息被插入到一个同步步骤中。接着,再转回至步骤509,在该步骤,个人数字助理一直为待机状态,直到在其与服务器107之间建立一条连接。个人数字助理101周期地核查一个连接是否被建立,例如当连接周期为定期排程事件或数据传输被服务器107所初始化等;或者当个人数字助理101需要传送一条或多条信息,被设定为初始化一个连接时,核查建立连接的条件是否已经具备。如果当个人数字助理101在等待与服务器之间建立一个连接时,一个新的交易被初始化,程序500会像处理以前的交易一样将该新的交易放到同步队列中等待建立连接,以便能产生一个同步过程。
上述提到的同步周期可以是固定不变的也可以是可变的。一个同步排程可以通过个人数字助理101或服务器107上的用户接口(UI)来建立。用户亦可在个人数字助理101或服务器107上利用该用户接口来初始化一同步过程。如果在初始化一同步过程的同时,在个人数字助理101和服务器107之间还未建立连接,初始化同步过程的个人数字助理101和服务器107辨识出该状态,并将连接请求放进同步序列中,然后周期地测试两者之间的连接是否建立或建立连接的必要条件是否存在。两者之间的连接一旦建立,同步过程将继续,控制过程509将转向步骤513。
该同步过程需保持本地的资料副本与服务器107上的对应资料一致。本发明的同步是基于资料过滤器的,这些将在后面结合图9到图12进行详细论述。个人数字助理101上的资料对象副本,如本地或客户端资料,通过一系列的客户端/服务器端的交易,与服务器107上对应的资料对象,如服务器端资料达成同步。
同步步骤513始于个人数字助理101向服务器107发送一个同步请求对象时。该同步请求对象会压缩所有个人数字助理101需要提供给服务器107的资料,以便执行一个特定的同步动作,包括一时间标记、一可选择的过滤器、一可选择列表、或一需要同步的对象“矢量”或一同步对象,以及一个包括个人数字助理101当前的地理位置信息的可选的位置对象。在另一实施例中,该位置对象可以是一个既包括个人数字助理101的当前地理位置信息还包括其未来地理位置信息的矢量。
有六种同步行为或操作:一同步过滤操作,一获取删除操作,一获取创建操作,一发送修改操作,一发送创建操作及一发送删除操作。该六个操作在下面结合图6有详细描述。每一操作都带有两个参数,一同步请求对象和一第二字段,或“结果ID”,其用于表明对应于该同步请求对象,个人数字助理101希望从服务器107返回的信息。该结果ID设置有如下几种值:
(1)全部:该“全部”结果标记值意味着服务器107必须返回该操作有关的所有对象的ID及其状态值。该“全部”结果标记值应该慎用,应为其会导致个人数字助理101与服务器107之间的通讯量剧增。
(2)更新:该“更新”结果标记值意味着服务器107应该返回与该更新操作有关的所有对象的ID及其状态值。此外,当服务器107上的副本与个人数字助理101上不一致时,对象副本也应返回。
(3)ID:该“ID”结果标记值意味着服务器107应该返回与该操作有关的所有对象的ID及其状态值。另外需返回基于操作之类型的信息。
(4)失败:该“失败”结果标记值意味着服务器107仅仅返回操作过程中不能处理的对象的错误信息。
(5)无记载:该“无记载”结果标记值意味着个人数字助理101对于接受关于操作的任何信息都不关心,服务器107应处理整个请求,而仅仅将操作完成的信息传送给个人数字助理101。
对应于特定操作的结果ID将在图6进行详细描述。该同步请求时间ID指示某特定同步操作执行的最新时间。如果资料过滤器是指定的,服务器107即利用该资料过滤器来限定返回的资料范围或“同步结果对象”。
如果可选的位置对象包括在同步结果对象里,则返回资料范围也可以基于位置对象中的位置信息来设定。例如,位于一城市的个人数字助理101用户,其在该个人数字助理101的本地资料存储区存有该城市的餐馆相关信息,当该用户旅行到另外一城市时,一个同步结果对象将包含该异地城市的餐馆相关信息。该位置信息可以基于一公用系统,如全球定位系统(GPS)或移动电话塔或一私有系统,如传送装置置于一医院房间,而仅仅在一有限的区域内发送信息。该位置对象还可以包括未来位置信息。例如通过该传送装置,一医生可以指定将来的房间矢量,不仅可以将当前房间里的病人信息下载到其个人数字助理101上,还可以把该房间周围矢量范围内的的房间内的病人信息都下载到其个人数字助理101上。
每一同步对象矢量都包括一时间ID,一对象ID,一基础对象,一对象状态ID,一旧值对象及一可选的信息字段。在一特定行为里,并不是所有的这些同步对象都必须指定。
例如,在一个添加操作中,同步对象不需要指定该旧值对象;在一个删除操作中,只需要指定要删除的对象ID即可;而旧值对象只有在更新操作时才需要指定。该同步对象的时间ID表示某特定对象在服务器107上被更新或核实的时间。如果同步对象的时间ID在某特定同步对象中没有指定,则服务器107将同步请求时间ID作为该同步对象的时间ID。对象ID指定一基础对象在整个同步对象中的唯一身份标识ID。该状态ID和信息字段描述一作为操作结果的同步对象的状态,主要应用在同步结果对象中。
当服务器107完成同步对象中指定的动作时,其会将同步结果对象传送到个人数字助理101。该同步结果对象包括一个时间ID和一同步对象矢量。该同步结果时间ID表示响应的同步操作在服务器107上执行的时间。同步结果对象中的每一同步对象的时间ID表示与该同步对象对应的行为被执行的时间。特别是当同步结果里的所有同步对象都有相同的时间ID时,如果一个时间ID没有被指定,则可以用同步结果的时间ID来代替。
同步结果中的同步对象的状态字段表示该对象与对应的操作的关系,其设定有如下几种值:
(1)更新:更新状态表示服务器107上的副本与个人数字助理101上的副本不一致。该状态意味着另外一客户在服务器收到同步请求前已经更新了数据库中的资料对象,此时个人数字助理101必须采取一适当操作来解决该种冲突。
(2)成功:成功状态表示同步对象在服务器107上处理成功,在服务器107满足同步请求时不需要对同步对象做任何修改。
(3)失败:失败状态表示服务器107不能执行某特定同步对象的操作请求。在这种情况下,该信息字段包含一关于该失败状态的文本信息。
(4)相同:相同状态表示服务器107上的对应对象同步对象时间ID没有变动。
(5)新匹配:新匹配状态表示自从个人数字助理101最后一次发出请求的时间后,对应的同步对象中描述的对象对于服务器107或某特定请求来说是新的。
(6)不匹配:不匹配的状态意味着服务器107不能找到对应值对象,可能因为其已被删除或更改,以致于不再匹配同步请求对象提供的资料过滤器。
该状态字段及其对应的特定操作将会对照图6作详细描述。
一旦同步步骤513完成,程序500将继续到良好状态返回的步骤517,在该步骤,会通过分析服务器107的返回信息来核实同步步骤513中的对象信息,如果该返回状态值信息表示某特定的资料更新或创建操作成功,则控制模块517转向标示资料状态步骤519,在该步骤,表示存储在本地资料存储区的对象值被与存储在服务器107的存储区417的对象值相匹配。如果某特定项目的返回信息表示一更新或创建操作在服务器107上没有被执行,那么控制模块517转向重处理步骤521,在该步骤,对应的对象值被设定为与存储在服务器107的存储区417中的对象值相同。此外,任何在个人数字助理101上基于资料对象的更新或操作的行为必须被确定是否有必要采取更进一步的操作。
在步骤519和521完成之后,程序500进行到结束步骤523,在该步骤,程序500运行结束。需要注意的是,步骤517,519及521在本质上是反复迭代的。换句话来说,如果一个同步过程包括多个对象且这些对象都被处理形成一同步队列,对应于每一对象的返回信息都必须通过步骤517,519及521才能到达最后的结束步骤523。
图6为一对应于同步步骤513(图5)的典型同步程序600流程图。程序600始于开始步骤601,当同步请求操作如图5中所描述的那样被初始化的同时,该步骤被初始化。如下的每一个步骤都表示一个与同步请求对象一起传送的操作。程序600从步骤601进行到与获取删除操作相关联的获取删除步骤603。该获取删除操作重新找回从上一次获取删除操作被执行后已经从服务器107上所删除的所有对象。
对应于同步请求对象,该获取删除操作发送一时间ID和一可选择的对象ID列表至服务器107。一般来讲,对应于该获取删除操作没有对应的资料过滤器。但是,如果某特定的服务器107执行一两步过程:删除和销毁,那么一个资料过滤器可以被发送。该获取删除操作的时间ID应被设定为个人数字助理101最近一次发送获取删除操作的时间(如果某给定的资料过滤器已经被发送)。如果该可选的ID列表与该获取删除操作一起被发送至服务器107,则该服务器107将同步结果对象回传至个人数字助理101,正如上述在图5的描述一样。该同步结果对象包含对象状态,包括已删除的和未删除的对象,连同列表上的对象ID。如果一个资料过滤器被发送,则仅仅只有符合该资料过滤器的对象状态被发送。否则,服务器107将回传一个包含自上一次同步后被删除的所有对象ID列表的同步结果对象。该同步结果对象的时间ID被保存在个人数字助理101上并被作为下一次同步请求对象的时间ID。个人数字助理101将返回的ID列表与其上保存的对象做比较,并据此更新其本地数据库。
如果该同步结果对象的结果标记值被指定为全部,则服务器107返回自上一次获取删除操作后被删除的所有对象的ID。如果提供有一ID列表,则该同步结果还将包含列表上每一ID的状态。“不匹配”状态表示该对应的对象在服务器107上不再存在。“更新”状态表示该对应的对象存在于该服务器上,但已经在该获取删除操作时间后被更新。在这种情形下,该更新过的对象副本也被返回至个人数字助理101。
更新、失败及无记载的结果标记值不适用于该操作。“ID”结果标记值会致使服务器107返回自上一次执行获取删除操作后被删除的所有对象ID。如果提供有一ID列表,则该服务器还将返回列表上每一ID的状态。在这种情形下,该结果状态不是匹配就是不匹配,且更新后的对象副本也不用返回。
接着步骤603进行到发送删除步骤605,在该步骤,个人数字助理101经由传送该同步请求对象中的发送删除对象,其包括被删除对象的对象ID,来向服务器107汇报在个人数字助理101本地数据库被删除的对象。服务器107据此更新服务器数据库并回复给服务器个人数字助理101,说明已经从服务器107的资料存储区417成功删除的对象。
完成发送删除步骤605后,程序600继续到获取创建步骤607。在该获取创建步骤607,个人数字助理101发送一时间ID和一可选的资料过滤器至服务器107。如果资料过滤器没有指定,则个人数字助理101找回自上一次执行获取创建步骤后在服务器107上所创建的所有资料对象。如果在同步请求对象中指定了资料过滤器,则仅仅返回该时间ID后新创建的符合该资料过滤器的新对象。在该操作中,不返回对象ID。服务器107回复一组同步对象矢量,每一对象均表示一新创建的基础对象。该返回对象的状态值为“新匹配”,且其时间ID对应于该对象在服务器107上创建的时间。
同步请求对象中的结果ID值为全部ID时,服务器107返回所有创建的对象;结果标记值为ID时,服务器107返回所创建对象的ID,但不返回对象本身的副本。结果标记值更新,失败及无记载不适用于该操作。
完成获取创建步骤607后,程序进行到发送创建步骤609,在该步骤,个人数字助理101通过在本地资料存储区搜索状态值为“新”的对象来创建一在本地资料存储区所创建的最新对象列表。该新对象随同上次发送创建操作执行的时间ID一起被发送至服务器107。该时间ID信息被复制管理器405用来探测及解决任何潜在的资料冲突,且在可能的情况下添加物件至服务器107的数据库。在该发送创建操作,没有指定资料过滤器,且个人数字助理101在请求中为每一对象创建一临时ID或ID密钥,用来将该对象与服务器107回复的同步结果对象中的对象ID相关联。
一旦服务器107接收到来自个人数字助理101的同步请求对象,服务器107产生相应的同步结果对象,指明在服务器107上所重新创建的新对象。该同步结果对象包括一基础对象,其可能与个人数字助理101所发送的新对象不尽相同。如果同步请求对象中的结果标记值设为“全部”,则该同步对象包括包含在该发送创建操作中的全部对象及其子对象。其包括有显示该操作后新增的对象、在该发送创建过程中更新的新增对象及不能添加物件的失败结果等基础对象。该全部结果标记值是同时返回该对象及其成功状态值的唯一设定值。该成功状态值意味着该对象没有任何变动地被添加到服务器107的数据库中。如果该结果标记值设定为“更新”,则返回对象ID及其成功状态值,但不返回对象本身。如果该添加物件的状态为更新,则对象ID,状态值及对象副本被返回。一般地,这种情形意味着有多个字段没有在原始请求中做描述,但需要由服务器107来设定。在这种情形下,对象ID由服务器107设定,且包含在返回信息字段里。如果对于某特定对象添加失败,则该失败状态值、信息字段中的错误信息及原始对象被返回至个人数字助理101。
如果同步请求中的结果标记值设定为“ID”,则该同步结果对象仅仅包括服务器创建的对象ID及所发送的所有对象的状态--没有任何对象被返回至个人数字助理101。如果该结果标记值设定为“失败”,则该同步结果对象仅仅包含临时ID、对象状态及失败的原因信息。如果该结果标记值设定为“无记载”,则关于操作成功或失败与否的任何信息都不返回至个人数字助理101。
如果该结果标记值设定为“全部”或“更新”,则客户端应依据同步结果对象中的结果来更新其本地资料存储区。如果该结果标记值设定为“失败”或“无记载”,则个人数字助理101应采取相应步骤以确保本地信息的正确性。如果该同步结果对象返回的状态值为“失败”,则个人数字助理101应采取相应步骤去修正该问题,有可能还需要再次进行相应的操作。一旦确认该发送创建操作在服务器107上已完成,正如在相应的同步结果对象中所指明的那样,原始对象从本地资料存储区被删除。如果一新创建对象符合一过滤器,则起将会在下一个同步过程中被重新创建。这样能确保个人数字助理101对该对象有一正确的表述。在某些情况下,服务器107将在将该对象添加至数据库之前填充缺省字段或更新新对象。
如果个人数字助理101不能决定服务器107是否已完成一添加操作,则个人数字助理101不知道是否所有的添加请求是否被服务器107所接收和(或)处理。在个人数字助理101再次与服务器107连接时,其将试图去确定先前的添加操作是否成功。如果该信息仍然不能确定,则个人数字助理101,或更精确地说是执行该操作的移动电子商务应用程序310将提示用户再次提交该添加请求或从本地资料存储区移除该操作请求。
一旦该发送创建步骤609完成,则程序将继续到发送更新步骤611,在该步骤,个人数字助理101将自上次执行发送创建操作后在本地资料存储区有变动的对象信息发送到服务器107。个人数字助理101利用上次发送创建操作的时间ID来填充同步请求对象中的时间ID字段,同时其还发送一组同步基础对象矢量。
对于在本地数据库存储区有变动的每一对象,个人数字助理101创建一同步基础对象。该同步基础包含同步基础对象中所表述的某次特定变更的时间ID。ID字段用该特定对象的唯一身份标识来填充。个人数字助理101还提交一更新的基础对象于同步对象中的基础对象字段中。只有有变动的值才会被表述。旧值被放置在另一基础对象中,包括旧值及属性等,不包括更新过的值。唯一需要被表述的值为在更新过的基础对象中所列示的属性的原始值。例如,如果一个对象值变更,则其原始值应放置在旧值对象中,而其新值则被放置在更新的基础对象中。该同步基础对象中的ID字段为变更的目标对象唯一的可靠标识。
下面描述的是由服务器107的返回信息,该信息是基于一为发送创建操作而设置的特定结果ID。
如果结果ID值设定为“全部”,服务器107则传回所有已被成功更新对象的ID和一错误信息,该错误信息显示没有被更新的对象。在完成所有的更新操作后所有对象的当前值会被传给客户端。
如果结果ID值设定为“更新”,服务器107则传回符合要求的每一对象的状态。那些已被更新对象的信息将不会传回。对于没有被成功更新的对象,传回的信息包括已更新对象的ID、该对象被存储于服务器107的状态和当前版本。个人数字助理101能用这些对象的当前值更新其本地的资料存储区。
如果结果ID值设定为“ID”,服务器107则传回所有符合要求对象的ID和状态。无对象传回至个人数字助理101。
如果结果ID值设定为“失败”,服务器107传回的结果将仅包括不能在服务器107上更新的对象的ID、状态和失败信息。服务器107不会传回该对象的当前版本。
如果结果ID值设定为“无记载”,服务器107不会传送有关更新成功与否的任何信息给个人数字助理。
在执行发送更新步骤611后,程序进行至一同步过滤步骤613,在该步骤使用者可选择保存一资料过滤器以供后续使用。该资料过滤器存储于个人数字助理101在本地的资料存储区的过滤器列表中。服务器107也可以保存资料过滤器,并为每一资料过滤器设一使用者ID和资料过滤器ID,以便在同步过程中个人数字助理101只需发送资料过滤器的ID即可,而非实际的资料过滤器。如果被保存的过滤器正在本地运行,除了资料过滤器的查询字符串、过滤器名称和该资料过滤器是否要同步外不会存储其它的信息。如果该资料过滤器是在服务器107上运行,被传回的ID清单也会与数据过滤器一起保存。
资料过滤器的同步操作即可成批进行,也可一次只执行一个。对于每一资料过滤器,个人数字助理101,或者更准确的说执行该资料过滤器的电子商务应用程序310提供一与上次执行同步操作时使用的数据过滤器相匹配的ID清单。个人数字助理101传送同步请求对象的矢量至服务器107。每一同步请求对象均包含一查询字符串和一同步对象的矢量。在每一同步对象内,由个人数字助理101填写该对象的ID和时间ID。
服务器107则传回同步结果对象的矢量。该矢量将含有对应于每一同步请求对象的一同步结果对象。每一同步结果对象将包含一被执行过的资料过滤器,显示该过滤器执行时间的ID和同步对象的矢量。每一同步对象均有一字段用下述四种状态描述其在结果信息中的存在方式。
如果一同步对象被标为“相同”,则该对象的ID已包含在请求信息ID内。换句话说,个人数字助理101已经知道该对象匹配的过滤器。而且,该对象自同步请求对象内的时间ID显示的时间以来尚未被更新过。所以个人数字助理101不需要对本地资料器存储做任何更动。服务器107可选择不传送该对象至个人数字助理101以减少网络上的通讯量。如果该对象的ID没有包含在结果信息内,个人数字助理仍可假定该对象与过滤器匹配并且未发生变动。随后,个人数字助理101将该对象在本地的副本上的时间ID更新为同步结果对象内提供的时间ID。时间ID被更新后,应保存该对象在本地的副本的状态,而不论其先前状态如何。遗漏的ID则留在与该过滤器相匹配的ID清单内。
如果该同步对象被标为“新匹配”,则同步请求对象内列明的已知ID中没有该对象的ID。即该对象与前一次被执行同步操作的过滤器不相匹配。在这种情形下,整个对象被传回至个人数字助理101。个人数字助理101将其存入本地存储区,同时将时间ID更新为同步请求对象内提供的时间ID。在个人数字助理101的资料存储区该对象的状态被设为“保存”,该对象的ID也添加至与过滤器相匹配的ID本地清单。
如果同步对象的状态为“更新”,其对应ID则在同步请求对象发送之前次结果信息内。但是自同步请求内提供的对象的时间ID显示的时间以来,该对象已被更新过。整个对象被传至个人数字助理101。个人数字助理101将其保存至本地资料存储区,同时将时间ID更新为同步请求对象内提供的时间ID。在个人数字助理101的资料存储区该对象的本地状态被设为“保存”,该对象的ID也被保留在与过滤器相匹配的ID清单内。
在与先前的特定过滤器相匹配的同步请求内,发送的同步对象状态为“不匹配”。但是该对象已经被更新或删除,所以不再与相应的查询字符串相匹配。个人数字助理101则在本地资料存储区将该对象状态设为“陈旧”,并将该对象的ID从与过滤器相匹配的ID清单中移除。如果本地资料存储区内并没有该对象,那么个人数字助理仅将该对象的ID从ID清单中移除。
个人数字助理101保存每一被执行同步操作的资料过滤器,以及表明该过滤器上一次被执行的时间的时间ID,每一次该过滤器被执行时与的匹配的ID清单。
除同步过滤请求外,个人数字助理101也提供指示传回信息的数量的结果ID。下面列出的即是个人数字助理101基于该ID可得到的结果。
如果结果ID的值为“全部”,服务器则传回与资料过滤器内的查询字符串相匹配的所有对象。该对象的状态会添加进去,然后传回整个对象。如果某一ID不再与过滤器相匹配,该对象则被设为“不匹配”,该对象的ID被传回。此时,没有对象传回个人数字助理101。
如果结果ID的值为“更新”,服务器107则传回与资料过滤器相匹配的所有对象的ID,而不是整个对象,因为这些对象的状态为“相同”。被传回的是被标为“更新”或“新匹配”的对象。同时,服务器107也指出不再与过滤器匹配的对象,将其状态设为“不匹配”。
如果结果ID的值为“ID”,服务器107则传回被标为“更新”或“新匹配”的对象,同时指出不再与过滤器匹配的对象,将其状态设为“不匹配”。对于任何标为“相同”的对象,服务器107不会传回其ID或对象。
如果结果ID设为失败或未记载,则不执行本步骤。
完成同步过滤步骤613后,同步程序600即进行至步骤615,至此整个同步程序结束。尽管图6的同步程序600不是一串连续的步骤,但这并不是本发明主题所必需的。举例来说,所有的步骤可结合成一单一的同步请求对象,由服务器107按照图6揭示的次序或其它次序依次执行不同的操作。
图7是在支持个人数字助理101的服务器107上运行的数据管理程序700的流程图。该程序始于一开始步骤701,并直接进行至一资料接收步骤703。比较典型的例子是,步骤703与一同步步骤513(图5)相连接。从步骤703到一新资料步骤705后,数据管理程序700判断在步骤703收到的资料对象的状态值是否为“新”(如图5所述)。如果该资料是新的,程序即转入一插入资料步骤707,由资料撷取管理器(图4)创建一新资料对象并将其插入数据存储器417(图4)的合适位置。随后程序进行至传送状态步骤715,在该步骤生成一传回信息,通知传送资料对象的个人数字助理101资料创建操作的结果。
如果在步骤705,数据管理程序700确定该资料对象不是新的,而是被传送它的个人数字助理101指定为“更新”的对象,那么程序即进行至核对时间ID步骤709,由程序700比对被传送来的资料对象的时间ID和存储的相应对象的时间ID。如果存储的资料对象比传送的资料对象新,那么该存储的对象不会被更新,程序直接跳至传送状态步骤715,发送一传回信息通知个人数字助理101该更新操作失败。如果在步骤711,程序确定传送的资料对象上的时间ID晚于该存储的对象上的时间ID,那么程序转入资料同步步骤713,用传来的对象取代存储的对象。随后,在传送状态步骤715,发送一传回信息通知个人数字助理101资料更新成功。需要注意的是,上述程序是不断重复的,因为个人数字助理101传送给服务器107的资料对象可以不只一个,而每一传送的资料对象需在一个同步操作完成前由程序700处理。
图8是在服务器107(图1)上执行的更新通知程序800的流程图。程序800始于一开始步骤801,然后直接到一初始化交易步骤803,在远程数据存储器417(图4)一些针对资料的操作已经完成。在本较佳实施例中,该操作可以是更新、添加或删除,只要与个人数字助理器101(图1)的使用者的ID相连的资料过滤器相符即可。每一对操作/资料过滤器都有一加权值、一临界值,或者一累积加权值(另一较佳实施例)。在某些情形下,该加权值和临界值可能相同。交易在步骤803被执行后,在检索加权值步骤805,程序将该操作以及该操作的目标值与服务器107上的资料过滤器清单进行比对。如果该操作与某一资料过滤器相符,那么就会检索到那一对操作/资料过滤器所对应的加权值。在累积加权值实施例中,还会检索到一个累积加权值。累积加权值是某一对操作/资料过滤器在程序800先前的多次反复操作中得到的各加权值的累加数。随后,程序进行到步骤807,比较加权值是否超过临界值。在累积加权值实施例中,则是将一对操作/资料过滤器的累积加权值与临界值相比对。
如果加权值或者是累积加权值没有超过临界值,程序即转入重算加权值步骤815,在累积加权值实施例中,则是直接跳至结束步骤817。在结束步骤815,该特定操作的处理程序完成。在重算加权值步骤815,将在步骤805检索到的加权值加到累积加权值上,然后将新的累积加权值存入数据存储器417,取代旧累积加权值。最后,程序转入结束步骤815。
在步骤807,如果加权值或是累积加权值超过了临界值,则程序转入传送信息步骤809。在步骤809,发送一通知信息至个人数字助理101,要求或建议其更新本地数据存储器。该通知信息是利用短讯服务(short messagingservice,SMS)从服务器107传送到个人数字助理101上的。SMS是寻呼型服务,为熟知该项技艺的人士所熟知。它仅是实施本发明所使用的一种传送媒介而已。每一SMS信息均包含一资料域名、需要执行的特定资料过滤器的名称或ID、需要执行的操作之类型以及该操作是否要立即执行。如果一SMS信息标有“立即”,则个人数字助理101可能需要建立一通讯联机以便立即执行同步操作。如果该SMS信息没有标上“立即”,则个人数字助理101既可立即执行同步操作,也可等待安排的下一同步时间段,或是将该信息存入一使用者日历,通知有同步本地数据存储器需求的使用者。
完成步骤809后,程序转入接收确认步骤811,步骤811是一个可选择的步骤,因而在图中用虚现表示。如果程序800在步骤809发出SMS信息后需要得到对方的确认,该确认信息可采用SMS信息的形式,从个人数字助理101传送至服务器107,或是采用同步请求的形式,该同步请求与通知信息中指定的资料过滤器相符。如果确认信息没有被服务器107上的程序800收到,程序将回到步骤809,重新发送通知信息。如果在步骤811收到了确认信息或是在步骤809没要求发送确认信息,程序即转到清除加权值步骤813,重设累积加权值(如果有的话)。最后,程序进行至结束步骤817,在步骤801初始化的交易执行结束。
图9是在个人数字助理101(图1和图2)的显示屏203(图2)上显示的一典型的主页901。使用者一执行实施本发明的应用程序该主页901即显示在屏幕上。如图3中解释的那样,该应用程序可以是移动电子商务应用程序310,移动医院应用程序320,移动物流应用程序330,移动金融应用程序340。为方便图9~12的描述,仅以移动电子商务应用程序310为例。
在主页901的最上端是一标题栏903,包含的内容有:一标题“主页面”、当前时间“11:25a”。标题栏903下面是一信息905,“欢迎”,该信息可依情况而变。信息905下面则是几个屏幕图标,它们分别是一目录图标907,一订单图标908,一帐户图标909,一同步图标910。每一屏幕图标(907~910)都代表者电子商务应用程序310的某一特定功能。使用者用指示笔207(图2)点击任一图标即可执行电子商务应用程序310的相应功能。具体而言,目录图标907透过执行个人数字助理101上的软件使得使用者可以浏览一产品档案中的产品目录,甚至可以做某些修改;订单图标908可使使用者发出采购订单,或是对订单作一些修改;帐户图标909能使使用者浏览或修改其帐号;同步图标910可使使用者定义、重新定义或改变其同步过滤器。图9~12的例子即是关于目录图标907和在电子商务应用程序中与一产品目录相对应的产品档案或数据库的。
在屏幕图标907~910下面是一状态区913,包括“帐号”、“订单”、“目录”、“同步”等四个选择键,与屏幕图标909、908、907、910一一对应。使用者用指示笔选择某一个键即可运行相应的软件,该软件与通过屏幕图标运行的软件相同。除了对应于屏幕图标的四个选择键外,状态区913还包含一“档案”键,该档案键的功能与Microsoft Word等程序中的相似,使用者透过此键可执行开启、关闭、保存文档等操作。此外,状态区913还包括几个状态图标:一电脑图标915,表明个人数字助理101是否与一远程服务器107(图1)相连;一指示笔图标917,表明个人数字助理101的指示笔207是否处于可用状态;一翻上页图标919,使用者用指示笔207点击该图标(一向上的箭头)即可翻动主页901。翻上页图标919适用于主页901不能一次在显示屏203内全部显示的情形。当然,图标919也可以是一个向下的箭头,或者是既有一个向下的箭头,又有一个向上的箭头,这取决于主页901的大小和主页901在显示屏203上的相对位置。
图10是电子商务应用程序310(图3)的编辑过滤器页面1001显示于个人数字助理101(图1,图2)的显示屏203(图2)上的示意图。使用者用指示笔207点击同步图标910(图9)或是在状态区913内的同步选择键显示的菜单中选择相应功能,编辑过滤器页面1001即会显示在显示屏203上。与主页901相似(图9),页面1001包含一标题栏1003,其含有标题“编辑过滤器”、当前时间“4:54p”。页面1001也含有一状态区1013和状态图标1015、1017、1019,其功能与状态区913和状态图标915、917、919(图9)相似。
页面1001还有一缩放图标1021,其能放大或缩小页面1001的尺寸;一取消图标1023,其能结束正在运行的程序,回到前一页面,如主页901。当然,和图9~12中的其它图标、箭头、菜单一样,缩放图标1021和取消图标1023也是用指示笔207来点选的。尽管使用何种用户接口对于本发明精神来说并不重要,但是下面几图都要用到指示笔207和显示屏201。
编辑过滤器页面1001还有几个区域,其能使用户指定资料过滤器。例如,用户在名称区1005输入资料过滤器名“全部产品”后,如果该“全部产品”过滤器已经存在,电子商务应用程序310即搜索出该过滤器上的信息,如果该“全部产品”过滤器不存在,电子商务应用程序310会使其创建一个新资料过滤器。一同步区1007可使用户选定是否将相应的资料过滤器包括在个人数字助理101的同步程序中。在本例中,全部产品资料过滤器并未包含在同步程序中,因为同步区1007没有标记。如果一资料过滤器所对应的数据库不经常的变动,该资料过滤器可以不包含在同步程序中。但是某些资料过滤器如订单资料过滤器(图中未标示),则需要同步,因为用户或者是销售人员需要随时了解公司库存发生的变动。
上次同步区1009显示的是日期“5/25/01”和时间“4:38:40PM”,表明全部产品资料过滤器上一次同步的日期和时间。搜索字符串1011则显示一实际对应的资料过滤器,其用熟悉本技艺的人士能够辨认的语法表示。在本例中,资料过滤器指定全部产品资料过滤器搜索产品数据库中的所有纪录,即用“PrName”表示产品数据库中的某一属性,用“=”表示搜索并显示等于*的纪录。由于*是一通用符号,所以该资料过滤器会显示产品数据库中的全部纪录。
可以用Backus Naur Form(BNF)符号来表示数据过滤器或查询字符串,其符号具体说明如下。
filter=“(“filtercomp”)”
filtercomp=and or simpleFilter
and=“&”filterlist
or=“ ”filterlist
filterlist=1*filter
simpleFilter=attributeName filtertype value
filtertype=“==”“>=”“<=”“!=”
属性名是文数型的,与产品数据库或档案中的一栏相对应。二进制不会在数据过滤器中使用,即,一个数据过滤器不能译成两个JPEG图像。对于某一属性,某一个值可符合任何允许的登录,如一个篮球的价格可以是任何数值;一个产品的名称则可以是一名词,如“baseball”。
图11是移动电子商务应用程序310的搜索产品页面1101显示于个人数字助理101(图1、图2)的显示屏203(图2)上的示意图。页面1101是一登录页面,利用此页面使用者或销售人员用显示屏203和指示笔201可定义或修改资料过滤器。与主页901(图9)和编辑过滤器页面1001(图10)类似,页面1101也包括一标题栏1103,其含有页面名称“查询产品”和当前时间“11:38a”;一状态区1113;三个状态图标1115、1117和1119。所有这些与图9和图10的标题栏、状态区、状态图标具有相似的功能。在标题栏1103的下面,页面1101有一执行图标1105和一高级过滤图标1121。当用户点选执行图标1105时,一对应于显示于显示屏幕1101上信息的当前资料过滤器即被建立。在本例中,该当前资料过滤器和上文图10所描述的一样,即“PrName==*”。当用户用指示笔203点选高级图标1121,既有的显示屏幕1101即会被另一搜索产品显示屏幕1201所替换,其会在后述的图12中进行说明,该显示屏幕1201可让用户建立及更改更为复杂和高级的资料过滤器。
显示屏幕包括一搜索范围1125,用户可在该区输入一特定属性的名称格式,例如,产品文档。当利用指示笔207点选搜索范围1125边缘倒三角形,则即会显示一下拉列表,可使用户从产品文档或数据库表中选择一属性。搜索值区1127可以让用户输入一个值,该值可用于其将要定义或创建资料过滤器中。在本例中,该值为“*”,其是一通配符,与文档中任何值相匹配。故,产品文档中的所有记录均会被返回。另一例子是在搜索值区输入一“baseball”,则资料过滤器会把产品文档中所有名称中包含有“baseball”的条目返回。如果用户输入“base*”,则资料过滤器即会返回产品文档中如“baseballs”或“baseball bats”等全部记录。两个运算符区1107能使用户定义其所期望的搜索范围1125与搜索值区之间的关系。在本例中,两个运算符区1107选项中,只能选择其中一个,即'=′或′!=′。′=′运算符1107表示用户希望资料过滤器返回产品中所有属性为搜索范围1125所输入的,且与搜索值区1127中所输入的值相匹配的条目。如果用户选择′!=′,则用户希望资料过滤器返回产品中所有属性为搜索范围1125所输入的,且与搜索值区1127中所输入的值不匹配的条目。
一显示值核对块1109可以让用户指定一“模糊”查询,换句话说,对在搜索范围1125中所输入的查询条件的查询不像在搜索值区1127那样精确匹配。资料过滤器会返回在产品中所有与的接近的资料。一匹配图标1111提供了与显示值核对块1109相似的功能,只不过其能使用户执行资料过波器并立刻能观看结果。一取消按纽1123,其能忽略当前的资料过滤器定义或创建过程,并把显示屏203返回至显示屏先前所显示的状态。
图12揭示了另一实施例的在个人数字助理101的显示屏203上出现的搜索产品显示屏幕1201。与搜索产品显示屏幕1101相似,搜索产品显示屏幕1201为一输入屏,其可使用户或销售人员利用显示屏203和指示笔207定义或更改资料过滤器。然而,与搜索产品显示屏幕1101只能让用户定义或更改一简单资料过滤器不同,搜索产品显示屏幕1201可让用户定义或更改更高级或更复杂的资料过滤器,与显示屏幕901、1001及1101一样,搜索产品显示屏幕1201亦包括:一标题栏1203,其上写有该显示屏幕的名称“搜索产品”,及当前时间“11:38a”;一状态区1213;及状态图标1215、1217及1219,这些标题栏、状态区及状态图标均与图9、图10及图11中相应的标题栏、状态区及状态图标具有相似的功能。与搜索产品显示屏幕1101相似,显示屏幕1201包括一匹配图标1211及一取消按纽1223,他们的功能分别与图11中的匹配图标1111及取消按纽1123相似。
在标题栏1203下面,显示屏幕1201包括两个图标,即执行图标1205和简单过滤图标1221。当用指示笔执行图标1205,一对应于显示盒1235所显示的信息,或本例中的“(&(PrName==*Base*)(PrRetailPrice>=5.00))”的当前资料过滤器被执行。当前资料过滤器即会返回产品数据库中所有名称中包含有“Base”且价格大于或等于5.00元的产品条目信息。例如会在个人数字助理101中显示价格在5.00元以上的baseballs,baseball mitts及baseball gloves等产品条目信息。这些资料过滤器的方法和语法在以前的技术中为众人所周知。该显示盒1235的一优势为具有一上拉箭头和一下拉箭头,当用户利用指示笔207这些箭头,在显示盒1235中即能卷出由于太大而处于显示盒1235边界的外的信息。当用户利用指示笔207简单过滤图标1221,个人数字助理101即会在显示屏203上显示搜索产品显示屏幕1101。
与搜索产品显示屏幕1101相似,显示屏幕1201可能让用户输入一资料过滤器,但其较显示屏幕1101中更为复杂。搜索范围1225可让用户选择产品数据库中的多种属性,每次选一种属性。搜索值区1227可使用户输入一价格或其它适当值以完成对数据库的查询。在上述显示屏幕1101中只提供了两个运算符域选择,而显示屏幕1201却代的以四个运算符域选择1207,一“=”运算符,表示等于;一“!=”运算符,表示不等于;一“>=”运算符,表示大于或等于;一“<=”运算符,表示小于或等于。一显示值核对块1209的功能与显示屏幕1101中的显示值核对块1109相似。
显示屏幕1201亦包含一建立按纽1229,两个关联按纽1231及一重置按纽1233。该建立按纽1229可以移动搜索范围1225、运算符区1207及搜索值区1227所指定的一个新查询字符串至显示盒1235中的表达式中,关联按纽1232决定一组合查询之间的关系,该组合查询是被建立按纽所移动的新查询字符串与现有的查询字符串之间的组合,如果该现有的查询字符串存在的话,通常会显示于显示盒1235上。“和”按纽创建一组合查询,其显示的于产品数据库中查询结果需符合新查询字符串和现有的查询字符串。“或”按纽创建一组合查询,其显示的于产品数据库中查询结果需符合新查询字符串和现有的查询字符串中的一个或全部的查询条件。当利用指示笔207点选重置按纽1233时,其会清除显示盒1235中的信息,从而可使用户重新开始建立一新的查询字符串。
利用图9~12中的屏幕,用户可以定义资料过滤器以实现实施例中的技术方案。但图9~12仅代表了可供选择的一部分图形用户界面(GUI),这些图形用户界面显示于个人数字助理101的显示屏203上,其可运行电子商务应用软件310。其余的应用软件320、330及340均具有自身特定的功能、GUI和相应屏幕等。