从autopdms软件的架构来讲,我们把协同的最小单位规定为单个节点,而在这些节点中,我们又将节点分成管理节点(例site,zone等等)与非管理节点(nozz,tee等等)(这点在协同操作手册中有所说明);而管理节点,才真正的成为协同的最小单位。协同操作要实现的功能就是多个用户能同时对于一个工程进行设计。所以对用户的每一个操作,都要进行判断,当前要操作的节点,是不是被其它用户正在操作(我们称之为加锁),因为为了确保数据库的一致性,我们必须确保同一个节点同一时刻只被一个用户操作;考虑到我们软件结构,在对每一个节点进行真正的属性改变的时候(只有在内存中的属性改变后,才能保存到数据库中),我们必然要调用节点属性对应的setxxx函数,所以,决定在每一个域节点的setxxx函数中,做加锁检查,以及后来的权限检查;真正进行加锁的是在apdomainframe工程中的persistaccessor类中的locknode函数; 我们开始把加锁的类型定义成为create、modify和delete锁,但由于声明列表的需要,我们又加了一种类型claimce,所以,在locknode函数中,我们就必需对这四种加锁动作进行判断和相应的转锁类型操作;
(10 kb, 下载次数: 1152)
|