设计活动不仅具备创造性和智能性, 而且具备群体性和协作性. 目前以交互式图形系统和分析计算为主的CAD系统, 仅能支持单个设计者的独立设计和人机交互. 随着计算机支持的协同工作(CSCW)的出现和快速发展, CAD不仅是一个设计计算, 图形处理和智能推理工具, 而且又是一个支持群体间通讯和协作的”人人交互”工具, 从而跨越CAD技术的鼻祖,MIT的I. E. Sutherland博士在其具有里程碑意义的Sketchpad系统中所提出的”人机图形通讯”的CAD基本框架[1].
本文在分析了协同设计中相关协作支持技术研究现状和现有协作支持工具和协同图形编辑/设计系统存在的问题和不足的基础上, 提出了一种用协作支持工具软件CoCADToolAgent改造商品化CAD系统来开发CSCD系统的新思路和总体技术路线, 并给出有效的关键实施技术. 作为本方法的一个应用实例, 成功地将传统人机交互式CAD系统AutoCAD转变为网络环境下支持人人交互的CSCD原型系统, 直接支持工业标准的矢量图形的协同设计, 从而兼顾了协作性能和应用功能.
2 相关协作支持技术分析
1959年MIT在开始对CAD技术进行研究时, 提出传统CAD系统的三大目标: 人机对话, 基于图形的人机对话和模拟人类设计专家. 从CAD技术40年的发展来看, 人机对话的基本目标已经完全实现, 模拟人类设计专家的高级目标在特定领域部分或者简单实现, 而基于图形的人机交互则得到广泛应用, 并不断发展. 同样, 在计算机支持协同设计(CSCD)领域, 基于图形的人人交互协作技术也是现阶段一个重要的研究方面, 这是由于: ①基于知识共享的协作模式来模拟人类设计专家群体. 有些初步的探索[2], 用认知式Agent模拟和取代人类设计专家群体, 目标相当高, 还有待人工智能和协同科学的的突破; ②基于场景和多媒体人人交互[3]. 采用最自然的方式来支持人人交互, 更依赖于高速多媒体通讯网络等硬件的支持; ③基于文本和超文本的人人交互[4]. 主要采用半结构化方式来支持人人交互. 由于WWW的快速发展, 正向超媒体发展, 一些研究虽然采用了Web交互界面, 但已经不属于超文本半结构类型, 而应归于基于图形的人人交互领域; ④基于图形人人交互. 采用结构化的方法支持人人交互, 虽有一些以Distributed Sketchpad为代表的CSCD原型系统,协同图形编辑/设计系统等[5], 但仍然缺乏将CSCW系统优良的协作性能同传统CAD系统强大的图形处理能力,兼容性和开放性结合起来的方法, 有待深入研究.
现有协作支持工具可以分为两类: ①通用协作支持工具. 例如Microsoft的NetMeeting, 利用应用共享机制对单用户应用程序进行共享, 截取单用户系统输入/输出界面, 严格地按照"WYSIWIS"方式提供显示级的界面共享, 仅支持发言权协作模式, 协作性能差; ②专用协作支持工具. 例如密西根大学的DistEdit仅能支持协同文本编辑, 而且需要特定第三方通讯软件和编辑器源代码的支持[6]. WebScope公司基于web的CAD协作支持工具, 具备无线因特网连接能力, 但它需要把CAD对象(3D模型/2D工程图形)转换成JAVA对象. AutoDesk公司为适应WWW的快速发展所推出的DWF数据格式及其配套的浏览工具WHIP!, 仅能在web浏览器上进行单向的CAD图形发布,浏览和打印, 不能有效支持实时交互协同图形设计.
现有协同编辑/绘图系统基本上可以划分为三种类型: ①协同文本编辑系统又称合著系统. 通常集成了文本,简单图形,语音,视频等多媒体信息; ②白板类系统. 例如CATIA公司提供的白板工具只能支持对CATIA模型所转换的图像进行同步观察和注解(viewing and annotating). 这类系统在将图形格式转换成图象格式时, 不仅矢量化信息彻底丢失, 而且原有图形数据库的数据结构和各种扩展数据信息也不复存在, 只适用于草拟和批注; ③协同绘图系统或者改进型白板等系统支持自定义的矢量图形格式. 但是所支持的图形对象的类型,对象的属性和图形对象的编辑操作等图形应用功能比起图形CAD系统有明显差距, 而且与目前流行CAD系统图形数据库格式不兼容, 还是难以适应复杂的CAD图形设计任务.
3 协作支持工具的总体技术路线与关键实施技术
Fig. 1 Total technique method
图1 总体技术路线
鉴于这种现状, 本文提出了直接基于流行商品化CAD系统上利用协作支持工具CoCADToolAgent开发CSCD系统的新思路, 其总体技术路线见图1, 关键实施技术如下.
3.1 协作框架及其通讯支持
当前CSCW/CSCD系统主要采用两类基本协作框架: 透明协作和明确协作 [7]. 前者复用了单用户CAD系统的图形处理功能, 兼容了现有CAD系统的数据格式, 但协作性能差. 后者虽然强调了协作性能, 但是应用功能弱. 因此, 本文提出了一种协作性能与应用功能并重新的协作框架及其通讯支持方法.
(1) 该协作框架采用一种偏复制式混合体系结构, 与完全意义上的分散式体系结构和严格意义上Client/Server结构均不同, 是一种偏复制式的混合体系结构, 将数据,应用和并发控制加以配置. 服务器端采用多服务器结构, 由全局信息服务器¸通讯转发服务器和文档传输服务器组成. 客户端由各个CoCADToolAgent组成直接从事协同图形编辑/设计的反应式多Agent系统.
(2) 协作支持工具CoCADToolAgent采用一种半智能的反应式Agent结构, 由动作反应器,通讯状态监视器,编辑器状态监视器,数据库状态监视器,实体对象状态监视器和选择集状态监视器所组成.
(3) CoCADToolAgent采用通讯编程方式深入到现有CAD系统的内核, 从而将协作性能和应用功能结合起来. 为此, 本文在二维CAD系统AutoCAD和三维CAD系统SolidWorks上对基于CAD内核的网络通讯支持问题进行了实验研究.
首先设计和实施一个物理通讯测试软件CoCADPing, 该程序由三个部分组成: ①CAD内核的处理部分包括CAD系统内核的切入点函数,外部函数的调用执行函数,外部函数代码定义加载函数,外部函数的卸载函数,外部函数列表, 其中外部函数列表中定义了名称为CoCADPing的过渡函数, char * exfun[] = {" CoCADPing "}; ②过渡部分包括两个过渡函数pingMain和CoCADPing, 其中过渡函数CoCADPing被定义在CAD内核处理部分的外部函数列表中; ③通讯处理部分包括IP包校验函数checksum,从IP包头中解码析出ICMP数据函数decode_resp,填充ICMP请求函数requestfill_icmp_data和命令行窗口使用帮助函数Usage. 编译生成的CoCADPing应用的大小为7k, 是一个ADSRX程序, 被AutoCAD内核加载, 并与AutoCAD系统内核程序共享地址空间运行. 实验表明, 基于CAD系统内核的CoCADPing展示了同基于操作系统内核的Ping一样的物理通讯能力, 因此, 可以通过通讯编程手段深入到CAD系统的内核.
然后研究了客户机/服务器模式下的基于CAD内核的网络通讯问题. 由于AutoDesk公司和SolidWorks公司的Object ARX2.02和SolidWorks97plus所推荐的VC编程方法和所提供的模板程序均不支持多线程的通讯编程, 我们通过以下方法实现了CoCADToolAgent的通讯状态监视器: ①修改该模板程序的应用初始化成员函数, 添加通讯初始化代码; ②修改该模板程序VC集成环境设置方式, 增加AppWizard阶段所漏掉的通讯特性选项; ③将基于MFC的标准Windows程序的文档视图结构和Object ARX 2.02和SolidWorks97plus的程序结构混合起来; ④在命令堆栈宏定义中定义启动通讯联结的命令函数. 综合测试的方法是从一个CoCADToolAgent for AuotCAD上发出一组图形操作命令, 通过通讯转发服务器转发到另一个CoCADToolAgent for AuotCAD和一个CoCADToolAgent for SolidWorks97上, 生成相同的运行结果. 综合测试的结果更进一步验证了CoCADToolAgent这种新型协作框袈的正确性, 从而为后续的研究奠定了基础.
3.2 通讯协议
目前CAD/CAM系统上下游串行的文件交换方法和应用共享系统的界面像素传输方法的通讯量太大难以有效支持CAD协同应用, 因此CoCADToolAgent采用“分而治之”和“适时传输”的思想对通讯协议进行整体规划, 优化和构造了适合反应式Agent处理的通讯协议集, 以达到支持实用化工程设计的目的. 该协议集包括五个方面的子协议集.
(1) 并发控制协议CoCADControlProtocol是整个协议集的重要组成部分, 提供了对偏复制式混合体系结构的系统数据的一致性维护和并发控制的协议支持.
(2) 数据库通讯协议CoCADDataProtocol用于发言权协作模式下的协同工作. 采用面向图形对象的通讯协议组织方法来映射和兼容现有工业标准的CAD系统图形数据库的数据类型, 通过抽象实体通讯协议来提高图形数据通讯传输效率, 并保证协议的稳定性和可扩展性. 在图形数据库内核层次上将其操作方式抽象为基本操作, 利用CoCADToolAgent的数据库状态监视器将用户的各种复杂操作归一为基本操作, 然后通过远程执行消息发送机制在远程加以执行, 从而支持各种图形编辑命令和各种编辑形式(包括用户自定义和将来第三方开发的命令).
(3) 宏命令通讯协议CoCADMacroProtocol用于多输入流协作模式下的协同设计.
(4) 通告协议CoCADNoticeProtocal用于协同感知中的远程指针共享光标,动态多光标,线型颜色,通知和笔谈等.
(5) 任务协议CoCADTaskProtocal提供了对协作任务的管理的支持, 包括当前任务信息的查询,任务号的申请,任务登记,用户注册,登录和退出等.
当前, 为了调试方便, 所有通讯协议按照纯文本来编码发送和接收, 如果按照二进制编码并压缩, 通讯量可进一步减少.
3.3 一致性维护和并发控制
在传统的人机交互式CAD系统中, 单个用户基本上独占对图形数据库的访问存取. 而基于CSCW的CAD系统支持紧密耦合的群体工作模式, 牵涉到多个用户对共享数据的操作问题, 必须保证共享数据在各个站点上的一致性.
由于CoCADToolAgent要兼容现有CAD系统的数据库格式, 不能指定图形对象在图形数据库中的全局唯一标识符, 而且一旦添加到数据库之后,不可回退,也不可更改. 因此, CoCADToolAgent采用了一种改进的整体一致性模型和添加操作优先的并发控制策略, 以解决偏复制式混合体系结构的一致性维护和多用户并发冲突问题.
(1) CoCADToolAgent对整体一致性模型的改进的基本原则是以数据的一致性作为显示一致性的基础, 以保证CoCADToolAgent能够兼容现有的CAD图形数据库格式. 允许共享数据对象的属性存在一定的不一致, 这意味着某些实体数据的属性是可变的, 但是数据库的结构组成是不变的, 以保证用户对数据库的操作不发生错误. 既支持透明协作, 又支持明确协作, 要求协作者有明确协作的意识, 能够理解视图上的协作含义, 例如实体加锁记号.
(2) CoCADToolAgent采用复合技术路线来支持多输入流,发言权和对象锁三种协作模式及其切换, 以适应不同设计阶段协同工作的需要: ①通过服务器端的通讯转发服务器的序列化机制, 对各个站点的宏命令进行一致化处理, 然后转发到各个站点, 来实现多输入流协作模式, 用于协同草拟阶段的快速成型; ②用自动远程执行消息发送机制和面向对象的图形数据通讯协议来实现发言权协作模式, 以适应任意复杂程度的CAD图形操作, 并且在发送源和编码阶段进一步减少数据传输量, 用于设计中后期阶段的集中讨论; ③用对实体和实体集的可见性和可拾取性加锁的方法来实现对象锁协作模式, 可用于设计中后期阶段的分散修改.
(3) CoCADToolAgent对整体一致性模型的改进和放宽是一般性的, 提供了维护各个复制式数据库拷贝中图形数据库结构一致性的最基本的方法, 用户可以在此基础上根据应用语义适当收紧一下这些放宽的条件.
3.4 协同感知
传统交互式CAD方法仅支持单个用户的人机交互活动, 通过光标,夹点显示,动态导航将操作结果反馈(Feedback)给操作者, 这种感知仅仅是针对机器的. 而CSCW系统要支持人人交互, 用户不仅要感知机器的反应, 更重要的是要感知其他用户的异地通馈(Feedthrough). CSCW系统中工作空间总是虚拟的,人工合成的, 必须采用相应的技术手段, 来支持共享工作空间中人人交互时的感知问题. CoCADToolAgent支持工作空间感知,交谈感知,结构感知和以人为线索和中心的感知.
(1) 工作空间感知. CoCADToolAgent支持基于共享图形工作空间的协同工作, 且深入到现有CAD系统的内核, 支持实体对象的颜色,线型感知. 在未知原有CAD系统源代码的情况下通过界面耦合方法实现了远程指针, 该指针支持各个用户视图的独立缩放和模拟动态多光标.
(2) 交谈感知. CoCADToolAgent通过一个集成进来的通知/笔谈辅助工具来模拟协作用户之间的相互通知和聊天.
Fig. 2 Architecture of prototype system and communication support
图2 原型系统总体结构与通讯支持方案
(3) 结构感知. CoCADToolAgent提供了任务结构,图层结构和用户角色结构, 支持多任务及脚色机制. 通过任务向导机制为用户提供任务和人员列表及其相互关系的全局信息.
(4) 以”人”为线索和中心的感知. 利用协作框架的开放性, 从面向对象的图形实体类库中通过继承和重载机制导出一类新的,具有沉浸感的用户–实体关联数据类型. 新类有效继承了原来实体类的所有基本数据和操作方法, 同时又增加了用户属性数据和相应增加的操作方法, 从而支持支持以”人”为线索的各种查询,检索和统计, 支持以”人”为中心的CAD图形数据文挡的管理模式.
3.5 多任务及脚色机制.
传统交互式图形CAD系统基本上是一个关于设计对象的建模工具, 本身任务机制很弱或者没有. 而人人交互的CAD系统不仅要支持传统CAD系统的图形处理, 而且要支持人人交互和协作功能, 任务机制和脚色机制是必须的. CoCADToolAgent支持多任务和脚色机制.
(1) CoCADToolAgent的协作任务由基本组成属性和操作集组成. 基本组成属性由任务ID号,CAD图形文档和协作用户集, 其中任务的ID号与通讯转发服务器的端口号关联. 基本操作包括申请任务号,创建任务文档,保存任务,结束任务和用户脚色管理.
(2) CoCADToolAgent构造了一个任务向导流程来帮助协作用户参加CAD图形的协同设计,使得传统单机CAD用户可以很平滑地从单打独斗工作方法过渡到协同工作环境中来。
(3) 系统支持多任务, 图2为原型系统的总体结构及其通讯支持方案. 其中, 全局任务信息服务器静态配置, 其IP地址和端口号是公开. 通讯转发服务器在创建协作任务时动态创建, 其IP地址取创建该协作任务的站点地址, 其端口号与全局信息服务器任务列表中任务ID号相关联.
尽管在一个协作任务中, 通讯转发服务器是通讯瓶颈, 但是由于协作任务及其通讯转发服务器是动态生成的, 在共享图形工作空间的多个协作任务情形下, 各个站点之间的通讯是均衡的, 有效地利用了现有通讯资源.
4 原型系统的实现
CoCADToolAgent采用了与现有基于通用CAD系统开发方法不同的技术思路. 不是按照CAD公司所推荐的编程方法和模板程序来开发一个参数化增值模块或者专用模块, 而是开发了一个具备网络通讯和协作支持能力的CAD系统协作支持工具软件Agent, 并以该工具Agent为核心, 将传统交互式CAD系统AutoCAD R14升级成为支持人人交互的CAD图形系统, 从而实现一个基于CSCW的CAD原型系统, 直接支持工业标准的矢量化工程图形的协同设计.
Fig. 3 Implementation of prototype system
图3 原型系统的一个运行实例
用户首先加载CoCADToolAgent, 并登录到全局任务信息服务器. 然后通过任务向导(TaskWizard)来来查询当前的全局协作信息, 选择创建新的协作任务, 或者参加已有的协作任务. 如果是创建协作任务, 还要创建CAD图形文档, 创建通讯转发服务器, 创建发言权仲裁Agent, 并将这些协作信息登记到全局信息服务器上. 最后按照相应的协作模式进行工程图形的协同编辑与设计.
图3为原型系统运行时的一个动态远程指针示例, (a)为发送端, (b)为接受端. 发送端的动态协作信息(协作者ID及其光标所在世界坐标位置), 可以在接受端被感知到, 并且支持各个CAD视图的独立缩放.
5 结束语
具有开放式,协作式以及智能性和群体性的设计方法和设计工具是当前CAD系统的发展方向, 分布式虚拟环境下协同工作的支持技术及支持工具的研究与开发是实现基于CSCW的各类系统的关键. 本文针对当前CSCD系统实现方法的不足, 提出了一种直接基于商品化CAD系统上利用协作支持工具CoCADToolAgent开发CSCD系统的总体技术路线和相应有效的实现方法, 并以该Agent为核心成功地将传统人机交互式二维CAD系统AutoCAD转变为网络环境下支持人人交互的CSCD原型系统, 特别适合国内广大中小型设计和生产部门.
本文研制的CoCADToolAgent是一个面向CAD系统的专用协作支持工具, 比NetMeeting之类的通用协作支持工具具有更好的灵活性和协作性能. 此外, 本文提出的技术思路还可以推广到Solidworks等三维CAD系统中去实现协同设计功能, 例如用一个CoCADToolAgent for SolidWorks进行三维装配件设计, 同时以多个CoCADToolAgent for AutoCAD进行零件工作图设计.