的所有对象。目录的可修改属性为目录名称。同一目录下的目录和对象不能重名。
(2) 复制/剪切/粘贴:在查询子树或格式子树下,可以将一个目录及其下属内容从某位置
拷贝或移动到另一个位置。
1.2 对象管理
(1) 增加/删除/修改:在根节点或目录节点之下可以增加查询对象或者界面对象。前者的
属性为编码、名称和数据源,后者的属性为编码和名称,其中编码一经使用,就不再建议作任何修改,因为此编码可能被其它对象引用。
(2) 复制/剪切/粘贴:在查询或格式子树下,可以将一个对象从某位置拷贝或移动到另一
个位置。
1.3 导入导出
(1) 导出:选中某个对象,可将其导出为XML文件,文件里描述了对象的所有信息;
也可选中某个目录,将该目录下所有的子目录和对象都导出到指定位置(保持原有
的目录级次)。
(2) 导入:在选中某个目录之后,导入功能可用。导出的XML文件,可以导入到当前
目录下。此功能可用于对象的跨数据库复制。导入时,我们可以选择单个文件,也可以选择一组文件或目录,导入后会保留原目录的级次结构。需要注意的是:(a)在导出查询对象或界面对象时,需将其引用的查询对象一并导出才有意义;(b)导入不能违反对象主键及名称的唯一性约束。下图显示了某查询对象所导出的XML文件。
图 2-2 导出XML文件
第 3 页
2. 切换定义数据源
〃 多数据源运作机制:查询引擎支持这样的模式——NC业务在数据源A下运行,查询引擎的定义放在数据源B,通过引擎定义的查询可以到数据源C去执行。
注:只有数据仓库下的查询引擎有切换定义数据源和跨库查询的功能,客户化下的查询引擎只能查询当前账套数据源的数据。
图 2-3 切换定义数据源
定义数据源(上面说的B)是指查询引擎自身的系统表所在的数据源,执行切换功能后,主界面上的对象树的内容会作相应改变。
图 2-4 切换定义数据源效果
第 4 页
第三章 查询引擎的查询模型
查询模型的定义包括参数定义、SQL设计(含交叉定义)、SQL整理、数据加工、穿透规则等几部分,其中穿透规则描述的是本查询与外部查询的通信关系,剩余部分都用于描述查询内部的属性。
查询引擎的查询模型(数据模型)设计如下:
查询设计态和运行态的基本流程如下图所示:
图 3-1 查询模型流程
1. 参数控制
参数是查询模型中代表动态信息的元素。在SQL设计、SQL整理和数据加工中,均可以根据参数的不同,对查询的定义和执行进行调整。
第 5 页
过滤型参数:如果创建某个参数的作用是根据其取值的不同改变WHERE条件的设置,则这类参数成为过滤型参数,这是最常用的参数功能(参数的应用可以参见附录)。
(1) 参数定义:用于定义本查询内部引用的所有参数,其中参数名要保证互不相同。
数据类型包括自由录入、枚举、参照几种,当类型为枚举时,枚举项为用“@”
分隔的枚举值,或者是一个单字段的查询SQL;当类型为参照时,枚举项为基础参照名,或者是用尖括号括起的自定义参照的类名。
(2) 参数引用:参数可在SQL设计的筛选条件页签引用,也可在SQL整理或数据
加工的嵌入代码中利用编码向导引用。 (3) 参数设置:运行态要求用户首先对参数进行设置,这与查询模板的使用类似。
当报表引用了多个查询时,参数将通过多页签设置,每个页签代表一个查询。
图 3-2 参数定义
图 3-3 参数引用
第 6 页
图 3-4 参数设置
2. SQL设计
SQL设计包括向导设计方式和手工设计方式,无论采用哪种,在完成设计时系统均会对SQL进行合法性校验,如未通过校验则不能保存设计。作为向导设计的一个重要组成环节,我们有必要先介绍一下数据字典。
2.1 数据字典
前面已经提到过,查询对象的属性中包含数据源信息,因此在设计查询的时候需要加载相应数据源的数据字典。我们知道,NC的数据库以DDC作为数据字典,但非NC的数据库则没有DDC,此时,系统会根据执行数据源是NC、IUFO或其它数据库三种情况分别加载不同的数据字典,而且这一机制已经预留了扩展的接口,其目的就是可以面向各种类型的数据库执行取数功能。
NC数据字典提供了统一的数据建模平台,支持对各种数据库对象进行管理,维护这些物理对象的逻辑属性,并向外系统提供访问数据库逻辑信息的接口。以查询引擎为例,查询对象的定义是基于数据字典进行的,而这份数据字典来自查询对象所指定的数据源。由于多数报表的列与业务数据库的字段存在某种对应关系,因此数据字典的存在有助于提高查询定义的直观性和易用性。
第 7 页