




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大中型企业与公共组织云平台..3.定义形态6执行流程8数据形态..语义提供者10接口10扩展..函数18函数. 18函数扩展....5.参数21参数定义22参数. 22参数设置22参照依赖23自定义参照232.6.宏变量252.7.描述器2....5.数据28概念28. 28执行原理28使用29常见问题312.9.物化策略30.2.复合语义模型32设计向导方
2、式33语义方式342.11.语义上下文32.2.规则37实现规则类37配置文件. 382大中型企业与公共组织云平台2.12.3.操作使用33.3.数据权限40功能概述40管理报表模式42单据业务模式42语义模型管理4....5.对象管理44目录管理45语义模型管理45. 46权限46全局变量配置463.2.环境配置4..导入导出49导出逻辑49导入逻辑52功能扩展564.1.扩展语义提供者564.2.扩展业务函数564.3.使用数
3、据.564.4.自定义执行策略564.5.业务规则扩展5...6.4.元定义驱动扩展57接口58实现58配置文件59使用59范例615.1.操作步骤615.2.使用 PoweredOrg 宏变量653大中型企业与公共组织云平台5.3.如何使用数据权限68附录736.1.入门736.2.语义模型 API796.3.语义函数806.4.其他函数816.5.引擎846.6.引擎的改进856.7.性能.856.8.多语言支持874大中型企业与公共组织云平台1. 前言语义模型把面向技术的数据组织成面向业务的数据,供业务分析使用。业务在做商业分析之前,需要对数据
4、库表中的数据进行、聚合等操作,但是对于业务而言,他们并不清楚他们所需要的业务数据是存放在数据库中的哪张表中;换句话说,数据库中的表及字段对于客户来说是不被理解的,这些表数据只有开发才清楚,即面向技术的数据。那么应该如何解决这个问题呢?语义模型就承担了这个作用,即语义模型的一边是的数据库表,面向技术的数据;另一边是易于客户理解的,具有业务意义的数据,我们称之为是面向业务的数据。通过语义模型,客户可以轻松的做商业分析。语义模型的如下图:【说明】:SMART,即 Semantic Ming for Analysis Report Toolkit, 分析报表语义建模工具。5大中型企业与公共组织云平台2
5、. 结构2.1. 应用模型上图为语义模型应用结构图。语义模型通过语义提供者可以将多个数据源的数据进行整合。2.2. 语义模型2.2.1. 定义形态下图展示了语义模型的内部结构:6大中型企业与公共组织云平台元数据MetaData语义模型SmartM语义提供者Provider描述器Descriptor首选项Preferences语义模型主要由以下几部分:n元数据元数据是指描述数据的数据,是为了外界使用数据而对数据本身含义的阐述。拿我们最常见的二维数据(行列结构)举例来说,如果只有这些行列结构的数据,对我们来说这将毫无意义。因为我们无法知道哪一列的数据代表什么含义,无法知道如何操作这些数据,更别提由
6、这些数据分析出有用的信息。反过来,如果这些数据指定了元数据,我们就可以了解哪一列代表的业务含义,并且知道该列的数据类型、长度、精度等。这样,我们就能对这些数据进行处理,分析提取出有价值的信息。同理,语义模型的元数据是对执行语义模型后获取的二维数据的描述。元数据结果数据的每一列都提供了下列信息:数据类型、字段显示名、字段名、备注、长度、精度等。有了这些信息,我们就能知道在业务应用中该如何使用语义模型。n语义提供者语义提供者,表述了一类取数方式,或者说如何提供数据的方式。在语义模型中,语义提供者负责把一类业务取数过程以语义的形式描述出来。为了能更好的理解这个概念,我们可以打这样一个比方:NC 元数
7、据、数据仓库、报表数据、总账数据等 这些可提供数据的对象好比“数据水源”,而语义提供者好比“水泵”,语义模型好比“抽水机”。每种“数据水源”只支持特定的“水泵”来抽取数据。我们有了一种语义提供者“水泵”,就能抽取其对应的“数据水源”里的数据。语义模型中能指定多个语义提供者,就相当于“抽水机”挂接了多个“水泵”,我们就能从多个不同类型的“数据水源”来抽取数据。语义提供者负责抽取数据,同时对外提供元数据来描述这些数据。语义提供者的元数据7大中型企业与公共组织云平台一般是在语义模型。细节以及语义提供者的扩展说明参见章节语义提供者。n描述器描述器是指对数据操作的描述,例如:过滤、排序、分页、汇总等。在
8、语义模型中,描述器表述了对语义提供者抽取的数据的处理过程。细节参见章节描述器。n首选项语义模型中的首选项包括三类数据:参数、宏变量、配置项。下面将分别介绍: 参数参数是模型中代表动态信息的元素,用于响应用户的输入。参数给用户提供了模型执行过程的机会。细节参见章节参数。 宏变量宏变量与参数类似,区别是,参数在模型执行时需要用户输入值;而宏变量不需要与用户交互,系统会根据上下文计算该值。细节参见章节宏变量。配置项用于配置项语义模型的执行方式。2.2.2.执行流程语义模型的执行流程如下图所示:语义提供者: NC元数据 QDI元数据 业务数据语义模型.建模向导生成SQL翻译引擎模型SQL语义函数: n
9、c_metadata() qdi_metadata() smart() report() parameter() macro().编辑器语义模型执行过程可分为以下步骤:n第一步:语义模型化8大中型企业与公共组织云平台语义模型中的对象结构将转变为字符串形式的语义。n第二步:引擎把语义第三步:对象化为通过模型,即把字符串形式的对象化。n模型翻译为 SQL模型,处理其中的语义函数,把模型翻译为标准 SQL 语句。基于运行态描述器会在这一步被处理。n第四步:执行 sql,把结果集封装为 DataSet,返回 DataSet。由于运行态描述器的存在,每次执行语义模型时获取的最终 sql 都是不同的,但是
10、,语义模型本身对应的模型是相同的。基于性能考虑,我们可以把语义模型对应的模型缓存起来。这样一来,只有第一次执行语义模型时,我们需要完整执行上述四个步骤,接下来的每次执行,我们只需取得该缓存的模型,再做第三、四步的处理即可。2.2.3. 数据形态语义模型提供的数据可以以两种形态存在:数据集 DataSet、数据表 DbTable。从数据流转的角度来说,语义模型代表了一种取数管道,数据可以从管道中抽取出来。数据集DataSet 代表了内存中的数据,或者说,数据在内存中以数据集 DataSet 为载体。数据表DbTable 代表了数据库中的数据,或者说,数据在数据库中以数据表 DbTable 为载体
11、。语义模型、数据集、数据表这三者之间还存在互相转换的关系,下图形象的展示了这点:9大中型企业与公共组织云平台数据加载数据集DataSet语义模型SmartM元数据MetaData数据加载数据快照视图化执行数据表DbTable模型数据从语义模型这种数据管道中加载到内存,就以数据集的形式存在;如果把数据集中的当前数据持久化到数据库中,数据就以数据表的形式存在;把数据从数据库中加载到内存中,就完成了数据表到数据集的转换;数据表可以以语义提供者的形式语义模型,完成数据从数据表到语义模型的流转;并且,语义模型经由视图化执行,最终的结果集将以数据表的形式呈现。数据在不同形态间流转时,改变的是数据载体,不变
12、的数据本身的结构,即元数据。2.3. 语义提供者语义提供者,表述了一类取数方式,或者说如何提供数据的方式。在语义模型中,语义提供者负责把一类业务取数过程以语义的形式描述出来。2.3.1. 接口10接口方法方法说明StringgetCode()获取编码。该编码用于标识语义提供者。大中型企业与公共组织云平台语义提供者包括业务系统元数据(如 NC 元数据)、DW 元数据、以及语义和业务代码扩展提供者(提供总帐、HR、供应链、报表等业务数据扩展)。其整系结构可由下图表示:11MetaDatagetMetaData()获取元数据。元数据中包含了该提供者提供的数据的描述信息,例如:字段名、字段数据类型、字
13、段精度等。StringgetTitle()获取标题,即该提供者的显示名称。MetaData provideMetaData(SmartContext context)构造元数据。参数 context 是提供者构造元数据时的执行环境。此方法通常在设计态使用,用于重新构造元数据。StringprovideScript(SmartContext context)构造语义。参数 context 是提供者构造时的执行环境。此方法通常在运行态使用,用于把业务取数过程转换为语义。voidsetCode(String code)设置编码。voidsetMetaData(MetaData metaData)设置
14、元数据。此方法通常在设计态使用,一般是先调用provideMetaData(context)构造元数据,然后调用此方法来把元数据保存在语义提供者。voidsetTitle(String title)设置标题,即显示名。大中型企业与公共组织云平台语义提供者基础扩展接口, nc元数据、报表数据等都基于此扩展,主要实现ProvideScript(),提供语义或SQL语义数据扩展接口,用于不能提供语义或SQL的应用场景。主要实现ProvideData()以提供二维数据。ReportProviderNCMetaDataProviderSemanticDataProvider+provideData()H
15、RTotalProviderExcelProvider其中,Provider 是语义提供者的接口;SemanticProvider 是基础扩展抽象类,对能把取数过程以形式描述的语义提供者可继承此类;SemanticDataProvider 是语义数据扩展抽象类,对不能以形式描述取数过程,只能提供二维数据的提供者,可继承此类。SemanticSqlProvider 适用于提供者在运行时根据执行环境 context 返回不同取数 sql,其与 SqlProvider 的区别在于: SqlProvider 的 sql 结构在定义态已经确定; SemanticSqlProvider 是在运行时,经过一
16、系列业务处理,返回最终取数 sql。上述图中,代表具体实现类。通过以上的介绍我们可以得知,Provider 定义了语义提供者的接口规范,SemanticProvider、SemanticDataProvider、SemanticSqlProvider 则是我们具体实现提供者时要继承的抽象类。现对这四个类的主要接口做重点介绍。nProvider12接口方法方法说明StringgetCode()获取编码。该编码用于标示语义提供者。MetaDatagetMetaData()获取元数据。元数据中包含了该提供者提供的数据的描述信SemanticProvider-metaData-dsName Provi
17、der+getMetaData()+getDsName()+provideScript()+provideMetaData()大中型企业与公共组织云平台nSemanticProvidernSemanticDataProvider13接口方法方法说明DataSet provideData(SmartContext context)提供二维数据。入参 context 提供执行环境;返回结果数据以 DataSet 形式展现。DataSet 主要包含两部分:二维数据数组、元数据。对于继承此类的提供者,必须实现此方法。接口方法方法说明MetaData provideMetaData(SmartConte
18、xtcontext)同 Provider对于继承此类的提供者,必须实现此方法。StringprovideScript(SmartContextcontext)同 Provider对于继承此类的提供者,必须实现此方法。息,例如:字段名、字段数据类型、字段精度等。StringgetTitle()获取标题,即该提供者的显示名称。MetaDataprovideMetaData(SmartC ontextcontext)构造元数据。入参参数 context 是提供者构造元数据时的执行环境。此方法通常在设计态使用,用于重新构造元数据。String provideScript(SmartContext co
19、ntext)构造语义。入参参数 context 是提供者构造时的执行环境。此方法通常在运行态使用,用于把业务取数过程转换为语义。voidsetCode(String code)设置编码。voidsetMetaData(MetaData metaData)设置元数据。此方法通常在设计态使用,一般是先调用provideMetaData(context)构造元数据,然后调用此方法来把元数据保存在语义提供者。voidsetTitle(String title)设置标题,即显示名。大中型企业与公共组织云平台nSemanticSqlProvider2.3.2. 扩展前面介绍了语义提供者的整系结构,现在我们
20、拿一个具体例子来讲解如何实现一个语义提供者。我们以比较简单的“数据表”这类取数方式来做示例。实现语义提供者类由前文介绍,我们知道实现一个提供者有三种方式:(一) 继承 SemanticProvider能把取数过程以形式描述的语义提供者可继承此类。我们现以数据表提供者为例来讲解如何以此种方式实现语义提供者。数据表提供者对应的实现类为:DbTableProvider,该类继承于 SemanticProvider,实现了接口provideMetaData(SmartContext context), provideScript(SmartContextcontext)。数据表提供者,是把业务系统元数
21、据底层数据模型中的一张表作为操作对象,从中抽取数据。其在语义模型中的操作是这样的:14接口方法方法说明StringprovideSql (SmartContextcontext)提供 sql。入参 context 提供执行环境; 返回结果数据以 sql 形式展现。对于继承此类的提供者,必须实现此方法。大中型企业与公共组织云平台在“模块”目录上选中模块“平台”,展开后在子节点上选中“sm_user”这张表。在数据表提供者 DbTableProvider 中,我们只需要一条信息:表名。这些信息可以看做取数过程的业务描述,接下来我们做的就是把这些业务描述转换为以语义模型中的概念来进行描述。实现 pr
22、ovideMetaData(SmartContext context)接口:有了表名信息,我们就可以把其列信息拿到,列 Column为字段 Field,每列对应一个字段,多个列对应的多个字段就组合为元数据 MetaData。实现 provideScript(SmartContextcontext)接口:数据表提供者比较简单,直接返回表名即可。到此,我们的数据表语义提供者类就实现完毕。(二) 继承 SemanticDataProvider不能以形式描述取数过程,只能提供二维数据的提供者,可继承此类例如,供应链中有些并不能直接通过一条 sql 就能查出,中间可能经过一系列复杂的代码运算逻辑来构造这
23、个结果数据,这时我们就可以继承 SemanticDataProvider 来实现语义提供者。继承此类只需要实现 provideData(SmartContextcontext)接口:在该方法中,我们编写运算逻辑,构造最终的结果数据 DataSet,返回之即可。在此我们有必要介绍下 DataSet 的结构。DataSet 主要包含两部分:元数据 MetaData、15大中型企业与公共组织云平台数据容器 Object(即二维数组)。Object即是最终的结果数据,MetaData 是对数据的描述信息,包含对应字段信息:字段名、数据类型、数据精度等。(三) 继承 SemanticSqlProvide
24、r应用方式与 SemanticDataProvider 类似,不同在于,SemanticDataProvider 最终返回二维数据,而 SemanticSqlProvider 返回 sql 语句。实现语义提供者设计向导类有了语义提供者类,我们还需要一个设计器来设计语义提供者。每个设计器都需要实现接口 IProviderDesignWizard。该接口只有一个方法:当设计语义提供者时,会调用此方法,调用完成返回提供者实例。数据表提供者设计向导类为 DbTableProviderDesigner。其界面效果如下图所示:16/* param parent 父窗口。为ProviderStepPanel
25、,藉此可获得SmartMWizardShareObject(向导模型,包含向导共享数据)* param provider 待修改的语义提供者* param context 上下文* return 设计完成后的语义提供者*/public Provider design(Container parent, Provider provider, SmartContext context);大中型企业与公共组织云平台其具体处理流程为:调用 design()方法,打开一如上图所示框,用户选中表后,点“确定”按钮,构造一个 DbTableProvider 实例,返回之。配置文件编写完语义提供者类、设计向导
26、类,我们还需在配置文件中该种语义提供者,以便在语义模型能加载到。所谓,即在配置文件中增加相应配置项。为方便各模块扩展语义提供者,在开发环境下,配置文件存放位置为各模块 resources下的 smart 目录:在安装盘中,各模块扩的扩展配置文件将都在 NC_HOME/resources/smart/目录中。具体配置信息如下。每个语义提供者项包含七种属性:名称、多语目录,多语id,图标路径、类型、语义提供者类名、设计向导类名。其格式为:其中,type 类型是用于区分预置的语义提供者和用户自定义的语义提供者,其有效值有:17$NC_Project/resources/smart/smart_$模块
27、号.xml。如总帐项目扩展配置文件路径为:gl/resources/smart/smart_gl.xml大中型企业与公共组织云平台preset、custom,分别对应系统预置、用户自定义两种类别。一般用户在扩展实现自定义的语义提供者时,可以直接去掉 type 项,或者把该项设置为 custom。根据多语目录下的多语id 加载多语。以数据表提供者举例,其配置项为:至此,我们的语义提供者就全部实现了,在语义模型的设计向导中就会支持该类型的语义提供者。2.4. 函数2.4.1. 函数语义支持 sql 语法和自定义函数的混合编写。系统默认函数有 smart()、nc_metadata()、qdi_me
28、tadata()、parameter()、macro(),后续会扩展字符串函数、时间函数等。业务系统公式统一走宏变量定义。Function-getParameterValues-getFunctionName配置文件smart_function.xml 进行函数扩展ScriptEngineFunctionController18 ISemanticCommand+run()+getFunctionName()+getFunctionDesc()+getFunctionDesignWizardClz()*1数据表1413002_001413002-0770./dbtableprovider.gi
29、fpreset vider.impl.DbTableProvider vider.DbTableProviderDesigner大中型企业与公共组织云平台2.4.2. 函数扩展语义模型支持对其函数进行扩展,用户可以根绝业务需求添加自定义函数。具体步骤如下:n根据函数接口(ISemanticCommand)实现自定义函数。类图示意如下:NCMetaDataCommandReportCommandDateCommand接口中 API 如下:19public interface ISemanticCommand
30、/* 执行计算* param context 上下文环境* param params参数值* return执行结果*/Object run(SmartContext context, Object params);/* 函数名称* return*/String getFunctionName();/* 函数描述*/String getFunctionDesc();/* 函数参数类型* 为null表示不作约束*/Class getParameterTypes();/* 函数设置向导类* 为null标识无设置向导 ISemanticCommand+run()+getFunctionName()+g
31、etFunctionDesc()+getFunctionDesignWizardClz()大中型企业与公共组织云平台n在函数扩展配置文件进行配置。默认配置文件路径为$UAP_Home/resources/smart/function_default.xml。为方便各模块扩展函数,在开发环境下,配置文件存放位置为各模块 resources 下的 smart 目录:$UAP_Project/resources/smart/function_$模块号.xml。如总帐项目扩展配置文件路径为:gl/resources/smart/function_gl.xml在安装盘中,各模块的扩展配置文件将都在 UA
32、P_HOME/resources/smart/目录中。配置文件示例如下:配置文件中是根据驱动名称进行组织的,驱动总共分为两类 SmartFunctionDriver 和DBFunctionDriver。之所以对驱动进行区分是因为在不同的功能点,加载的函数驱动可能不同。在实际配置过程中,用户可以根据的需要把自定义的函数类全路径名放在已有的驱动定义或新增加自定的驱动定义中,即可完成函数的扩展。20* return see IFunctionDesignWizard*/String getFunctionDesignWizardClz();大中型企业与公共组织云平台2.5. 参数参数是模型中代表动态
33、信息的元素,用于响应用户的输入。在模型的执行过程中,可以根据参数值的不同来影响结果数据。参数常用于对筛选条件的设置上。示意图如下:21大中型企业与公共组织云平台2.5.1. 参数定义参数是与具体的模型绑定的,在每个模型的设计过程中都可以对参数进行定义。参数的类型分为:字符,数值,枚举和参照。当类型为枚举时,枚举项为用“”分隔的枚举值,或者是一个单字段的SQL;当类型为参照时,枚举项为基础参照名,或者是用尖括号括起的自定义参照的类名。在定义的时候需要注意,参数的编码要保证互不相同。2.5.2. 参数参数主要在模型设计中的筛选描述器部分,在筛选描述器的条目中,值类型选择为参数时候,则会在值字段的下
34、拉列表中列出相应的参数。另外在模型设计的“Smart”中,我们提供了“parameter”函数,在函数列表中双击,则会弹出参数选择框。范例请参考本文档第五章范例-中参数范例一节。2.5.3. 参数设置运行态要求用户首先对参数进行设置,当报表了多个语义模型时,参数将通过多页22大中型企业与公共组织云平台签设置,每个页签代表一个模型。另外需要注意的是,模型在运行态时会对参数是否被进行检查,最终的设置界面上只会显示被的参数。2.5.4. 参照依赖设计态增加“参照依赖”列,参照型的参数可以使用参照依赖,其他类型即使设置也起作用。“参照依赖”中支持 parameter,macro 函数;例如:sm_us
35、er.cuid=parameter(param1)and pk_org=macro(m1)如果参照是树表形式的,并且需要分别对树和表进行设置,则输入框中输入的条件用“;”分割。定义态的默认值设置支持参照依赖,即参照显示的值会根据依赖的条件过滤。具体设置:2.5.5.自定义参照参照类型参数支持对参照编辑的自定义设置。实现方法:在设计态,属性列编辑框中通过自定义编辑器的方式实现,方式为“”。相关的具体规则如下:23大中型企业与公共组织云平台编辑界面基类:nc.ui.pub.smart.designer.preference.CustomParamDlg ,自定义编辑器必须实现以下方法:其中 bui
36、ldUI 方法传递的参数 CustomParamInfo 相关说明:24/* 参照当前值*/private String currentValue;/* 当前数据源*/private String dsName;/* 当前参数的哈希表*/* 利用参数信息构建 UI* param info 参数信息* throws Exception*/public abstract void buildUI(CustomParamInfo info) throws Exce ption;/* 获取参数编辑的返回值* return* throws Exception*/public abstract Strin
37、g getParamValue() throws Exception;大中型企业与公共组织云平台使用说明,见下图:2.6. 宏变量宏变量引申自程序设计中的宏,其表达式会被替换为字符串,并在最终的语句中可以被完全替换。宏变量根据作用域分为全局宏变量和模型宏变量。顾名思义,全局宏变量用于全局共享,在任何语义模型中都可以直接。模型宏变量与具体的语义模型相关,其只在当前模型中其作用。全局宏变量中包含多个预置宏变量,如 LoginDate、LoginUser 等,方便共享。宏变量其定义与参数类似,不同之处在于其类型有两种选择“公式”和“SQL 语句”。公式只是其表达式支持公式的编辑;SQL 语句是指一般
38、的 SQL 语句,但默认情况下取值只能取第一行第一列的值。宏变量示意图如下:25private HashMap paramMap;大中型企业与公共组织云平台宏变量的与参数相同,分别在筛选描述器和 Smart的公式(macro)中可以对其。另外与参数区别的是,由于宏变量都是固定的值,因此不需要与用户进行交互,所有在浏览态没有相应的设置界面。2.7. 描述器Descriptor 是指对数据操作的描述,例如:过滤、排序、分页、汇总等。目前支持以下几种描述器:26名称对应类用途结构对应界面设计类汇总描述器AggrDescriptor对数据做汇总处理,相当于 sql 中的 group by。包含汇总条件
39、、汇总字段两部分。无数据唯一描述符DistinctDescriptor清除数据中的重复行,相当于 sql 中的 distinct。不持有属 性,以其存在与否来判断是否做无大中型企业与公共组织云平台描述器可在设计态、运行态两处使用。在设计语义模型时,我们通过设计向导能构造设计态的描述器,保存于语义模型中;在执行语义模型时,我们可以另外构造运行态的描述器,对语义模型进行再处理。对于语义模型的使用者,一般接触到的是运行态的描述器,现对这部分进行详细讲解。构造描述器:对于提供了设计界面的描述器,可以调用界面类来构造描述器;也可在后台直接构造描述器。调用 provide 接口:把上述描述器封装到描述器数
40、组 Descriptordescs,然后传入语义模型相应的 provide 接口方法中:27distinct 处理。过滤描述器FilterDescriptor对数据做过滤处理,相当于 sql 中的 where。包含树形结构的过滤条件。FilterDescPanel表连接描述器JoinDescriptor表示表之间的连接关系,相当于 sql 中的 join。只用于设计态。包含连接条件。JoinStepPanel限制列描述器LimitColumnDescriptor只提供选定的那些 列(以字段名指定)的数据。包含指定的列名数组。无分页描述器PaginalDescriptor对数据做数据库端分页处理
41、。包含页大小、页数。无限制行描述器LimitRowDescriptor取最前 或最后多少行数据。属于分页的一种,一般用作 top 分析。包含 最前或 最后 标示,及数据行数。无排序描述器SortDescriptor对数据做排序处理。包含排序字段、排列顺序。SortDescPanel大中型企业与公共组织云平台上述方法中的Descriptor descs 即是运行态描述器,藉此提供了对语义模型进行再处理的可能。2.8. 数据2.8.1. 概念数据是语义模型提供的一类取数方式,支持用户使用 java 代码来定义一段取数逻辑。2.8.2.考虑到在现实应用务逻辑的复杂性,单纯依赖 sql 语句,用户并不
42、是总能得到想要的结果集,因此提供了在语义模型嵌入 Java 代码的功能,用于单纯 sql 处理不了的场景。由于数据是从数据库中取出结果集后在内存中进行操作,考虑到和效率问题,我们建议只有在 SQL 解决不了的数据处理要求,才使用数据实现。由于在数据中提供的通过 Java 代码实现相关数据处理的功能,理论上讲其可以满足任意相关的业务逻辑需求,复杂的业务逻辑算法需要在实际应用开发中按照不同情况和场景灵活使用。2.8.3. 执行原理在使用时,数据分为两个步骤: 第一步使用 java 代码定义取数逻辑,最终返回 sql 语句或结果集 DataSet。基于性能考虑,推荐返回值为 sql; 第二步定义元数
43、据,即对上述代码返回的数据的描述,包括:有哪几列、每一列的数据类型、长度、精度等。执行时,上述定义的 java 代码会在被调用,拿到返回的 sql 语句或结果集 DataSet(DataSet 需要持久化到数据库中的临时表中),然后和其他逻辑表(provider)进行复合取28DataSetprovideData(IContext context, Descriptor descs) 获得执行结果数据集; DbTableprovideView(IContext context, Descriptor descs) 执行结果保存在视图上。StringprovideSQL(IContext con
44、text, Descriptor descs) 获得最终执行sql;IntprovideCount(IContext context, Descriptor descs) 获取总行数;大中型企业与公共组织云平台数。2.8.4. 使用使用方式如下:弹出设计界面如下:29大中型企业与公共组织云平台在上述编辑器中编辑 java 代码,左边提供了辅助代码片段生成向导。步骤“元数据”,是要求代码设计者对代码执行完后的结果数据进行描述,即返回几列数据,每列的列名、数据类型等信息。30大中型企业与公共组织云平台该步骤的改进方案为:元数据自动生成,通过预执行一遍代码来实现。不过手工设置避免不了,因为大部分代码
45、在设计态很难执行。2.8.5. 常见问题数据java 代码中,调用语义模型的类时,直接使用类名;而对业务部门的类,需要使用全路径名。java 代码中封装 DataSet 时,需要设置元数据 MetaData(具体参见相关类)。java 代码中通过调用代码 setDataSet(DataSet)设置最终需要返回的结果数据集DataSet,通过调用代码 setResultSQL(sql)设置 sql 返回值。这部分代码是在调用,切忌调用 UI 类。java 代码最终生成的类继承于 nc.pub.smart.m.code.CodeProcessor,实现其process()方法。java 代码生成的
46、类放在 UAP_HomemodulesbapubMETA-INFvarclasses 下。2.9. 物化策略我们可以对一个语义模型设置定时策略,定时把语义模型执行后的数据持久化到指定数据源上指定的数据表中。31大中型企业与公共组织云平台通过提供这种功能,我们就能把一些执行效率较低的语义模型预先调度执行,到真正取数时,直接从物化表中取数,减少执行等待过程。物化策略使用有其局限性,只有在只使用语义模型本身的字段时,才会从物化表直接取数;如果需要取语义模型本身未定义的字段(例如语义字段等),则会把语义模型从头执行一遍,不再使用物化表。2.10. 复合语义模型复合语义模型,指的是,我们在定义语义模型时,可以已经存在的语义模型。对这种了其他语义模型的语义模型,我们称之为复合语义模型。下图形象的阐释了复合语义模型的嵌套结构。32大中型企业与公共组织云平台应用复合语义模型能够达到数据集成的效果。在上图中,我们注意到,每个语义模型均可以定义的执行数据源,也就是说,复合语义模型的原子语义模型的执行数据源可以互不相同,从而,我们就能支持多数据源取数功能。数据从不同数据源抽取出来,然后以语义模型这种统一的形式对外提供数据,这样就达到了数据集成的效果。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行客户分成后营销方案
- 宿迁营销宣传册订制方案
- 离婚财产分割协议书样本格式及细则
- 生态旅游区移动通信基站租用与游客服务合同
- 文化艺术竞赛作品保密及版权归属合同
- 离婚协议中子女抚养权变更法律咨询合同
- 融合文化体验上海二手房买卖合同范本与生活方式
- 大型商场空调设备安装与能耗管理劳务分包协议
- 离婚协议书范本:共同财产分割及债务处理协议
- 离婚协议中财产分割与子女抚养权调整补充协议
- 海洋微塑料污染溯源分析-洞察及研究
- 癌痛护理查房
- 孕妇孕期心理健康管理策略
- 花园开荒保洁方案(3篇)
- 儿童跑酷课件图片
- dcs上墙管理制度
- 九一八《勿忘国耻吾辈当自强》班会课件
- 2025年时政100题(附答案)
- JG/T 127-2007建筑门窗五金件滑撑
- CJ/T 180-2014建筑用手动燃气阀门
- 海参池养殖合作合同协议书
评论
0/150
提交评论