元数据建模及管理红⽪书NC-UAP 5.5⽤友NC-UAP2018-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. 某个实体作为参照使⽤: (24)4. 元数据查询 (26)
5. 基于元数据的数据访问 (28)6. ⾃定义项如何使⽤: (26)第⼀章前⾔
本⽂档主要介绍了如何基于元数据进⾏业务建模,以及如何在运⾏时对元数据进⾏管理。最后列举了元数据的⼀些典型应⽤。⽬的是尽可能地让⼤家在使⽤元数据的时候更加⽅便。
关于元数据本⾝的代码架构,以及元数据的基本概念,请参见《NCV5.5-元数据开发红⽪书》。第⼆章基于元数据的业务建模1. 模型设计器
在基于元数据建模之前,我们先来认识⼀下模型设计器。
NC模型设计器
模型设计器有5个重要的组成部分,如图所⽰。1是资源浏览器,2是⼯具⾯板,3是画布,4:属性⾯板,5:模型视图。2. 创建组件
在资源浏览器中点右键,可以新建⽬录或者新建模型⽂件(见下图)。模型⽂件(bmf ⽂件)即对应元数据中的⼀个组件(IComponent)。
组件描述的是⼀个相对独⽴和完整的业务块,主要是从业务层次上进⾏划分,⽐如“销售订单”可以作为⼀个组件,“客商档案”也可以作为⼀个组件,划分组件时,注意组件间的重⽤,且注意不要形成相互依赖。组件属于模块,⼀个模块可以包含多个组件。资源浏览器中组件所属的⽬录和组件的模块没有关系,⽬录只是为了更好的组织和管理bmf⽂件。
组件是部署的基本单元,⼀个典型的组件会包含若⼲个有相互关系的实体(但只能有⼀个主实体),以及业务接⼝、枚举类型等,另外组件⾥还可以有服务和操作。点击中间画布空⽩区域,可以设置组件信息:
1)版本号:记录组件当前版本,防⽌旧版本覆盖新版本。版本号是⾃动⽣成的,每点击⼀次保存,就会增加1。2)代码风格:有NC传统样式和标准样式两种,主要针对主⼦表及多⼦表结构,传统样式⽣成AGGVO,标准样式为OO3)多语⾔资源模块:对应以前多语⾔⾥的⽂件夹名,现在按照组件划分
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 nc.md.model.impl.MDBean.getAttributes(String tag)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或者String4)可以为属性设置类型为枚举类型,如下图所⽰:
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⽂件提交到相应模块的METADA TA⽬录下,安装帐套时会⾃⾏发布到数据库中。导出JA V A代码:
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)元数据恢复到系统默认状态。1. 元数据信息浏览和修改
元数据管理功能节点在“客户化/⼆次开发⼯具/系统管理⼯具/”下。界⾯如下图所⽰:
左侧⾯板中是⼀棵元数据树,树的第⼀级是模块,选中某个模块,会显⽰该模块下的所有组件和⼦模块。
选中某个组件,右侧⾯板上将显⽰该组件所有的实体,枚举,值对象,分别显⽰在不同的页签上(组件中的业务接⼝⽬前并没有在此处显⽰):
选中某个实体,可以看到该实体的属性,及该实体实现的接⼝信息:
点击“修改”按钮,可以修改当前页签上的蓝⾊字段。2. 枚举类型的维护
可以在元数据管理节点增加⽤户⾃定义的枚举类型,或者修改已有的枚举类型。选中组件,可以新增枚举,如下图所⽰:
选中枚举,点击“枚举”按钮下的⼦按钮“修改”,即弹出枚举类型维护对话框:
在该对话框上可以对枚举类型的各项信息进⾏修改。
因篇幅问题不能全部显示,请点此查看更多更全内容