XT框架以数据为中心来驱动应用,XT框架用应用文档XDocument来管理各种数据,从XDocument继承实现新的文档类即可界定应用数据集。
应用数据集即应用文档所管理的数据类型,基于应用数据集就可构建一个应用空间,为了与其他的应用空间区分,每个应用空间被赋予唯一的字符串标识(长度小于64个字符)。所有的应用功能都在这个应用空间里完成,应用功能的交互以及工作流程的设定通过图形界面完成,在这个意义上,图形界面只是附属于应用文档的一层外壳,因此XT框架将与文档配套的图形界面也通过XDocument统一注册(registerUIProxy)。
XDocument提供了统一的接口用来:
在使用应用文档之前,必须首先对应用空间标识注册,将应用文档的构造函数与析构函数与字符串标识绑定,并返回一个整形值:
TypeID RegisterTestDocument()
{
static int i = XDocument::registerDocument("Test", CreateTestDocument, DestroyTestDocument);
return i;
}
这个整形值将在注册应用功能时帮助构建功能的索引。
在应用文档的构造函数里,指定文档的GUID、应用程序服务提供商的名称、应用文档的版本号以及日志文件的路径。日志文件默认是存放在%TEMP%/XT下对应的目录中。
TestDocument::TestDocument() :XDocument()
{
sprintf(m_strGUID, "E42074FC-5D3A-4656-BFF2-431D4760620F");
setVender("Test Co. LTD");
setVersion(1, 0, 0, 1);
setLogFile("test.log");
}
对应用数据的指定在初始化应用文档时通过调用insertItemManager完成。此外,应用文档的一些全局性设置也在初始化时设定。
void TestDocument::init()
{
XDocument::init();
XPreference::getInstance()->setVariable(_RENDER_BACKGROUND_TOP_COLOR, "250,250,250", "ui");
XPreference::getInstance()->setVariable(_RENDER_BACKGROUND_BOTTOM_COLOR, "250,250,250", "ui");
insertItemManager(new AnalysisManager(NULL));
insertItemManager(new TestManager(0));
insertItemManager(new PropertyManager(0));
//
m_strDocPath[0] = 0;
m_strDocName[0] = 0;
m_pTree->clear();
setName("Untitled");
m_pTree->setRoot("TestDocument", this, Domain_Document);
buildObjectTree();
setModified(false);
}
根据文档所包含的应用数据来构造应用文档的对象树,通过重新实现buildObjectTree接口完成。
void TestDocument::buildObjectTree()
{
m_pTree->clear();
m_pTree->setRoot("TdasDocument", this, Domain_Document);
updateDomainTree(getItemManager(Domain_Property), "部件属性", Domain_Property);
updateDomainTree(getItemManager(Domain_Analysis), "分析", Domain_Analysis);
}