隨筆-54  評論-0  文章-2  trackbacks-0

              

                                                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中用到了sessionjbpmContext,必須用一個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)  編輯  收藏
          主站蜘蛛池模板: 湛江市| 张家口市| 宝山区| 桂平市| 肥东县| 寻甸| 镇康县| 司法| 泽州县| 正蓝旗| 四子王旗| 淮阳县| 枞阳县| 宁波市| 承德市| 海晏县| 宕昌县| 德钦县| 保靖县| 吉林省| 台北县| 璧山县| 五常市| 龙川县| 沽源县| 安化县| 拜城县| 宝山区| 天峨县| 阿瓦提县| 美姑县| 宜兰市| 德清县| 峡江县| 岳阳县| 大埔县| 灵山县| 黄石市| 祁阳县| 郯城县| 从化市|