IDItem

Inherited from NULL

Inherited by NItem

Friend class NULL

Description

XT中所有的数据对象均从IDItem继承,每一个IDItem都有一个备份指针,默认状态时为空。当一个数据对象发生修改时,该数据对象必须从对应的ItemManager检出(CheckOut),检出的时候数据对象会自动拷贝一份内存副本,功能如果成功执行,那即表示修改有效,数据管理系统会自动将发生修改的数据对象检入(CheckIn),在这一过程中修改之前的副本和修改之后的对象均会以二进制形式保存到本地临时的数据操作记录(Operation Record)文件中并在内存中释放副本清空备份指针,用户可以在后面操作中读取数据操作记录中的副本值回到修改之前的状态,同样的,只有有这份记录,用户也可以从过去的某个状态再顺序重做操作。在某些情况下,功能执行失败,修改的数据对象并不会检入到数据操作记录中,这时候就可以通过内存中的副本回滚到启动功能之前的状态。数据操作记录文件以二进制形式保存在硬盘上,由于它保存了所有数据对象的包括增加、修改、删除在内的全部历史操作记录,所以即使发生断电或者死机这样的极端情况,XT平台依然能快速恢复到故障发生之前的状态。
这样的机制也非常方便故障的重现,便于程序员快速的分析、定位问题并解决问题,从而能够显著的提高软件可维护性。

Members

Public interface

Protected interface


LinkList * m_pCmdList

通过命令管理器生成的Command链表

CreateCommandFunc m_pfCreateFunc[COMMAND_MAX_COUNT]

创建Command的函数指针表,每一个Command都有自己的创建函数

DestroyCommandFunc m_pfDestroyFunc[COMMAND_MAX_COUNT]

销毁Command的函数指针表,每一个Command都有自己的销毁函数


CommandManager()

virtual ~CommandManager()

ICommand * getCommand(int cid)

ICommand * createCommand(int cid,IMainFrame * pApp)

void destroyCommand(int cid)

void setCommandIterator(Iterator * pIter)

void clear()

virtual void registerCommands()


virtual bool isOneClickCommand(int id)

void registerCommand(int id,CreateCommandFunc createF,DestroyCommandFunc destroyF)