传智播客学习笔记6.2
JBPM
JbpmConfiguration.getInstance().createSchema();
创建表的时候最好指定统一的前缀(查找起来方便)
ctrl+shift+/:创建 /* */ 形式的注释
ctrl+shift+/:取消注释
使用两层架构:view + service(service+dao)
使用技术:struts1 + jstl1.1 + hibernate + jbpm
要完成的功能:
组织与人员管理
流程管理: 部署,删除,查看流程图片,查看流程定义文件,备份
流程监控: 用图形显示当前正在执行的节点。
流程: 请假的(审批)流程。
常见的是审批流程, 如经常提到的请假与报销等. 还有一些其它流程, 如开会的
流程为: 准备议题 --> 选择与会人员 --> 会议通知 --> 会议纪要 --> 发送会
议纪要给与会人员.
* 准备环境:
1,创建目录结构:
源码文件夹:src/java,src/process,src/config,test/java;
文档资料文件夹doc;
2,添加所使用的框架的环境:
a) 添加jar包:
struts(使用MyEclipse添加,这样他可以配置好配置文件);
jstl1.1;
jbpm3.2.2的jar包(包含了Hibernate3.2.3);
相应的jdbc驱动;
b) 添加配置文件:
jbpm.cfg.xml
hibernate.cfg.xml
log4j.properties
c) 解决struts1.2.9中的commons-beanutils.jar与hibernate3.2中的
commons-collections.jar版本不匹配问题。
3,创建所用的数据库,修改hibernate.cfg.xml中的数据库连接信息,并生成相
应的数据库表。
* 部门人员职务
1,设计部门人员职务的实体:Department, User, Role. 并要求练习:1,搭建
环境。2,写映射文件并生成相应的数据库表。
2,分析部门有关的功能要求与显示页面,和表单的验证要求。然后由学员在自己
的工程中实现部门模块的功能。要做的工作有:1,使用view+serivce架构,
即在service 中直接使用Session;2,使用过滤器控制事务;3,完成分析的
部门有关的功能。
3,控制事务时实现,如果当前请求中没有用到session,就不会创建session和开
始事务,是通过ThreadLocal配合实现的。这时要注意在web容器中有一个线程
池的机制,就是说两次请求有可能是使用的同一个线程,这样就会出现第二次
请求使用的是第一次请求中已关闭的session,就会抛异常。可以在判断的时
候把条件改为当((session == null || !session.isOpen()) && create)成立
时才创建新的Session; 还要注意,在关闭session时一定要把当前线程对应
的session置为null。否则,后面使用同一个线程(此次请求中没有调用方法
getSession(true))的请求就有可能使用这个已关闭的session。如果在过滤
器中的chain.doFilter中没有用到session,因为getSession方法中的判断,
在chain.doFilter代码后的getSession(false)就可能会返回上一次请求(同
一个线程)中关闭的session。
疑问:
1、编辑部门信息时,如何默认选中当前的父部门?