OA项目之审批流转
今天是OA项目的最后一个模块,其业务流程是员工提交申请-à部门经理-à ,这期间要经过的人不一样,有的要经过一个审批就OK了,而有的得经过3个以上的人审批才行。实现审批流转有4个要求:
1.方便的定义/x修改 与 管理
流程定义
2. 方便的定义/x修改 与 管理
表单模版
3.执行审批流转
4.方便的查询所有的 表
单实例 (数据)记录(查询流转过的表单)
业务流程如同前天已画的图:
员工提交申请,后面的环节就会按照我们定义
好的流程走了
所有的表单都要分页
今天做审批管理,它包含审批流程管理和表单
模版管理
1.设计实体,
2.创建一个Action ,也和前面的一样CRUD,只是在列表时加了个分页,多添
加了个查看流程文件(processdefinition.xml)
中,查看流程图片
3.分页设计:因为所有页面都要用,所以写成公共的,但超链接不一样
如图:
分页主要代码:
// 用户指定
private int pageSize;
private
int currentPage;
//
查询数据库
private
int recordCount;
private
List recordList;//当前页的所有pd
//
计算
private
int totalPage;
private
int startPageIndex;
private
int endPageIndex;
/**
* 计算指定页中第一条记录的索引
*/
public static int
clacFirstResult(int pageNum, int pageSize) {
return
(pageNum
- 1) * pageSize;
}
public
PageView(int
pageSize, int currentPage, int recordCount, List recordList) {
this.pageSize
=
pageSize;
this.currentPage
=
currentPage;
this.recordCount = recordCount;
this.recordList
=
recordList;
//
计算
totalPage,
startPageIndex, endPageIndex;
totalPage
=
(recordCount + pageSize - 1) / pageSize;
startPageIndex
=
1;
endPageIndex
=
totalPage;
if
(totalPage
> 10) {
//
正常显示当前页附近的共10个页码,当前页属于前半部分
startPageIndex
= currentPage - 4;
endPageIndex
= currentPage + 5;
//
(前面不足4个)显示前10个页码
if
(startPageIndex < 1) {
startPageIndex
= 1;
endPageIndex
= 10;
}
//
(后面不足5个)显示后10个页码
else
if (endPageIndex > totalPage) {
endPageIndex
= totalPage;
startPageIndex
= totalPage - 10 + 1; // 显示时包含开始与结
束的边界
}
}
}
之后测试分页
4.解决session问题:
由于在action中用到了session和jbpmContext,必须用一个session,才能保证是同一事务,在这里用jbpmContext得到session
5.Hibernate关于set list map的映射文件
以为例
class Person{
private
Set<String>
addressSet; // 收货地址
private
List<String>
addressList;
private
Map<String,
String> phoneNumberMap; // 电话号
集合,如:家庭 -- 010-12345678
}
<set name="addressSet"
table="itcast_addressSet">
<key
column="personId"/>
<element
type="string"
column="address"/>
</set>
<list name="addressList"
table="itcast_addressList">
<key
column="peronId"/>
<list-index
column="idx">
<element
type="string"
column="address">
</list>
表单流转
支持各种审批流程:JBPM
支持各种表单定义:表单中要填写的字段的数
量不同,类型也不一样,ActionForm当然不能用,按照上面的业务需求实现编码。
明天继续!
posted on 2010-02-07 23:46
d66380022 阅读(133)
评论(0) 编辑 收藏