电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

NC5客开培训资料-NC5.6元数据应用.ppt

NC5客开培训资料-NC5.6元数据应用.ppt_第1页
1/44
NC5客开培训资料-NC5.6元数据应用.ppt_第2页
2/44
NC5.6元数据建模与应用NC基础技术部丁贤明2010年3月22日大纲NC元数据应用范围NC元数据组成NC元数据建模流程NC元数据应用范围业务实体模型管理工具:NC开发及二次开发可以查看、修改NC主要业务实体;外部数据交换平台:外部XML结构与NC元数据定义交换规则;审批流函数:可以利用实体对象元数据定义审批流函数,例:订单.客户.信用额度>10000;实体对象规则定义:利用对象元数据定义规则表达式,用于数据校验、流程条件;模板数据与业务实体元数据的应用整合;内部数据交换平台:基于实体元数据定义;审批流、工作流消息:可以利用实体对象元数据定义消息查询引擎引用实体对象元数据;基于元数据模型的UI工厂;基于元数据模型的数据权限定义(行、列权限);基于元数据服务的流程平台;元数据组成模型设计器实体模型数据模型元数据管理工具提供运行时的元数据管理元数据服务组件提供元数据信息访问服务基于元数据的实体对象访问基于元数据的持久化基于元数据的NC开发流程使用模型设计器设计业务模型生成java代码生成数据模型生成单据模板、查询模板..定制业务流程……案例演示在模型设计器中创建业务模型创建模型-创建实体创建实体要点:1)主键:实体必须设置主属性(主键)2)访问器:当组件代码样式选则传统样式时,针对主子表或者多字表中主表对应的实体,访问器要设置为AggVO,即聚合VO访问器,其他的一律选择NCVO,访问器的作用在于适配模型与java代码的不一致性。3)缺省表名:生成数据库时对应的表名,可以多个实体对应同一个表名(56版本,实际上不支持多个实体对一张表)4)业务接口实现类:如果实体实现了业务接口,这里可以注册实现类,后面统一讲5)是否生成建库脚本:默认为true创建实体模型-实体的属性实体的属性设置对于设置为AggVO样式的实体,请检查子表属性(1-n聚合关系),比如上图中的[订单明细],访问策略要设置为BodyOfAggVOAccessor类型样式:主要分Single,REF,ARRAY,LIST,具体可参考《元数据开发红皮书》类型:可以自行选择,当建立实体间关系时,也会自动设置;主键一定要设置为UFID类型字段名称:生成数据库表列的名称创建业务模型-实体的属性实体的属性设置:计算属性:由其他属性计算得到,本身不需要保存到数据库,不会生成数据库的列扩展标签:可以自由的给属性加上标注,比如@uniqueCheck,在程序中便可以通过这个标签来过滤属性ListMDBean.getAttributes(Stringtag)不可序列化:表明该属性不在前后台之间传输,当然也不能持久化属性的类型-多语类型数据库中会生成3个字段VO中只生成一个属性属性的类型-自定义项类型为“自定义项”的属性可以在元数据管理界面修改它的类型和类型样式双击自定义项属性的类型编辑框,弹出元数据实体选择框创建业务模型-实体和属性的参照设置参照设置:1)参照必须先在bd_refinfo表注册才可以选择(因为要访问数据库,所以要先启动中间件才能设置参照)2)一个实体可以设置多个参照,但必须设置一个缺省参照3)获取属性的参照时,如果没有设置则取属性对应实体的缺省参照创建业务模型-实体间的关系实体间的关系:1)关系中必须设置源属性2)注意:设置了关系后,属性的类型便会发生变化,但删除关系后,属性的类型不会恢复,务必要检查外键对于聚合关系,子实体中不需要指向主实体的外键属性,在元数据发布时会自动在数据库中为子表加上外键。外键列的名称就是源属性(即主实体中对应子实体的属性,如订单中的订单明细)对应的字段名称,所以建议将源属性对应的字段名称设为所期望的子表对应主表的外键名称(通常就是主表的主键)。如果实体是从PDM导入的,则务必在模型中删除子实体中的外键复杂建模目前只支持关联和聚合两种关系暂不支持在模型上设置多对多的关系暂不支持在模型上建立1对多关联、1对多聚合或者1对1聚合的自包含关系暂不支持在模型上建立针对自定义档案的1对多关联,1对多聚合或者1对1聚合关系暂不支持在模型上建立跨组件的的1对多关联,1对多聚合或者1对1聚合关系创建业务模型-业务接口业务接口属性映射:映射属性如果是REF类型,则可以选扩展属性创建实体模型-业务接口实现类业务接口实现类的优先级:1)实体和特定业务接口连线上的实现类2)实体上注册的实现类3)业务接口上注册的实现类4)根据映射关系生成的实现类业务接口的使用模型层次使用业务接口:Mapnc.md.model.IBusinessEntity.getBizInterfaceMapInfo(StringfullIntefaceClassName)查询实现了特定业务接口的实体中的属性和接口方法的对应关系,如果客户实现了ICodeName<<编码名称接口>>,则customerBean.getBizInterfaceMapInfo(“nc.vo.bd.ICodeName”)将返回<”code”,CodeAttr>,<”name”,NameAttr>,<”displayName”,displayNameAttr>实例层次使用业务接口:Customercust=newCustomer();cust.setPrimaryKey("pkaaaaaaaaaaa");cust.setCode("code001");cust.setName("nameadfafdafasd");NCObjectcustbasObj=NCObject.newInstance(cust);ICodeNamecodename=custbasObj.getBizInterface(nc.vo.bd.customer.ICodeName.class);System.out.println(codename.getCode());System.out.println(codename.getName());创建业务模型-枚举类型枚举类型:1)枚举类型必须设置返回值类型,当前支持int和String两种2)枚举生成的java代码是普通的java类,继承自MDEnum。如果要生成代码,需要在描述栏写上英文。3)可以为属性设置类型为枚举类型。4)通过IAttribute.getDataType()便可以得到IType,如果为枚举类型,则可转型为IEnumType,通过IEnumType.getEnumValues()得到枚举类型列表。创建业务模型-枚举类型/***计税类别枚举*/publicclassTaxTypeextendsMDEnum{//应税内含publicstaticfinalTaxTypeTAX_IN=MDEnum.valueOf(TaxType.class,newInteger(1));//应税外加publicstaticfinalTaxTypeTAX_OUT=MDEnum.valueOf(TaxType.class,newInteger(2));//不计税publicstaticfinalTaxTypeTAX_NO=MDEnum.valueOf(TaxType.class,newInteger(3));publicTaxType(IEnumValuevalue){super(value);}}枚举类型的基类:MDEnum:枚举类型生成的代码:其中TAX_IN,TAX_OUT,TAX_NO就对应描述栏输入的字符枚举的使用枚举的应用有3种情况1)开发时就可以固定下来的,可以在模型上直接建立。2)开发时不确定,可以在模型上将不确定的属性设为自定义项类型,运行时在元数据管理工具中可以新增枚举类型,将自定义项类型的属性设为具体的枚举类型。3)运行时也不固定,枚举值要从数据库中动态取得,此时需要实现枚举扩展类。继承自AbstractConstEnumFactory,并且在模型上注册。如图:注册了自定义枚举值实现类以后,通过IEnumType.getConstEnums()得到的枚举值既包括模型上定义的,也包括枚举扩展类从数据库中查询出的。创建模型-自定义档案只能在开发平台的“自定义档案定义”节点添加创建模型-自定义档案创建模型-自定义档案创建业务模型-快速创建实体导入属性:实体的属性可以直接从PDM或者数据库表中导入创建业务模型-快速创建实体在实体上点击右键,可以选择特性。每种特性对应若干属性,选择以后会自动在实体上添加。特性可以在xml中配置,支持按模块配置,可以引用已有的特性,可以设置是否可见。借助特性,可以实现实体属性的复用。特性的使用:发布元数据发布元数据1)必须保存后才能发布2)发布时必须启动NC中间件,因为元数据会发布到数据库中,数据库为默认数据源3)发布时会一起发布被依赖的组件,支持双向依赖,循环依赖4)如果发布元数据时忽略版本,则完全以本地的模型文件,可能造成库中新版本的模型被覆盖,非特殊情况不推荐使用。5)开发环境的发布只是为了开发人员测试需要,提交产品时只需要将bmf文件提交到相应模块的METADATA目录下,安装帐套时会自行发布到数据库中生成JAVA代码导出JAVA代码1)可以在组件里设置代码风格,如果代码风格选择“传统样式”,则对于主子表结构,主实体的访问器类型必须选择AggVO。2)必须启动NC中间件3)导出java文件前,必须确保最新修改的组件已经被发布4)生成的代码都实现了SuperVO生成数据模型创建了实体及实体间的关系后,并发布到数据库,便可以生成建库脚本建库脚本可以直接在当前数据源所对应的数据库执行若多个实体对应一个表,在通过元数据模型设计器生成建库脚本并执行时,会自动进行差异化升级对于聚合关系,不管是1-1还是1-多,均会在子表里生成外键;关联关系不生成外键元数据插件插件版本:元数据插件-版本更新服务器路径:\\uapserver03\web_dir\ncmdp\NCMDP_Site元数据插件-常见问题及解决方案插件常见问题Bmf文件打开报错:BadversionnumberBmf文件打开空白解决方案更新插件同时提升你的开发环境eclipse3.4(注意:eclipse3.5不能使用现有的插件)jdk1.6.0_12更新最新的modules可能是bmf文件有错制作单据模板在流程平台中使用在流程平台中使用元数据管理单击对元数据信息进行浏览,修改元数据的显示名称、描述信息等可编辑字段维护枚举类型元数据的升级;元数据恢复到系统默认状态。元数据管理元数据编程接口-元数据查询单击前台查询元数据一律使用MDBaseQueryFacade后台查询元数据也可以用MDBaseQueryFacade或者使用MDQueryService元数据编程接口-元数据查询MDBaseQueryFacade提供元数据基本的一些查询,如查询模块、组件、实体、值对象、属性等,前后台均可调用。支持前台缓存功能,有效减少远程调用。前台缓存能很好的解决元数据加载的效率问题,但是如果开发人员在开发环境需要频繁的修改元数据,则必须重启JStarter才能使得修改生效,为避免此问题,可以在JStarter的启动参数里增加参数,这样前台每次加载元数据会进行版本检查。-Dnc.md.detectEachTime=true元数据缓存机制前台缓存首次加载组件时到后台检测版本后台缓存对于模块和组件,会定期去检测版本基于元数据的数据访问基于元数据的数据访问模板上不再需要定义公式,直接从模型树上拖拉需要显示的业务字段即可,简单直观易用。取数完全基于模型角度,完全不用了解数据库结构支持复杂条件查询,支持批量取数,有效提高数据访问效率基于元数据的数据访问DASFacadeNCObject//得到订单的元数据IBeanbean=MDBaseQueryFacade.getInstance().getBeanByFullClassName("订单类名");//创建查询sessionQuerySessionsession=QuerySessionFactory.createQuerySession(bean);//增加条件session.addCondition(Restrictions.and(Restrictions.eq("订货人.编码","0002"),Restrictions.eq("邮寄地址.邮政编码","100090")));//增加待查询字段session.addPath(newString[]{"账单地址.详细地址","账单地址.邮编"});//返回行结果集Collectionres=DASFacade.queryPrimaryKeyByCriteriaReturnRowSet(session);返回的结果为Collection,内部为hashmap,每一个hashmap代表一行记录,可以通过:map.get("账单地址.详细地址")取得"账单地址.详细地址"元数据编程接口-基于元数据的持久化nc.md.persist.framework.MDPersistenceServicenc.md.persist.framework.IMDPersistenceService--保存删除更新服务nc.md.persist.framework.IMDPersistenceQueryService--查询服务持久化注意:1)传入的VO数据,需自行维护vostatus状态,即增删改状态,持久化时分真删和假删2)查询时,提供懒加载机制,懒加载时只加载第一层

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

NC5客开培训资料-NC5.6元数据应用.ppt

您可能关注的文档

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信