鼎尖ERP开发规范框架介绍基础框架包含了base,basedata,basedata-web,log,log-web, workflow,workflow-web, framework,web。
其中以framework和-web为后缀的Project为web支持项目,其它的为业务基础项目。
base,提供dao层的基础接口及实现。
basedata,提供基础数据类型,集成业务基础数据(如组织,人员,岗位等)。
log,提供日志支持。
workflow,提供流程中心支持。
framework,通用web页面功能实现,如列表,编辑,数据选择器,左树右表等。
web,负载所有模块的web资源,及集成各个模块。
模块命名规范新增一个模块需要增加两个项目,分别命名为是XXX,XXX-web。
XXX 包含模块相关model,模块相关dao,模块相关serviceXXX-web 包含模块相关controller类数据库命名规范a)表的命名为T_模块名_实体名,如T_BROKER_ROOM, oracle中全部为大写b)存储过程命名SP_模块名_存储过程名c)视图命名V_模块名_视图名d)表中字段的命名必须以F开头,表中的字段名应和实体中的字段命名保持一致如id -> FID, name -> FNAME,number -> FNUMBER, 如果是外键必须以FK开头以ID 结尾,FKORGID包结构规范开发框架采用spring+mybatis框架,包含有4层,model层,dao层,service 层,controller层, 现以基础项目(basedata)的组织子模块(org)为例model的包名com.dingjian.模块名.子模块名.model .modelenum的包名com.dingjian.模块名.子模块名.enums .enumsdao 的包名com.dingjian.模块名.子模块名.dao .daodaoImpl 的包名com.dingjian.模块名.子模块名.dao.impl .dao.implxml 的包名com.dingjian.模块名.子模块名service 的包名com.dingjian.模块名.子模块名.service .service serviceImpl的包名com.dingjian.模块名.子模块名.service.impl .service.impl controller的包名com.dingjian.模块名.子模块名.controller .controller类命名规范所有的类名,必须以完整的英文单词,禁止出现中文拼音,或者不完整的单词a)所有的controller必须以Controller结尾,controller类按功能,列表处理类以ListController结尾,单据编辑类以EditController结尾b)所有的service接口必须以Service结尾,如RoomService, 实现类必须以ServiceImpl结尾,如RoomServiceImplc)所有的dao接口必须以Dao结尾,如RoomDao, 实现类必须以DaoImpl结尾,如RoomDaoImpld)所有的实体类符合骆驼命名法实体类字段的命名规范所有的字段,必须以完整的英文单词,禁止出现中文拼音,或者不完整的单词字段后面需要加上字段的注释,实体头部必须加上对应表的名字。
前台文件命名规范前台文件分为JSP,JS,CSS三类a)JSP 实体类相关编辑JSP和列表JSP 以实体类名为开头,后面加EDIT 和LIST。
如组织实体的新增和列表JSP命名为OrgEdit.jsp OrgList.jsp编辑页面引入公用JSP头文件EditUIHead.jsp列表界面引入公用JSP头文件ListUIHead.jsp其他界面引入公用JSP头文件commonHead.jsp移动界面引入公用JSP头文件mobileHead.jspJSP文件位置放在web项目webapp/WEB-INF/views/模块名/子模块名/下JS文件放在web项目webapp/default/js/module/模块名/子模块名/下b)JSP所引用js尽量命名与JSP保持一致; JSP所引用css尽量命名与JSP保持一致SQL维护规范Sql位置--svn下sql项目,由于同时支持Oracle和mysql数据库,需要分别维护Oracle和mysql的升级文件和数据初始化文件,分别在文件夹initsql项目,upgradesql项目。
Mysql_create.sql,Mysql_init.sqlOracle_create.sql,Oracle_init.sql1)Oracle脚本书写规范1. 查询判断时所有表名,列名大写select count(*) from User_Tab_Columns where table_name=表名(大写)and column_name=字段名(大写)select count(*) from user_TABLES where table_name = 表名(大写);2. execute immediate 语句里面不要出现引号''3. 注意日期格式,确保正确4. 提交前自己到数据库跑一下,确保能够执行--添加岗位类型表添加人:欧海兵添加日期:2013-09-11select count(1) into num from user_tables s where s.TABLE_NAME ='T_BD_JOBCATEGORY';if(num = 0) then execute immediate'create table T_BD_JOBCATEGORY(FID VARCHAR2(44) not null,FKCREATORID VARCHAR2(44),FCREATETIME TIMESTAMP(6),FKUPDATORID VARCHAR2(44),FLASTUPDATETIME TIMESTAMP(6),FNUMBER VARCHAR2(40),FNAME VARCHAR2(80),FREMARK VARCHAR2(200),FISSYSTEM VARCHAR2(8),FLONGNUMBER VARCHAR2(500),FLEVEL INTEGER,FLEAF INTEGER,FKPARENTID VARCHAR2(44))';end if;2)Mysql脚本书写规范1.注释时–和后面描述需要空格隔开,否则运行报错2.增加字段CALL ADDIFNOTEXISTS('T_AGENCY_HOUSEPROJECT','FREWARDDESC','VARCHAR(200)');3.修改表名CALL ADDIFNOTEXISTSTABLE('T_BD_MODULE','T_BS_MODULE');-- 创建岗位类型表添加人:欧海兵添加日期:2013-09-11CREATE table IF NOT EXISTS T_BD_JOBCATEGORY(FID VARCHAR(44) not null,FKCREATORID VARCHAR(44),FCREATETIME TIMESTAMP,FKUPDATORID VARCHAR(44),FLASTUPDATETIME TIMESTAMP,FNUMBER VARCHAR(40),FNAME VARCHAR(80),FREMARK VARCHAR(200),FISSYSTEM VARCHAR(8),FLONGNUMBER VARCHAR(500),FLEVEL INT,FLEAF INT,FKPARENTID VARCHAR(44),primary key (fid));框架说明实体继承体系系统工具类com.dingjian.basedata.util. SystemUtil。
获取当前登录用户、当前组织、当前职位、当前用户类型com.dingjian.base.util. SystemConfig。
获取系统参数,系统参数配置在/WEB-INF/config/system.propertiescom.dingjian.base.util. StringUtils。
字符串工具类Dao继承体系统一继承BaseDao,BaseDaoImpl对简单查询不推荐提供接口方法,可以统一通过QueryExecutor.xxxx进行查询,减少冗余接口。
Service继承体系DataEntity体系,就继承DataEntityService,其它的先继承BaseService,BaseServiceImpl。
BillEntity 的公共service待定。
Controller继承体系列表页面入口继承ListController,左树右表的继承TreeListController,编辑页面继承EditController.其它特殊页面可以直接继承BaseController.DataPicker(F7)通用列表式:在各模块下的resources/query/*Query.xml中注册查询语句调用:dataPickerUrl:调用的url;width,height:打开窗口的大小;onchange:值改变事件,可选。
Title,打开窗口的title复杂的F7需要自主实现,提供url,调用同上。
实现范例见orgDataPicker.jsp MyBatis-XML代码生成执行Web项目中的/com/dingjian/tools/mybatis/InitFilesByModel.java权限项在权限管页面中新增权限,注意权限方法的写法:包名+类名(实际访问类,填写父类无效)+方法名。
权限依赖如果controller的方法中某方法访问权限依赖于其它方法,则可以使用annotation来注解。
com.dingjian.base.annotation. Dependence。
此注解支持子类方法继承。
例如列表页面中的listData,add,edit,delete等方法均依赖于list方法:如果是依赖于其它继承体系类的方法,则需要加上包名类名:@Dependence(method="ListController.list") 注意,权限依赖不支持级联依赖,只能依赖一次。
菜单功能开发好后,功能入口需要注册菜单才可以显示在菜单选项中。
链接与小图标大图标均为url,如服务器路径功能链接为http://localhost/web/abc/dd/ccc只需要填写abc/dd/ccc图片上传引入js:default/js/ajaxfileupload.js。