為了提高建模的效率,開發(fā)人員希望在Palette中定制代表了這些業(yè)務(wù)角色的新元素。本文基于上面的實例總結(jié)了開發(fā)人員在進行Palette擴展時所采用的基本實現(xiàn)技術(shù)和難點。3 基于RSA的Palette靜態(tài)擴展從前面的討論可以知道,RSA是構(gòu)建在Eclipse3.0的基礎(chǔ)之上的。Eclipse的插件結(jié)構(gòu)是Eclipse重要的基礎(chǔ)設(shè)施和體系結(jié)構(gòu),其中應(yīng)用擴展點是兩個或者多個插件完成協(xié)作的基礎(chǔ)?;赗SA的Palette靜態(tài)擴展方法就是通過Eclipse,定義單獨的插件來完成Palette擴展點的定義,從而增加新的建模功能。本節(jié)將通過一個簡單的"零售業(yè)務(wù)建模"的例子向您逐步展示如何來對RSA的Palette進行擴展。在"零售業(yè)務(wù)建模"中,我們需要四類角色:零售提供商、商品、消費者和零售商。為了提供更好的操作感覺和交互過程,我們將擴展Palette面板,這樣進行零售業(yè)務(wù)建模就如同UML建模一樣的直觀快捷。同RSA平臺中其他插件一樣,Palette也是通過擴展點來進行定義的,所以,必須要在插件清單plugin.xml文件中聲明所需要的擴展點,并且提供相應(yīng)的實現(xiàn)類。對于Palette而言,要聲明的擴展點就是com.ibm.xtools.PResentation.paletteProvider,要提供的實現(xiàn)類必須實現(xiàn)com.ibm.xtools.presentation.internal.services.palette.IPaletteProvider接口。當然,也可以使用缺省的com.ibm.xtools.presentation.internal.services.palette.DefaultPaletteProvider類,因為DefaultPaletteProvider已經(jīng)完全實現(xiàn)了IPaletteProvider接口,在RSA的一些建模插件中,可以查找到使用的都是這個缺省的Palette提供類。就palette而言,只有這樣的聲明是不夠的,更加完整的擴展聲明如清單1所示。清單1 一個完整的Palette擴展聲明
以清單2為例,上述entry節(jié)點中
雖然,我們新擴展的零售建模工具已經(jīng)在Palette面板中出現(xiàn),但是他們不能執(zhí)行任何操作,甚至?xí)伋霎惓#虼?,我們要進一步添加功能方面的擴展。首先,對應(yīng)著Palette中的工具,在插件中要有相應(yīng)的工具類來完成該工具的操作。這個工具類通常要求繼續(xù)自com.ibm.xtools.presentation.internal.tools.CreationTool,例如實現(xiàn)消費者的模型生成工具類的代碼段如下:
其中,
其中:
該聲明規(guī)定擴展點的id為bizdemoProviders,該id將作為未來提供擴展業(yè)務(wù)角色語義的新插件的定位擴展點的依據(jù)。同時,上面的聲明還指出,未來這樣的新插件必須在自己的plugin.xml聲明中使用核心插件schema目錄下bizdemoProviders.exsd文件所規(guī)定的XML語法來表達對該擴展點的擴展聲明。因而,BizDemo核心插件必須在自己的工程目錄下創(chuàng)建一個schema目錄和其下的一個名為bizdemoProviders.exsd的XSD文件。如下給出了該文件的要害片斷:清單4 描述BizDemo核心插件bizdemoProvider擴展點的XSD片斷
該聲明片斷完全符合清單4定義的語法,它表示新的插件將使用BizDemo核心插件的擴展點bizdemo.palette.bizdemoProviders(bizdemo.palette是BizDemo核心插件的id,也作為擴展點的名字空間),并在bizdemoProvider元素的屬性descriptor中指出了提供新的業(yè)務(wù)角色語義的文件名。接下來在新插件工程的根目錄下生成名為bizdemo-role.xml的XML文件,并在文件中如下描述"國外提供商"Palette擴展工具項的基本屬性:清單6 描述了"國外提供商"Palette擴展工具項屬性bizdemo-role.xml聲明片斷


該聲明用自定義的類bizdemo.palette.actions.BizdemoCustomizationAction對org.eclipse.ui.actionSets擴展點進行了擴展。
6 總結(jié)從本文的介紹可以看出,由于RSA是基于Eclipse技術(shù)搭建起來的,架構(gòu)師或者開發(fā)人員在使用RSA提供的環(huán)境進行業(yè)務(wù)建模時,假如需要對相關(guān)的UI組件進行擴展,一般都可以考慮應(yīng)用RSA內(nèi)部實現(xiàn)該組件的插件的擴展點,編寫新的插件,并在plugin.xml中的擴展點對應(yīng)的標簽內(nèi)遵循XML模式定義進行擴展描述。假如確實需要在運行時動態(tài)加載相關(guān)擴展,則可以進一步在新的插件中暴露擴展點,并為未來擴展該插件的插件工程約定擴展項的描述規(guī)范。需要非凡指出的是,本文對Palette擴展的技術(shù)實現(xiàn)是基于RSA 6.0.0.1版本中標準Palette實現(xiàn)的API。假如RSA在未來被升級,這些API可能會有所變化,從而造成文中所涉及的相關(guān)代碼和配置將不再準確。但是開發(fā)人員仍然可以復(fù)用本文的實現(xiàn)思想進行相關(guān)調(diào)整,從而保證應(yīng)用開發(fā)的正常進行。(責任編輯:銘銘)新聞熱點
疑難解答