发明内容
本发明的目的是提供一种集群***中群组信息的更新方法,解决现有技术的群组更新方法未考虑终端以多重身份存在于群组时正确进行群组信息更新的技术问题。
为了实现上述目的,本发明提供了一种集群***中群组信息的更新方法,其中,包括如下步骤:
步骤一,在对集群***中以多重身份存在于群组中的终端进行群组变更操作时,集群***的网络侧按照预先设置的有效性规则判断所述群组变更操作引起的群组信息变化是否有效;如是,则执行步骤二;否则,结束流程;
步骤二,将所述群组变更操作引起的群组信息变化更新到所述终端。
所述的方法,其中,所述集群***的网络侧在记录所述群组变更操作时进行所述有效性判断,具体包括:
当所述群组变更操作为将所述终端以一种或多种身份从一个群组中删除的操作时,所述网络侧判断所述终端除了所述删除的一种或多种身份外是否不以任何身份存在于所述群组中;如是,则所述删除操作引起的删除更新记录有效,并将所述删除更新记录记录在调度归属寄存器中,且在记录所述删除更新记录之前已存在于所述调度归属寄存器中的新增更新记录和修改更新记录无效;否则,所述删除操作引起的删除更新记录无效,不记录所述删除更新记录。
所述的方法,其中,还包括:
当所述群组变更操作为以一种或多种身份加入一个群组的新增操作时,判断在所述调度归属寄存器中是否已记录有删除更新记录;如是,则将所述新增更新记录和删除更新记录合并为一条修改更新记录,或直接记录所述新增更新记录并在更新时控制更新顺序为先删除后新增。
所述的方法,其中,所述集群***的网络侧在进行群组信息更新时进行所述有效性判断,具体包括:
步骤a,在对集群***中的终端进行群组变更操作时,所述网络侧的调度归属寄存器记录所述群组变更操作,并生成相应的群组变更操作引起的群组信息变化记录;
步骤b,所述网络侧的调度服务器发送群组更新请求至所述调度归属寄存器;
步骤c,调度归属寄存器根据所述记录的所述群组变更操作判断所述终端是否不以任何身份存在于所述群组中;如是,则记录的所述群组变更操作引起的群组信息变化中的删除更新记录有效,新增更新记录和修改更新记录无效;否则,所述群组变更操作引起的群组信息变化中的删除更新记录无效、新增更新记录和修改更新记录有效。
所述的方法,其中,所述步骤c包括:
所述调度归属寄存器将记录的所述群组变更操作引起的群组信息变化中在先记录的删除更新记录记录和在后记录的新增更新记录记录合并为一条修改更新记录;
在进行所述合并后,所述调度归属寄存器判断所述终端是否不以任何身份存在于所述群组中;如是,则记录的所述群组变更操作引起的群组信息变化中的删除更新记录有效,新增更新记录和修改更新记录无效;否则,记录的所述群组变更操作引起的群组信息变化中的删除更新记录无效、新增更新记录和修改更新记录有效。
所述的方法,其中,所述步骤a包括:
当所述群组变更操作为删除操作时,如果已存在对所述群组的删除更新记录,则不新增更新记录,且如果所述终端为群组的直接成员,还包括对所述群组的每个母群组增加删除更新记录;
当所述群组变更操作为新增操作时,如果已存在的群组变更记录中对所述群组只有对应的修改更新记录,则不新增更新记录;
当所述群组变更操作为修改操作时,如果已保存删除更新记录,则将删除所述删除更新记录;且如果已经存在对应的修改更新记录,则不新增更新记录,否则新增所述修改操作对应的修改更新记录。
所述的方法,其中,所述集群***的网络侧在进行群组信息更新时进行所述有效性判断,具体包括:
在对集群***中的终端进行群组变更操作时,所述网络侧的调度归属寄存器记录所述群组变更操作;
所述网络侧的调度服务器发送群组更新请求至所述调度归属寄存器;
当所述调度归属寄存器中同时记录有新增更新记录和删除更新记录时,判断所述终端是否不以任何身份存在于所述群组中;如是,所述群组更新记录中记录的删除更新记录有效、记录的新增更新记录和修改更新记录无效;否则,则所述新增更新和删除更新有效,且先进行删除更新记录的群组信息更新,然后再进行新增更新记录的群组信息更新,且在有修改更新记录时,在进行所述新增操作的群组信息更新后再进行所述修改操作的群组信息更新。
所述的方法,其中,在所述步骤二中,所述网络侧按照预先设定的先后顺序将对所述终端的群组变更操作引起的群组信息变更更新到所述终端。
所述的方法,其中,所述预先设定的先后顺序为:删除更新记录先于新增更新记录进行更新。
所述的方法,其中,所述预先设定的先后顺序还包括:通知终端删除保存的所有群组信息的同步更新记录最先进行;删除更新记录先于修改更新记录进行更新;新增更新记录先于修改更新记录进行更新。
本发明还公开了一种集群***中群组信息的更新装置,其中,包括:
有效性判断单元,设置在集群***的网络侧中,用于在对集群***中的终端进行群组变更操作时,按照预先设置的有效性规则判断所述群组变更操作引起的群组信息变更是否有效;
群组信息更新单元,用于将通过所述有效性判断单元确定的、群组变更操作引起的有效的群组信息变更更新到所述终端。
所述的方法,其中,所述预先设定的先后顺序还包括:通知终端删除保存的所有群组信息的同步更新记录最先进行;删除更新记录先于修改更新记录进行更新;新增更新记录先于修改更新记录进行更新。
所述的方法,其中,所述步骤二中,所述将所述群组变更操作引起的群组信息变更更新到所述终端为:
所述网络侧按预先设定的先后顺序将所述群组变更操作引起的群组信息变更更新到所述终端。
所述的方法,其中,所述预先设定的先后顺序为:删除更新记录先于新增更新记录进行更新。
所述的方法,其中,所述预先设定的先后顺序还包括:通知终端删除保存的所有群组信息的同步更新记录最先进行更新;删除更新记录先于修改更新记录进行更新;新增更新记录先于修改更新记录进行更新。
所述的方法,其中,所述网络侧按预先设定的先后顺序将所述群组变更操作引起的群组信息变更更新到所述终端的步骤包括:
所述网络侧按预先设定的先后顺序将群组变更操作引起的群组信息更新记录发送至所述终端;
所述终端按照所述群组变更操作引起的群组信息变更记录到达的先后顺序,进行与所述群组变更操作相对应的群组信息更新。
所述的方法,其中,所述网络侧按预先设定的先后顺序将所述群组变更操作引起的群组信息变更更新到所述终端的步骤包括:
所述网络侧按将所述群组变更操作引起的群组信息变更记录发送至所述终端;
所述终端在接收到所述网络侧在本次发送的所有群组变更操作引起的群组信息变更记录后,按照预先设定的先后顺序进行与所述群组变更操作相对应的群组信息更新。本发明还公开了一种集群***中群组信息的更新装置,其中,包括:
有效性判断单元,设置在集群***的网络侧中,用于在对集群***中以多重身份存在于群组中的终端进行群组变更操作时,按照预先设置的有效性规则判断所述群组变更操作引起的群组信息变更是否有效;
群组信息更新单元,用于将通过所述有效性判断单元确定的、群组变更操作引起的有效的群组信息变更更新到所述终端。
所述的装置,其中,所述有效性判断单元设置所述网络侧的调度归属寄存器中,在记录所述群组变更操作引起的群组信息变更时或在进行群组信息更新时进行所述判断。
所述的装置,其中,所述群组信息更新单元,设置在集群***的网络侧或终端侧,进一步用于按预先设定的先后顺序将所述群组变更操作引起的有效的群组信息变更更新到所述终端。
本发明的技术效果在于:
本发明中,当对集群***中的终端进行群组变更操作时,网络侧并不将进行的所有群组变更操作引起的群组信息变化更新到终端,而是在进行群组信息更新到终端之前先对群组变更操作引起的群组信息变更的有效性进行验证,并仅将通过有效性验证的群组变更操作引起的群组信息变化更新到终端,由此使得当终端以多重身份存在于群组中时,网络侧的群组变更操作引起的群组信息变化能正确更新到终端,保证了网络侧和终端侧的群组信息同步。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明进行详细描述。
图1为本发明一实施例的集群***中群组信息的更新方法的流程示意图。如图1,本发明实施例一的群组信息更新方法包括如下步骤:
步骤101,在对集群***中的终端进行群组变更操作时,集群***的网络侧按照预先设置的有效性规则判断该群组变更操作引起的群组信息变更是否有效;如是,则执行步骤102;否则,结束流程;
步骤102,将该群组变更操作引起的群组信息变更更新到终端。
允许终端以多重身份存在于同一群组中时,对终端进行的群组变更操作包括:将终端加入一个或多个群组、动态重组到一个或多个群组、将终端从一个或多个群组删除、将终端从一个或多个动态重组的群组中动态重组撤消、将一个或多个群组动态重组到另外的母群组、将一个或多个群组从动态重组的母群组中动态重组撤消等操作。当终端以多重身份存在群组中时,其可采用的业务规则为:呼叫一个群组,则这个群组的直接成员、动态重组成员、动态重组到这个群组的子群组的群组成员都可以被呼叫,并且终端能参与呼叫的所有群组信息都应该保存到终端。按照上述的业务规则,在发生群组变更操作引起群组信息更新时,将终端加入一个群组,不仅需要将加入的群组保存到终端,还应该将加入的群组被动态重组到的母群组保存到终端。修改群组信息,不仅要修改作为群组成员的终端上存储的该群组信息,还需要修改动态重组到这个群组的终端上对应这个群组的信息以及动态重组到这个群组的子群组的群组成员的对应这个群组的信息。终端以一种身份退出某个群组,只要它还以别的身份存在于群组,就不能将该群组信息从终端删除。进行群组信息更新,需要遵循上述规则。当然,在不同的***中,呼叫的业务规则不尽相同,而且终端也可能只保存需要按照传统组呼叫的群组信息。
在本发明的实施例中,可预先在网络侧和终端侧进行设定,将上述多种群组变更操作简单划分为新增、修改、删除三种操作类型,或者压缩为新增和删除两种操作类型。其中,将终端至少以一种身份加入到某一群组中的操作划分为针对该群组的新增操作类型,将终端以至少一种身份从某一群组中退出的操作划分为针对该群组的删除操作,将修改终端所在的某一群组的群组属性和修改终端作为某一群组的群组成员的成员属性划分为针对该群组的修改操作。
当然,也可将群组变更的操作类型压缩为新增和删除两种。在这种情况下,如果操作类型为新增,终端检查对应的群组信息是否已经存在,如果不存在,则新增对应的群组信息到群组电话本,如果已存在,则按照新增记录中携带的属性修改对应的群组信息。在对本发明的实施例的描述中仅针对划分为新增、修改和删除三种操作类型的情况进行说明,划分为两种操作类型的情况类似。
在本发明的实施例中,在对终端进行群组变更操作时,还包括在集群***网络侧的调度归属寄存器中记录所进行的群组变更操作,并生成相应的群组变更操作记录的步骤。在本发明该实施例的步骤101中,进行群组变更操作引起的群组信息变更的有效性的验证可在记录群组变更操作引起的群组信息变更记录时进行判断,或在网络侧进行群组信息更新时进行验证,如在调度服务器向调度归属寄存器请求进行群组信息更新的时候进行该有效性的验证。下面对这两种验证方式进行具体说明:
方式一为网络侧在记录群组信息变更记录时判断对多重身份的终端进行的群组信息变更的有效性判断。具体地,如果将终端以一种或多种身份退出一个群组,网络侧判断该终端除了要退出的身份外是否还以其它身份存在于群组中;如是,则该删除更新记录无效,不记录该删除更新记录;否则,该删除更新记录有效,记录该删除更新记录,并且如果在记录该删除更新记录之前已存在在先记录的新增更新记录和修改更新记录时,这些在先的新增更新记录和修改更新记录无效;如果终端以一种或多种身份加入一个群组,且在该加入操作之前以前已在调度归属寄存器中记录有删除更新记录,则将这两次操作合并为一条修改更新记录,或者也可以直接将此次的加入操作引起的群组信息变更记录为新增更新记录,在这种记录为新增更新记录的情况下,在先的删除操作和此次的新增操作分别记录为一条删除更新记录和一条新增更新记录,更新的时候需控制更新顺序为先删除后新增;对于其它的群组变更操作情况下只需要直 接记录群组变更操作对应的群组信息。
由此,利用方式一,当将终端以一种或多种身份从群组中删除时,如果该终端还以其它任何的身份存在于该群组,则调度归属寄存器不会记录该删除更新记录,由此避免了将该删除更新记录更新到终端,使得终端将该群组的信息删除并造成网络侧和终端侧群组信息的不一致。
方式二为在记录群组变更操作时不判断终端的多重身份以及更新记录的有效性,而是在进行群组信息更新的时候进行验证。在此种情况下又可采用如下两种验证原则。
第一种为:将调度归属存储器中记录在先的删除更新记录和记录在后的新增更新记录合并为一条修改记录;合并记录后,判断终端是否不以任何身份存在于群组中;如是,则删除更新记录有效,合并后的群组信息变更操作记录中存在的新增和修改更新记录无效;否则,只要终端以任何身份存在于该群组中,则合并后的群组变更操作记录中存在的新增和修改更新记录有效,删除更新记录无效。
其中,在先的删除更新记录和在后的新增更新记录合并的目的是防止在删除和新增期间进行的修改更新丢失。通过在将删除更新记录更新到终端之前进行的该判断,当将终端以一种或多种身份从群组中删除时,如果该终端还以其它任何的身份存在于该群组,避免了将该删除更新记录更新到终端,同样,如果终端不以任何身份存在于群组中,则新增和修改更新记录不会更新到终端,使得网络侧和终端侧群组信息不一致。
第二种为:对于同一个终端同一个群组,如果新增和删除更新记录同时存在,且如果终端以任何身份存在于群组中,则先删除后新增,如果还有修改更新记录存在,在新增更新记录更新后进行修改更新记录的更新;余下的记录和前一个判断原则相同。允许新增和修改操作同时存在,是因为在终端区别对待新增和修改操作的条件下,用户以多重身份存在于群组中,可能在这次更新前,已经以另外的身份存在于群组中,这次的新增信息到达终端,终端会发现需要新增的群组已经存在,如果在这期间进行过群组信息的修改,需要修改操作将这些更改更新到终端。
在本发明的该实施例中,主要是针对同一终端同一群组进行的群组变更记 录进行有效性判断。
在本发明的实施例中,网络侧将群组变更操作引起的群组信息变化更新到终端可以是网络侧向终端侧发起集群业务群组信息更新请求,或者终端侧携带群组信息随机数和校验和发送给网络侧,网络侧发现网络侧群组信息与终端侧群组信息不一致,发起群组信息同步请求。
图2是本发明的另一实施例的集群***的群组信息更新方法的流程图。在该实施例中,集群***包括:网络侧和终端。其中,网络侧由包括:调度服务器(PDS,PTT Dispatch Server)、调度归属寄存器(PHR,PTT Home Register)。如图2,本发明实施例二的群组信息更新方法包括以下步骤:
步骤201,网络侧进行群组管理或者调度管理,在对终端进行群组变更操作时,调度归属寄存器记录该群组变更操作引起的群组信息变更记录;
步骤202,调度服务器发起群组信息更新请求,具体地,按照现有技术,调度服务器发起群组信息更新请求的时机是可选的;
步骤203,调度归属寄存器对该终端的群组变更操作引起的群组信息变更记录进行有效性验证,以判断该群组变更操作引起的群组信息变更记录是否有效,并将群组信息变更记录设置为:正在更新状态;
步骤204,调度归属寄存器在验证完后返回群组信息更新应答至调度服务器;
步骤205,调度服务器向调度归属寄存器请求群组信息更新内容;
步骤206,调度归属寄存器向调度服务器返回群组信息更新内容应答;
步骤207,请求完所有的更新内容后,调度服务器对更新内容排序;
步骤208,调度服务器与终端侧之间的群组信息更新业务信道建立成功;
步骤209,调度服务器向终端发送群组信息更新请求;
步骤210,终端向调度服务器发送群组信息更新应答;
步骤211,调度服务器发送群组信息更新结果通知给调度归属寄存器;
步骤212,调度归属寄存器对更新成功的记录,或者确定不需要再次更新的记录从归属寄存器中删除。
其中,步骤207主要用于控制群组信息的更新按照预先设定的先后进行。通常,集群***中的终端可能加入了多个群组,如对终端加入的多个群组都进 行群组变更操作时,对同一终端的所有群组信息变更记录排序可避免出现背景技术部分所述的在某些情况下群组信息无法正确更新到终端的情况,及造成用户体验差的问题。
在该实施例中,有些步骤的顺序可以调换,以进一步优化。如建立群组信息更新业务信道可以在更新内容请求之前进行,如果业务信道建立不成功,则不再进行更新内容请求。
另外,由于数据包大小的限制,步骤205、206,209、210,211、212可能执行多次,步骤205、206、211、212消息对可以为异步消息,由于本实例中群组信息更新的顺序由调度服务器控制,209、210消息对为同步消息。如果更新记录的排序工作在终端完成,209、210消息对也可以为异步消息。
在该实施例中,进行群组变更操作引起的群组信息变更的有效性验证在进行群组信息更新时进行的,采用方式二的验证方式。
图3为在本发明的一实施例中,根据群组变更操作生成群组变更操作记录即群组信息变更记录的处理流程图。该处理流程可通过一函数来实现,用于根据群组变更操作生成相应的群组变更操作记录,如在将一个终端加入某个群组、动态重组到某个群组、修改终端所在的某个群组的属性、修改终端在某个群组的群组成员属性、将终端从某个群组删除、和/或将终端从某个群组动态重组撤消时生成对应的群组信息更新记录。在涉及群组管理以及修改群组属性、修改群组成员属性的地方都通过调用这个处理流程来记录相应群组变更操作造成的群组信息的更新。
在本发明的实施例中,生成群组信息更新记录的上述处理流程基于这样的业务规则:呼叫一个群组,则这个群组的群组成员、动态重组成员、动态重组到这个群组群组的子群组的直接成员都可以被呼叫,并且终端能参与呼叫的所有组信息都应该保存到终端。在一个业务规则不同的***中,应该根据实际情况设计适合的更新记录处理原则。
因为在采用方式二进行群组变更操作引起的群组信息变更的有效性验证是在进行群组信息更新时进行的,所以在生成更新记录的时候,不考虑终端的多重身份,只是根据逻辑对更新记录进行了一定程度的优化。在进行更新前,会将需要更新的记录标记为正在更新,以区别于在更新期间新增的更新记录, 在更新期间新增的更新记录需要下次网路侧发起群组信息更新才会更新到终端,在终端返回群组信息更新结果到网络侧的时候,网络侧只会删除标识为正在更新的对应更新记录:
这个处理流程实现的逻辑如下:
(1)对于删除操作,如果已经存在对应的删除更新记录,无论该删除更新记录是处于正在更新状态还是非正在更新状态,则不新增更新记录;如果终端为群组直接成员,还需要对退出群组的每个母群组准备删除更新记录;
(2)对于新增操作,如果更新记录中对该终端该群组只有对应的修改更新记录,则表明终端至少已经以一种身份加入该群组并且群组信息已经更新到终端,不新增更新记录;如果有且仅有对应该终端该群组的非正在更新删除更新记录,只需要将删除更新记录修改为修改更新记录;否则删除对应该终端该群组的非正在更新删除更新记录,然后看是否有对应的新增更新记录存在,如果没有新增对应的新增更新记录,如果存在,不新增记录;
(3)对于修改操作,如果出现修改操作,表明终端至少还以一种身份存在于群组中,因此以前保存的删除更新记录肯定不需要更新到终端,可以直接删除;如果存在正在更新的修改更新记录,则将其修改为不是正在更新,以便收到本次更新应答时不删除该记录,下次再继续更新修改的群组信息到终端;如果已经存在对应的修改更新记录,不新增更新记录,否则新增对应的修改更新记录。
具体地,图3示出了符合上述处理逻辑的、生成群组变更操作记录的处理流程的一个示例。如图3,该生成群组变更操作记录处理示例包括:
步骤301,判断群组变更操作类型是否为删除操作;如是,转入步骤302;否则,执行步骤303;
步骤302,判断是否已存在对应的删除更新记录;如是,则***一条非正在更新的删除更新记录,然后,转入步骤314;否则,不新增更新记录,然后,转入步骤314;
步骤303,判断群组变更操作类型是否为修改操作;如是,执行执行步骤304;否则,执行步骤308;
步骤304,删除已存在的删除更新记录,然后执行步骤305;
步骤305,判断是否存在正在更新的修改更新记录;如是,执行步骤306;否则,执行步骤307;
步骤306,将该处于正在更新状态的修改更新记录修改为不是正在更新状态,然后结束流程;
步骤307,判断是否已存在对应的修改更新记录;如不存在,则***一条状态为非正在更新的修改更新记录,然后,执行步骤314;否则,不新增更新记录,然后,执行步骤314;
步骤308,判断群组变更操作类型是否为新增;如是,执行步骤309;否则,结束流程;
步骤309,判断是否存在且仅存在修改更新记录;如是,则转入步骤310;否则,执行步骤311;
步骤310,不新增记录,然后,结束流程;
步骤311,判断是否存在且仅存在处于非正在更新状态的删除更新记录;如是,执行步骤313;否则,执行步骤313;
步骤313,将该处于非正在更新状态的删除更新记录修改为处于非正在更新状态的修改更新记录,然后结束流程;
步骤313,删除处于非正在更新状态的删除更新记录,并判断是否不存在对应的新增更新记录;如是,新增一条非正在更新的新增更新记录,然后转入步骤314;否则,不新增更新记录,然后转入步骤314;
步骤314,判断终端是否为群组的直接成员,而不是动态重组成员;如是,执行步骤315;否则,结束流程;
步骤315,对该群组所属的每一个母群组进行和该群组一样的群组变更操作,即针对为该群组对群组变更操作的记录与该群组一样。
图4为在本发明的一实施例中,进行群组变更操作记录有效性判断的流程图。如图4,该有效性判断的流程包括以下步骤:
步骤401,标记请求群组信息更新的终端当前所有的群组变更操作记录即群组信息更新记录为需要更新;
步骤402,获取需要更新的记录中,同时存在针对同一群组的一条正在更新的删除记录和一条非正在更新的新增记录的所有记录,结果集记为C1;
步骤403-406,对C1中的每条记录进行有效性验证,如果终端还以任何身份存在于群组,合并该正在更新的删除更新记录和该非正在更新的新增更新记录为一条针对同一群组的修改更新记录,其中,如果该修改更新记录已存在,则删除这两条更新记录;并将对应该群组的新增和修改更新记录标记为已验证有效性,如果终端不以任何身份存在于群组,删除对应的新增和修改更新记录,并标记删除记录的有效性已经验证,直至C1中的记录处理完毕。
步骤407,对需要更新的记录中,直接标识同步更新记录为有效;
步骤408-412,对所有其它没有验证有效性的更新记录进行有效性验证。遵循的原则为:如果终端还以任何身份存在于群组,删除对应的删除更新记录,并将对应该群组的新增和修改更新记录标记为已通过有效性验证,如果终端不以任何身份存在于群组,删除对应的新增和修改更新记录,并标记删除更新记录为已通过有效性验证,直至所有需要更新的更新记录的有效性都已得到验证;
步骤413,标记对应该终端的已经通过有效性验证的所有的群组变更操作记录即群组信息更新记录为正在更新,以和在更新期间新生成的更新记录区分开来。在终端侧返回群组信息更新结果应答给网络侧的时候,调度归属寄存器只删除标识为正在更新的对应更新记录。
由于集群***中,终端可以加入多个群组,但由于终端容量有限,所以在进行群组管理操作的时候,网络侧可以根据终端允许保存的最大群组个数来对终端加入的总的群组个数进行限制;其中,计算加入的群组个数的原则是,如终端以任何身份存在于一个群组中,则用户加入了这个群组,用户以多重身份存在于一个群组中,只计算一次。在本发明的实施例中,可通过控制群组变更操作更新的先后顺序来避免现有技术的方法由于未考虑更新顺序而产生的群组信息更新不准确及用户体验不好的问题。
图5为本发明又一实施例的集群***中群组信息的更新方法的流程图。如图5,本发明又一实施例的群组信息更新方法包括如下步骤:
步骤501,在对集群***中的终端进行群组变更操作时,在集群***的网络侧记录该群组变更操作引起的群组信息变更;
步骤502,该网络侧按预先设定的先后顺序将所述群组变更操作引起的群 组信息变更更新到所述终端。
本发明的该实施例对群组信息更新的顺序进行了控制,可进一步保证网络侧的群组信息正确更新到终端侧。尤其是,当存在针对同一终端的、对多个群组的群组信息更新。
例如,因为终端容量的限制,终端中的群组电话本设置有允许保存的最大群组数量。在实际进行群组信息更新时,针对对终端进行的所有群组变更操作记录,包括针对多个群组的群组变更操作记录,按照预先设定的顺序进行更新。其中,如进行的群组变更操作中包括同步操作时,该同步操作为通知终端删除其上保存的所有群组的群组信息的操作,应该在更新时保证终端最先处理这条记录。
另外,如果将终端先加入若干群组并且更新到终端,然后再将终端从某些群组中退出,再加入若干其他群组,且这些删除和新增操作在一次群组信息更新中更新的情况下,如果新增操作在删除操作之前更新,则可能在终端出现加入的群组个数超出终端群组电话本容量的假象。为避免这种情况,应该控制删除更新记录在新增更新记录之前更新。且,在新增和修改更新记录同时存在的情况下,如果修改更新记录先更新,则可能会出现修改的群组不存在的错误,所以应该保证新增更新记录在修改更新记录之前更新。总结一下,总的更新顺序可以是:通知终端删除保存的所有群组信息的同步更新记录最先更新;删除更新记录先于新增更新记录;删除更新记录先于修改更新记录;新增更新记录先于修改更新记录。用一句话概括为:先同步、后删除、再新增,最后修改。在业务逻辑不同的***中,要求的更新顺序可能有所差别,但是删除更新记录都应该在新增更新记录之前更新。
进一步地,可以在网络侧或终端实现该按预先设定顺序的更新排序。如果在网络侧实现排序,则需要保证在排序后的***处理流程中,更新信息都按照该排序的顺序到达终端并且终端也按照到达的顺序进行处理。进一步地,如果更新记录需要分成多个消息包发送给终端,则需要终端处理完前一个包给网络侧发送更新成功应答后,网络侧才能继续发送下一个更新请求给终端。如果在终端进行排序,则需要终端接收到本次更新的所有更新信息后再进行更新的排序,然后进行更新处理,对终端的处理能力要求比较高。
图6为在本发明的一实施例中,在网络侧实现更新排序的流程图。图6示出的只是排序的一种示例性流程,并不作为对本发明的限制。在该排序流程中,假设一个终端的每条群组变更操作记录都用一个结构体存储,所有的群组变更操作记录组成一个结构体数组。用变量m,n分别表示更新记录总条数和当前正在处理的记录数;用i,j,k,h分别表示本次更新操作中的同步、删除、新增和修改群组信息变更记录的数目;用i1,j1,k1,h1分别表示当前处理到了第几条同步、删除、新增、修改更新记录。另外,为了减少移动结构体的次数和加快排序的速度,预先设置了另外一个和待排序结构体数组大小相同的另外一个临时结构体数组。如图6,该排序流程包括以下步骤:
步骤601,给各个计数变量赋初值0,拷贝待排序结构体数组的内容到预设的临时结构体数组;
步骤602,遍历该临时结构体数组,分别统计同步更新记录、删除更新记录、新增更新记录、修改更新记录的数目,得到变量i、j、k、h的值;
步骤603,给n赋初值1;
步骤604,如果n>m,排序结束,否则转605;
步骤605,如果该临时结构体数组的第n条记录为同步更新记录,转步骤606,否则转步骤607;
步骤606,i1变量的值加1,拷贝该临时结构体数组的第n条记录到待排序数组的i1个记录的位置,转步骤612;
步骤607,如果临时结构体数组的第n条记录为删除更新记录,转入步骤608,否则转步骤609;
步骤608,j1变量的值加1,拷贝临时数组第n条记录到待排序数组的i+j1 个记录的位置,转步骤612;
步骤609,如果临时结构体数组的第n条记录为新增更新记录,转步骤610,否则转步骤611;
步骤610,k1变量的值加1,拷贝临时结构体数组的第n条记录到待排序数组的i+j+k1个记录的位置,转步骤612;
步骤611,h1变量的值加1,拷贝临时结构体数组的第n条记录到待排序数组的i+j+k+h1个记录的位置,转步骤612;
步骤612,变量n的值加1。
另外,本发明还公开了一种集群***中群组信息的更新装置。图7为本发明一实施例的群组信息更新装置的结构示意图。如图7,本发明一实施例的更新装置,包括:
有效性判断单元701,设置在集群***的网络侧中,用于在对集群***中的终端进行群组变更操作时,按照预先设置的有效性规则判断所述群组变更操作引起的群组信息变更是否有效;
群组信息更新单元702,用于将通过所述有效性判断单元确定的、有效的群组变更操作引起的群组信息变更更新到所述终端。
图8为本发明另一实施例的群组信息更新装置。如图8,本发明一实施例的更新装置,包括::
群组变更操作记录单元801,设置在集群***的网络侧,用于在对集群***中的终端进行群组变更操作时,记录所述群组变更操作引起的群组信息变更记录;
群组信息更新单元802,设置在集群***的网络侧或终端侧,用于按预先设定的先后顺序将所述群组变更操作引起的群组信息变更更新到所述终端。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。