EAS通用Query查詢開發(fā)指南_第1頁
EAS通用Query查詢開發(fā)指南_第2頁
EAS通用Query查詢開發(fā)指南_第3頁
EAS通用Query查詢開發(fā)指南_第4頁
EAS通用Query查詢開發(fā)指南_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、1. 1 大體原理通用查詢的實現(xiàn)是基于bos ,通過 bos 的 query 對象實現(xiàn)。2. 2 前提條件業(yè)務(wù)查詢是必須通過query 對象來完成(這里將作為通用查詢的傳入?yún)?shù))3. 3 簡單介紹通用查詢提供一個通用查詢面板commonquerypanel,它將查詢對象作為初始參數(shù)傳入并完成相應(yīng)的初始化過程,其主要構(gòu)造器:public commonquerypanel( entityviewinfo entityviewinfo, entityviewinfo lockedentityviewinfo, imetadatapk queryobjectpk, boolean showfilter

2、, boolean showsorter, boolean showtoolbar, boolean showbutton, iprocessor processor, ipromptboxfactory promptboxfactory, int width, int height ) throws basecommonqueryexception 它內(nèi)嵌了兩個panel(commonfilterpanel和 commonsorterpanel)分別實現(xiàn)了:一、通用過濾( commonfilterpanel) :類:實現(xiàn)接口:iqueryfilterpanel 根據(jù)查詢對象產(chǎn)生通用過濾界面,

3、用戶可根據(jù)查詢條件、邏輯關(guān)系設(shè)置查詢條件。用戶可以根據(jù)實際需要來決定是否加載它。二、通用排序( commonsorterpanel)類: 實現(xiàn)接口:iquerysorterpanel 根據(jù)查詢對象產(chǎn)生通用排序界面,用戶可根據(jù)排序字段設(shè)置排序方式。用戶可以根據(jù)實際需要來決定是否加載它。它還內(nèi)置了一個工具條與方案列表配套使用,用戶可以根據(jù)實際需要來決定是否加載它。類:使用工具條用戶可以讀取已有的查詢方案并可以對查詢方案進行維護。4. 4 使用方法及代碼示例通用查詢對話框commonquerydialog 接口類:commonquerydialog 接口作用:該類為通用查詢對話框。/* *顯示通用查

4、詢界面 */ public boolean show() /* * 獲得通用查詢結(jié)果的過濾信息 * return */ public entityviewinfo getentityviewinforesult() /* * 獲得用戶自定義panel * return */ public arraylist getuserpanels() /*設(shè)置通用查詢父窗口對象,一般為 this * param component */ public void setowner(component component) /*設(shè)置通用查詢對話框標(biāo)題 * param string */ public void

5、 settitle(string string) /*設(shè)置通用查詢對話框預(yù)設(shè)過濾條件 * param info */ public void setentityviewinfo(entityviewinfo info) /*將用戶自定義panel 添加到通用查詢對話框 * param list */ public void setuserpanels(arraylist userpanels) /*為通用查詢設(shè)置f7 控件工廠 * param factory */ public void setpromptboxfactory(ipromptboxfactory factory) /*設(shè)置通用

6、查詢所綁定的query * param datapk */ public void setqueryobjectpk(imetadatapk datapk) /*設(shè)置是否顯示通用過濾頁簽,默認(rèn)顯示 * param b */ public void setshowfilter(boolean b) /*設(shè)置是否顯示通用排序頁簽,默認(rèn)顯示 * param b */ public void setshowsorter(boolean b) /*設(shè)置是否顯示通用工具欄及方案列表,默認(rèn)顯示 * param b */ public void setshowtoolbar(boolean b) /* * 增

7、加一個用戶自定義panel 到通用查詢頁簽中 * param userpanel */ public void adduserpanel(kdpanel userpanel) /* * 清空所有的用戶自定義panel */ public void clearuserpanels() /* * 刪除用戶的自定義panel * param userpanel */ public void removeuserpanel(kdpanel userpanel) /* * 根據(jù) panel 類名獲得用戶自定義panel * param panelclassname * return */ public

8、kdpanel getuserpanel(string panelclassname) /* * 獲得指定索引的用戶自定義panel * param index * return */ public kdpanel getuserpanel(int index) /* * 設(shè)置通用查詢對話框的高度 * param i */ public void setheight(int i) /* * 設(shè)置通用查詢對話框的寬度 * param i */ public void setwidth(int i) /* * 獲得通用過濾面板的過濾信息 * */ public filterinfo getcomm

9、onfilter() /* * 獲得通用排序面板的排序信息 * */ public sorteritemcollection getcommonsorters() /* * 設(shè)置通用查詢中所使用的編輯器的處理器 * param processor */ public void setprocessor(iprocessor processor) /* * 獲得通用過濾面板 * return */ public commonfilterpanel getcommonfilterpanel() /* * 獲得通用排序面板 * return */ public commonsorterpanel g

10、etcommonsorterpanel() 例如代碼其過程是:調(diào)用通用查詢界面,該界面包含了通用過濾、通用排序及工具條,定制的查詢條件后,刷新綁定query 對象的 kdtable 。 et); (this); etname(); 設(shè)置是否顯示通用過濾頁簽,默認(rèn)顯示 (true); 設(shè)置是否顯示通用排序頁簽,默認(rèn)顯示 (true); 設(shè)置是否顯示通用工具欄及方案列表,默認(rèn)顯示 (true); refresh (); 通用查詢幫忙類commonqueryhelper (本接口不推薦使用,建議用戶使用通用查詢對話框commonquerydialog 的調(diào)用方式 , commonquerydialo

11、g會提供更多支持) 接口類:commonqueryhelper 接口作用:該類為通用查詢幫助類。接口方法:一、 public static boolean showdialog(commonqueryparam commonqueryparam,component owner) 作用:顯示通用查詢界面?zhèn)魅雲(yún)?shù):1) commonqueryparam:為通用查詢傳入?yún)?shù)對象它內(nèi)部有11個 attribute ,必須設(shè)置的attribute 有兩個 : private entityviewinfo entityviewinfo; private imetadatapk queryobjectpk;

12、 (查詢對象元數(shù)據(jù)pk, 必須)private boolean showfilter; (是否顯示通用過濾, 可不設(shè),默認(rèn)true)private boolean showsorter; (是否顯示通用排序, 可不設(shè),默認(rèn)true)private boolean showtoolbar; (是否顯示通用工具條, 可不設(shè),默認(rèn)true )private ipromptboxfactory promptboxfactory; (用戶的f7 控件工廠,可不設(shè),默認(rèn) null)private ipromptdialogfactory promptdialogfactory; (用戶的 f7 對話框工廠

13、 , 可不設(shè) ,默認(rèn) null) private iformator formator; (用戶的 f7 數(shù)據(jù)格式器 , 可不設(shè) ,默認(rèn) defaultformator) private arraylist panels = new arraylist(); private string dialogname = ; (對話框名稱 ,可不設(shè) ) (用戶自定義的查詢面板,根據(jù)自身業(yè)務(wù)需要可不設(shè))private object param; 用戶自定義查詢面板的參數(shù),該參數(shù)實現(xiàn)序列化接口,根據(jù)自身業(yè)務(wù)需要可不設(shè)) 2) owner: 為通用查詢的父窗口一般為傳this 即可返回值:用戶是否點擊通用查

14、詢的確定 按鈕。即:進行查詢動作(默認(rèn):不點擊確定按鈕) 二、 public static entityviewinfo getentityviewinforesult() 作用:獲得查詢所需的entityviewinfo對象返回值:通用查詢所構(gòu)成的entityviewinfo 示例代碼其過程是:調(diào)用通用查詢界面,該界面包含了通用過濾、通用排序及工具條,定制的查詢條件后,刷新綁定query 對象的 kdtable 。四、 public object getparam() 作用 : 該方法通用查詢調(diào)用。通用查詢在保存方案時,將會調(diào)用該方法獲取用戶的自定義參數(shù),并將其序列化保存至方案中。(用戶的自

15、定義參數(shù)為用戶自定義面板的全局變量)五、 public void setparam(object param) 作用 : 該方法通用查詢調(diào)用。通用查詢在載入方案時,會從方案中獲取用戶的自定義參數(shù),調(diào)用該方法將自定義參數(shù)賦給用戶的自定義面板。 (用戶的自定義參數(shù)為用戶自定義面板的全局變量)六、 public component getfocuscomponent(); 作用:用戶重載該方法,返回當(dāng)通用查詢展現(xiàn)時用戶希望焦點停留的控件。七、public void clear() 用戶可以重載該方法,reset 用戶面板的控件該方法在用戶點擊工具條的“ 新建 ” 按鈕時調(diào)用注意:通用查詢在通用查詢對

16、話框展現(xiàn)和方案載入時會調(diào)用用戶面板的onload() 方法,用戶可以在onload 時完成一些業(yè)務(wù)邏輯。例如代碼下面以 messagequerypanel為例getvalue return sic; (); ().append( ).append(#).append(0).append( ).append().append( ); if != null) filteriteminfo = new filteriteminfo(, tostring(),(this. (); (and).append( ).append(). append( ).append(#).append(1).appen

17、d( ).append().append( ); if != null & !) filteriteminfo = new filteriteminfo(, . getselecteditem(); int index = 1; if().indexof(#1) 0) index = 2; else index = 1; (and).append( ).append(). append( ).append(#).append(index).append( ).append().append( ); string strformula = (); return ; etfilterite

18、ms(); for(int i = 0; i (); i+) filteriteminfo filteriteminfo = (i); if().equalsignorecase() (commonqueryutil. getcommonquerycomparesign(); ( ().tostring(); else if().equalsignorecase() (commonqueryutil. getcommonquerycomparesign(); ().tostring(); sorteritemcollection currentsorteritemcollection = ()

19、; for(int i = 0; i () ; i+) sorteriteminfo sorteriteminfo = (i); if().equalsignorecase() (commonqueryutil. getcommonquerysortersign(); 通用查詢擴展屬性列表用戶對通用查詢的定制,需要通過配置元數(shù)據(jù)的擴展屬性來完成。擴展屬性名稱所在位置作用iscommonqueryfilter 查詢對象是否參加通用查詢過濾查詢對象字段的擴展屬性設(shè)置查詢對象字段是否參加通用查詢過濾iscommonquerysorter 查詢對象是否參加通用查詢排序查詢對象字段的擴展屬性設(shè)置查詢對象

20、字段是否參加通用查詢排序isusingf7 查詢對象屬性是否使用f7 查詢對象字段的擴展屬性設(shè)置查詢對象的連接屬性是否需要使用f7 displayformat f7 或簡單實體的顯示格式查詢對象字段的擴展屬性f7 和下拉框(簡單實體時)的顯示格式,和通用f7 格式相同editformat f7 編輯格式查詢對象字段的擴展屬性f7 的編輯格式,和通用f7 格式相同commitformat f7 數(shù)據(jù)提交格式查詢對象字段的擴展屬性f7 數(shù)據(jù)提交格式,和通用f7 格式相同defaultf7query f7 默認(rèn)的查詢對象查詢對象字段的擴展屬性當(dāng)查詢對象的連接屬性調(diào)用f7 時,設(shè)置該f7 綁定的查詢對

21、象issimpleentity 是否為簡單實體查詢對象中的連接屬性所在實體的擴展屬性設(shè)置該連接屬性所對應(yīng)的實體是否為簡單實體,如果為簡單實體,則此時連接屬性使用下拉框的形式,不使用f7 defaultf7ui 默認(rèn)的 f7 對話框查詢對象字段的擴展屬性設(shè)置該查詢對象的字段所使用的f7 對話框(值為該對話框的類名),該屬性一般用于設(shè)置復(fù)雜f7(如:組織架構(gòu)f7,科目 f7 等) 西方失敗2009-06-24 23:07: 通用查詢字段的定制用戶可以定制查詢對象中的字段是否參加過濾和排序用戶如果想定制query 一些字段在通用查詢中顯示出來,可以通過定制查詢對象屬性的擴展屬性來實現(xiàn)。以查詢對象ex

22、pensereqbillquery 中的為例,如果該字段需要參加過濾和排序,需要配置以下擴展屬性(注意擴展屬性名的大小寫) a) iscommonqueryfilter 是否參加過濾(true 或 fasle)b) iscommonquerysorter 是否參加排序(true 或 fasle )配置完成后,相應(yīng)的字段將會作為通用查詢一個過濾或排序條件對 f7 的支持如果查詢對象中的連接屬性需要以f7 的形式展現(xiàn),用戶可以通過對元數(shù)據(jù)擴展屬性的配置,來定制f7 的屬性。以查詢對象expensereqbillquery 中的為例如果該屬性需要調(diào)用f7,則需要為f7 配置以下擴展屬性(注意擴展屬性

23、名的大小寫) a) isusingf7 該屬性是否使用f7( true 或 fasle )b) displayformat f7 顯示期格式格式(和通用 f7 的使用方式相同) c) editformat f7 編輯期格式 (和通用f7 的使用方式相同) d) commitformat f7 數(shù)據(jù)提交格式 (和通用 f7 的使用方式相同) e) defaultf7query f7 綁定的查詢對象(查詢對象的全名)f) defaultf7ui f7的對話框(根據(jù)需要,可不設(shè)置)一般來說,查詢對象中的連接屬性需要的f7 都可以通過元數(shù)據(jù)的配置來完成。如果f7 較復(fù)雜如組織架構(gòu)f7,由于 f7 不能

24、通過一個查詢對象來實現(xiàn),這時需要設(shè)置defaultf7ui擴展屬性,其值為該f7 的對話框的類名。此外我們也可以通過f7 控件工廠來實現(xiàn)。4. f7 控件工廠ipromptboxfactory 大多數(shù)特殊f7 都可以通過定制擴展屬性defaultf7ui來實現(xiàn),因此該類的作用被弱化,但該接口仍具有一定的擴展性。接口類:ipromptboxfactory 接口作用:該接口為通用f7 控件工廠。用戶傳入通用查詢的查詢對象的連接屬性將會被以f7 的方式調(diào)用,用戶根據(jù)每個連接屬性所關(guān)聯(lián)的查詢對象來實現(xiàn)相關(guān)的f7 控件的 create 方法。接口方法:public kdpromptbox create(

25、string f7queryname, queryinfo mainquery, string queryfieldname); 作用:創(chuàng)建 f7 控件實例。特別注意:非用戶自定義的f7 控件實例一律返回null 傳入?yún)?shù):f7queryname: f7控件所對應(yīng)的查詢對象mainquery: 通用查詢的查詢對象queryfieldname: 查詢對象屬性名(非別名)返回值:某個實體的f7 控件實例例如代碼如果用戶使用到復(fù)雜的f7,如組織架構(gòu)(該f7 不能使用通用f7 的定制來實現(xiàn)) ??梢允褂胒7 控件工廠。我們還是需要在查詢對象屬性的擴展屬性中定義defaultf7query,該查詢對象可

26、以是一個不存在query ,如下列中。此 query 并不存在,僅僅作為f7 控件工廠類的一個判別條件。用戶通過條件不同創(chuàng)建一些特殊的f7。如果不需要在工廠類中創(chuàng)建的f7,請返回 null,( 通過查詢?nèi)绻麤]有在工廠類獲得用戶個性化定制的f7,會根據(jù)用戶在元數(shù)據(jù)的配置動態(tài)創(chuàng)建f7) public kdpromptbox create(string f7queryname, queryinfo mainqueryinfo, string queryfieldname) kdbizpromptbox promptbox = null; costcenter類型的 f7 接口類:iprocessor

27、 接口作用:該接口為通用查詢編輯器的預(yù)處理器。接口方法:/* * 對編輯器的預(yù)處理 * throws exception */ public void process() throws exception; /* * 設(shè)置預(yù)處理器中的對象或?qū)傩?當(dāng)前的查詢字段,當(dāng)前的編輯器等等) * 這里采用key-value 的 set 和 get 方式主要是為了保證接口的穩(wěn)定性 * param key * param object */ public void set(string key, object object); /* * 獲得預(yù)處理器中的對象或?qū)傩?當(dāng)前的查詢字段,當(dāng)前的編輯器等等) * 這里

28、采用key-value 的 set 和 get 方式主要是為了保證接口的穩(wěn)定性 * param key * return */ public object get(string key); iprocessor的使用方法:用戶需要繼承抽象類,并完成process() 方法即可。commonqueryprocessor目前有三個key,用戶可以使用接口的get 方法獲得相應(yīng)的對象或?qū)傩?。它們是?* * 通用查詢面板 */ protected final static string comm; /* * 當(dāng)前過濾字段 */ protected final static string curren

29、t_field_prop = current_field_prop; /* * 當(dāng)前編輯器 */ protected final static string current_editor = current_editor; 示例代碼場景及作用:用戶以過濾時使用了f7, 并且要對該f7 的選擇范圍作限制。public class commonqueryprocessorexample extends commonqueryprocessor /* *該方法用戶完成,實現(xiàn)對編輯器的預(yù)處理邏輯. *從用戶的自定義面板中獲得某個值,將其值構(gòu)造成entityviewinfo ,設(shè)置到通用查詢的某個f7

30、中。*/ public void process() throws exception et(0); 例如 :如果查詢對象的某個屬性需要以幣種來過濾,由于幣種較簡單,不需要使用f7,以下拉框的形式展現(xiàn)即可。則需要對幣種實體進行配置。以幣種為例,在幣種的實體上定義以下擴展屬性a) issimpleentity 是否為簡單實體(true 或 false) 這時查詢對象的屬性將會下拉框的形式展現(xiàn),如果需要設(shè)置下拉框數(shù)據(jù)的顯示別名可通過查詢對象屬性的擴展屬性displayformat, 設(shè)置格式同 f7。將通用查詢嵌入用戶界面將通用查詢嵌入用戶panel 中,有三種方式1、需要排序和過濾使用 comm

31、onquerypanel /* * 創(chuàng)建一個通用查詢面板 * param entityviewinfo 查詢對象的預(yù)設(shè)過濾信息 * param lockedentityviewinfo 固定的過濾條件 * param queryobjectpk 查詢對象 pk * param showfilter 是否顯示過濾面板 * param showsorter 是否顯示排序面板 * param showtoolbar 是否現(xiàn)實工具條 * param showbutton 是否顯示確定取消按鈕 * param processor 通用查詢編輯控件的預(yù)處理器 * param promptboxfactor

32、y f7 控件工廠 * param width 面板寬度 * param height 面板高度 * throws basecommonqueryexception */ public commonquerypanel( entityviewinfo entityviewinfo, entityviewinfo lockedentityviewinfo, imetadatapk queryobjectpk, boolean showfilter, boolean showsorter, boolean showtoolbar, boolean showbutton, iprocessor pr

33、ocessor, ipromptboxfactory promptboxfactory, int width, int height ) throws basecommonqueryexception /* * 創(chuàng)建一個通用查詢面板 * param entityviewinfo 查詢對象的預(yù)設(shè)過濾信息 * param queryobjectpk 查詢對象pk * param showfilter 是否顯示過濾面板 * param showsorter 是否顯示排序面板 * param showtoolbar 是否現(xiàn)實工具條 * param showbutton 是否顯示確定取消按鈕 * par

34、am promptboxfactory f7 控件工廠 * param width 面板寬度 * param height 面板高度 * throws basecommonqueryexception */ 西方失敗2009-06-24 23:12: public commonquerypanel( entityviewinfo entityviewinfo, imetadatapk queryobjectpk, boolean showfilter, boolean showsorter, boolean showtoolbar, boolean showbutton, ipromptbox

35、factory promptboxfactory, int width, int height ) throws basecommonqueryexception /* * 創(chuàng)建一個通用查詢面板 * param entityviewinfo 查詢對象的預(yù)設(shè)過濾信息 * param queryobjectpk 查詢對象pk * param showfilter 是否顯示過濾面板 * param showsorter 是否顯示排序面板 * param showtoolbar 是否現(xiàn)實工具條 * param showbutton 是否顯示確定取消按鈕 * param promptboxfactory

36、 f7 控件工廠 * throws basecommonqueryexception */ public commonquerypanel(entityviewinfo entityviewinfo, imetadatapk queryobjectpk,boolean showfilter,boolean showsorter,boolean showtoolbar, boolean showbutton,ipromptboxfactory promptboxfactory) throws basecommonqueryexception /* * 創(chuàng)建一個通用查詢面板 * param ent

37、ityviewinfo 查詢對象的預(yù)設(shè)過濾信息 * param queryobjectpk 查詢對象pk * throws basecommonqueryexception */ public commonquerypanel(entityviewinfo entityviewinfo,imetadatapk queryobjectpk) throws basecommonqueryexception /* * 創(chuàng)建一個通用查詢面板 * param entityviewinfo 查詢對象的預(yù)設(shè)過濾信息 * param queryobjectpk 查詢對象pk * param promptbox

38、factory f7 控件工廠 * throws basecommonqueryexception */ public commonquerypanel(entityviewinfo entityviewinfo, imetadatapk queryobjectpk,ipromptboxfactory promptboxfactory ) throws basecommonqueryexception /* * 創(chuàng)建一個通用查詢面板 * param entityviewinfo 查詢對象的預(yù)設(shè)過濾信息 * param queryobjectpk 查詢對象pk * param showfilte

39、r 是否顯示過濾面板 * param showsorter 是否顯示排序面板 * param showtoolbar 是否現(xiàn)實工具條 * throws basecommonqueryexception */ public commonquerypanel(entityviewinfo entityviewinfo, imetadatapk queryobjectpk,boolean showfilter,boolean showsorter, boolean showtoolbar) throws basecommonqueryexception /* * 創(chuàng)建一個通用查詢面板 * param entityviewinfo 查詢對象的預(yù)設(shè)過濾信息 * param queryobjectpk 查詢對象pk * param showfilter 是否顯示過濾面板 * param showsorter 是否顯示排序面板 * param showtoolbar 是否現(xiàn)實工具條 * param showbutton 是否顯示確定取消按鈕 * throws basecommonqueryexception */ public commonquerypanel(entityviewinfo entityviewinfo,imetadat

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論