清华分布式多媒体协同编著系统(TH-DMCW)提供给用户的主要功能如图8.48所示。它可以给位于分布式环境中的多个成员提供在共享窗口中评论同一多媒体文档,或在私人窗口编辑私人文档的功能。评论后的最终文档形成一本多媒体著作,用户可以对它进行查询和访问。
8.48 DMCW系统提供给用户的功能
在TH-DMCW系统中,用户可以通过在共享窗口中进行评论来交换自己的意见;也可以在获得发言权后,用语言表达自己的观点。借助这两种手段,用户可以通过视、听两种媒介来表达自己的看法或得知别人的意见。
在协作过程中,发言者活动图像实时显示发言者的表情,它有利于其他用户更正确地理解发言者的意图,从而更好地了解发言者对多媒体文档的修改意见。
另外,TH-DMCW中的两种数据库提供了数据共享的能力,它允许位于不同地点的多个成员随时查询数据库,以获得与著作或与某个成员有关的信息。
除此以外,私人编辑还提供了很强的多媒体编辑能力,它可以编辑多种简单图形和文本,可以嵌入各种OLE对象,使文档的内容更加丰富多彩,图文并茂。私人编辑允许用户编辑私人文档,或编辑著作中要用到的多媒体文档以便提交大家讨论,另外,在协作中,用户还可以用它来做笔记或用作简单的记事本。
计算机支持的协同工作环境可以缩短时间和空间的距离。例如清华大学的分布式协同编著子系统(TH-DMCW),如下图所示。

处在不同地点的人员,可以在分布式协同编著子系统中共同完成编辑工作,协同编辑窗口中的内容是所有参加会议的人员都能看到的,发言人可以在私人编辑窗口中完成准备工作,然后将发言稿提交到协同编辑窗口中。
一、TH-DMCW系统多用户协作控制和管理
清华分布式多媒体协同编著系统为协同编著的多个用户提供协作入口,并对协作的状态、行动和权限进行管理,使得协作者能够彼此协调,共同完成编著任务。具体工作是对参加协作的成员进行管理,管理用户信息和用户身份的切换等协作事件。
1.协作控制
常用的协作控制可以分成有规则控制和无规则控制两大类。有规则控制还可以分成:分布式控制、集中式控制和混合式控制等。TH-DMCW系统采用一种简单的混合式控制模式,以集中式控制为主,以分布式控制为辅,共同管理协作事务。
TH-DMCW系统中,协作控制由两种协作代理来完成:
·主编协作代理:它是一个中央控制节点,管理用户的状态转换和权限控制,并维护全局信息,它随时把状态信息通知给成员代理,以维护信息的一致性。
·成员协作代理:除主编外的其他各协作者,每人都有一个成员协作代理,它负责处理协作事务,如用户动态加入/退出协作,用户的发言权申请等各项事件,并进行视频、音频资源控制。
实际上,协作控制主要用来控制发言权的切换和用户身份的切换。各成员协作代理根据用户的申请,切换视频、音频的资源状态,然后将申请递交给主编协作代理,由主编统一进行安排、调度,并将调度结果再传送给成员协作代理,以便成员协作代理切换用户的身份,进入不同的用户状态。
共享编辑代理从协作代理中取得用户的权力,判断当前是否具有编辑权,如果有,才能在共享窗口中进行评论,否则只能进行浏览。当用户切换发言权时,协作代理将通知音频代理和视频代理,相应地切换语音和视频的状态。
2.发言权控制
在CSCW系统中,发言权主要有两种方式来控制:一种是同时可有多个人发言,每个人可以同时听到多个人的发言,这种方式要求进行语音混合,将多路语音合成为一路进行传输和播放;另外一种方法是一次只有一个人发言,只有获得发言权的用户才能发言,因而就有一个发言权的控制问题。第一种方式比较接近自然,用户想发言便可以发言,但它要求的技术较深,在现有条件下极难实现;另外,在Windows的MDK中,一个语音卡一次只能处于采集和播放两种状态中的一种,二者不能兼顾,不可能做到多个人同时发言。所以在TH-DMCW系统中,采用了发言权控制,负责确定谁将成为发言者。
首先,必须有"申请发言权"和"释放发言权"的功能,发言权的传递才能成为可能。在课堂发言或会议发言的场合中,一种最自然,也是用得最多的一种方式是:一个人想要发言时,先举手申请发言权,此时如果有人发言,那么申请者必须等待当前发言者发言完毕,或者由主编决定是否中止当前发言者的发言,申请者才有可能成为下一个发言者。因而还必须为主编提供一"夺取发言权"的功能,当发言者发言时间过长,使别的想发言的人不能发言时,主编可以夺取当前发言者的发言权,中止他的发言,将发言权传递给下一个申请者。在协作中主编具有发言优先权。这种发言权控制方式使所有协作者都能畅所欲言。
3.协作角色和操作权限的切换
TH-DMCW中协作的主要任务是对共享窗口中的同一多媒体文档进行评论和批注,各人发表自己的意见,最后得出统一的结论,再由作者或者有修改权的成员对评论后的文档进行定稿,从而进一步得到一本多媒体著作。为了更好地处理成员之间的协作关系,可以将参与协作的成员按照不同的操作权力和访问权力分为四类:
主编:发起协作的成员就成为主编。在一次协作过程中,只允许有一个主编,且自始至终不变。主编管理用户的动态加入和动态退出、协作者的发言请求、以及批注权的移交等协同工作。在协作中,主编一直具有批注权,也就是说,他一直都是编辑;如果他获得发言权,那么他也可以成为发言者。
编辑:先加入的用户,如果人数不超过编辑人数的上限,那么他就成为编辑。在协作过程中,编辑可以在共享窗口上进行批注。编辑权将随着用户发言权的切换而移交。
发言者:申请发言权并得到主编的允许后,用户就成为发言者。在协作中,同时传输发言者的语音和图像。用户获得发言权后,自动被赋予编辑权,此时如果原来的编辑人数已达最大,主编将剥夺某个用户的编辑权。用户释放发言权后,编辑权不一定随着释放。
读者:不是主编、编辑或发言者的成员叫读者,它也是动态改变的。在协作中,读者只能对共享窗口中的内容进行浏览。
这四种身份的变化都实时显示在系统的状态窗口中,可分别用四种不同的图标来表示。
由于共享窗口中可能讨论不同的内容,而不同的内容可能有不同的作者,因此可以在TH-DMCW中提供灵活切换作者角色的功能,这样每个人在协作中都可以人尽其才,充分
发挥自己的能力,使多媒体文档具有多个人的思路和灵感,从而更加新颖独特,富有创意。协作角色的转换图如图8.49所示。有些系统也有协作角色的概念,但它的角色是自始至终 不发生变化的,浏览者便一直只能浏览,能评论的便一直具有评论权,无论他是否有评论的必要,所以显得比较死板。TH-DMCW系统的协作角色的变化避免了这种死板。
在一次协作过程中,协作者可做的操作非常灵活,既可以做共享的操作,也可以做私人的操作。下面是协作者可能进行的一些操作:
·在共享窗口中打开一页多媒体文档,作为讨论的基础;
·在共享窗口中打开一个白板,然后大家可以在上面进行构思或设计;
·在共享窗口中进行批注和评论;
·在私有窗口中打开著作库中的一页,进行修改、批注或浏览;
·在协作过程中发言;
·在私有窗口中修改私有文件,或作笔记,写杂感等;
·查询著作信息或档案信息。
不同的角色的权限不同,表现在他们能否做上面的操作。编辑权限的切换与发言权的切换有关。在TH-DMCW系统中,协作角色除了在用户加入时自动赋予外,还可以在发言权切换时,自动进行发言权和编辑权的切换。当然也可以将二者分离,将编辑权的切换完全交给用户处理,必须经过用户的申请和释放,就像用户对发言权的操作一样,这种方式可能更灵活。
二、TH-DMCW系统中的共享编辑
共享编辑是TH-DMCW系统最重要的应用,主要解决分布式环境下多个用户在共享窗口中对同一多媒体文档进行批注和评论,它的重点是解决用户之间编辑操作的协作。
在TH-DMCW系统中,多媒体编辑包括共享编辑和私人编辑,其目的是为了形成一本多媒体著作。用户可以在共享窗口中同步地对同一文档进行批注,也可以在私人窗口中异步地进行修改、批注。在协作的任一时刻,允许多人同时在共享窗口中进行评论,他们可以按照自己的想法去修改,各抒己见;与此同时,用户还可以在私有窗口中编辑和修改著作的内容,也可以做笔记、编辑私人文档。这样即可发挥多人的聪明才智,不断地润色多媒体文档;也可以给用户以一定的灵活性和活动的自由。
1.共享编辑的一些基本概念
为了深入了解TH-DMCW系统功能,首先要掌握共享编辑活动中用到的一些基本概念:
著作:即一本多媒体的电子出版物。可以以章和页为单位进行查询和访问,每页没有物理大小的限制,页的内容是多媒体的。著作保存在网络的文件服务器上,以页号的递增排序。
章:一本著作由多章构成,每章可包含多页,在1.0版中,一章所包含的页不一定是是连续的。可以按章号来查询著作。
页:是著作的基本单位,也是查询和访问的基本单位。每页的大小不固定,内容的表示是多媒体的,它由多个对象组成。在用户向数据库提交一页的时候,用户要输入该页的密码,和所属的章标题(可以省略)。如果用户没有输入章标题,则系统认为该页和上一页属于同一章。属于同一章的页的页号可以不连续。用户要修改某一页时,如果输入的密码正确,则用户具有完全修改权,否则只能加批注。
8.49 协作角色转换图

文档:分为页文档和私有文档。页文档存放在文件服务器上,并形成一本著作存放在数据库中,供所在参加协作的人访问;私有文档可以存放在本地机器上,也可以存放在文件服务器上,其他用户不能访问。
共享窗口和私有窗口:文档可以在共享窗口和私有窗口中进行编辑。用户在开始协作或加入协作前,系统中只有私有窗口。在参加协作后,上面的窗口为共享窗口,协作参与者可以共同进行批注;下面的窗口为私有窗口,用户可以编辑自己的文档,也可以修改、批注或浏览页文档。在协作中,能同时打开四个私有窗口,这些窗口是叠加在一起的,可以通过窗口右上角的极小化和极大化按钮分别前移或后移一页。
对象和批注:文档的每一页都由各种对象和批注构成。对象可以是图形、图像、文本、语音以及各种OLE对象,它只能在私有窗口中增加、删除和修改;批注是一种特殊的对象,包括批注笔、文本和广告牌,能在共享窗口和私有窗口中使用。在共享窗口中,每名参加协同编著的编辑加入的批注用不同的颜色标识。
OLE对象的嵌入:提供OLE对象的程序是服务器,包含OLE对象的文档叫OLE客户文档。这里也采用了一种客户-服务器的概念。嵌入OLE对象是把对象的内容复制到客户文档中,由客户文档管理它的移动和显示(有时显示由对象处理程序来管理),而它的编辑和播放则由服务器完成。激活一个对象一般是通过鼠标双点该对象来实现,此时可以进行两种操作:编辑和播放。对象激活以后就进入服务器程序,由服务器执行相应的功能,完成后再把修改的结果更新到客户文档中。Windows
3.1 提供了对OLE 1.0的支持,Visual C++1.5又进了一步,支持OLE 2.0的功能,此时激活OLE对象后,不必进入到服务器程序中,而是直接在客户程序中编辑,使用户使用十分方便。使用OLE后,凡是OLE服务器提供的对象,都可以嵌入到我们自己的文档中,从而使文档能够包罗万象,声文图并茂。
私有窗口中对著作的访问权:除了在共享窗口访问一本著作外,用户在私有窗口中也可以访问著作中的一页,只是不同的人或不同的时刻具有不同的访问权。访问权分为三种:修改、批注和浏览。当用户具有修改权时,他可以修改文档中的任何内容,无论是作者写的,还是在共享讨论过程中加上的;当用户具有浏览权时,他就只能浏览文档,不能进行任何修改。
鼠标操作:鼠标在多媒体编辑中起很大的作用。它主要有以下功能:
·单击鼠标左键来选取菜单项和对话框按钮;
·调节共享窗口和私有窗口的位置。共享窗口和私有窗口的宽度不能改变,高度可以通过鼠标来调节;
·移动对象:选取一个或多个对象,然后拖动鼠标;
·改变对象的大小:选取对象的边框,然后拖动鼠标到所需位置;
·改变非OLE对象的属性:双击该对象,可以改变直线或图形边框的宽度;
·浏览文字和广告牌的内容:选取该对象后双击。看完后单击鼠标左键即可退出浏览状态;
·修改文字内容:选取该对象,并双击。若权限允许,可重新编辑,然后在对象以外单击。
·修改或编辑OLE对象:选取该对象,并双击;
·编辑文字和广告牌:选取菜单中的文字和广告牌命令后,在编辑窗口中按下鼠标,并拖动到所需位置,然后在编辑框中进行编辑。编辑好后双击鼠标即可退出编辑状态。
·克隆(clone)对象:在对象上按住CTRL键的同时单击左键,可以在原地复制该对象。
·增选/减选对象:在对象上按SHIFT键的同时单击左键,可以增选该对象;在对象上按SHIFT键的同时双击左键,可以减选该对象。
2.TH-DMCW的协同编辑
TH-DMCW主要是针对文档的评论而设计的。当作者在私有窗口中编辑好一页后,把它提交给数据库,插入到著作的某个位置。然后,大家就可以在共享窗口中取出这一页来讨论,各个编辑既可以用语言表达自己的观点,也可以通过在文档中做各种批注来发表自己对文档的修改意见观点。在私有窗口中,用户也可以取出这一页来进行批注,将自己的看法写在文档上,以便作者在以后修改时可以看到。最后,具有完全修改权的用户可以查看各人发表的意见,并对它们进行分析和取舍,以此为根据来修改自己的作品。为了提供方便,私有窗口中用户可以通过一个命令来去掉文档中所有批注。这种加批注的方式既有普遍性,又有一定的针对性,还避免了在共享窗口编辑大对象时的延迟。
指针是编辑的引路人,它指示用户编辑方向和编辑的位置。单用户编辑时无疑是有一个指针的,但当多用户同时进行编辑时,如果没有指针表明是谁在进行编辑,那么用户很快就会迷失方向。有些多媒体共同编辑系统没有提供任何指示,有些则能实时地传输所有用户指针的位置。TH-DMCW采用了一种折衷的方案,既能得知是谁在进行编辑,又不用传输大量的指针信息。在TH-DMCW系统中,每个编辑都具有一种确定的与众不同的批注颜色,这样他在共享窗口中做任何批注便相应地带上了这种颜色,另外在状态窗口中还显示出了每个用户的批注笔颜色,用户一看便知是谁在批注。
为了完善协同编著的功能,可以提供一个简单的版本管理机制,可以进行版本的维护。当作者在私有窗口中修改完著作的一页后,我们将最新内容作为新版本保存,而将原来的内容作为旧版本保存。在打开文档时,用户可以选择是打开新文档还是打开旧文档。这样,当用户对自己所做的修改不满意时,可以废弃新版文档,重新修改旧文档。这是一个简单的想法,但却能给用户带来不少方便。
在共享编辑中,多个用户同时对同一文档进行编辑,共享同一工作空间,由于用户选取某个操作或某个对象是随心所欲的,选取之后很容易出现冲突,这时应该能解决这些冲突,使用户之间能协调地进行工作。在共享编辑中,多个共同编辑的用户位于网络上的不同站点,除了自己进行编辑外,还应该能随时得知别人在干什么,或者在文档中修改了什么,因而每个人在共享窗口中做的操作都要通过网络传输。在共享编辑中,要解决下面的一些问题。
(1) 共享对象的识别
在单用户编辑中,多媒体文档中插入的对象既具有不同的指针,也具有不同的顺序标号,任意一个都可用来区分不同的对象。但在共享编辑中,对象经网络传输以后,在某一站点上指向某个对象的指针,在另一个站点上不知会指向什么地方,如果原封不动地使用指针作为标识符,很可能会引起程序出错或异常。同时,由于多个用户互相之间的操作是随机的,两个用户很有可能同时插入对象,因而使用插入的序号作标识符也是不可取的。在TH-DMCW系统中,对象的标识符采用了组合关键字:插入序号和用户代号,它们可以唯一地确定一个共享对象。其中,插入序号是相对于某一个站点上插入的所有共享对象来说,用户代号可以是协作者在成员队列中的序号,也可以是协作者的网络地址,总之是与用户相关的信息。选择成员序号比选择网络的地址更好一些,因为它没有涉及到特定的网络。
(2) 对共享对象的访问控制
在共享编辑中,由于用户处于分布式环境中,却又共用同一个工作空间,因而用户的操作出现冲突是在所难免的。冲突主要出现在以下几种情况中:
① 对同一共享对象的访问冲突。当多个用户访问同一共享对象时,极有可能出现冲突。如某个用户正在删除一个共享对象,而另一个用户正在改变该对象的大小,这时候是让该对象被删除呢,还是仍然存在并且其大小被改变?此时应该采取某种策略进行判断,决定选取哪一种方式;或者干脆是当用户选取某个对象后,就禁止其他用户对象进行操作。采用后一种方法,即一旦某个对象被用户选中,那么其他用户就不能对同一对象进行操作,这时通过上锁机制来实现的一种排它型的访问控制。在共享图形编辑器中,采用了一种决策方案来处理冲突,而不是仅仅通过限制用户的操作来处理冲突。在用户进行操作以前,先判断对象的状态是否合法,如果合法则可以进行任何操作,否则便不允许进行操作。对象的删除也仅仅是从图形对象树中移去该对象,并没有真正删除。只有当所有用户删除该对象后,该对象才被真正删除。这样,每个用户的共享工作空间的内容可能并不完全一致,例如,某个对象对某个用户来说是删除的,但对别的用户来说却仍旧存在。这种方法使用户操作起来就象只有他一个人一样,不必考虑与其他用户的协调,可以说这两种方法各有千秋。
在TH-DMCW系统中,我们采用了一种类似上锁的方法。由于用户在共享窗口中只能加批注,并且一个用户也不应该修改别人所加的批注,因而我们限制所有编辑只能修改自己所加的批注,对别人加的批注则只能浏览其内容。
② 对共享窗口中讨论的文档的访问冲突。如果共享窗口中始终是讨论同一文档,便不存在冲突的问题。但如果某个用户切换了共同编辑的文档,而其他用户仍在对原文档进行修改,冲突便发生了。此时可以有两种实现方法。一种是禁止所有用户在此期间进行编辑,这是一种硬性规定;另外一种是用户照常可以编辑,但在此期间编辑的内容都无效。这两种方法看起来都比较简单,但实现时可能会碰到特定应用带来的特定问题。
③ Undo操作的冲突。在共享编辑中,如果用户A拖动了一个对象后,用户B删除了该对象,然后用户A选取Undo操作,此时便可能出现问题:是使拖动操作无效呢,还是使拖动以后的所有操作都无效,即使这些操作的执行者是同一个用户。一般有两种方法可以裁决:一种方法是保存一个操作队列,当用户选取Undo时判断是否有互相矛盾的操作,这种方法需要的缓冲区大,且判断起来比较麻烦;另一种方法是维护对象的状态,在进行Undo以前先进行状态检测,如果状态合法则可以进行Undo,否则Undo无效,这种方法实现起来便简单多了。
总之,要实现了一个尽善尽美的共享编辑器,需要解决许多由于多用户操作带来的新问题,对多用户应用程序的研究还有很多工作要做。
3.多媒体著作的管理
TH-DMCW系统除了将共同编辑后的文档进行保存外,最终还要形成一本多媒体著作。这样就有一个共同编辑的目标,而不是一次协同编辑就能完成任务,往往需要围绕这个主题进行多次讨论,因此需要多媒体著作的管理。
TH-DMCW系统采用了ODBC(Open Database Connected)技术实现数据库的管理,在ODBC中,驱动器管理者起了中介作用,它将应用程序传来的查询请求进行解释,变成SQL查询语言后,传给不同的数据库驱动器,由这些驱动器去执行、去处理,然后再将处理后的结果返回应用程序。每种数据库带一个驱动器,只要在ODBC中安装了这些驱动器,ODBC便能对它们进行维护和管理,应用程序也能通过ODBC来访问这些数据库的数据。所以ODBC提供了一种开放性的链接,它使得同一应用程序能访问不同的数据库,或者用某一数据库的格式去访问另一种数据库。
在TH-DMCW系统中,利用ODBC的服务来实现数据的查询,而低层的数据库则采用Microsoft Access数据库,当然其他的某些数据库也是可以的。
著作管理对共同编辑或共同评论后的多媒体文档进行组织,形成一本多媒体著作,并提供对著作的访问和维护。著作中以页为访问的基本单位,页的信息保存在网络的文件服务器上的数据库中。在著作管理中不涉及对页文件内容的修改、存取和显示。
每本著作对应着一个数据库,而该数据库中的每个记录则对应著作中一页,页号在整个著作中递增且唯一。数据库中只保存页的一些必要信息。
该著作与现实中的著作相比,具有以下一些独特之处:
·页的大小不固定,不受物理大小的限制;
·页的排列不拘泥于现实生活中章、节、小节等层次,而是可以随心所欲地进行排列;
·页的内容可以是文本、图形、图像、语音、视频和动画等多种媒体。
它比现实生活中的著作更自由、更随意,也更生动、更丰富,并且可以自动地进行维护。它是集多个人的灵感和智慧而产生的一本多媒体著作。
著作管理提供了创建著作、打开著作、关闭著作、按章号查询、按页号查询、删除一页、提交一页、打开一页和保存一页等多个功能,主要是对著作的创建、打开和关闭,以及对著作的查询和著作中页的访问,这样,就可以构成电子出版物的基本功能。如果有时间,还可以使著作的功能更加完善,更接近于对一本真正著作的操作,比如说,添加封面、自动列出目录、进行浏览等。
著作存储于网络的文件服务器中,可以供多个成员同时访问。这时候也要进行访问请求和访问结果的传输,但它与前面所说的点到点的传输不同,它是工作站对服务器的访问,这是网络中两种不同的访问方式。在TH-DMCW系统中支持了这两种信息的传输方式,一种是点到点的传输,主要传输语音信息、编辑信息和状态信息;另一种是对服务器的访问,主要处理共享视频的访问和对数据库的访问。由于多个用户可以同时访问和修改数据库,因此必须要维护数据的一致性,利用DOBC的Transaction可以实现用户的访问,也可以用利用上锁方法来保证用户访问到的总是正确的信息。
成员对著作的访问,考虑的是他能否访问这个数据库或能否访问这个记录,对著作内容的访问控制则是用户访问到某一记录,即某一页的信息后,对该页具有什么样的访问权。访问控制主要用来解决协同编著中,可能有多个用户访问到某一页,并对这一页进行修改的情况,此时容易出现数据的不一致,TH-DMCW系统采用了一种页上锁的方法来控制用户对页的修改。访问控制的实现见图8.50,方框里的文字表明页当时分配给用户的最高访问权限,权限值由小到大依次为:初值<完全修改权<批注权<浏览权,但每种权限对应的修改能力则正好颠倒过来,初值是一个过渡值。在协作过程中,如果当时有人对某页具有完全修改权,那么其他用户便只能具有浏览权;如果有人对某页具有批注权,其他用户也只能具有浏览权;任一时刻只有一个用户具有完全修改权或批注权;可以有多个用户具有浏览权。共享窗口中打开某一页进行讨论时,将所有编辑者看成一个具有批注权的整体,其他用户如果要在私有窗口中访问这一页的话,只能进行浏览。实际上,这三种权限主要是针对私有窗口中用户编辑著作内容的情况。对著作管理来说,共享窗口只能具有批注权。
在图8.50中,实线表示用户申请访问该页,箭头发出处表示该页当前已有的最高访问权。箭头指向处表示赋予申请者的访问权。其中,由完全修改权或批注权到浏览权的转化是无条件的,也就是说,如果当前有人正在修改或批注,那么申请者只能获得浏览权。虚线表示用户停止对该页的访问,释放了相应的访问权,箭头发出处表示用户访问时具有的权力,箭头指向处表示该页当前能赋予新申请者的访问权。每页提交著作库时,要求输入该页的密码,知道密码的人才可能对该页进行完全修改,这样可以避免其他用户对著作内容的不负责任的更改。
8.50 访问控制的实现
在TH-DMCW系统中,访问权限的控制是通过一个表来实现的。当用户申请访问某页时,系统自动给他赋予访问权限,并且将新的访问权限加入表中,作为下次分配同一页访问权限的依据。当用户关闭访问的页文件时,系统自动删除相应的访问权限。
|