NCV55元数据建模及管理红皮书分解.docx
- 文档编号:8000972
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:26
- 大小:1.71MB
NCV55元数据建模及管理红皮书分解.docx
《NCV55元数据建模及管理红皮书分解.docx》由会员分享,可在线阅读,更多相关《NCV55元数据建模及管理红皮书分解.docx(26页珍藏版)》请在冰豆网上搜索。
NCV55元数据建模及管理红皮书分解
元数据建模及管理红皮书
NC-UAP5.5
用友NC-UAP
2018-10-20
目录
第一章前言3
第二章基于元数据的业务建模4
1.模型设计器4
2.创建组件4
3.创建实体5
4.创建接口:
9
5.创建枚举:
12
6.实体间的关系:
12
7.元数据发布13
第三章元数据管理16
1.元数据信息浏览和修改16
2.枚举类型的维护:
18
3.元数据升级:
20
4.恢复到系统默认状态:
20
第四章元数据典型应用21
1.基于元数据创建单据模板21
2.在流程平台中使用元数据:
22
3.某个实体作为参照使用:
23
4.元数据查询25
5.基于元数据的数据访问26
6.自定义项如何使用:
28
第一章
前言
本文档主要介绍了如何基于元数据进行业务建模,以及如何在运行时对元数据进行管理。
最后列举了元数据的一些典型应用。
目的是尽可能地让大家在使用元数据的时候更加方便。
关于元数据本身的代码架构,以及元数据的基本概念,请参见《NCV5.5-元数据开发红皮书》。
第二章
基于元数据的业务建模
1.模型设计器
在基于元数据建模之前,我们先来认识一下模型设计器。
NC模型设计器
模型设计器有5个重要的组成部分,如图所示。
1是资源浏览器,2是工具面板,3是画布,4:
属性面板,5:
模型视图。
2.创建组件
在资源浏览器中点右键,可以新建目录或者新建模型文件(见下图)。
模型文件(bmf文件)即对应元数据中的一个组件(IComponent)。
组件描述的是一个相对独立和完整的业务块,主要是从业务层次上进行划分,比如“销售订单”可以作为一个组件,“客商档案”也可以作为一个组件,划分组件时,注意组件间的重用,且注意不要形成相互依赖。
组件属于模块,一个模块可以包含多个组件。
资源浏览器中组件所属的目录和组件的模块没有关系,目录只是为了更好的组织和管理bmf文件。
组件是部署的基本单元,一个典型的组件会包含若干个有相互关系的实体(但只能有一个主实体),以及业务接口、枚举类型等,另外组件里还可以有服务和操作。
点击中间画布空白区域,可以设置组件信息:
1)版本号:
记录组件当前版本,防止旧版本覆盖新版本。
版本号是自动生成的,每点击一次保存,就会增加1。
2)代码风格:
有NC传统样式和标准样式两种,主要针对主子表及多子表结构,传统样式生成AGGVO,标准样式为OO
3)多语言资源模块:
对应以前多语言里的文件夹名,现在按照组件划分
4)是否预加载:
默认false。
如果选择true,而且所用的数据源也配置为预加载元数据(在preload-datasource.properties中配置),那么该组件就会在中间件启动时被预先加载。
5)主实体:
一个组件里如果有实体,则必须设置一个主实体
6)名称:
该组件的名称。
必须全局唯一。
3.创建实体
从工具箱中拖一个实体到中间的画布上。
创建实体的要点:
1)主属性:
实体必须设置主属性(对应数据库表的主键)。
2)访问器:
当组件代码样风格选择传统样式时,针对主子表或者多字表中主表对应的实体,访问器要设置为AggVO,即聚合VO访问器,其他的一律选择NCVO,访问器的作用在于适配模型与java代码的不一致性。
访问器类型有POJO,NCVO,AggVO。
3)包装类名:
如果访问器类型是AggVO,则需要生成一个聚合VO类型的包装类。
4)动态信息修改类:
用于动态修改实体,比如运行时增加或者设置某些属性。
5)可见性:
public,protected,default,private
6)扩展标签:
可以给实体加任意的标签,查询时可根据标签过滤。
7)缺省表名:
生成数据库时对应的表名。
8)业务接口实现类:
如果实体实现了业务接口,这里可以注册实现类。
在“创建接口”小节中,将详细介绍接口实现类的四种情况。
3.1实体的属性
实体可以有若干属性和操作,还可以实现接口,设置参照。
实体中属性的设置要点如下:
1)对于设置为AggVO样式的实体,请检查子表属性(1-n聚合关系),比如上图中的[订单明细],访问策略要设置为BodyOfAggVOAccessor。
2)类型样式:
目前支持Single、REF、ARRAY、LIST四种,具体可参考《元数据开发红皮书》。
3)类型:
可以自行选择,当建立实体间关系时,也会自动设置;主键一定要设置为UFID类型。
目前元数据支持如下基本类型:
4)字段名称:
生成数据库表列的名称
5)计算属性:
由其他属性计算得到,本身不需要保存到数据库,不会生成数据库的列。
6)空:
是否可以为空。
7)授权:
用于权限控制。
8)扩展标签:
可以自由的给属性加上标注,比如@uniqueCheck,在程序中便可以通过这个标签来过滤属性。
List
3.2实体的操作
3.3实体和属性的参照设置
1)在实体的模型视图上选择参照页签,点击左上角的“设置参照”,弹出参照选择对话框(参照必须先在bd_refinfo表注册才会在这个对话框中出现)
2)为实体选择对应的参照,可以多选。
点击OK后,选择的参照就会出现在模型视图的参照页签。
此处的参照表示该实体可以通过这些参照被引用,比如人员对应的参照为人员档案和人员管理档案参照,如果某个实体的属性是人员类型,类型样式是参照,则可以将该属性设置成人员档案或人员管理档案参照。
3)必须给实体设置一个缺省参照。
4)为属性设置参照:
类型样式选择REF,类型选择某个实体,在参照名称下拉框中将出现该实体对应的参照,从中选择一个与该属性绑定。
如果没有设置参照名称,则获取属性的参照时,将取实体的缺省参照。
3.4创建自定义实体
从工具箱中拖一个实体到画布上,选中该实体,点右键,选择特性->自定义档案,则该实体将被创建为自定义实体,其属性也将由系统自动生成。
如下图所示。
4.创建接口
在设计器上,业务接口只能增加属性,相应会生成get方法,比如增加一个name属性,会生成一个getName()方法,方法的返回值可以自由选择。
实际上,如果希望灵活运用业务接口,你可以摆脱设计器的限制,你在设计器上设计出一个业务接口,生成代码后,可以给业务接口增加任何方法,当然实现类也由你自己实现,此时只是通过元数据来管理你的业务接口而已。
业务接口的实现类可以分为四种情况,优先级从高到低排列如下:
1)实体和特定业务接口连线上的实现类
2)实体上注册的实现类
3)业务接口上注册的实现类
4)系统根据映射关系自动生成的实现类
实体实现了某个接口以后,如果没有在模型中注册接口实现类,则必须设置“业务接口属性映射”。
系统会根据属性映射生成默认的接口实现类,类名的规则是:
接口名去掉开头的I,后面再加上Impl。
业务接口实现类必须有且仅有一个参数为NCObject的构造函数。
业务接口的使用详见元数据开发红皮书。
5.创建枚举
创建一个枚举类型时,要注意以下几点:
1)枚举类型必须设置返回值类型,当前支持Integer和String两种
2)如果是自定义枚举,需要注册自定义枚举值实现类
3)枚举类型不对应java类,枚举类型的fullClassName为其返回类型,即int或者String
4)可以为属性设置类型为枚举类型,如下图所示:
5)通过IAttribute.getDataType()便可以得到IType,如果为枚举类型,则可转型为IEnumType,通过IEnumType.getEnumValues()得到枚举类型列表。
6.实体间的关系
目前元数据的关系支持关联、关联引用、1-1聚合、1-多聚合、1-n关联(持久层暂不支持),以及自关联。
暂不支持跨组件的1-1聚合、1-多聚合、1-多关联、继承。
设置关系的注意事项:
1)关系中必须设置源属性。
2)注意:
设置了关系后,属性的类型便会发生变化,但删除关系后,属性的类型不会恢复,务必要检查。
另外,修改过带有关系的属性后,需要重新设置关系(即重新拉线)。
7.元数据发布
元数据发布的最小单元是组件。
选中某个组件,或者在画布中点击右键,即可发布元数据。
注意事项:
1)必须保存后才能发布
2)发布时必须启动NC中间件,因为元数据会发布到数据库中,数据库为默认数据源
3)发布时会一起发布被依赖的组件,支持双向依赖,循环依赖。
4)如果发布元数据时忽略版本,则完全以本地的模型文件为准,可能造成库中新版本的模型被覆盖,非特殊情况不推荐使用。
5)开发环境的发布只是为了开发人员测试需要,提交产品时只需要将bmf文件提交到相应模块的METADATA目录下,安装帐套时会自行发布到数据库中。
导出JAVA代码:
1)可以在组件里设置代码风格,对于主子表结构,V55基本上选择AggVO,这样生成的代码和以前的兼容。
2)必须启动NC中间件。
3)导出java文件前,必须确保最新修改的组件已经被发布。
4)生成的代码都实现了SuperVO。
生成建库脚本:
1)生成建库脚本前,必须确保元数据已经被发布到数据库。
2)建库脚本可以直接在当前数据源所对应的数据库执行。
3)对于聚合关系,不管是1-1还是1-多,均会在子表里生成外键。
注册服务并发布:
1)服务可以在模块间调用,操作只可以在模块内调用
2)服务在设计器里无需建立,直接注册java接口和实现类即可
3)发布服务,可以直接形成upm/usm文件,upm/usm是基于原有module文件优化而来,具体参考中间件培训文档。
第三章
元数据管理
元数据管理工具主要用于在运行时对已发布的元数据进行管理。
它包含以下功能:
1)对元数据信息进行浏览,修改元数据的显示名称、描述信息等可编辑字段;
2)维护枚举类型;
3)元数据的升级;
4)元数据恢复到系统默认状态。
8.元数据信息浏览和修改
元数据管理功能节点在“客户化/二次开发工具/系统管理工具/”下。
界面如下图所示:
左侧面板中是一棵元数据树,树的第一级是模块,选中某个模块,会显示该模块下的所有组件和子模块。
选中某个组件,右侧面板上将显示该组件所有的实体,枚举,值对象,分别显示在不同的页签上(组件中的业务接口目前并没有在此处显示):
选中某个实体,可以看到该实体的属性,及该实体实现的接口信息:
点击“修改”按钮,可以修改当前页签上的蓝色字段。
9.枚举类型的维护
可以在元数据管理节点增加用户自定义的枚举类型,或者修改已有的枚举类型。
选中组件,可以新增枚举,如下图所示:
选中枚举,点击“枚举”按钮下的子按钮“修改”,即弹出枚举类型维护对话框:
在该对话框上可以对枚举类型的各项信息进行修改。
10.元数据升级:
点击升级按钮,会弹出文件选择对话框,可以选择要升级的bmf文件。
应用场景:
在元数据发布以后,如果对个别组件又进行了修改,此时可以在元数据管理节点对修改过的bmf文件进行升级。
升级时会将该组件及其依赖的组件重新发布。
例外情况是如果组件的版本低于数据库中的版本,则不会重新发布。
11.恢复到系统默认状态:
选中某个组件,点击“系统默认”,将从数据库中删除用户在运行时修改过的内容,恢复到刚发布或者升级后的状态。
第四章
元数据典型应用
12.基于元数据创建单据模板
在单据模板设置界面选择元数据组件:
模板上不再需要定义公式,直接从元数据模型树上拖拉需要显示的业务字段即可。
13.在流程平台中使用元数据
首先单据类型必须支持元数据。
在单据类型管理界面,选择该单据类型所属的元数据组件,如果不选,认为该单据类型不支持元数据。
对于支持元数据的单据类型,在审批流转移条件设置和工作项配置的时候就可以选择元数据。
数据交换管理界面也会以元数据而不是传统单据的样式展现:
14.某个实体作为参照使用
通常情况下需要经过以下几个步骤:
(1)实体必须实现基本档案接口(IBODObject),否则无法正确显示名称和编码。
(2)设置实体的业务接口属性映射。
(3)建一个实现了IRefModel的参照类,并在bd_refinfo表中注册。
(4)为实体设置参照。
在实体的模型视图中选择参照页签,点击“设置参照”,详见3.3节实体和属性的参照设置。
以上只是针对一般情况,对于特殊情况,比如说接口的属性不能直接映射实体的属性,那么就需要开发人员另外去写接口实现类了。
15.自定义项如何使用
如果在单据模板上需要有自定义项,则可以在模型设计器中给实体增加一个属性,将其类型设为“自定义项”。
类型为“自定义项”的属性可以在元数据管理界面修改它的类型和类型样式。
双击自定义项属性的类型编辑框,弹出元数据实体选择框,
16.元数据查询
元数据对外部提供的查询服务主要有两个:
(1)MDBaseQueryFacade:
前后台均可调用,提供元数据基本的一些查询,如查询模块、组件、实体、值对象、属性等。
支持前台缓存功能。
如果开发人员在开发环境需要频繁的修改元数据,则为了避免必须重启JStarter才能使得修改生效,可以在JStarter的启动参数里增加参数,在开发时临时关闭前台缓存功能。
-Dnc.md.detectEachTime=true
(2)MDQueryService:
后台查询,前台请不要调用。
MDQueryService服务为元数据自身查询服务的统一入口,通过此入口类可以请求不同的查询服务。
在后台,如果是一些简单查询,比如通过名称,则优先使用nc.md.MDBaseQueryFacade提供的查询方法。
特别注意:
前台全部使用MDBaseQueryFacade,否则会导致严重后果。
在元数据中,属性的查找都是通过先查找Bean,再调用Bean的相关方法来实现的(bean.getAttributeByID(attributeID))。
17.基于元数据的数据访问
元数据的数据访问,是指在得到了Bean的情况下,要取得属性的值。
元数据取数完全基于模型角度,不用了解数据库结构。
可以支持复杂条件查询,支持批量取数,有效提高数据访问效率。
基于元数据的数据访问主要用到DASFacade及NCObject类。
详见元数据开发红皮书。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NCV55 数据 建模 管理 红皮书 分解
![提示](https://static.bdocx.com/images/bang_tan.gif)