本地测试环境
1.导入元数据
在数据字典根据元数据路径找到元数据文件

在MDP视图下,在对应模块项目导入元数据文件

2.添加自定义项
添加自定义项之前,要先确认表头表体单据的
业务接口属性映射,保证添加完自定义项之前与之后一致,否则会出现单据追溯失败问题

添加需要的自定义项,勾选动态属性(不确定勾不勾选是否影响生成)

添加完成后保存,不论添加的是表头还是表体,都在表头的实体上右键
发布元数据

发布完成后,按下面步骤查看数据库,看表中是否有相关自定义项被添加进去
首先打开导入元数据项目所在目录,在其METADATA文件夹中可以看到发布完成的元数据文件:

然后右键以文本文档形式打开,如下id即为查询所用的id:

然后去执行查询:
--查元数据对应的class信息,条件id的值为:元数据entity标签上的id,entity标签一般有两个,表头和表体各一个
--这里举例的是表头id
select * from md_class where id='1050e13a-a996-4b75-8abb-5a9eceab7ab1';
--查元数据对应class的属性字段,条件classid的值和也是元数据entity标签上的id
select y.*,y.rowid from md_property y where classid='1050e13a-a996-4b75-8abb-5a9eceab7ab1' --and displayname like '%自定义%'
--查元数据自定义项属性,条件classid的值和也是元数据entity标签上的id
select * from md_ormap where classid='1050e13a-a996-4b75-8abb-5a9eceab7ab1' and columnid like '%vdef%'
--查对应表中的字段,tableid为表的英文名
select * from md_column where tableid like 'ic_material_h'
在对应实体类代码,及数据表中添加相应字段、get set方法
实体类:

表:
ALTER TABLE 表名
ADD (
vbdef21 varchar2(101) default null,
vbdef22 varchar2(101) default null,
vbdef23 varchar2(101) default null,
vbdef24 varchar2(101) default null,
vbdef25 varchar2(101) default null,
vbdef26 varchar2(101) default null,
vbdef27 varchar2(101) default null,
vbdef28 varchar2(101) default null,
vbdef29 varchar2(101) default null,
vbdef30 varchar2(101) default null,
vbdef31 varchar2(101) default null,
vbdef32 varchar2(101) default null,
vbdef33 varchar2(101) default null,
vbdef34 varchar2(101) default null,
vbdef35 varchar2(101) default null,
vbdef36 varchar2(101) default null,
vbdef37 varchar2(101) default null,
vbdef38 varchar2(101) default null,
vbdef39 varchar2(101) default null,
vbdef40 varchar2(101) default null
);
3.更新配置
将完成的实体类导出补丁,连同修改后的元数据,一起更新到home,然后重启。重启完成后,管理员账号
admin登录
登录后,在元数据管理页面,左边找到对应单据点击,查看自定义项是否存在

元数据管理查看无问题后,可切换为开发账号或系统账号,去对应页面点击增删改按钮,看单据操作是否有问题

验证单据无问题后,继续以非admin账号,进入
用户定义属性组页面,左侧点击对应单据,点击修改按钮,修改用户定义属性数量为自定义项数量,然后保存

在以非admin账号进入
用户定义属性设置-集团页面:
左侧点击对应单据自定义项,点击修改按钮:

添加自定义项的类型与长度,类型点击放大镜中
base基本类型组件的字符串String:

长度与元数据中添加的保持一致,为101,添加后如下,点击保存即可:

单据页面的字段显示名称也需要在
用户定义属性设置-集团中修改,如下图,将自定义项21名称改为审核状态:

4.单据模板设置
admin管理员登录客户端,进入
单据模板初始化界面,将左侧的自定义项都拖入到右侧

拖入后,切换开发账号或系统账号登录,进入
模板设置-集团界面,点击有单据名的文件夹图标,点击复制,复制一个新的模板即可(因为新增自定义项后,需要使用上一步管理员admin所设置的新模板,旧的没有新增的自定义项)

在
模板设置-集团页面,左侧找到对应单据点击,右侧选则对应复制新增的模板,点击分配按钮,

点击
分配按钮后,在弹框中搜索用户或角色,移到右边点击确定,该用户或角色即可在对应单据看到新增的自定义项

将新的模板设置为默认模板

正式环境
1.将上面已完成的元数据及代码更新到home,在正式数据库添加对应字段
2.管理员账号
admin登录客户端,在元数据管理页面,左边找到对应单据,点击选中,然后点上面的升级按钮,弹框选择修改完成的元数据文件.bmf进行升级,升级后查看是否出现新增的自定义项(查md_class、md_property、md_ormap、md_column等表)3.上一步的数据表种有了自定义项无问题后,重启服务
4.,重启完成后在admin登录
元数据管理页面去看自定义项是否添加成功,然后进行用户定义属性及属性组、单据模板配置,与本地测试环境的3、4步操作一致

失败的问题排查
添加失败,或添加后单据报错
排查1:
md_property表中如果有HELP字段为URC的多余记录,要删除

删除后在MDP视图删除发布的元数据

检查下面的表是否为空,正常
删除发布的元数据后查询应该为空,然后重新发布元数据,遇到不可处理的错误可以重新导入元数据重新改再发布,然后重启服务。
--查元数据对应的class信息,id对应元数据中,entity标签displayName属性为表头表体vo名的id
select * from md_class where id='1050e13a-a996-4b75-8abb-5a9eceab7ab1';
--查元数据对应class的属性字段,classid对应元数据中,entity标签displayName属性为表头表体vo名的id
select y.*,y.rowid from md_property y where classid='1050e13a-a996-4b75-8abb-5a9eceab7ab1' --and displayname like '%自定义%'
--查元数据自定义项属性,classid对应元数据中,entity标签displayName属性为表头表体vo名的id
select * from md_ormap where classid='1050e13a-a996-4b75-8abb-5a9eceab7ab1' and columnid like '%vdef%'
重启后删除相关的单据模板配置(新增自定义项之前的模板可以不用),
用户定义属性页面的配置可以不用删除,但是在管理员登录客户端配置单据模板时,需要将之前拖入到表头表体的自定义项删除,重新拖入,然后再看是否成功

元数据升级无反应
在admin登录元数据管理页面,对元数据进行升级后,如果数据库信息没有发生变化,没有新加的自定义项,则使用如下语句查询当前数据库中元数据的版本号:
--查元数据版本号,id为元数据跟标签(第一行)上的id
select version from md_component where id = 'e50d9302-d87c-4d57-807d-2a0772bf0564' and industry = '0' and versiontype = '0'
id是下面这个id,在以xml格式打开元数据文件的第一行上:

通过查询出的版本号,与bmf元数据文件里的VERSION进行对比,如果数据库里的版本高于bmf文件的版本,则修改元数据文件版本号,保证新发布的元数据版本高于现在版本。
自定义项类型错误
报错某个自定义项类型错误时,去查该自定义项是否已经被使用,如果如下sql查询有结果,则就是该自定义项被使用的地方
select * from bd_userdefrule where pk_userdefrule in (select pk_userdefrule from bd_userdefitem where showname = '非扣吨' )
3348

被折叠的 条评论
为什么被折叠?



