版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、動態(tài)單據(jù)框架使用總結(jié)1、引言最近我們協(xié)同系統(tǒng)部辦公自動化組開發(fā)了一個流程管理模塊,使用了最新的動態(tài)單據(jù)框架,現(xiàn)在這個模塊已基本完成了一期的發(fā)布。整個開發(fā)過程,也是一個摸索和學(xué)習(xí)的過程,由于是一個新框架,說明文檔和參考資料也不是很多,其間我們也遇到過不少問題,也走了一些彎路,現(xiàn)在將我在整個開發(fā)過程中的體會記錄下來,以供自己和初次使用動態(tài)框架的同事參考。2、動態(tài)框架簡介動態(tài)單據(jù)框架是直接基于JSF和ExtJS開發(fā)的,而不是在WAF框架之上開發(fā)的,所以在性能方面相對要好很多。動態(tài)單據(jù)框架主要功能是讓我們可以通過設(shè)計器拖放和做一些配置來生成序時簿頁面和單據(jù)編輯頁面,而不需要像以前那樣手工寫bill.x
2、html頁面和后臺管理的BillBean,這些工作框架都幫我們做好了,如果要做一些通用功能之外的自定義操作,我們也只需要寫一個插件,并將操作寫在插件中就可以實現(xiàn)了。這樣就極大的簡化了開發(fā)單據(jù)的過程,提高了開發(fā)效率。3 、動態(tài)框架的使用1、動態(tài)單據(jù)的基本用法首先,創(chuàng)建所需實體。然后打開金碟EAS客戶端,在功能菜單中選系統(tǒng)平臺,再雙擊動態(tài)單據(jù)配置,如圖:然后再選擇要放到哪個子系統(tǒng)之下,確定之后出現(xiàn)如下界面:這就是我們設(shè)計動態(tài)單據(jù)的主界面了(做過Winform的朋友一定看出來了,這和Winform非常相似,也為我們提供相當(dāng)易用的人機(jī)界面,包括工具欄上的一系列布局按鈕,讓我們使用起來相當(dāng)方便),右邊的
3、子系統(tǒng)區(qū)域顯示了剛才所選的子系統(tǒng)下的所有動態(tài)單列表,我們可以在這修改已存在的單據(jù),也可以新建一個動態(tài)單據(jù)。點新建按鈕,選擇一個模板,確定就根據(jù)模板生成了一張新的動態(tài)單據(jù),我們也可以創(chuàng)建自已的模板,過程和新建單據(jù)基本一致,只要最后修改一下數(shù)據(jù)庫記錄即可,后面會談到這個。設(shè)計單據(jù)的過程比較簡單,從工具箱里拖出控件,在屬性面板中修改相應(yīng)的屬性,再保存,就可以了,這里只是重點提一下單據(jù)和控件的綁定,其它的在這不多涉及。首先要給單據(jù)綁定實體,選定單據(jù)(注意:不是選定控件,要選擇最外面的框),然后在屬性面板中點綁定實體右邊的按鈕(如左圖),彈出選擇業(yè)務(wù)對象對話框,在這里我們選擇最開始創(chuàng)建的實體,確定,就完
4、成了單據(jù)和實體的綁定。這樣我們的這張動態(tài)單據(jù)的序時簿和編輯界面就可以顯示和修改所綁定的實體的屬性了。然后點下面的操作列表,定義這張單可以執(zhí)行的據(jù)所有操作(如下圖)。這里框架給我們提供了20多種內(nèi)置的操作。我們在這選了單據(jù)所具有的操作功能(比如說保存操作),后面才能在給按鈕事件添加Action時調(diào)用單據(jù)的保存功能,這也包括在工具條上的按鈕要調(diào)用單據(jù)功能的情況。操作列表里的權(quán)限是指執(zhí)行某一操作所必須的權(quán)限項,如果為某個操作配了權(quán)限項,則框架在執(zhí)行這個操作之前會先驗權(quán),如果有相應(yīng)權(quán)限則執(zhí)行,沒有則拋出異常并終止執(zhí)行操作。檢查工作流是指在執(zhí)行操作前是否要先檢查該記錄有沒有在工作流之中,如設(shè)置為檢查則當(dāng)
5、該記錄已在工作流中時給出提示并取消操作,不在工作流中才往下執(zhí)行。單據(jù)中的控件都要和實體的一個屬性綁定,這樣才能在單據(jù)編輯頁面讀出實體的屬性值或在保存時將控件的值存入實體相應(yīng)屬性里。對于文本框和日期框等,當(dāng)我們點綁定實體屬性右邊的安鈕時,會自動找出該單據(jù)所綁定實體的所有字符屬性或日期屬性。下拉列表框則會找出所有枚舉屬性供選擇。對于基礎(chǔ)資料控件,除了綁定實體屬性外,還要選擇基礎(chǔ)資料類型和關(guān)聯(lián)的基礎(chǔ)資料字段名,實際上就是指定當(dāng)點擊這個F7控件時,要去找哪個基礎(chǔ)資料實體的哪個字段的值顯示在控件上。另外提一下默認(rèn)值的問題,我們可以給單據(jù)的某個或幾個字段設(shè)置默認(rèn)值,這樣當(dāng)新建單據(jù)時會自動為這個字段給上默認(rèn)
6、值,這對于一些不能讓用戶修改的字段如創(chuàng)建人等特別有用。設(shè)置默認(rèn)值只需要選中控件,在缺省值中填入要取的值即可。目前框架還沒有提供讓我們直接選擇就能設(shè)好默認(rèn)值的方法。我們只能手工輸入表達(dá)式來達(dá)到這個目的,下面是幾種常用的默認(rèn)值表達(dá)式寫法(照下面的輸入即可,不用改動):getUser(CONTEXT, Person) 取當(dāng)前登錄的職員getUser(CONTEXT, User)取當(dāng)前登錄的用戶getBillNumber(CONTEXT,THIS,MAINORG)自動生成單據(jù)編號getDate()取當(dāng)前日期getOrgUnit(CONTEXT, LoginOrg, MAINORGTYPE)取當(dāng)前登錄組
7、織在創(chuàng)建并保存了單據(jù)之后,我們就可以看到單據(jù)的序時簿界面和單據(jù)編輯界面了。鍵入以下地址就可以查看了:http:/localhost:6888/easweb/dynform/demo.jsf如上圖,就是剛剛創(chuàng)建的“導(dǎo)出測試”單據(jù)的序時簿界面,連快速查詢都幫我們生成了,同時我們也可以在左側(cè)的單據(jù)中找到“導(dǎo)出測試”的單據(jù)編輯界面。動態(tài)單據(jù)框架真是強(qiáng)大,我們沒有寫一行代碼就配出了序時簿和編輯界面,基本功能也都有了,如果摸熟了肯定會讓開發(fā)效率上一臺階的。2、動態(tài)單據(jù)框架使用進(jìn)階上面所說的只是動態(tài)單據(jù)框架的基本用法,我們要實現(xiàn)一些自定義的功能或其他操作,還要做這幾件事:給序時簿添加工具條,為序時簿和編輯頁
8、面寫插件,在插件中實現(xiàn)我們的功能,將插件注冊到單據(jù)。1)、給序時簿添加工具條按照以上步驟做出來的單據(jù)序時簿頁面是沒有如上圖中的查看,刪除,刷新等工具按鈕的,因為我們還沒有做相關(guān)配置。但是我們都知道,序時簿頁面的主要功能是要靠工具按鈕來實現(xiàn)的,如果沒有工具條,那我們在序時簿就只能簡單的查看一下記錄,做不了更多的事,這樣的序時簿顯然是不實用的。接下來我們就來讓工具條現(xiàn)身。很憒憾,目前框圖架還沒有提供設(shè)計界面來配置工具條(但是我們相信,動態(tài)框架很快就支持這個功能的),我們只能以手工方式來配置數(shù)據(jù)庫來達(dá)到這個目的。以下就詳細(xì)介紹如何配置數(shù)據(jù)庫來添加工具條,其中可能牽涉了多張表,因而會多花一些篇幅來介紹
9、表的結(jié)構(gòu)和各表之間的關(guān)系。我們或許可以認(rèn)為既然框架馬上就會提供設(shè)計界面來支持工具條了,那為什么還要花時間去了解這些表結(jié)構(gòu)呢,因為我們相信一個開發(fā)人員如果能更多的了解某個框架的底層技術(shù)細(xì)節(jié),那么他所開發(fā)出來的程序不管是在運(yùn)行效率上,還是在邏輯架構(gòu)和擴(kuò)展性方面,都會比一個完全不清楚框架的程序員所寫的程序要完善很多,同時了解框架構(gòu)成也有助于我們在開發(fā)時調(diào)錯。整個動態(tài)單據(jù)框架中最基礎(chǔ)的表要算T_BAS_Form表了,我們每創(chuàng)建一張動態(tài)單據(jù),都會在這個表里寫入一條記錄,包括動態(tài)單據(jù)的模板,也是在這張表里記錄著。它的主要字段如下:FID主鍵,唯一標(biāo)識,一個28位的字符串,在整個EAS系統(tǒng)中都是唯一的,這也
10、是其它表中所頻繁使用的FormID。FName_L1 動態(tài)單據(jù)名稱或模板名稱,F(xiàn)Name_L2和FName_L3是多語言的名稱FElementTypeIDForm類型,一般我們創(chuàng)建的單據(jù)(在這也可以稱Form)這個字段的值是100,如果我們在保存了單據(jù)之后,再手工把單據(jù)的這個字段改成-100(或是小于0的其它整數(shù)),那么這張單就會成為模板,我們在上面第二張圖的子系統(tǒng)里將不會再看到FElemetTypeID為負(fù)數(shù)的單據(jù),而是會在點設(shè)計器的新建時會看到這張單已經(jīng)顯示在右邊的模板里面了,(如下圖)小技巧:當(dāng)我們開發(fā)時要做2張或2張以上比較相似的單據(jù),只有少量字段不同,我們可以先做一張,然后將這張單的
11、FElementTypeID改為-100,再點新建,以剛才那張單為模板復(fù)制一張新單,稍做修改,最后再把第一張單的FElementTypeID改回100就可以了,這樣會大大減少開發(fā)相似單據(jù)的工作量。FBosType動態(tài)單據(jù)所綁定的實體的BosType,就是我們最開始所創(chuàng)建的實體的BosType,然后在上面用設(shè)計器綁定到了這張單上。FPermissionItem權(quán)限項字段FVersionForm 的版本號,是一個Timestamp值,當(dāng)我們做完下面的步驟,配好工具條后,刷新或重啟IE,可能發(fā)現(xiàn)工具條并沒有出現(xiàn),只有重啟服務(wù)器之后才會出現(xiàn),但是這樣影響開發(fā)效率,這時我們只需要改一下Form的FVer
12、sion值,再刷新IE就會看到了。其他的一些修改也是如此。FSubsysID子系統(tǒng)ID,記錄單據(jù)是屬于哪個子系統(tǒng),二級子系統(tǒng)可以到T_BAS_FormSubSystem表中查,一級子系統(tǒng)可以到T_BAS_FormTopClass表是查。FTemplateID如果單據(jù)是從模板新建的,將會把模板的FID寫到這里,否則為空T_BAS_FormEntity表,記錄了Form對應(yīng)的實體,F(xiàn)TableName是單據(jù)綁定的實體對應(yīng)的實體表名,F(xiàn)BosType和FFormID字段都和T_BAS_Form表相對應(yīng)。 T_BAS_FormField表,記錄動態(tài)單據(jù)的所有字段信息,主要字段如下:FFormID該字段
13、是屬于哪一個Form的FKey字段的key值,也就是在設(shè)計器中該控件的“標(biāo)識”屬性的值,在插件編程時會用到key值來標(biāo)識該控件。FFieldName該控件所綁定的實體屬性所對應(yīng)的實體表的字段名,也就是在設(shè)計器為控件綁定實體屬性之后,在字段名中所顯示的值(灰色,不可更改)FElementTypeID控件類型,是文本框還是下拉框,可以在T_BAS_ElementType表中查FDataScope取值范圍,示例:0,255表示可以取0-255之間的值FLookUpObjectID針對F7字段,確定點F7時彈出窗口要使用哪個查詢,對應(yīng)于T_BAS_LookUpClass表的FID,如一個行政組織的F7
14、他的FLookUPObjectID是0,查T_BAS_LookUpClass表,對應(yīng)的QueryInfo就是.app.AdminOrgUnitQueryFControlFieldKey主要用在字段值攜帶時,設(shè)置當(dāng)哪個key值的字段發(fā)生變化時,要相應(yīng)改變本字段的值,要配合FPropertyName,F(xiàn)RefPropertyName和FLink字段一起使用FDefValue控件的默認(rèn)值,寫法參見上面說明FEnumType針對下拉列表字段,跟FLookUpObjectID一樣,標(biāo)識要使用哪個枚舉,在這要查T_BAS_FormEnum表T_BAS
15、_FormFunction表,框架內(nèi)置函數(shù)表,記錄了當(dāng)前動態(tài)單據(jù)框架所支持的內(nèi)置函數(shù)及用法示例,之前所介紹的默認(rèn)值的用法,我們也可以在這張表里查到,以后如果框架添加了新的內(nèi)置函數(shù),也可在這里看到。T_BAS_FormOperation表,單據(jù)功能操作列表,我們在為單據(jù)綁定操作列表時(如上面的操作列表選擇圖),所選的操作,都會在這個表中生成一條相關(guān)記錄,代表了這個Form所能調(diào)用的單據(jù)功能有哪些,目前一共有25種操作,可以在T_BAS_FormOperationType表中查詢。FFormID單據(jù)的formIDFPermissionItem權(quán)限項,如果配了,則操作前要先驗權(quán)FStateField
16、操作執(zhí)行后要更改的字段名,如沒有,則空。比如說我們在提交操作之后要將工作流狀態(tài)字段置1,則這里填工作流狀態(tài)字段名FworkflowStatus,在下面的FSuccessSateValue中填1FSuccessSateValue操作成功后要將FStateField所設(shè)定的字段更改為的目標(biāo)值。FFailedSateValue操作失敗后要將FStateField所設(shè)定的字段更改為的目標(biāo)值。FOperationID操作代碼,對應(yīng)T_BAS_FormoperationType的FID字段FCheckWfState操作前是否檢查工作流狀態(tài),-1為默認(rèn),0為不檢查,1為檢查T_BAS_Formoperati
17、onType表,F(xiàn)Operation操作標(biāo)識,我們在后面的T_BAS_FormActionList 表中調(diào)用單據(jù)功能時,配FParaments參數(shù),要和這里相對應(yīng)。FName_L2操作名,F(xiàn)Name_L1,F(xiàn)Name_L3為多語言FIsConfirm操作前是否要確認(rèn),0為不要,1為要確認(rèn)FEnabledState在哪種單據(jù)狀態(tài)中可用,VIEW查看頁面,ADDNEW新建頁面,EDIT編輯頁面T_BAS_FormLayout表,記錄了Form的顯示樣式的一些參數(shù),如標(biāo)題,F(xiàn)orm的高度和寬度,每頁行數(shù)等信息。T_BAS_FormLayoutField表,記錄了每個字段的顯示樣式參數(shù),如文本,大小,
18、顏色,位置,順序,是否鎖定,可見性等。T_BAS_FormConsoleGroups表,以流程管理為例,如下圖,定義了流程管理模塊左邊樹形導(dǎo)航的根節(jié)點。FName_L2是顯示的文本,F(xiàn)IsExpanded定義初始時是否展開。T_BAS_FormTreeNode表,定義導(dǎo)航樹的下級節(jié)點,如上圖,我的流程,我審批的流程,基礎(chǔ)設(shè)置這3個的FParentID都指向T_BAS_FormConsoleGroups中所定義的流程管理的FID,而新建,草稿,進(jìn)行中,已完成的FParentID都指向T_BAS_FormTreeNode表中我的流程的FID,它們的FConsoleGroupID才是指向T_BAS_
19、FormConsoleGroups中所定義的流程管理的FID,這就確定也樹節(jié)點之間的層次關(guān)系。FIsExpanded設(shè)置初始時是否展開該節(jié)點,1為展開,0為不展開。如上圖所示,“我的流程”的FIsExpanded設(shè)為1,剛打開頁面時將看到我的流程節(jié)點已經(jīng)是展開的了。FIsLeaf表示是否是葉節(jié)點,只有葉節(jié)點Furl字段才有值,定義點了草稿之后要轉(zhuǎn)向哪個URL(在右邊的框架中打開,而不是在整個窗口中打開)。前面提到過了,我們可以在這個地址查看我們所創(chuàng)建的動態(tài)單據(jù)的序時簿和編輯界面http:/localhost:6888/easweb/dynform/demo.jsf,但這只是個演示地址,在實際的
20、應(yīng)用中我們可以用如下URL訪問:30:6999/easweb/servlet/ListServlet?formID=svlnODODSJOEAYSjEzgWzpp%2BrpI%3D上面這個就是我們流程管理模塊的草稿這張動態(tài)單據(jù)的序時簿URL,只要在ListServlet后面加上formID參數(shù)就可以了,這個formID正是我們在T_BAS_Form表中草稿的FID,不過對其進(jìn)行了URL編碼,將一些特殊字符轉(zhuǎn)換了一下。http:/localhost:6888/easweb/servlet/BillServlet?status=EDIT&formID=svlnO
21、DODSJOEAYSjEzgWzpp%2BrpI%3D&fromList=false&layoutID=fjtykhjkDSJhgS76zpp%2BrpI%3D&sourcePK=gkjJOEAYSjEzhhzpp%2BrpI%3D&上面這個就是我們草稿的編輯頁面的URL,在BillServlet后加上formID,layoutID,sourcePK幾個參數(shù)就可以了,sourcePK是指草稿所對應(yīng)的實體表中的FID,以標(biāo)明我們是要查看哪一條記錄的詳情。Status取EDIT是編輯頁面,可以修改和保存,取VIEW是查看頁面,只能查看,不能保存。以上介紹了下幾張基礎(chǔ)表,接下來的這幾張表就跟工具息息
22、相關(guān)了。T_BAS_FormMenu表,定義了每一個Form對應(yīng)的工具條的ID(FMenuID),F(xiàn)Type是用來標(biāo)識工具條類型的,2表示工具條將顯示在序時簿頁面,1表示工具條顯示在編輯頁面。我們用的多的一般是序時簿工具條。T_BAS_BarItem表,工具條按鈕表,定義了工具條上都有哪些按鈕。主要字段如下:FMenuID按鈕是屬于哪個菜單的,與T_BAS_FormMenu的FMenuID相對應(yīng)FCaption_L2按鈕顯示的文字,F(xiàn)Caption_L1和FCaption_L3是多語言文字。FName按鈕的標(biāo)識,在后面的按鈕Action表中要用到,在插件中也會用得到。FEnabled是否啟用F
23、Visible可見性FStyle類型,一般的按鈕為0,代表整個工具條的為12,相當(dāng)于按鈕的容器,每個MenuID一般只有一個FStyle為12的。T_BAS_BarItemLink表,工具條按鈕關(guān)系表,定義了工具條按鈕是否顯示在工具條上,和顯示的順序等,主要字段如下:FMenuID對應(yīng)T_BAS_BarItem表的FMenuID字段。FBarItemID對應(yīng)T_BAS_BarItem表的FID字段,填寫FStyle為0的FIDFParentID也是對應(yīng)T_BAS_BarItem表的FID字段,不過我們在這個字段填寫的是在T_BAS_BarItem表中FStyle為12的那條記錄的FID,也就是
24、說要填寫按鈕容器的FID,這樣就把一個個按鈕加入到了工具條中FIndex按鈕在工具條中的順序,同一個FParentID的按鈕順序值不能重復(fù),從0開始,逐次遞增1。當(dāng)我們把T_BAS_FormMenu、T_BAS_BarItem、T_BAS_BarItemLink這3張表配好后,并修改T_BAS_Form表對應(yīng)的FVersion字段值后,刷新IE,將會看到工具條在序時簿上出現(xiàn)了,不過這時的工具條是沒有功能的,點擊之后是沒有任何動作的。如果要讓工具條按鈕生效,就要用到下面幾張表了。T_BAS_FormActionList表,定義Form中的按鈕等的動作,主要字段如下:FFormID對應(yīng)T_BAS_
25、Form的FIDFLayoutID相應(yīng)的元素的layoutIDFObjectKey元素標(biāo)識,可以是T_BAS_FormField表的FKey值,也可以是T_BAS_BarItem表的FName值。FObjectType元素類型,設(shè)計界面上的按鈕為3,工具條上的按鈕為5,界面上的隱藏元素為4FActionID動作的ID,對應(yīng)T_BAS_FormAction表的FID字段,T_BAS_FormAction表內(nèi)建了36種動作類型,能滿足大多數(shù)的需要,我們用得多的是23調(diào)用單據(jù)功能,28調(diào)用序時簿功能,30顯示彈出頁面,36調(diào)用自定義功能。更多的可以查看該表,有對應(yīng)說明,在這不多介紹。FActionT
26、ype觸發(fā)動作的事件類型,目前我們主要用2種:ClickActions點擊事件,UpdateActions值更新事件。FParaments動作參數(shù),我們?nèi)绻鸉ActionID填的是23調(diào)用單據(jù)功能,這個參數(shù)一般如Save,FBillHead就是調(diào)用單據(jù)的保存功能,而這個”Save”可以查看T_BAS_OperationType表的FOperation字段,目前表中定義了25種單據(jù)功能可供調(diào)用,這里要提一下,我們要調(diào)用單據(jù)功能,必須在前面為單據(jù)綁定實體后選擇操作列表時選中了相應(yīng)操作,這里才可以調(diào)用,也就是說要在T_BAS_FormOperation表中存在該FormID和FOperationID
27、相對應(yīng)的記錄才行。FActionID為28調(diào)用序時簿功能也是一樣,F(xiàn)Paraments填New是新建,Delete是刪除,Refesh是刷新序時簿。(請?zhí)貏e注意,這個單詞不是筆者寫錯了,一定要寫成“Refesh”才行,不是“Refresh”,原因是當(dāng)時框架是這么寫的,后來又有一些部門基于框架開發(fā)了一些模塊,如果將單詞改了會影響以前的模塊,而將來框架會有設(shè)計界面來支持不用再手工配置了,我們也就不會再看到這個小問題了)FActionID為30時打開彈出頁面,參數(shù)要這樣配:Custom,openNewWindow,/easweb/workflow/approveHistory.jsf,billId:
28、getSelectedRow(),title:審批意見,y:480,name:,x:640,openNewWindow代表打開新窗口,后面跟的是URL,billId是URL參數(shù)名,getSelectedRow()是內(nèi)置函數(shù),可以取出在序時簿中所選行的id值,title是彈出窗口的標(biāo)題,name是窗口名稱,x和y分別是寬和高。FActionID為36時調(diào)用自定義功能,F(xiàn)Paraments最多可以有7個參數(shù),如下所示:Print,L1:OK1,L2:打印,L3:OK3,TRUE,TRUE,FALSE,FALSE其中,1Print為操作名稱,在插件中能捕獲到這個操作名稱 2操作描述 3權(quán)限項,上面為
29、空,表示該操作不需要驗權(quán) 4是否檢查工作流狀態(tài),為TRUE檢查,F(xiàn)ALSE不檢查 5是否觸發(fā)工作流 6是否操作前提示 7是否操作前確認(rèn)數(shù)據(jù)修改,這7個參數(shù)中,1和2為必須參數(shù),其它為可選參數(shù)。在了解了T_BAS_FormMenu、T_BAS_BarItem、T_BAS_BarItemLink、T_BAS_FormActionList這4張表的結(jié)構(gòu)后,我們就可以完全的掌控住工具條了,下面給出一個完整的示例SQL語句,以供參考:/* 這里先在T_BAS_FormMenu表中添加一條記錄并確定MenuID */DELETE T_BAS_FormMenu WHERE FFormID=svlnODODS
30、JOEAYSjEzgWzpp+rpI=;INSERT INTO T_BAS_FormMenu(FID,FFormID,FType,FMenuID) VALUES (shg65VuuTfSFdk5jfhbt3ueIdrii,svlnODODSJOEAYSjEzgWzpp+rpI=,2,Opd9Kxfhdg3dqC7P0oL) ;/*接下來在T_BAS_FormMenuScheme 添加一條記錄,表示工具條方案,這張表在前面沒有提到,這張表的記錄可以有,也可以沒有 */DELETE T_BAS_FormMenuScheme WHERE fid in ( select fmenuid from t_
31、bas_formmenu where fformid=svlnODODSJOEAYSjEzgWzpp+rpI=);INSERT INTO T_BAS_FormMenuScheme(FID,FName_L1,FName_L2,FName_L3) VALUES (Opd9Kxfhdg3dqC7P0oL,N草稿序時簿工具條,N草稿序時簿工具條,N草稿序時簿工具條) ;/*在 T_BAS_BarItem 表中添加按鈕,下面添加了6個按鈕和一個工具條 */DELETE T_BAS_BarItem WHERE FMenuId in ( select FMenuId from T_BAS_FormMenu
32、where fformid=svlnODODSJOEAYSjEzgWzpp+rpI=);INSERT INTO T_BAS_BarItem (FID,FMenuID,FCaption_L1,FCaption_L2,FCaption_L3,FName,FDescription_L1,FDescription_L2,FDescription_L3,FToolTip_L1,FToolTip_L2,FToolTip_L3,FStyle,FImageKey,FEnabled,FChecked,FVisible,FShortcut) VALUES (3yku6Ceq0k56gfhfi73s,Opd9Kxf
33、hdg3dqC7P0oL,null,N打印,null,mnuPrint,null,N打印,null,null,N打印,null,0, ,1,0,1, ) ;INSERT INTO T_BAS_BarItem (FID,FMenuID,FCaption_L1,FCaption_L2,FCaption_L3,FName,FDescription_L1,FDescription_L2,FDescription_L3,FToolTip_L1,FToolTip_L2,FToolTip_L3,FStyle,FImageKey,FEnabled,FChecked,FVisible,FShortcut) VA
34、LUES (56jhC9HkOd6gfhdg3dI,Opd9Kxfhdg3dqC7P0oL,null,N編輯,null,mnuEditModify,null,N編輯,null,null,N編輯,null,0, ,1,0,1, ) ;INSERT INTO T_BAS_BarItem (FID,FMenuID,FCaption_L1,FCaption_L2,FCaption_L3,FName,FDescription_L1,FDescription_L2,FDescription_L3,FToolTip_L1,FToolTip_L2,FToolTip_L3,FStyle,FImageKey,FE
35、nabled,FChecked,FVisible,FShortcut) VALUES (ehuPVk6hrwejfhjXeId,Opd9Kxfhdg3dqC7P0oL,null,N刷新,null,mnuDataRefesh,null,N刷新,null,null,N刷新,null,0, ,1,0,1, ) ;INSERT INTO T_BAS_BarItem (FID,FMenuID,FCaption_L1,FCaption_L2,FCaption_L3,FName,FDescription_L1,FDescription_L2,FDescription_L3,FToolTip_L1,FTool
36、Tip_L2,FToolTip_L3,FStyle,FImageKey,FEnabled,FChecked,FVisible,FShortcut) VALUES (fkihsrhhOd6fhwtg3r5,Opd9Kxfhdg3dqC7P0oL,null,N刪除,null,mnuEditDelete,null,N刪除,null,null,N刪除,null,0, ,1,0,1, ) ;INSERT INTO T_BAS_BarItem (FID,FMenuID,FCaption_L1,FCaption_L2,FCaption_L3,FName,FDescription_L1,FDescriptio
37、n_L2,FDescription_L3,FToolTip_L1,FToolTip_L2,FToolTip_L3,FStyle,FImageKey,FEnabled,FChecked,FVisible,FShortcut) VALUES (ky4fhkOd654dIder5gB,Opd9Kxfhdg3dqC7P0oL,null,N查看,null,mnuView,null,N查看,null,null,N查看,null,0, ,1,0,1, ) ;INSERT INTO T_BAS_BarItem (FID,FMenuID,FCaption_L1,FCaption_L2,FCaption_L3,F
38、Name,FDescription_L1,FDescription_L2,FDescription_L3,FToolTip_L1,FToolTip_L2,FToolTip_L3,FStyle,FImageKey,FEnabled,FChecked,FVisible,FShortcut) VALUES (lorPVkouuk5j5flkei9,Opd9Kxfhdg3dqC7P0oL,null,N提交,null,mnuSubmit,null,N提交,null,null,N提交,null,0, ,1,0,1, ) ;INSERT INTO T_BAS_BarItem (FID,FMenuID,FCa
39、ption_L1,FCaption_L2,FCaption_L3,FName,FDescription_L1,FDescription_L2,FDescription_L3,FToolTip_L1,FToolTip_L2,FToolTip_L3,FStyle,FImageKey,FEnabled,FChecked,FVisible,FShortcut) VALUES (yw3g4hjYah055Zh64j,Opd9Kxfhdg3dqC7P0oL,null,N工具條,null,mnuToolbar,null,N工具條,null,null,N工具條,null,12, ,1,0,1, ) ;/* 在
40、T_BAS_BarItemLink 表中將按鈕加入到工具條,并調(diào)整好他們之間的順序 */DELETE T_BAS_BarItemLink WHERE FMenuId in ( select FMenuId from T_BAS_FormMenu where fformid=svlnODODSJOEAYSjEzgWzpp+rpI=);INSERT INTO T_BAS_BarItemLink(FID,FMenuID,FBarItemID,FParentID,FIndex) VALUES (xfhd9HkOdrfgeYd654dI1a,Opd9Kxfhdg3dqC7P0oL,ky4fhkOd654
41、dIder5gB,yw3g4hjYah055Zh64j,0) ;INSERT INTO T_BAS_BarItemLink(FID,FMenuID,FBarItemID,FParentID,FIndex) VALUES (xfhd9HkOdrfgeYd654dI1b,Opd9Kxfhdg3dqC7P0oL,56jhC9HkOd6gfhdg3dI,yw3g4hjYah055Zh64j,1) ;INSERT INTO T_BAS_BarItemLink(FID,FMenuID,FBarItemID,FParentID,FIndex) VALUES (xfhd9HkOdrfgeYd654dI1c,O
42、pd9Kxfhdg3dqC7P0oL,lorPVkouuk5j5flkei9,yw3g4hjYah055Zh64j,2) ;INSERT INTO T_BAS_BarItemLink(FID,FMenuID,FBarItemID,FParentID,FIndex) VALUES (xfhd9HkOdrfgeYd654dI1d,Opd9Kxfhdg3dqC7P0oL,fkihsrhhOd6fhwtg3r5,yw3g4hjYah055Zh64j,3) ;INSERT INTO T_BAS_BarItemLink(FID,FMenuID,FBarItemID,FParentID,FIndex) VA
43、LUES (xfhd9HkOdrfgeYd654dI1e,Opd9Kxfhdg3dqC7P0oL,ehuPVk6hrwejfhjXeId,yw3g4hjYah055Zh64j,4) ;INSERT INTO T_BAS_BarItemLink(FID,FMenuID,FBarItemID,FParentID,FIndex) VALUES (xfhd9HkOdrfgeYd654dI1f,Opd9Kxfhdg3dqC7P0oL,3yku6Ceq0k56gfhfi73s,yw3g4hjYah055Zh64j,5) ;/* 最后,在T_BAS_FormActionList表中定義按鈕功能,我們在這調(diào)用
44、了序時簿的刪除、編輯和刷新功能,調(diào)用了單據(jù)的保存,提交和關(guān)閉功能 */DELETE T_BAS_FormActionList WHERE FFormID=svlnODODSJOEAYSjEzgWzpp+rpI=;INSERT INTO T_BAS_FormActionList (FID,FFormID,FLayoutID,FObjectKey,FObjectType,FActionID,FDefineType,FActionType,FParaments,FExpression,FSeq) VALUES (58r8iss5oUqzjHdfgnTopHeI0khw,svlnODODSJOEAYS
45、jEzgWzpp+rpI=,TNI5T/hQQZugRZCaiziSKZp+rpI=,mnuEditDelete,5,28,0,ClickActions,Delete,N ,0) ;INSERT INTO T_BAS_FormActionList (FID,FFormID,FLayoutID,FObjectKey,FObjectType,FActionID,FDefineType,FActionType,FParaments,FExpression,FSeq) VALUES (CRp+NUTCSj64nAizbMr4Fpp+rpI=,svlnODODSJOEAYSjEzgWzpp+rpI=,T
46、NI5T/hQQZugRZCaiziSKZp+rpI=,FbtnSubmit,3,23,0,ClickActions,Submit,FBillHead,N ,0) ;INSERT INTO T_BAS_FormActionList (FID,FFormID,FLayoutID,FObjectKey,FObjectType,FActionID,FDefineType,FActionType,FParaments,FExpression,FSeq) VALUES (gj64whs5oUqzjHdfghkFJ56I0kd4,svlnODODSJOEAYSjEzgWzpp+rpI=,TNI5T/hQQ
47、ZugRZCaiziSKZp+rpI=,mnuEditModify,5,28,0,ClickActions,Edit,N ,0) ;INSERT INTO T_BAS_FormActionList (FID,FFormID,FLayoutID,FObjectKey,FObjectType,FActionID,FDefineType,FActionType,FParaments,FExpression,FSeq) VALUES (hjk644k5oUqzjHdfhhkFJ56t7od3,svlnODODSJOEAYSjEzgWzpp+rpI=,TNI5T/hQQZugRZCaiziSKZp+rp
48、I=,mnuDataRefesh,5,28,0,ClickActions,Refresh,N ,0) ;INSERT INTO T_BAS_FormActionList (FID,FFormID,FLayoutID,FObjectKey,FObjectType,FActionID,FDefineType,FActionType,FParaments,FExpression,FSeq) VALUES (IfHxJ2scTpmOPPaPjcfviJp+rpI=,svlnODODSJOEAYSjEzgWzpp+rpI=,TNI5T/hQQZugRZCaiziSKZp+rpI=,FbtnSave,3,
49、23,0,ClickActions,Save,FBillHead,N ,0) ;INSERT INTO T_BAS_FormActionList (FID,FFormID,FLayoutID,FObjectKey,FObjectType,FActionID,FDefineType,FActionType,FParaments,FExpression,FSeq) VALUES (wF1Lr9wcTi+0fVENvrNHtZp+rpI=,svlnODODSJOEAYSjEzgWzpp+rpI=,TNI5T/hQQZugRZCaiziSKZp+rpI=,FbtnClose,3,23,0,ClickA
50、ctions,Close,FBillHead,N ,0) ;下面還給出了添加打開彈出窗口的調(diào)用自定義功能的SQL語句INSERT INTO T_BAS_FormActionList (FID,FFormID,FLayoutID,FObjectKey,FObjectType,FActionID,FDefineType,FActionType,FParaments,FExpression,FSeq) VALUES (hr9ZuT4yt83rror9tyu68dy+rpI=,kSdMyUmYQKC7tzo9xr0XV5p+rpI=,NUjG3OnGQ9a8fP5andTIS5p+rpI=,mnuFl
51、owMap,5,30,0,ClickActions,NCustom,openNewWindow,/easweb/workflow/approveHistory.jsf,billId:getSelectedRow(),title:審批意見,y:480,name:,x:640,N ,0) ;INSERT INTO T_BAS_FormActionList (FID,FFormID,FLayoutID,FObjectKey,FObjectType,FActionID,FDefineType,FActionType,FParaments,FExpression,FSeq) VALUES (Eujv7y
52、IOT6WHZx/f4+OXMJp+rpI=,kSdMyUmYQKC7tzo9xr0XV5p+rpI=,NUjG3OnGQ9a8fP5andTIS5p+rpI=,mnuFilePrint,5,36,0,ClickActions,Print,L1:打印,L2:打印,L3:打印,TRUE,TRUE,FALSE,N ,0) ;相信有了上面對表結(jié)構(gòu)的認(rèn)識和示例,我們對工具條應(yīng)該已經(jīng)用得得心應(yīng)手了。2)、為序時簿和編輯頁面注冊插件通過上面的配置,我們已經(jīng)看到了一個比較完整的序時簿和單據(jù)編輯(或查看)頁面了,其間我們沒有寫過一行代碼,我們要做的只是使用設(shè)計器設(shè)計單據(jù),再對數(shù)據(jù)庫做相應(yīng)配置即可,動態(tài)單據(jù)框圖
53、架是不是很強(qiáng)大?但是我們的單據(jù)目前還只有系統(tǒng)內(nèi)置的功能,如保存,刪除,打開彈出窗口等。假如我們要在序時簿中對單據(jù)做導(dǎo)入導(dǎo)出成Excel文件,在編輯頁面發(fā)郵件,那我們剛剛配出來的單據(jù)就無法完成了,別擔(dān)心,框架早已考慮到了這些,并為我們提供了相應(yīng)的支持。前面提到了,當(dāng)在T_BAS_FormActionList表中將FActionID配置為36時,是調(diào)用的自定義功能,自定義功能的擴(kuò)展性比較強(qiáng),能實現(xiàn)相當(dāng)復(fù)雜的操作,當(dāng)然這個得我們自己來寫代碼實現(xiàn),框架只是給我們提供了一個調(diào)用的接口,插件就給我們提供了這樣一種通用的手段。編寫插件并不復(fù)雜,我們只需要寫一個類從相應(yīng)的基類派生即可。一般有2種插件,序時簿插
54、件和編輯頁面插件,編輯頁插件從AbstractBillPlugin派生,序時簿插件從ListPlugin派生,這里強(qiáng)調(diào)一下命名規(guī)范,編輯頁面插件一般以*Plugin的形式命名,序時簿插件則一般以*ListPlugin的形式命名。如下示例:public class BillMessagePlugin extends com.kingdee.eas.base.form.plugin。AbstractBillPlugin public class BillQueryListPlugin extends com.kingdee.eas.base.form.model.list.ListPlugin 這
55、樣就寫好插件了,當(dāng)然這個插件并不具備什么功能,我們將在下面介紹如何寫插件以實現(xiàn)功能。但是這樣寫好插件,框架并不知道我們這個插件是為哪個Form寫的,我們還需要為Form注冊插件才行,只有注冊之后的插件,在運(yùn)行時才會被框架調(diào)用,才能起作用。注冊插件要用到T_BAS_FormPlugin表,表的主要字段如下:FFormID插件對應(yīng)的formIDFDesc描述FClassName插件對應(yīng)的類名,要有包名FSeq插件順序,一個Form可以有多個插件,按這個順序調(diào)用,從0開始FType插件類型,1為單據(jù)插件,2為序時簿插件,跟之前的工具條表一樣清楚了表結(jié)構(gòu),我們也就知道該如何注冊插件了,以下給出一個示例SQL:DELETE T_BAS_FormPlugin WHERE FFormID=kSdMyUmYQKC7tzo9xr0XV5p+rpI=;/*注冊一個編輯頁面插件*/INSERT INTO T_BAS_FormPlugin(FID,FFormID,FDesc,FClassName,FSeq,FType) VALUES (HU6GJi6XROulKc14mbVix5p+rpI=,kSdMyUmYQKC7tzo9xr0XV5p+rpI=,null,com.kingdee.eas.cp.wfm.plugins.BillMessagePlugin,0,
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 巧妙運(yùn)用閱讀策略提高學(xué)生的英語閱讀能力
- 嬰兒護(hù)理培訓(xùn)課件
- 養(yǎng)老院老人生活照料技能培訓(xùn)制度
- 養(yǎng)老院老人康復(fù)理療服務(wù)質(zhì)量管理制度
- 養(yǎng)老院老人健康監(jiān)測人員管理制度
- 養(yǎng)老院安全管理與應(yīng)急預(yù)案制度
- 養(yǎng)老院信息化建設(shè)及管理規(guī)范制度
- 攝影技術(shù)知識培訓(xùn)課件
- 2026年國有企業(yè)市場營銷崗位面試題含答案
- 2026年健康管理師健康教育考題含答案
- 2025秋季學(xué)期國開電大法學(xué)本科《國際私法》期末紙質(zhì)考試簡述題題庫珍藏版
- 2025年道教傳度考試題及答案
- 微機(jī)電系統(tǒng)(MEMS)技術(shù) 柔性微機(jī)電器件循環(huán)彎曲變形后電氣特性測試方法 編制說明
- 小區(qū)充電樁轉(zhuǎn)讓合同范本
- (2025年標(biāo)準(zhǔn))國債使用協(xié)議書
- 2025年南京市事業(yè)單位教師招聘考試體育學(xué)科專業(yè)知識試卷(秋季篇)
- 巴林特小組與團(tuán)體心理輔導(dǎo)對護(hù)士共情能力提升的影響
- 2021年普通高等學(xué)校招生全國統(tǒng)一考試英語試卷(天津卷)含答案
- 車站生活污水清運(yùn)方案(3篇)
- 豐田安全生產(chǎn)管理課件
- 小學(xué)英語新課程標(biāo)準(zhǔn)修訂版
評論
0/150
提交評論