事务是将一系列BIMBase模型的操作提交至文档的这样一种对象。BIMBase会在调用外部命令之前自动创建一个Transaction,并且该Transaction会在外部命令结束时提交。在一个事务中进行的所有修改都能被撤销。
BIMBase API提供BPTransactionManager
类用于管理事务。主要提供了事务Transaction和事务组TransactionGroup两种机制。
- 事务
在任何时候,一个文档当前只能有一个打开的事务,不允许嵌套。如果要创建自己的事务或事务组,需提交或回退当前命令所在的事务。当事务被成功提供后,这个事务可在Undo功能中被回退。 - 事务组
TransactionGroup用来将几个独立的事务分组,这样一个组可以同时处理许多事务,当一个TransactionGroup提交,那么这个组里的所有事务将被合并成一个成功提交的事务,并可在Undo功能中被回退。
表2-4 事务管理类接口
方法 | 描述 |
---|---|
activate() | 启用事务机制 |
deactivate() | 关闭事务机制 |
bool isActive() | 事务机制是否启用 |
int getCurrTransactionPos() | 获取当前事务位置 |
cancelToPos(int ,bool) | 撤销到指定事务位置 |
closeCurrentTxn(bool) | 结束当前事务 |
startTxnGroup(bool startNewTxn) | 开启一个事务组 |
endTxnGroup() | 结束当前事务组 |
int getTxnGroupCount() | 获取事务组个数 |
int getCurrGroupStartPos() | 获取当前事务的起始位置 |