一种在无障碍信息协同标注中的一致性维护方法

文档序号:32220156发布日期:2022-11-16 08:52阅读:52来源:国知局
一种在无障碍信息协同标注中的一致性维护方法

1.本发明属于计算机支持的协同工作技术领域,具体涉及一种在无障碍信息协同标注中的一致性维护方法。


背景技术:

2.(1)城市空间信息采集技术
3.城市空间中的出行环境常常不足以满足残疾人和老年人等弱势群体的需求。尽管各个地区都在努力为所有居民改善城市无障碍环境,但城市建筑环境仍然是使残疾人通过障碍而变得困难的最实际的原因之一。除此之外,缺乏关于城市环境及其无障碍的信息本身就是阻碍残疾人在已知区域之外活动的一个巨大障碍。因此,收集并利用好这些无障碍信息是改善无障碍出行情况的重要手段之一。在当前的社会环境和技术手段之下,想要获得这样一种城市无障碍信息的地理参考数据,一般有以下三种不同的来源:一是利用各种传感器:用户在城市环境中移动时产生的数据。配备智能手机的用户显然配备了陀螺仪、加速器和gps,这样他们就可以运行一个应用程序来感知城市可达性的数据。虽然单个用户感知到的数据可能不是很准确,但对同一屏障/设施的多个感知可以使数据有效。二是采用众包形式:用户对城市可达性有兴趣,可以通过移动应用程序收集数据。像这样的应用程序既可以收集文本信息,也可以收集多媒体数据,在这种情况下,多个数据也会增强所收集信息的有效性。三是从官方或者相关组织获取:许多权威机构和组织会对室内和室外无障碍环境进行官方调查。但是如今最为主流的收集方案是采用众包模式进行城市空间信息采集。
4.随着现代通信与互联网技术的不断发展,越来越多的研究致力于在gps卫星地图上标记出某个区域无障碍或者有障碍的地理信息,来展示此区域的无障碍通行情况。各种标注任务大都是以众包的形式发布出去,不仅可以降低标注成本,还可以大大提高标注的数量。用户的参与是这类应用程序区别于其他应用程序的一个关键因素,可以决定其使用的成功或失败,因此更多的研究也是在努力地提升用户参与度。但是与此同时,这些方式只集中了个人的力量,而无障碍的标注不是一劳永逸的。独立的众包标注任务存在一定的局限:单个贡献者的力量并不足以完善标注的内容,使其具备较高的参考价值。而对于集中群智,多用户协同进行无障碍设施的标注方法在如今并没有被广泛地研究。
5.(2)一致性维护算法ast
6.地址空间转换技术ast(address space transformation)最初是为实时协同编辑应用提出的一种并发控制和数据一致性维护方法。在典型的实时协同编辑应用中,共享文档被完全复制在各客户端上,ast技术允许用户对文档进行无约束的编辑操作,从而为用户提供快速的本地响应体验。当一组相同操作在所有协作站点上得到执行后,所有副本将处于最终一致状态。作为一种无锁的并发控制方法,ast技术非常适合作为交互式应用中的数据一致性维护技术。ast技术的基本思想是:在执行一个远程操作之前,将文档状态(即地址空间)回溯到操作产生时的状态,从而该操作可以按照其原始形式被执行,操作执行后,再将文档状态恢复到最新状态。为了实现地址空间转换,即实现文档状态的回溯和恢复,执行
过的历史操作将被记录下来,并保存在对应的目标节点中;被删除的节点并不从地址空间中被移除,而是将其设置成无效状态。然而,值得注意的是,ast技术是针对数据全复制体系架构提出的,其中的地址空间转换则通过遍历整个地址空间并设置所有节点的有效状态标志来实现。操作间的因果先序关系和并发关系判定是多用户交互式应用中数据一致性维护的基础,基于向量时间戳的操作关系判定方法是最为常见的一种。
7.随着越来越多的工作需要多人协作才能够顺利的完成,协同编辑领域的一致性维护技术ast的应用场景也在不断地扩大当中。与此同时,在不同场景中利用ast算法实现协同编辑需要解决的困难和挑战也在不断增加。因此,相关研究者们也需要在原本的技术基础上进行相应的改进和更新以适应不同协作场景下新的特点和需求。针对于无障碍信息协同标注的协作场景,不仅是协同编辑下的数据模型有不一样的特点,还需要新的副本同步协议进行多用户间的消息通信,以及解决在具体应用时面临的实际困难。因此,地址空间转换算法在解决具体应用场景下协同编辑的一致性维护问题时,需要根据不同的特点与需求进行相应的改进和调整。传统的ast解决方案并无法解决各类不同协作场景中的需求与困难。


技术实现要素:

8.本发明的目的在于提出一种无障碍信息协同标注中的一致性维护方法。
9.本发明提出一种在无障碍信息协同标注中的一致性维护方法,具体步骤如下:
10.(1)设计基于标量时间戳的副本同步协议,实现多用户实时协同标注时的消息通信协议,同步操作在标量时间戳的辅助下,可以快速判定操作间的因果或者并发关系;
11.(2)设计在共享地图对中无障碍信息进行副本同步和操作同步时的部分复制方法,在大大降低移动端各种资源消耗的情况下,完成本地副本同步和远程操作同步过程;
12.(3)对传统的地址空间转换算法内容做出调整与改进,使其在无障碍信息协同标注场景的数据模型中能够维护数据内容的一致性,实现多用户实时协同编辑;
13.(4)提出基于规则的地址空间转换算法,在保证协同标注文档内容一致性的同时,设定各类规则使客户端操作的操作效果最终能够确保无障碍信息间的语义一致性——最终可以实现支持多用户实时协同标注无障碍信息的协同标注方法。
14.本发明中,步骤(1)中所述基于标量时间戳的消息通信协议,具体如下:
15.为了更好地判断用户产生地操作之间的因果关系,参与协作的客户端站点在每次产生操作时,都会在操作上附加一个时间戳,然后再将操作序列发送到中心服务器;在中心服务器端,接收到的每一个操作都会被分配一个不断自增的序列号,将其称为“服务器标记操作序列号”(servermarkreceiveoperationnumber)简称为mrn。中心服务器端接收到的所有操作序列将按照其执行的时间顺序(服务器标记操作序列号mrn的大小顺序)存储在相应marker对象节点mn的序列历史缓冲区(makersequencehistorybuffers,shb)中,称其为mshb。在客户端,本地产生的操作记录在相应marker对象节点mn的本地操作历史序列lhb(localhistorybuffers)中,接收到的远程操作记录在远程操作历史序列rhb(remotehistorybuffers)中。每个操作所附加的标量时间戳ts(timestamp)的数据结构如下:
16.ts=<client,ocpnt,lastupdatemrn,mrn,lms>
17.其中:client是发起此操作的客户端用户;opcnt是当此操作产生时本地站点lhb内所有操作序列的数量多少;lastupdatemrn是当此操作产生时,产生此操作的客户端站点最近的一次与服务器同步的操作的序列号mrn,可以理解为操作产生时lhb和rhb内所有操作中最大的mrn值;mrn值即是服务器给每一个操作分配的一个递增的序列号;lms的具体含义会在本发明的下一部分内容中给出;
18.当一个操作o在其产生的客户端站点s上执行后,此时操作o所附带的时间戳ts中可以确定以下几个数据:产生操作o的客户端用户client;此操作产生时本地操作历史序列lhb 的数量大小opcnt;s站点最近以此与服务器同步操作的lastupdatemrn,即lhb和rhb 中最大的mrn值。由于每个操作的服务器标记操作序列号mrn是由服务器分配的自增数值,操作o在本地执行完后并未与服务器端进行同步,其mrn值暂时为空。此时,由于产生o 时lhb和rhb的所有操作都已执行完毕,所以其中的所有操作都是因果先序于o的;
19.客户端将本地操作o和其附加的时间戳ts同步到中心服务器时,中心服务器会为每个时间戳信息中mrn值为空的操作分配上全局递增的序列号,并返回产生该操作的协作客户端站点一个响应response,response中携带为此操作分配的序列号mrn值,站点s接收到该消息后操作o的时间戳信息中的mrn值便不再为空。服务器发送response到s客户端站点的同时,操作o也被广播发送到其他参与协作的客户端站点中进行同步。操作o传送到其他站点并执行完成后,储存在当地站点的rhb当中,在rhb中存储的操作序列都必须按照其 mrn值的大小顺序升序组合排列;
20.当操作o同步到另外一个协作站点p时,此时在对应节点的远程操作序列rhb当中,其中任意一个操作or与o的因果关系可以采用以下方式判定:
21.●
or→
o时,需满足以下两种情况之一:
22.(1)or.mrn≤o.lastupdatemrn
23.(2)or.mrn>o.lastupdatemrn时,
24.or.openid=o.openid&&or.opcnt<o.opcnt
25.●
or||o时,需满足既没有or→
o,也没有o

or26.此时在p的本地操作序列lhb中,任意一个操作o
l
与o的因果关系可以采用类似于远程操作序列中的方式判定,但是由于lhb中的操作的mrn值可能为空,因此需要做出一些改进:
27.●ol

o时,需满足以下条件:
28.o
l
.mrn≠null&&o
l
.mrn≤o.lastupdatemrn
29.●ol
||o时,需满足以下条件之一:
30.(1)o
l
.mrn=null
31.(2)o
l
.mrn≠null时,o
l
.mrn>o.lastupdatemrn
32.根据上述的操作关系判定方法,可以归纳总结出使用每个操作所附带的时间戳来确定任意两个操作间的因果和并发关系的方法,任意两个时间戳ts1和ts2判断其因果关系的方式归纳总结如下:
33.●
ts1→
ts2时,满足下列条件之一:
34.(1)ts1.mrn≠null&&ts1.mrn<ts2.lastupdatemrn
35.(2)ts1.openid=ts2.openid时,ts1.opcnt<ts2.opcnt
36.●
ts1||ts2时,满足下述条件:neither ts1→
ts2norts2→
ts1。
37.本发明中,步骤(2)所述的无障碍信息的部分复制方法,具体如下:
38.无障碍信息协同标注环境中用户的协作主要分两种模式:第一种是地图编辑模式,主要致力于在共享地图中对无障碍信息的协同标注。此模式下主要有五种操作,添加标注点marker、删除标注点marker、更新标注点marker的基本信息、通过有向线段连接两个标记点marker 形成一段有向路径route、删除两个标注点marker间的有向路径route。共第二种是内容编辑模式,此模式下主要是对各字符节点进行插入删除操作以及对相应类型的无障碍信息的某些特定内容的修改操作。无障碍信息标注的具体数据结构如下:
39.marker:<index,mid,lat,lng,type,side,contid>
40.其中:marker代表共享地图中的一个无障碍信息标注点,index为此标注点在协同文档中的序列号;mid为标注点的唯一标识符;lat和lng分别是该标注点在地图上的经纬度;type 为此标注点的类型,不同类型的标注会有不同的编辑内容;side代表标注点所属的区域;contid 记录此标注点对应内容content的id,可以与内容建立映射关系,为内容编辑功能服务。
41.route:<index,rid,premarker,nextmarker,side,contid>
42.其中:route代表共享地图中的一段有向路径,index为为此标注点在协同文档中的序列号;rid为路径的唯一标识符;premarker代表一条路径的起始标注点,nextmarker代表路径连接的末尾标注点,两者连接会形成一条有向线段,代表一段有向路径;type是此标注点的类型,不同类型的标注会有不同的编辑内容;contid记录此标注点对应内容content的id,可以与内容建立映射关系,为内容编辑功能服务。
43.side:<sideid,locationname,markers>
44.其中:side代表共享地图中的一个区域,它可以是一个公园,一个建筑物,一个学校等各类区域设施。在进行协同标注时会将各类无障碍标注点划分到不同的区域,此区域由用户自己定义选择。sideid是每个区域的唯一标识符;locationname为此区域范围的名称,如廖凯原法学楼,交叉二号楼、和平公园等;markers代表此区域范围内所有标注点的集合(route 路径也是一种类型的标注点)。side本质上是一个marker对象的集合,但是与上面两种类型不同的是,side由用户自己定义选择,然后自动生成。
45.进行协同标注时会将各类无障碍信息划分到不同的区域,这个区域可能是一个公园,一个建筑物,一个学校等,由用户自己定义选择,但是每添加一个无障碍信息marker都会自动生成此范围内的无障碍情况。将每一块区域范围定义一个side,每个side中有此范围内所标注的所有marker对象。side本质上是一个marker对象的集合。每一个无障碍标注marker都有自己所属范围区域side。无障碍信息协同标注场景中的部分复制架构便是以这些side为基础,同步客户端用户共享地图范围内的全部side中的marker对象。以客户端用户所处地理位置为基准,对共享地图中心点范围5公里范围内的side中的各类无障碍信息进行复制和同步。这些side属于此客户端用户的活跃范围,其中的marker都是活跃操作对象。以这些活跃side为基准进行操作的同步。
46.为了使部分复制架构下协同编辑系统可以正常运行,在协同编辑的算法基础上,需要引入以下的数据结构来对其进行优化。
47.(1)服务器端增加数据结构:
48.(a)useractivesides:记录每个客户端用户和其对应的活跃side。一个sideid与其活跃用户对应的数组集合,记录协同系统中所有的活跃side以及这些side所对应的客户端用户client。通过对这些sideid对应的数组之间取交集,可以筛选出各协作客户端用户间相互重合的协作范围,然后与对应的客户端进行操作和数据同步。
49.(b)usersideslastupdatemrn:记录每个客户端用户中的每一个活跃side内最近与服务器同步的操作的mrn值。通过此项数据,当客户端与服务器之间再次进行同步时,服务器可以快速筛选出每个客户端用户对应活跃side中还没有同步到本地的操作,较快地完成客户端与服务器地操作与数据同步。
50.(c)sidelastrecievemrn:记录每个活跃side内从客户端用户中接收到的同步到服务器上的最新的操作,也就是所有客户端用户发送同步到此活跃side的操作中最大的mrn值。通过此项数据和上一个数据对比可以快速判断出正在与服务器进行操作同步的客户端用户目前是否有新的对此side的操作需要进行同步。
51.(2)客户端增加数据结构:
52.(a)sidelastupdatemrn:记录客户端用户中每个活跃side内最后与服务端进行同步更新的操作的mrn值。在部分复制架构下,客户端用户只会与服务器同步当前活跃side的操作信息,记录此项数据,当客户端用户移动或者手动移动共享地图中心点时,就可以快速到新的活跃side的操作信息,然后对其历史操作进行同步,使系统能够照常运行。通过这个值可以快速判断出当前客户端活跃的每个side需与服务器进行同步的操作。
53.(b)sideoperationlist:记录每个side内的操作序列,提升检索速度。
54.服务器处理接收到的客户端同步操作请求后的处理算法如下所示,服务器端会接收所有客户端用户同步传送而来的操作,如前文所说一样,服务器会为每个操作都分配一个全局自增且唯一的服务器标记操作序列号mrn,然后将其存储到mshb中,并将操作和其携带的mrn广播到各客户端,客户端中mrn为空的的操作也不再为空。
[0055][0056]
中心服务器在对各类标注操作进行相应处理后,会检索出正在和产生此操作的客户端用户共同协作编辑相同区域范围的客户端用户。如下述方法所示,中心服务器会经过一系列的对比分析然后才能筛选出需要与各参与协作的客户端进行同步的操作,然后立刻实时地推送到筛选出的客户端进行操作同步。服务器便不需要像拉模型一样,等待操作同步机制的触发才能进行同步,完全不需要进行无谓的等待即可将相应的远程操作实时推送到各协作客户端,从而使服务器的性能不会因为等待而浪费,客户端的副本同步过程也会更加的实时和流畅。
[0057]
[0058][0059]
本发明中,步骤(3)中一致性维护算法ast具体如下:
[0060]
远程操作在客户端站点执行时,回溯算法可以确保其操作效果可以在正确的地址空间内执行。其主要思想是根据文档中每个节点中操作所附带的时间戳来判断出此操作产生时当前文档内的哪些节点是有效的,哪些节点是无效的,对有效的节点进行标记,然后在有效节点范围内执行操作效果。
[0061]
有效节点的定义如下:对于远程操作o而言,(1)节点的插入操作因果先序于操作o(2) 节点的操作序列中的所有操作中只有一个插入操作或者其中所有的删除操作都和o是并发关系。那么此节点就是有效的。
[0062]
因此,可以根据文档中各个节点的操作序列找出对于操作o的所有有效节点,然后进行回溯。回溯的主要步骤如下:
[0063]
(1)遍历每个节点的所有操作序列,判断节点是否为有效节点
[0064]
(2)对有效节点添加标记,记为有效节点。
[0065]
对于协同标注系统,由于其操作的复杂性,数据结构和其时间戳的数据结构有所改动,因此对于回溯算法也需做一些调整。首先是遍历整个文档的地址空间,由于协同编辑的操作对象比较复杂,所以对其操作需要分类。主要是遍历每一个marker中的所有操作序列确定 maker的有效性,route的有效性以及content的字符节点的有效性,虽然分为三种数据结构,但这三者是相互关联的,所有的操作序列都是存储于相应的marker或route中。因此对其进行遍历,由于对于content的操作必须在mn有效的基础上进行,所以对于content的操作和route的操作等效于对marker的add操作。检查每个marker操作序列所附带的时间戳信息,如果有add操作或update操作,则是有效,如果没有则为无效。
[0066][0067]
操作执行算法使得回溯到操作产生时的状态时,操作在其正确的地址空间内执行。操作执行时,有的操作可以直接在回溯后对应其执行的地址空间,在相应的节点上执行该操作即可,但是有的操作却是由于无效节点的存在,需要确定其真正该插入的位置,在地址空间转换算法中定义了一个torder函数来确定所有节点间的全序位置,从而找出操作真正该执行的地址空间。torder是一个全序关系且是传递的,也就是说任意两个节点之间是可比较的。ast 是通过range-scan算法来确定操作的具体插入位置,range-scan的原理在于通过定义torder 函数来确定操作两两之间的全序关系(操作两两之间可以直接比较)。
[0068]
torder是一个全序关系且是传递的,也就是说任意两个对象节点之间是可比较的。传统的地址空间转换算法中的时间戳为向量时间戳,torder就是根据向量时间戳计算得出。考虑两个元素cna和cnb,他对应的操作分别产生至于站点a和站点b,并且时间戳分别为sva和 svb。有torder(cna)<torder(cnb)当且仅当:
[0069]
(1)sum(sva)<sum(svb)
[0070]
(2)sum(sva)=sum(svb)且a<b
[0071]
在本发明中,使用的是标量时间戳,因此对torder的计算无法使用传统的求和计算方式。为了使range-scan算法依旧能够正确地执行来完成ast的算法流程,必须对torder
的计算方式进行改变,将本发明使用的标量时间戳也以一定的方式计算为可以互相比较的全序关系 torder。由上文可知,本发明使用的标量时间戳中的mrn值本身就是一个具有全序关系的数值,它是由服务器分配的全局不断递增且唯一的序列号,因此,每个操作的时间戳ts的 mrn值即是一个具有全序关系可以两两比较的有序序列。可以直接将mrn的值转换到 torder中进行比较,来确定各个对象节点的全序关系。因此torder的计算方式如下所示:
[0072]
torder(ts)=ts.mrn
[0073]
对于任意两个操作产生的对象节点mna和mnb,操作的时间戳为tsa和tsb,如果有 torder(mna)《torder(mnb),其在整个副本中的全序关系的计算方式可以表示如下:
[0074][0075]
但是在客户端中,某些操作的时间戳ts中的mrn值是为空的,此时按照上述方法便无法计算并比较对象节点的全序关系。在mrn为空的情况之下,能够判断其全序关系的机制如下:
[0076]
torder(tsa)<torder(tsb)时,有且只有以下三种情况是满足的:
[0077]
(1)tsa·
mrn≠null&&tsa.mrn≠null&&tsa.mrn<tsb.mrn
[0078]
(2)tsa.openid=tsb.openid&&tsa.opcnt<tsb.opcnt
[0079]
(3)tsa.mrn≠null&&tsb.mrn=null
[0080]
通过对torder函数计算方式和节点对象全序关系判断方式的改进,使其可以在无障碍信息协同标注的标量时间戳下,让range-scan算法依旧可以正常执行。
[0081]
本发明中,步骤(4)中所述基于规则的地址空间转换算法
[0082]
无障碍信息协同标注场景下的协同工作框架如图3所示,但是在编辑无障碍信息时,并不是随心所欲来执行各种操作的。为了使得系统能够正常且高效地运行,也为了使用户操作不至于破坏其他人数据的完整和合理性,用户的操作必须在一定的规则下进行。而规则不仅有本地初始化复制的本地副本内的操作就产生的各种限制规则,一些远程的同步操作的执行也会形成新的限制规则,如何在同步远程操作的同时且使其符合规则约束,或是对于同步而来的违反规则的操作的处理方式,是一个重点研究问题。规则约束,是对于操作的一种约束内容,因为对于很多操作而言,由于它包含了很多信息,或者对于某些信息做出了改变,是具有语义的,而不同的无障碍信息之间会存在一定的联系。因此对无障碍信息的操作可能需要一些规则约束以确保各类无障碍信息间的语义一致性。所以需要一种机制来确保用户的操作都是规范合理的,如果出现不合理违反规则约束的操作内容,也要能够挽回这种错误,使得系统能够正确高效地进行下去。在无障碍信息中,这种情况很多,举例说明一下。比如一个用户看到某个无障碍厕所,于是在地图上添加此设施信息,但是由于感觉位置不标准,于是移动编辑其位置信息,但是移动时可能发生失误,移动距离过远,对于同一个设施,明显不应该出现如此大范围地移动,因此会有距离规则的建立,保证用户添加的设施要么在合理范围内移动使其到达真正的位置,要么就是此设施信息完全是错误的,删除后可以重新添加。无障碍信息标注中很多个场景都是需要一些规则约束来保证用户操作的合理性和无障碍信息的准确性,因此需要在一致性维护算法ast的基础上加入一些内容。
[0083]
由于无障碍信息协同标注中的各种规则是在用户的操作执行后产生和建立的,这
些规则是与操作相关的。而规则主要的针对对象是(1)限制的操作内容,(2)产生操作的用户,(3) 操作的目标对象。每一项规则的建立来自于用户的历史操作,因此,本发明将规则的建立与操作的执行相关联,完善规则集合。在这个机制下,中心服务器仍然是转发和同步各类操作的端,操作建立的规则在客户端对各类操作进行约束,因此服务端不需要增加特定的数据结构。客户端需要增加相应的数据结构来完成规则约束。上文已知对于用户的每个操作都会附加上一个标量时间戳,因此可以在时间戳内增加一些内容来辅助规则的建立。对于每个操作所附带的时间戳中,需新增的限制集(limit marker set)lms{client,opmes,mn}。lms 是一个三元组,增加在时间戳ts中,client代表此规则作用的用户,opmes代表此规则限制的操作内容的信息,mn代表规则限制的操作所作用的对象节点。用户的操作也需要增加标志位flag,值为true代表为有效操作,值为false代表为无效操作,来区分该操作是否可以执行。于此同时,在客户端需要增加一个规则集的数据结构(rule limit set),称之为rls,结构如下:rls{opmes,mn},rls是一个集合,此集合中会保存此用户需要遵守的所有规则,此集合的内容是一个二元组,由于规则肯定作用于此客户端用户,因此规则作用用户无需记录,它只需记录各规则的限制操作内容opmes和目标操作对象mn。记录到客户端各个对象节点所遵守的操作规则后,即可用以检验操作是否违反规则,规则构建和检验的算法如下所示。
[0084][0085]
当操作执行时,只需检验操作的目标对象节点mn和操作内容在rls中的所有规则集中是否存在。若违反,则设置此操作的标志位为false,此操作并不会执行,若操作是在规则约束之下,那么执行操作,此时对于rls中的所有规则,此操作并没有违背。客户端建立规则的过程是对相应范围内的操作序列进行遍历,将其时间戳内的lms中针对此客户端用户的操作规则提取出来。首先第一次用户请求获取部分副本的内容时,获取历史操作,对所有的历史操作进行遍历,根据操作时间戳中的lms建立初始的rls,此后在本地产生的操作会在此规则集的限制下执行。对于同步远程操作,也需在规则约束下执行。远程而来的操作,在其产生的站点必然是遵守当时的规则,但远程同步到本地站点时,可能本地新的操作造成的新的限制规则让其无法执行,也有可能此远程操作产生的规则会约束到本地已经执行完毕的操作。因此,就需要进行回溯,让规则集的内容转化为此操作产生时的状态,然后再
执行各类操作,再回溯到当前时间戳。也有种可能,本来这个操作就被限制,只不过这个限制操作没有发送到其站点,因此规则约束集合中会限制其操作,将此操作设为false。和ast一样,规则检验也需要进行两次回溯,第一次使远程操作在其产生时的规则状态下执行,如果违反规则直接使其无效化;第二次回溯回到远程操作到来时的状态,由于远程操作会产生新的规则约束,这次回溯会让新的规则再过滤掉因果后于它且触违反新规则的操作,使其无效化,最后整个副本既保证了一致性,也在正确的规则下运行操作,整个ast算法的控制流程如下所示。
[0086][0087]
本发明的有益效果在于:本发明设计基于标量时间戳的副本同步协议,使同步操作在标量时间戳的辅助下可以快速判定操作间的因果或者并发关系;设计了在共享地图对中无障碍信息的部分复制方法,可以大大降低移动端对于内存的占用和对网络资源的要求等资源消耗;本发明对传统的地址空间转换方法做出改进,使其能够在无障碍信息协同标注场景下维护数据的一致性;提出融合语义规则的地址空间转换算法,使客户端的操作不仅能够遵循各种操作建立起的规则以确保无障碍信息间的语义一致性,也能够保证副本间的一致性。
附图说明
[0088]
图1为本发明消息通信过程图示。
[0089]
图2为本发明无障碍标注类型图示。其中:(a)marker,(b)side,(c)route。
[0090]
图3为本发明协同标注框架图示。
[0091]
图4为本发明无障碍信息协同标注系统图示。
[0092]
图5为本发明ast模块核心实现图示。
[0093]
图6为本发明实施例1图示。
[0094]
图7为本发明实施例2图示。
[0095]
图8为本发明实施例3图示。
具体实施方式
[0096]
下面通过实施例结合附图进一步说明本发明。
[0097]
实施例1:
[0098]
图1为无障碍信息协同标注系统的消息通信过程,参与协作的客户端站点在每次产生操作时,都会在操作上附加一个时间戳,然后再将操作序列发送到中心服务器;在中心服务器端,接收到的每一个操作都会被分配一个不断自增的序列号,将其称为“服务器标记操作序列号”(server mark receive operation number)简称为mrn。中心服务器端接收到的所有操作序列将按照其执行的时间顺序(服务器标记操作序列号mrn的大小顺序)存储在相应marker 对象节点mn的序列历史缓冲区(maker sequence history buffers,shb)中,称其为mshb。在客户端,本地产生的操作记录在相应marker对象节点mn的本地操作历史序列lhb(localhistory buffers)中,接收到的远程操作记录在远程操作历史序列rhb(remote history buffers) 中。客户端将本地操作o和其附加的时间戳ts同步到中心服务器时,中心服务器会为每个时间戳信息中mrn值为空的操作分配上全局递增的序列号,并返回产生该操作的协作客户端站点一个响应response,response中携带为此操作分配的序列号mrn值,站点s接收到该消息后操作o的时间戳信息中的mrn值便不再为空。服务器发送response到s客户端站点的同时,操作o也被广播发送到其他参与协作的客户端站点中进行同步。操作o传送到其他站点并执行完成后,储存在当地站点的rhb当中,在rhb中存储的操作序列都必须按照其 mrn值的大小顺序升序组合排列。
[0099]
图2为本发明无障碍标注类型,marker代表共享地图中的一个无障碍信息标注点,route 代表共享地图中的一段有向路径,side代表共享地图中的一个区域,它可以是一个公园,一个建筑物,一个学校等各类区域设施。在进行协同标注时会将各类无障碍标注点划分到不同的区域,此区域由用户自己定义选择。sideid是每个区域的唯一标识符;locationname为此区域范围的名称,如廖凯原法学楼,交叉二号楼、和平公园等;markers代表此区域范围内所有标注点的集合(route路径也是一种类型的标注点)。side本质上是一个marker对象的集合,但是与上面两种类型不同的是,side由用户自己定义选择,然后自动生成。进行协同标注时会将各类无障碍信息划分到不同的区域,这个区域可能是一个公园,一个建筑物,一个学校等,由用户自己定义选择,但是每添加一个无障碍信息marker都会自动生成此范围内的无障碍情况。将每一块区域范围定义一个side,每个side中有此范围内所标注的所有marker对象。side本质上是一个marker对象的集合。每一个无障碍标注marker都有自己所属范围区域side。无障碍信息协同标注场景中的部分复制架构便是以这些side为基础,同步客户端用户共享地图范围内的全部side中的marker对象。
[0100]
图3为本发明协同标注框架,参与协作的客户端将其本地执行完的操作o同步到中心服务器,由中心服务器对接收到的所有操作进行统一的调度和处理,在一致性维护算法的支持下,使发送到其它协作客户端的远程操作可以正确执行其操作效果而避免产生内容不一致的情形。
[0101]
图4为无障碍信息协同标注系统结构,客户端的整体结构主要分为四层,分别是前端界面、服务层、控制层和工作内存。第一层是前端界面,主要是向用户展示共享地图中的
无障碍信息标注,并且定义了用户标注无障碍信息的各类操作,用户可以在此界面观察无障碍信息标注情况并参与到协同标注工作中去。第二层是服务层,这一层主要是将无障碍信息标注中的各类操作的实现或者一些其他功能进行封装。当用户在前端界面进行操作来实现某些功能时,只需要通过调用服务层封装好的各种服务即可。第三层是控制层,这一层主要是系统各功能服务的具体实现步骤,所有服务的真正实现都是在此层面完成。在控制层中最核心的一个实现模块就是ast模块,本文的ast算法主要在此模块内实现然后被调用来进行协同标注文档内容的一致性维护。服务层中的封装好的服务的具体实现也是通过调用控制层来完成,其中关于一致性维护的各项能力,就是调用控制层中ast模块来完成的。由于ast算法的实现被集成在了一个模块之中,因此这个模块是可拔插的,可以用其他的ast算法实现来代替而不影响系统运转,所以可以比较不同ast算法在系统中的性能表现。客户端的最后一层就是每个移动设备的工作内存空间,客户端复制在本地的协同标注文档,本地和远程的历史操作序列等都会存储在工作内存中。用户产生的各类操作的执行会在本地文档中产生具体效果,最终工作内存中的协同标注文档会以一种形式渲染到前端界面,用户可以再继续进行查看或者编辑操作。
[0102]
图5为ast模块核心实现。控制层中的ast模块是整个客户端一致性维护算法能够实现的核心。ast模块的组成部分有三个。分别是是操作历史缓存区(history buffffer),ast 核心实现(ast-core),消息队列(message queue)。客户端用户的标注操作通过服务层调用实现,服务层会将用户操作转化为能在ast模块中运行的操作模型先存入本地操作历史缓冲区,操作历史缓冲区中的操作则会依次在ast-core中执行一致性维护的核心算法,保证操作可以正确执行。消息队列负责发送和接收用户产生的操作序列,可以实现客户端与服务器之间的消息通信。
[0103]
采用中心化架构,客户端为若干移动设备,服务端部署于个人pc设备虚拟机的linux系统上,以微信开发者工具为开发平台,使用javascript语言编程,基于本发明介绍的一种无障碍信息协同标注中的一致性维护方法,研究开发了无障碍信息协同标注系统,可以支持多用户实时协同标注和更新完善各类无障碍信息。
[0104]
如图6所示,用户可以在共享地图中发起添加一个无障碍信息的操作,与此同时,另一用户也可能会在相同区域的共享地图中发起无障碍信息的添加操作进行协同标注。这种并发操作可能会导致副本内容错误而影响到用户正常的操作和协作。在本发明的支持下,用户的并发操作最终都可顺利执行而不会影响到协同标注文档内容的一致性。其他类似的并发操作同样都可顺利执行且能保证副本间的内容一致性,多个用户可以在共享地图中可以完成实时交互协作而不用考虑并发操作的影响。
[0105]
实施例2:如图7所示,当某一区域建筑中的无障碍出入口已被标注,另一用户标注了相同的无障碍信息即此建筑区域内的无障碍出入口。而此操作的执行会使原本的无障碍信息发生混乱,造成不一致。在语义规则的约束下,这一用户操作并不成功,原先的无障碍信息不会被此操作影响而造成混乱或者错误从而影响到标注间的语义一致性。这是范围规则内的一种约束,针对于其他的语义联系还会有各类不同规则来保证无障碍信息间的语义一致性。
[0106]
实施例3:如图8所示,两个用户同时对同一个无障碍信息的内容进行编辑时,在对信息的描述内容进行更改时,每个人的实时编辑结果都会反映到各自的协同标注文档的内
容中,在描述内容中,每个用户的插入、删除、修改等操作都会实时传输,他们互相之间可以察觉到彼此的编辑内容,可以完成实时协同编辑同一文档内容。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1