u8cloud v1.0-查询引擎技术红皮书_第1页
u8cloud v1.0-查询引擎技术红皮书_第2页
u8cloud v1.0-查询引擎技术红皮书_第3页
u8cloud v1.0-查询引擎技术红皮书_第4页
u8cloud v1.0-查询引擎技术红皮书_第5页
已阅读5页,还剩150页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一.前 背 入 小 二.对象管 对象 首选 三.查询模 SQL设 SQL整 四.格式模 五.报表发 六.插件开 七.查询引擎新特 新特 SQL代码辅助 八.附 查询引擎FAQ之参数 一.前查询引擎(QueryEngine,简称QE)的功能定位是,一个面向高级实施人员和专业开发人员的查询建模产背Design的思路,同时融入了DW的技术,并依赖于通用的U8CLOUD数据字典。自定义查询:U8CLOUD2000年开始研发的一个面向中级实施人员和二次开发人员的查询报表工具,由查询、报表格式设计、报表浏览、报表权限控制和数据几个模块构成,此数据字典:一种管理数据库逻辑结构的机制,存在于物理数据库和用户接口之间。U8CLOUD于2002年开始研发数据字典,最开始只用于自定义查询,后来经过功能强化和逐步推广,成为现在Control二次开发的需求:随着U8CLOUD对行业用户的拓展,由业务组程序员在通用软件中针对每个查能。为了有效地实现资源共享,结合发挥各个工具的优势,U8CLOUD决策层一直在推动相关产品入企业建模平台→自定义查询→查询引擎→- -码参照,枚举项中选择这个编码参照的类型,根据这个参数选取的值来确定待选公司,并且在-就可以了,无需亲自手动去写纷繁复杂的SQL语句,同时我们也支持手工SQL。-用户可以通过增加表来增加数据字典中的数据表,也可以点击临时表前面做好的查询定义对象,择增加表来增加一个sm_user表,这张表里面的是U8CLOUD系统的用户信息。--设置过的param1。关于查询定义的设计后面的章节将有更详细的论述,这里只介绍最基本的功能。-之后可点菜单中的界面模型→查询,来绑定我们刚才做好的查询设计对象“用户查询”。---们选取sunny_corp这个公司,点确定,则可以浏览这个公司下的所有用户,如下图。-小询引擎的基本功能,在后面的章节中详细介绍查询引擎的各项功能,并通过一些样例使得用户能够-12-1(ObjectTree录管理,每个节点的信息主体在数据库的一个BLOB字段中。对象树上的节点通常分为 对象两类,并支持快速定位(在树获得焦点时用ctrl-f快捷键可弹出查找框,支持按编码或名称来r对象编(1)增加/删除/修改:在根节点或 (2)/剪切/粘贴:在查询或格式下,可以将一个 (1)增加/删除/修改:在根节点或节点之下可以增加查询对象或者界面对象。前者的属性为编码、(2)/剪切/粘贴:在查询或格式下,可以将一个对象从某位置拷贝或移动到另一个位置。请注意这里的粘贴都是在同一棵树下的,如果格式设计对象到查询对象树下则会出错。对象导入导录,将该下所有的子和对象都导出到指定位置(保持原有的级次。导入:在选中某个之后,导入功能可用。导出的XML文件,可以导入到当前下。此功能可用于对象的跨数据库。导入时,我们可以选择单个文件,也可以选择一组文件或,导入后会保留原的级次结构。需要注意的是:在导出查询对象或界面对象时,需将其的查询对象一并导出才有意义-2XML-3u8chome/ierp/bin下,由于本文下面的章节中还有需要涉及到环境变量设置的地方,所以这里只提 --HOME%\ierp\bin\queryengine.xml,是被全共享的-4查询模型的定义包括参数定义、SQL设计(含交叉定义、SQL整理、数据加工、规则等几部分,其中规则描述的是本查询与外部查询的通信关系,剩余部分都用于描述查询内部的属性。查询引擎的-1

-2滤型参数,这是最常用的参数功能(参数的FAQ可以参见附录。则会抛出ClassNotFoundException参数:参数可在SQL设计的筛选条件页签,也可在SQL整理或数据加工的嵌入代码中利用编码向导。这里当筛选条件是待定条件的时候,双击“值”,文本框,就可以弹出-3-4参数-5SQLSQL设计包括向导设计方式和手工设计方式,无论采用哪种,在完成设计时系统均会对SQL进行校数据字时,系统会根据执行数据源是U8CLOUD、IUFO或其它数据库三种情况分别加载不同的数据字典,而且逻辑属性,并向外系统提供数据库逻辑信息的接口。以查询引擎为例,查询对象的定义是基于数据字-6U8CLOUDU8CLOUD数据字典通常在安装产品时候由系统生成,如果想自己为某些数据库对象生成字典,可以采用:2、解析U8CLOUD标准建库提供的逆向工程功能将的物理表生成PDM文件,修改其中表和字段的中文名称,然后以xml文件格式,再使用上述第法导入。查询引擎中用到的数据字典都以一棵对象树的形式存在,树节点包括、表、视图、字段、外键等信息,通过双击对象节点可以协助录入SQL语句的成分。向导设表定义:即SQL语句中的from部分,可以利用数据字典选择的数据表,也可以选择查询-7-8增加表(物理表)实际就是关系数据库中的单键连接,连接字段只有一个,并且操作符都是常见的,而高-9连接定义→-10连接定义→-11-12表达式在值编辑框获得焦点时双击编辑框可弹出参数界面并作(或者在值编辑框获得焦点时按F12键或者双击弹出参数框如果是固定条件,在值编辑框获得焦点时按F11键或者双击可弹出环境变量框,按F12键可弹出所的基础数据表的参照。页签默认是隐藏的,可以在查询定义框的南部面板按Ctrl+Shift+鼠标左键弹出隐藏的Having-13筛选条件定义(3--14SQL语句,但是并不查出数据来,如果您的查询设计最终生成的SQL语句有问题,那么就会有相应的出错提示。-15SQL手工设SQL的方式,由于复杂SQL在解析、适配、执行等方面的不稳定性较大,因此不推(#pk_corp#;-16SQL翻译器对各种SQL方言进行翻译,在手工设计中可以选择是否启用翻译器这个功能,通常建议启用-17SQL

-18--SQLSQL语句查询出来的列中不可能存在像,,这样的列,这些数值是原始数据库表中某列中的值。但是这个功能我们可以通过只有,,这些固定好的值,如果添加了一笔数据,民族的值为苗族,我们最终的报表-投影交WhereYn在上述SQL上获得的结果。-22selectbd_deptdoc.deptnameasameas fromleftouterjoinbd_a sndoconbd_psndoc.pk_psndoc=bd_a leftouterjoinbd_defdoconbd_a -23原始数据(无交叉--25-26旋转交-27行列结构在查询出数据之前不可预料,多用于完全对原始数据进行动态处理。-28-29-30-30 苗ERP-这样,即使原始表中不存在部门名称为ERP10的记录,在交叉过后也会出现多余的形成了一个维度,如31

苗-31-32SQLRepair-34SQLSQLshowtype的取值等于“明细”时,取出所实际上这里不仅仅能够修改查询字段及其表达式,更可以增加或者删除查询所的表,连接条件,排序替换了查询定义,则原先在向导中或者在手工SQL设计中的查询定义就不再生效。-35-36-37数据加

-38(ResultSetProcess用的对象是SQL定义。mpsnnum-39ID和参数变量获得查询结果集,这里的参数变量是指需要传给-40将该列的内容更新为公式返回值。一个公式也可以另一个公式列的计算结果。-41-42-43-44规到另一张报表R2的上的区域A2,而且A1和A2的内部数据存在着某种内在联系,则称可以从R1到R2。当这种行为传递下去,我们就可以了解某张报表的数据明细,甚至追溯到它的数据来源。通常我们会把上述的区域选为一个表格行或者一个表单元,而上述的内在联系就称为规则。查询间参数,用于接收区域的取值。3-32。我们希望在浏览公司部门的时候选中某个部门能到部门人员查询查看这个部门下的所有员工。这首先需要我们在公司部门的查询列和部门人员查询定义里该参数作为过滤条件。下面来看一个简单的用例,假定我们做好了一个查询定义,是根据公司查询该公司下的用户,另外我知道公司下所有用户的信息,也就是说根据选中的公司到用户查询去。可以这样定义规则:-45-46-47参数-48图三-49规则设图三-50规则代码向图三-51规则定义向图三-52规则代下图显示了一个由人员信息到薪资信息再到同姓员工工资信息,最后到每月明细的用例,其第三步是多列联合(相当于“人员=’’and年份=’2003’。图三-53效果示 到节QE报表HRU8CLOUD界面关联操作方案为上述需求提供了平台级的技术依据。通过把查询引擎报表作为调用方节规则设置中增加一个规则:图三-54到节点规则设在目标节点参照中,可以选择的目的节点,目的节点是已到U8CLOUD系统的可执行功能节点,对于一般节点,仅仅是打开该节点,与用户双击打开一样。录数过大的情况允许用户优化或放弃查询)-55selectcount(*)sql语句,如果行数过多这条语句可能会耗时非常多,用户可以根据自己的需复合查通常复合查询的参数会包含它所的所有子查询的参数的并集。-56物化查册到DDC的物化临时表下)SQL设计就可以基于新创建的物化表进行,从而扩充了查询集成的范围。了物化表的查询,用户可以在首选项配置中选择是否在执行时提示同步刷新物化临时-57图三-58在定义查询时创建的物化低,所以请慎重使用这种功能。只有在查询数据并非经常变化,而且查询关系比较复杂的情况下物化合并查-59数据权数据权限的行权限一般是通过参照型参数来控制的。当基本数据权限开关打开的时候,公司用户在参数设置时点开的参照记录是经过了BD权限控制的,因此他也就无法查询该登录用户所具限之外的数据(比如他可的部门集合之外的部门相关数据。上述策略通常是结合SQL设计中待定筛选条件以及同登录用户能够查询不同数据列的逻辑写在代码里,后者则通过模板分配机制来实现不同用户浏览不界面模型进行修改。模型的设计包括查询,界面可视化设计,绑定数据集,数据预处理等部分。框架--4.1.查

-3查询是指将界面模型所要展现的查询结果集对应的查询定义到模型中来。由于同一查询定义根图四-4查询界

-5控件管

-6这个面板上定制我们的界面,这个过程和一般的Java可视化设计大同小异。-7FlowLayout查询引擎里的BorderLayout将容器分成了北、中、南三个区域,每个区域放置一个子控件(Java分给中区域。如图4-6,主面板的布局就是BorderLayout,其北区域放置了一个子面板,布局为-8BorderLayout-9GridLayout-10 -11ID属性里;,-4-8所示。在这里我们可以设置图表的类型,以及绑定的系列--14-15在这里我们选择分组列为公司名称,这样就会把数值列的数据按照公司名称来进行分组,同时须选-16-17属性绑

-18-19列表--行列格式设

--22销售额这样的数据通过分段就很容易体现出高中低来,方便浏览数据。色显示。条件中除支持用常量表达式进行比较之外,也支持用含变量的表达式进行比较,其中的变量A,B,C三列,要求某行中A列中的值大于BC列的值之和时该行A列按某种指定颜色显示,我们可以给A列绑定列格式,在列格式的设置中设置条件图四-23设置界-24一个表头ID与之对应。通过表头ID该列表头格式可以被表绑定(绑定了列表头的表效果参见图4-义的列和行相对应的列头和行头。默认的列头和行头没有任何附加的格式,如图4-16所示。-25-26-27定义了行表头格式的表(4-预定义数据-28-29-301233式,这里的公式如果到别的列,则进行计算的是所列当前行的值。例如下面的表格,占比列的合计应该设置为()/(+),公式就会计算4/(4+5),否则就变成了33.3%+50%,达不到用户的1233合 5----33-34-35-36界面初始我们发出运行某界面令后,在界面呈现出来之前,系统会做一系列的初始化工作:根据界面模型-38如果界面的查询定义里定义了查询参数,那么在初始化界面工作去查询结果集之前,会要求我们输入查询参数。如当我们运行图4-5中定义的界面模型(它的查询如图4-2所示)时,因为其的-39界面模型运行结果(4-数据处界面模型在运行态提供了几种数据处理的功能:查找,排序,过滤,公式列,小计合计,交叉和。其中,查找,排序,过滤和公式列是基于数据集的,这些操作对于所有绑定到作数据集的控件都是起作用的,放在数据处理菜单下,而小计合计,交叉和是基于表控件的,放在表控件表头右键菜单下,只-40条件的记录,数据滚动到这一条记录,同时在界面控件上体现出来。查找提供两种选项,用户自定义-41过滤设置分两种类型,叠加过滤和重新过滤。叠加过滤是过滤结果的基础上再按指定条件进行过滤得-42-43第一类交叉(投影交叉设置界面-44第二类交叉(旋转交叉设置界面3节。这里的交叉是用于在界面运行态下,用户浏览报表时想按照不图四-45规则选取界则该表控件支持操作。状态。表控件提供了回退功能可以撤销交叉和等操作。小小计合计X绑-控件连-47表-报表打

--49接独立报表节点之后的打印,首先须为节点生成打印模版,在格式界面设计态下选择输出→生成-50印模版设置,选择刚才为之生成打印模版的功能节点,把刚才生成的系统模板一份进行修改。列中的数值,并且自下扩展。在这里熟悉打印模版机制的用户(实施人员)可以自定义打印模版,

-手动挂图五-1功能节点挂接(功能节点功能节点时需指定对应文件名为:nc.ui.pub.querymodel.QueryNodeUI,每个节点还需定义两个参pkQryNodedsName:定义数据源(可不定义,如不定义则代表登录账套的数据源pkQryNode:格-向导发-2报表发布向导—功能节点的编码,这里用户如果选择了节点,则会在该下新建一个功能节点,如果用户选择了叶错,用户的下一步操作,如果是列举的类型之一,系统会修改当前选点的定义。新增功能节点名者报表管理节点,则会格式设计对象树中的对象:-3报表发布向导编码。而报表管理节点选取的是树中的非叶子节点也就是格式,对应folderId参数的是格式的编如果我们选取的是报表模版节点,则树就会是查询设计对象树,因为报表模版节点的生成是基于查询设计思业务设提供业务设置界业务设提供业务设置界用指定待生成查询的编码插件程序根据业务设置生成查完成插件设格式设/**QueryModelDef[]generateQueries(StringdsNameForExe,StringdsNameForDef,GenQueryInfoVO[]infos,StringfolderId)throwsException;UIPanelgetBusiSetPanel(StringdsNameForExe);StringgetPluginName();}原型验询。插件提供了一个选择辅助项的业务界面,并根据用户的选择生成N3个费用项查询,以及将这N+3个查询复合在一起的辅助核算主查询。开发工作,等等,两者的差别在于,生成插件是的(一次生成多个对象,而设计插件是可修改的,因为实现该接口一律要求继承以下缺省实现类:nc.ui.pub.queryplugin.DefaultQueryEngineCtrl。这个实现类JAVADOC参见附8数名为qeCtrlClass,参数值为实现类类名。如下图所示:

-1个性化实现类-2七.查询引擎新特(Preference) 解决BigDecimal把8位小数显示为科学的问题新增功能描参数重U8CLOUD公式系统支持的公式----3。-分页技来对结果集进行控制,可往往即使是这些也为力,例如要查询某公司下一年内的明细,虽然--利用常用的三种数据库Oracle,DB2,SQLServer的特性,构造特殊SQL语句,使得原来不带行号ScrollableDataSet中,该类使用LinkedList数据结构来把查出的小结果集串起来,并向外界调用接口nextDataSet,previousDataSet,当这些方法被调用时,从LinkedList中取出对应的结果集并返回。

-addtochange-三种数据库拼接SQL的思路大同小异,都是在原表(或视图)的基础上自动加上一个行序号列,然后wherewhere条件,执行这段拼接成的SQL语句查出相应的结果集。列列列列列列after列列列列12345SQL代码辅助

---数据字典级别权限控如,在某企业中,业务场景规定普通的用户不能系统用户表,防止泄密的发生,查询定义模型的制作UAPDDC权限的功能。当“QE数据字典”资源权限被启用后,帐套管理员就可以在权限分配节点对公司角色(或角色)分配不同的数据字典权限。当某用户登录某公司(或)进行查询引擎向导式查询设计的时候,他必须通过数据字典选择数据表,此时系统会根据权限插件提供的接口判断他是否选择某张表,并给出相应的提示,从而控假定uap公司下有一用户uap,他属于角色all和所属公司的角色uaprole。验证如下1uap公司的QE---4、以uap登录uap公司,打开查询引擎管理进行向导式查询设计--查询引擎FAQ之参数答:是的,复合查询不会自动去递归提取所子查询的参数并集。这个并集需要通过手工。复合查询自身不一定使用其中的参数,但它负责把参数分发给的子查询。同参数名的参数将共享传入的参数值,所以,通常复合查询的参数会包含它所的所有子查询的参数的并集。4、如何快速其它查询对象的参数?义录入界面的类名(参见问题10),否则枚举项无实际意义,也无须填写。 setClassWherePart我们可以在参照依赖里输入两个表达式,中间以分号(;)隔开。以主体账簿参照为例,如果我ClassWherePart。数),参照录入(对应参照型参数),自定义界面录入(参见问题10)。1=1)。16、参数定义中,"是否控制数据权限"一列是什么意思答:如果勾选了该项,即便用户未对参照型参数设置取值,系统也会自动增加相应BD据权限筛选条件。但此功能受限于目前已提供实现的少BD照类型。17、参数定义中“常用条件界面类”和“映射表字段”两列是什么意思nc.ui.b.ueymel.UsrDfCndtinPnl接口,UIanel成后,将全类名直接写到“常用条件界面类”中即可,不用加尖括号。“映射表字段”用于数据的相关控制,填写一个查询模板中的查询条件字段编码,在拼查询条件SQL时根据所映射的字段编码确定是否要--发货日期发货单号-发货日期发货单号","产品编码-发货日期&type","发货单号-发货日期发货单号-&type","发货日期发货单号-发货日期","发货单号-"};交叉列={"&type"};-"};交叉列={"&type"};-"};交叉列={"&type"};--发货单号","发货日期-零件发货单号","发货日期零件金额","零件数量-零件零件金额","零件数量-零件零件金额","零件数量-"};交叉列={"产品编码","&type"};-发货日期零件金额","零件数量---发货日期发货单号产品编码","零件将两下的initBlob_qmd.sql和initBlob_fmd.sql剪切至安装盘的初始化所在路径下(\business\盖掉别人的初始;(U8CLOUD内部安装盘不需移动)在安装盘\business\initblob文件夹下建一个自己的(xxxx,通常是模块名c:\_initblob\下剩余的所有文件放到这个中最后的文件路径形如: 的预置查询互相覆盖(如果都使用newId之类的话必然导致严重;U8CLOUD内部的安装盘查询与格式预置参见设计部相关配置文档进行同一对象的升级必须保证该对象的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论