资源描述
固定代码项的扩展
使用场景
系统建设时通常会遇到各类数据字典,泽元框架为了保证项目上线后运营过程中能够有效的识别这些数据字典,而通过代码扩展的方式提供了固定代码项的扩展功能。在项目实施过程中要求开发团队能够按照固定代码项的方式来扩展相关代码,并添加相应注释,以便后期维护人员理解代码项的作用及意义。
相关数据结构
ZDCode表结构主要字段如下图:
主要字段包括:CodeType表示代码项的ID,用于区分各个代码项;parentCode用于表示该字段的父代码ID,通常为某项代码的CodeType,当perentCode的值为System时表示该项为顶级代码项,但此项不作为表示的状态或数据字典仅用来记录某个代码项或数据的属性,其下代码的parentCode均以该项的CodeType表示。
涉及的类说明
继承类com.zving.platform.FixedCodeType,扩展服务com.zving.platform.service.CodeService,该扩展服务主要用于系统代码项
详细说明
第一步:在相应的插件配置中新增一个扩展服务项,填写相关的信息,ID可使用Class的包路径+类名(com.zving.test.service.AddFixedCodeService),便于识别。选择扩展服务com.zving.platform.service.CodeService(需当前插件依赖platform插件),点击Class可弹出新建Class窗口,默认继承FixedCodeType类,定义包名和类名(com.zving.test.service和AddFixedCodeService),确定保存。
第二步:进入com.zving.test.service.AddFixedCodeService类中,实现相应的方法,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
packagecom.zving.test.service;
importcom.zving.framework.data.DataRow;
importcom.zving.framework.data.DataTable;
importcom.zving.platform.FixedCodeType;
/**
*@authorzdq
*@mailzdq@
*@date2013-12-18
*测试代码项
*/
publicclassAddFixedCodeServiceextendsFixedCodeType{
publicstaticfinalStringID="Test.TestCode";
publicstaticfinalStringSTR="KEY";
publicstaticfinalStringSTR1="KEY1";
publicstaticfinalStringSTR2="KEY2";
publicstaticfinalStringSTR3="KEY3";
publicstaticfinalStringSTR4="KEY4";
publicAddFixedCodeService(){
super(ID,"固定代码项扩展测试",false,false);
addFixedItem(STR,"Value",null);
addFixedItem(STR1,"Value1",null);
addFixedItem(STR2,"Value2",null);
addFixedItem(STR3,"Value3",null);
addFixedItem(STR4,"Value4",null);
}
publicstaticvoiddecode(DataTabledt,Stringcolumn){
if(dt.containsColumn(column)){
dt.insertColumn(column+"Name");
}
for(DataRowdr:dt){
if(STR.equals(dr.getString(column))){
dr.set(column+"Name","Value");
}elseif(STR1.equals(dr.getString(column))){
dr.set(column+"Name","Value1");
}elseif(STR2.equals(dr.getString(column))){
dr.set(column+"Name","Value2");
}elseif(STR3.equals(dr.getString(column))){
dr.set(column+"Name","Value3");
}elseif(STR4.equals(dr.getString(column))){
dr.set(column+"Name","Value4");
}
}
}
}
上述Class中除了定义一个公共构造器外还添加了decode方法,该方法的参数一个DataTable和一个String,其中String为需要decode的字段在DataTable中的字段名称即columnName。该方法可在dt中插入一列用于保存该column代表的含义,如dt中某列名为KEY,存储值为KEY、KEY1、KEY2,经过decode方法处理后会新增一列KEYName,值对应为Value、Value1、Value2,以便于前台的使用。
完成以上操作后重启应用即可看到在系统管理代码管理中已包含上述的代码项Test.TestCode,且其下代码项KEYValue等都可查看,如下图:
至此代码项的添加已经完成,常见的使用场景如下:
datagrid数据,通常在datagrid中会用到,在后台直接通过DataTable的decode方法,例如dt.decodeColumn("KEY",PlatformUtil.getCodeMap("Test.TestCode")),或者AddFixedCodeService.decode(dt,”KEY”);完成之后会在dt中多出一列KEYName,便于datagrid中显示使用。
直接通过PlatformUtil.getCodeMap(“Test.TestCode”)获取一个map来使用,可转化为html元素等。
在zhtml页面中使用,例如z:radio、z:checkbox等页面控件的数据源可以直接指定Code=”Test.TestCode”,例如<z:radiocode=”Test.TestCode”/>,zhtml会自动将其中的键值对取出作为一个单选radio的一项。
文章源于泽元软件知识库,此文章只用于学术交流,不用于商业应用。
展开阅读全文