隨筆-19  評論-128  文章-1  trackbacks-0

          obpm一鍵生成視圖功能原理

          在obpm系統后臺表單右上角有一個“一鍵生成視圖”功能。實現它的真正目的是為了后臺管理人員方便從實現好的表單中快速生成所有帶值的列的視圖。這樣管理人員就不需要手工新建視圖,然后再添加視圖中的帶值的列。

          實現原理圖:

          在實現原理圖中,我們發現沒有視圖中并沒有不帶值Field4相應的Column4在視圖中,這是因為在視圖中是要根據不同Column顯示不同的值的。如果Column是不帶值的話,那么視圖中就不應該要這個Column,即使是要了,在視圖中沒有意義了。

          實現原理代碼:

          其中代碼路徑是:src-java-cn-myapps-core-dynaform-form-ejb-FormProcessBean.java

          /**

               * 根據表單編號來生成視圖

               * @param formid 表單編號

               * @throws Exception

               */

              public Form oneKeyCreateView(String formid) throws Exception {

                     FormProcess formPross = (FormProcess) ProcessFactory.createProcess(FormProcess.class);

                     ViewProcess viewPross = (ViewProcess) ProcessFactory.createProcess(ViewProcess.class);

                    

                     Form form = (Form) formPross.doView(formid);//獲得form

                     Collection formfield=form.getValueStoreFields();//獲得form存儲值的field

                    

                     //新建視圖

                     View view = new View();

                     if (view.getId() == null || view.getId().trim().length() <= 0) {

                        view.setId(Sequence.getSequence());//設置視圖的ID

                        view.setSortId(Sequence.getTimeSequence());//設置視圖的排序ID     }

                      view.setName(form.getName());//把表單的名字賦給視圖

                      view.setOpenType(view.OPEN_TYPE_NORMAL); //設置視圖打開類型-普通類型

                      view.setLastmodifytime(new Date());//最后修改日期

                      view.setApplicationid(form.getApplicationid());//把表單應用程序Id賦給視圖的應用程序Id

                      view.setModule(form.getModule());//把表單模塊Id賦給視圖的模塊ID

                      view.setPagelines("10");//設置視圖的分頁每頁顯示10條數據

                      view.setShowTotalRow(true); //是否顯示總共條數數據

                      view.setPagination(true); //是否分頁顯示

                      view.setRelatedForm(form.getId());//把表單ID賦給視圖的映射表單,從而映射了該表單

                    

                     

                      //將表單中對應有值的列轉換為視圖的列

                      int i=0;

                     for(Iterator iterator=formfield.iterator();iterator.hasNext();){

                        FormField field=(FormField)iterator.next();

                       

                        Column column = new Column();

                        if (column.getId() == null || column.getId().trim().length() <= 0) {

                        column.setId(Sequence.getSequence());

                        column.setOrderno(i);

                        }

                        if(field.getDiscript()!=null && !field.getDiscript().equals("")){//如果該表單中帶值Field有描述的話,就作為視圖Column,否則的用Field名稱

                        column.setName(field.getDiscript());

                            }else{

                        column.setName(field.getName());

                            }

                        column.setFormid(form.getId());//把表單中的ID賦給Column的表單ID

                        column.setApplicationid(form.getApplicationid());//把表單中應用程序的ID賦給Column的表單應用程序ID

           

                        column.setFieldName(field.getName());  //把表單中的名稱賦給Column的表單名稱

           

                        column.setParentView(view.getId());//將視圖ID賦給Column的父視圖

           

                       

                        view.getColumns().add(column); //將視圖和Column關聯

                        i++;

                     }

                    

                    

                     //分別創建兩個按鈕  新建,刪除

                     Activity activityCreate = new Activity();

                     if (activityCreate.getId() == null || activityCreate.getId().trim().length() <= 0) {

                        activityCreate.setId(Sequence.getSequence());

                        activityCreate.setOrderno(0);

                     }

                     activityCreate.setApplicationid(form.getApplicationid());

                     activityCreate.setName("新建");

                     activityCreate.setParentView(view.getId());

                     activityCreate.setType(ActivityType.DOCUMENT_CREATE);

                     activityCreate.setOnActionForm(form.getId());

                    

                     view.getActivitys().add(activityCreate); //將視圖和新建按鈕關聯

                    

                    

                     Activity activityDelete = new Activity();

                     if (activityDelete.getId() == null || activityDelete.getId().trim().length() <= 0) {

                        activityDelete.setId(Sequence.getSequence());

                        activityDelete.setOrderno(1);

                     }

                     activityDelete.setApplicationid(form.getApplicationid());

                     activityDelete.setName("刪除");

                     activityDelete.setParentView(view.getId());

                     activityDelete.setType(ActivityType.DOCUMENT_DELETE);

                    

                     view.getActivitys().add(activityDelete); //將視圖和刪除按鈕關聯

                    

                    

                     viewPross.doCreate(view); //創建視圖

                      return form;

              }

           

          后臺效果圖:

          表單:

          視圖:

          視圖列:

          視圖按鈕:

          前臺效果:

          視圖:

           

          表單:

           

           

          原創人員:Denny


          文章來源:http://www.cnblogs.com/obpm/archive/2010/07/12/1775453.html
          posted on 2010-07-12 02:08 obpm 閱讀(418) 評論(0)  編輯  收藏 所屬分類: 表單 、視圖

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 新丰县| 桃园县| 丹江口市| 梁河县| 大渡口区| 西乡县| 松原市| 天柱县| 衡水市| 光山县| 龙州县| 祁东县| 年辖:市辖区| 牙克石市| 苍南县| 大城县| 禄丰县| 谢通门县| 美姑县| 南澳县| 遂昌县| 疏勒县| 吕梁市| 静宁县| 淮阳县| 襄汾县| 北海市| 巴彦县| 德保县| 女性| 河源市| 安达市| 北海市| 班戈县| 伽师县| 奈曼旗| 清河县| 临泽县| 新邵县| 颍上县| 涿鹿县|