XItem

Inherited from NULL

Inherited by NItemOrderItem

Friend class NULL

Description

XT中所有的数据对象均从XItem继承,任何数据对象都有类型标识,身份ID,其中类型标识用于和其他对象区分,对外部访问而言,以字符串标识(通过静态函数ctypeString()访问,字符串长度应小于16),对于内部使用(运行时),则使用整数标识(在注册时动态生成,通过静态函数ctype()访问);整数身份ID(通过getId()访问),管理类通过身份ID构建对象的索引。

默认情况下,数据对象的整数标识按照注册顺序,从类型标识基数开始递增,类型标识基数与管理器的整数标识存在如下关系:

ItemTypeBase = DomainType*DomainItemTypeSize

其中DomainType为管理器整数标识,DomainItemTypeSize为每个管理器能容纳的对象类型的最大数目(现设为10000)。 开发者也可以为数据对象指定固定的整数标识,该整数标识须在(ItemTypeBase,ItemTypeBase+DomainItemTypeSize)区间。

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

Members

Public interface


int m_iRecordId 在完成功能时,XT会将所有被修改的对象按顺序记录到二进制文件中,该变量表示在数据对象发生修改(包括创建或删除)时的操作记录序号,在提交修改之后将重置为NO_RECORD.

int m_iLoc 在某些特殊的场合下使用,比如保存对象在某数组中的位置信息等。

ulong m_ulId 对象的身份标识ID,整型值,该标识一般在对象管理器中自动分配,对象管理器使用它构建索引;也可以通过它表示对对象的引用(如XUniqueObjectID)

ulong m_iType 对象类型标识,整型值,程序启动时由对象管理器通过其字符串标识自动分配,是一个动态的值,在不同配置环境下可能不同。


XItem(ulong id = 0)

XItem(ulong id,ulong type)

ulong getId() const

void setId(ulong id)

TypeID getType() const

void setType(TypeID tid)

void copyReference(const XItem * ref)

bool operator == (const XItem &r)

TypeID getCatagory() const

TypeID getDomainType() const

static bool IsValid(const XItem * t)