1、响应器技术概述
当AutoCAD系统内产生一个事件时,特定的对象会调用通知程序自动传递事件到其它对象。例如当用户复制、删除或修改对象或者用户发出RODO或UNDO命令时,对每个事件会自动触发相应的通知。
对象接收事件称为响应。一个响应在它能从通知程序接收事件之前必须先明确增加到通知程序响应列表中。当事件发生时,通知程序对响应列表中的每个响应自动调用相应的通知函数。所有响应器函数都是虚函数,所以其不能直接调用,必须从相应的响应器类中派生后才能调用。此时可以在相应的函数中添加代码,以实现用户所需功能。
响应器主要分为临时响应器和永久响应器。
临时响应器主要用于接收事件通知,使用临时响应器可以监控数据库对象的事件,同时也可以在应用程序运行时监控数据库事件、用户交互及其它系统事件。如将响应器添加到目标图层上以监视该图层的修改状况,若目标图层被非法解锁,将会触发该响应器中的objectClosed()事件中的重新锁层方法。
临时响应器的构造方法主要是在应用程序加载时搜索或创建目录对象,然后将目录对象指针加载到响应器的响应列表中,一旦目录对象指针内容发生改变,则会触发响应器的相关事件,然后在响应器事件中调用用户所定义的方法。临时响应器可以使用addReactor()函数来添加。
永久响应器主要用于接收和发送通知,一旦永久响应器被添加,便作为数据库对象的一部分,并保存在DWG和DXF文件中,当图形文件被装载时会被重新建立。
永久响应器的构造方法主要是在数据库增加对象响应,并使用目标对象的ID号获取其指针以与其建立约束。永久响应器被添加到通知对象的响应器列表中时刻跟踪目标对象,一旦目标对象被更改,将会响应用户所规定的事件。永久响应器可以使用addPersistentReactor()函数来添加。永久响应器是数据库的一部分,因此,在复制对象时,附加在其上的永久响应器也会被复制,而临时响应器则不会被复制。
2、工程图审批流使用情况介绍
2.1 工程图操作环境及其生命周期状态描述
南摩研发部涉及设计图纸的管理,该系统要求对工程图的操作是在NM-PDM的基础上进行的,该系统要求只有通过PDM授权后才能进入工程图的相关操作。
产品数据管理是一种面向对象的信息系统,它将所有与产品相关的信息和过程定义为对象,如文档、工程图、关系和过程等。对象在其生命周期中要发生许多变化,如版本、所有权、访问权等。在生命周期的不同阶段,对这些变化有不同的控制要求。工程图对象的生命周期状态如图1所示。

2.2 NM-PDM审批流系统实现模型图
在传统的手工管理工作流程中,对工程图生命周期各状态相应功能的执行是通过图纸的传递来进行。而在NM-PDM审批流管理系统中,对工程图生命周期状态的确立是根据识别提供给操作者权限状态代码来实现对工程图的处理。全部过程在PDM控制下进行。NM-PDM审批流系统的管理模型如图2所示。

2.3 NM-PDM审批流管理模型功能分析
从审批流管理模型图可看到,系统分为三部分:权限认证、通讯和监控响应。
(1) 权限认证过程
权限认证过程也就是给操作者授权的过程,通过建立员工表存储用户登录身份认证数据、建立工作组表存储不同用户的不同权限认证数据和建立项目组表存储用户在不同项目中所担任的不同角色认证数据来进行。用户操作时通过读取这些信息来动态地约束用户操作。这部分的工作在该项目的另一部分--权限认证来单独研究。
(2) 通讯
用户选取项目成员后会有进一步的操作行为,如新增项目成员、修改等操作。如果要启动AutoCAD进行相应操作,就必然要与AutoCAD进行通讯。启动AutoCAD,新建AutoCAD文件,传送数据到AutoCAD文件,如图形加锁参数、零件属性参数等。进入AutoCAD后,对零件属性参数的修改,必须使用我们在AutoCAD中开发的应用程序才可修改,这样就可保证所修改的零件属性参数通过合法的途径传送回到数据库。
通过权限认证后,要通过AutoCAD打开的文件,只有七种可能的状态:设计、校对、审核、标检、批准、打印发布、浏览。系统通讯就是要将这七种可能的信息分别传送到AutoCAD,以实现其功能。本系统传递这些信息是采用PowerBuilder的OLE技术开启AutoCAD服务器、利用AutoCAD嵌入式开发工具 VBA来完成的。
(3) 监控
监控机制是为了保证工程图文件在不同的状态下顺利工作。由于系统整个工作流程的完成必须在AutoCAD中进行,因此,监控过程就加载在AutoCAD中。
工程图工作状态及过程监控,主要研究在AutoCAD中进行审批流程管理的保障问题。要在AutoCAD中有效地进行工程图的不同工作状态的工作,就需要有比较完善的监控机制,以监督用户的不同操作行为,使设计者不能手工更改工程图的标题栏信息、明细栏信息;圈阅者圈阅时,不能修改设计信息等。
通讯和监控是工程图审批过程牵涉的主要问题,也是本篇文章讨论的主要部分。
对于面向设计的文档管理来说,关心的是基础数据是否正确、图形文档中基本信息和数据库中的数据是否一致。本系统在使用过程中,许多产品数据是从数据库中提取,然后再添加到图形数据库中,为使产品数据库与图形数据库中的内容一致,就要求用户不能在AutoCAD中修改在图形数据库中与产品数据库必须一致的内容。而要达到这一目的,是不能靠用户的个人行为来做到的。在对AutoCAD进行操作时,由于操作者的失误,或者AutoCAD本身的不完善,很容易使一些不能修改的数据被修改和删除掉。为了防止各种错误的发生,系统要求采用设计者和其他校审用户在同一张图纸上完成设计和审校工作,同时要求设计者不能修改校审图层上的信息、校审用户不能修改设计层上的信息;对于标题栏的信息,任何操作者都不能在AutoCAD情况下对它进行修改。明细栏的信息和指引线的信息,只能通过菜单中的操作项进行操作,其他的操作都是非法。
因此,我们必须在程序中建立这种约束机制。在本系统中,我们将设计用线条信息、标题栏信息、明细栏信息、指引线和校审信息分别存入到不同的图层中,并对它们进行加锁,通过对图层加锁并禁止解锁的方法来约束用户。在这种情况下,响应器的应用就显得十分重要。