问下 Transaction 是做什么的,其中TransactionHandler能干什么?

看了bentley的开发说明,其中提到了一个GetTransactionHandler。 

GetITransactionHandler () Handler of an Element that wants to participate
in Transactions

不知道这个Transaction 是什么意思。

  • 从它下边的成员函数的名字看,应该是控制元素发生修改,撤销,恢复等操作时被调用的,也就是说如果某种类型的元素类型的Handler,如果实现了这个接口,这些元素发生变化时会调用到这个接口的对应成员函数。

  • Transaction的本意是交易。比如银行的一笔转账,需要从A账户中扣款,给B账户充值。这两个动作就要合并成一个Transaction来执行,任何一个步骤出错了,就会回到最开始的状态。否则,可能会出现A账户扣款成功,B账户没有充上值的情况发生。

    对于数据库操作,我们也是模仿银行的这个交易进行的。以保证数据的完整性。对于DGN文件,您可以把它理解成一个数据库,对其中的元素的操作要保证完整性(即Undo和Redo都是以一个transaction来进行的)。在计算机领域,transaction一般被翻译成“事务”。

    和Transaction相似的另外一个概念是session(翻译为会话期),指一个软件从启动到退出的整个过程。所以,MDL中还有一个ISessionMgr的对象。



    Answer Verified By: amender carapace