3.5 审批流中响应器的运用及要注意的方面
本系统利用图层加载响应器实现对产品数据库参数、设计信息、校对信息、标检信息、审查信息、审定信息、工艺审查信息的隔离保护。将所要保护的信息放在相应图层,并加载图层禁锁响应器,使用户不能在AutoCAD下手工解锁图层。通过程序控制,系统可将产品数据库中的信息传送到AutoCAD图纸中的相应图层,然后再加锁。
AutoCAD要知道在什么样的情况下才能对相应的图层进行加锁,并怎样才能正确锁定目标图层。这就要通过从PowerBuilder应用程序中传递过来的参数信息,以对相应目标图层加锁。ARX应用程序通过接收这一参数,并通知图层状态监视器,监视目标图层状态。
在arx程序中,需要设置一些参数,当系统检索到的图层与用户要求加锁的图层相一致时,就将其加锁,当用户打开了图层,不管其是否对图层进行了修改,创建新层操作系统都会进行一次检索,并将规定图层加锁。
执行以下语句就可将明细栏、审定层、校对层、审查层、标准化层加锁:
//加载图层响应器应用程序
contact_ltr.ActiveDocument.SendCommand(‘(command "arx" "l" &
"D:\\LAYERCONTRL\\layermena\\Debug\\LOCKLAYER.arx") ‘)
其中"LOCKLAYER"为用ARX开发的加载图层响应器应用程序,"addlocklayerReactor"为图层加锁响应器程序。
将所有图层解锁的语法为:
contact_ltr.ActiveDocument.SendCommand("addlocklayerReactor ")
将校对层解锁的语法为:
contact_ltr.ActiveDocument.SendCommand("addlocklayerReactor&
审定层+明细栏层+审查层+标准化层 ")
在AutoCAD新建或打开一张设计图时,无论该设计图有无设计对象,对该图形对象来说,它都有一个永远不能被删除、也不能被改名的图层--"0"层,本系统就是在"0"层加载图层响应器,以监视目标图层是否已被非法修改。
当用户想将锁定图层解锁时,他必须打开图层表进行操作,由于在"0"层上加载了图层响应器,该响应器就会监视"0"层的工作状态。一旦"0"层被打开,就会触发OpenForModify函数;或者"0"层被关闭时触发objectClosed函数,系统就是在objectClosed函数中加载图层搜索器和图层状态监视器。图层搜索器会将所有图层都检索出来,再根据图层状态监视器反馈的信息,判断不该解锁的图是否被非法解锁,如被解锁,则调用图层加锁函数重新将其加锁。
在使用响应器时应当注意以下方面,否则将引起系统崩溃:
(1)应当弄清事件执行的先后顺序
例如,对AcDbObjectReactor来说,响应事件能立即发生或被推迟到提交时间后发生。提交时间是指当用户在一个完整的对象的基础上进行操作时,对象完成操作被关闭的时间或当用户在事务模式下执行操作时最外层事务结束的时间。
(2) 必须对提交的事件进行必要的检测
在实际使用过程中,事件的提交过程一定要执行相应的测试工作后才能确认。
例如,在用户非法对系统锁定的图层解锁时,如果只是简单地在目标图层响应器的ObjectClosed事件中对目标图层重新加锁,则会引发AutoCAD的eWasNotOpenFOrWrite错误消息,并会使AutoCAD崩溃。
要解决这一问题,应当在目标图层修改完毕,且系统已成功关闭其相关的图层表和图层表记录后才能调用用户所定义的重新锁层方法。
通过研究AcDbObjectReactor、AcEditorReactor、AcTransactionReactor等与实体相关的响应器,发现只有AcTransactionReactor 能够监视实体的操作过程是否结束,但如果只用AcTransactionReactor的监控函数,则无法确定事务何时开始。因此为处理这一问题,应同时加载AcDbObjectReactor和AcTransactionReactor两种响应器,AcDbObjectReactor可以监控事务何时开始,AcTransactionReactor可以监控目标事务何时结束,一旦事务结束,就可调用用户所定义的重新锁层方法。
4、结论
通过图形数据库和数据库系统的集成,在PDM系统上运行的基础数据能动态的与设计图纸信息结合,当设计图纸信息发生改变,PDM往下传输的数据能随之发生改变。
校对、审核、标准化和审定在PDM上进行,使最后定型的图纸和计算机内的图纸统一起来。通过查询,某个机种设计情况一目了然。
在PDM审批流中引入响应器技术,从根本上解决了审批流中授权信息的安全问题,能有效杜绝操作者对非授权信息的修改,由系统来保证信息数据的安全和可靠;同时通过实现信息流在Powerbuilder和ACAD之间的传递,使得PDM和AutoCAD能有效的集成在一起,提升了NM-PDM的层次。
参考文献
[1] ObjectARX帮助文件.ObjectArx Developer‘s Guide.
[2] 白英彩,唐冶文,余巍.计算机集成制造系统-CIMS概论.清华大学出版社.1997.12
[3] 王蓉等编著.PowerBuilder7.0 应用开发技术详解.电子工业出版社2002.3
[4] 郑若忠,宁洪等.数据库原理. 国防科技大学出版社 1998.3
[5] Microsoft公司著,希望图书创作室译.Visual C++6.0类库参考手册.北京希望电脑公司.1999
[6] 刘良华,朱东海编AutoCAD 2000 ARX 开发技术.清华大学出版社 2000.9
[7] 李国喜,龚京忠等编《NM-CIMS详细设计报告》2000.6