论文部分内容阅读
【摘 要】在黑龙江职业技术学院现行的教育评优工作中,绝大多数工作由人工完成,需要分配大量人力,对正常的工作造成影响且具有较高的成本;同时,由于评优工作本身较为复杂的流程,手工方式极有可能造成遗漏或错误,影响结果的正确性和公正性;再次,由于手工方式工作效率相对较低,整个评优工作往往1到2个月的时间才能完成。针对上述问题,结合该校在办公自动化建设方面的具体需求,本文针对模块代码实现进行分析,希望对类似系统开发人员有所帮助。
【关键词】角色;UML;逻辑处理;动态配置
一、JSF标签模块
本系统开发所需要的大部分页面标签已在JSF标准中定义,同时,本文也自定义了部分标签,以满足系统的实际需求。转换器的层次结构如图1所示。首先需要自定义独立的页面转换器,在JSF提供的日志转换器中,只允许Date类型的时间和字符串之间的转换,而本系统中,时间采用Calendar类型保存以使其更精确。
图1 转换器层次结构图
另外,对于JSF生命周期的转换,还需要设置监听器进行监听,生命周期监听器的层次结构如图2所示。其中,LoginListener负责检查当前用户是否已经登录,类似于传统的Filter实现,而NoCacheListener负责清除浏览器的缓存,保证页面更新,同时,由于不同浏览器对页面的解析有所差别,尤其是IE 6中对于xhtml/xml页面的处理会有问题,此处将response的header中的Content-Type属性强制设置为text/html,也正是为了处理这个问题,本系统将默认的.jsf后缀改为.html后缀,伪装称为简单的html页面。
图2声明周期监听器层次结构图
二、JSF受管Bean模块
本文将各个具体的受管Bean中的公共的屬性和方法抽取出来,作为一个抽象的Java类SuperBean。PageBean也是一个抽象类,主要包含了分页逻辑处理,数据项较多的列表页面的受管Bean都继承此类。
基础功能受管Bean类和评优功能受管Bean类的类图分别如图3和图4所示,这里,为了直观起见,省略了getters、setters等简单方法。
DictManageBean类的代码如下。
@ManagedBean(name=”minisys_DictManageBean”)
@SessionScoped
public class DictManageBean extends SuperBean{
private static final long serialVersionUID =1L;
private final EntityEvent event=new EntityEvent(this, SysDict.class);
@EJB(name =”minisys/DictManageFacade”)
private DictManageFacade facade;
@ManagedProperty(value =”#{minisys_ApplicationBean}”)
private ApplicationBean miniApp;
private SysDict dict;
public DictManageBean(){
super();
}
public String prepareCreate(String groupName){
dict=new SysDict();
if (groupName!=null){
dict.setGroup(groupName);
}
return “/minisys/dict_manage?faces-redirect=true”;
}
//省略部分方法
}
图3 基础功能受管Bean类图
图4 评优功能受管Bean类图
课题来源:黑龙江省教育厅,项目编号:12535053。
【关键词】角色;UML;逻辑处理;动态配置
一、JSF标签模块
本系统开发所需要的大部分页面标签已在JSF标准中定义,同时,本文也自定义了部分标签,以满足系统的实际需求。转换器的层次结构如图1所示。首先需要自定义独立的页面转换器,在JSF提供的日志转换器中,只允许Date类型的时间和字符串之间的转换,而本系统中,时间采用Calendar类型保存以使其更精确。
图1 转换器层次结构图
另外,对于JSF生命周期的转换,还需要设置监听器进行监听,生命周期监听器的层次结构如图2所示。其中,LoginListener负责检查当前用户是否已经登录,类似于传统的Filter实现,而NoCacheListener负责清除浏览器的缓存,保证页面更新,同时,由于不同浏览器对页面的解析有所差别,尤其是IE 6中对于xhtml/xml页面的处理会有问题,此处将response的header中的Content-Type属性强制设置为text/html,也正是为了处理这个问题,本系统将默认的.jsf后缀改为.html后缀,伪装称为简单的html页面。
图2声明周期监听器层次结构图
二、JSF受管Bean模块
本文将各个具体的受管Bean中的公共的屬性和方法抽取出来,作为一个抽象的Java类SuperBean。PageBean也是一个抽象类,主要包含了分页逻辑处理,数据项较多的列表页面的受管Bean都继承此类。
基础功能受管Bean类和评优功能受管Bean类的类图分别如图3和图4所示,这里,为了直观起见,省略了getters、setters等简单方法。
DictManageBean类的代码如下。
@ManagedBean(name=”minisys_DictManageBean”)
@SessionScoped
public class DictManageBean extends SuperBean{
private static final long serialVersionUID =1L;
private final EntityEvent event=new EntityEvent(this, SysDict.class);
@EJB(name =”minisys/DictManageFacade”)
private DictManageFacade facade;
@ManagedProperty(value =”#{minisys_ApplicationBean}”)
private ApplicationBean miniApp;
private SysDict dict;
public DictManageBean(){
super();
}
public String prepareCreate(String groupName){
dict=new SysDict();
if (groupName!=null){
dict.setGroup(groupName);
}
return “/minisys/dict_manage?faces-redirect=true”;
}
//省略部分方法
}
图3 基础功能受管Bean类图
图4 评优功能受管Bean类图
课题来源:黑龙江省教育厅,项目编号:12535053。