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 閱讀(136)
評論(0) 編輯 收藏