元素的類型會由於其功能的不同而有所差異。下表描述了Feature中的元素類型及可能用在哪些范圍中。
元素 范圍 描述 Content Type Site 包含了一個可重用於多個列表定義中的架構定義。 Content Type Binding Site 內容類型綁定允許您在列表定義的onet.xml架構中提供一個內容類型 。在onet.xml架構中的列表定義不可以直接修改。 Control Farm, WebApplication, Site, Web 一個委托控件包含了網頁中已知控件的一個注冊。通過它您可以用別的控件來替換已有的控件(比如WSS的搜索控件)。 Custom Action Farm, WebApplication, Site, Web 您可以定義下列自定義操作:
在內容類型設置頁面中的內容類型鏈接。
列表項上顯示的下拉菜單中的操作。
在新建,編輯,或顯示窗體的工具欄上顯示的工具欄按鈕。
網站設置頁面上的網站設置鏈接。
Custom Action Group Farm, WebApplication, Site, Web 定義一個自定義操作的組。 Document Converter WebApplication 包含一個文檔轉換器的定義。文檔轉換器是一個自定義的可執行文件用來將文檔從一種類型轉換成另一種類型。 Feature/Site Template Association Farm, WebApplication, Site 將一個Feature綁定到一個站點定義或模板上。這樣當創建該類型的網站時將自動提供該Feature。 FIEld Site 包含一個可用於多個列表中的字段定義。 Hide Custom Action Farm, WebApplication, Site, Web 隱藏一個由其他自定義操作添加的自定義的操作。 List Instance Site, Web 在SharePoint網站中生成特定列表的數據。 List Template Site, Web 包含一個列表定義或模板,其中定義了可用於SharePoint網站的一個列表。 Module Site, Web 包含了用於網站中的一堆文件。 Receiver Web 包含了一個列表項事件接受器的注冊。 Workflow Site 包含了列表中工作流的定義。
Farm: 場范圍
WebApplication: 應用程序范圍
Site: 網站集范圍
Web: 網站范圍
列表模板
列表模板定義了如何生成特定類型的列表,以及與之相關的內容類型。包括下列文件:
Feature.xml 文件用於標識該列表。
元素文件定義了列表模板。
Schema.xml文件包含了列表定義。
列表架構定義
列表架構定義包含了一個列表的基本定義,包括字段的定義,視圖,窗體,用於列表的工具欄,以及與該列表架構綁定的內容類型等。
內容類型的定義會繼承到特定網站下所有的子網站;比如,在http://Top_Site/sites/Site/Subsite中的一個列表可以引用一個定義於上層父網站中的內容類型。列表既可以只綁定單一的內容類型,也可以綁定多個內容類型,進而創建包含多種內容的列表。不論怎麼綁定,用於列表架構中的內容類型必須事先定義好。由於窗體是和內容類型相關的,所以他們也是在內容類型定義中聲明的。
可能的范圍:
Farm: No
Web Application: No
Site Collection: Yes
Web Site: Yes
激活
當一個包含列表定義的Feature被激活,該列表架構在其所處的網站或網站集中變為可用。
列表實例在WSS 2.0中,您只能為指定的列表類型指定一套默認數據。比如,在通知列表的定義中,數據為"歡迎使用SharePoint!",不可能用不同的數據生成兩個不同的通知列表。在WSS 3.0中,列表實例可以單獨生成。
許多應用程序會依賴網站層存儲的數據來支持其行為。一個列表實例是一個預先定義好的包含已知的標識的列表。一個列表實例可以對最終用戶顯示或隱藏。
注意:
如果一個列表實例是可見的,最終用戶有可能會誤刪除該列表。如果關閉該Feature,即使在其中的某元素(一個列表實例)不再可用的情況下,關閉操作仍將成功。
可能的范圍:
Farm: No
Web Application: No
Site Collection: Yes
Web Site: Yes
一個網站集范圍上的列表實例會生成在頂級網站中。這類列表實例往往用於存儲在整個網站集范圍內使用的資源,如:母板頁。
模塊(文件集)模塊是一個文件實例的集合,這些文件將生成到某個網站中。模塊通常用於在網站中部署Web部件頁。
注意:
WSS 3.0最大支持通過Feature部署1000個文件。不論是一個文件中有1000個模塊,還是1000個文件每個有1個模塊。
可能的范圍:
Farm: No
Web Application: No
Site Collection: Yes
Web Site: Yes
激活文件實例
當模塊在網站上激活,模板中包含的文件將生成到網站上。
關閉文件實例
當一個包含模塊的Feature被關閉,模塊中包含的文件不會從網站中刪除。
內容類型內容類型提供了一種方式來管理列表項的元數據和行為,使得我們可以在相同的庫或列表中存儲不同類型的內容。 內容類型架構
內容類型架構是WSS列表項的基礎定義。內容類型提供了一個結構化的方式來定義列表項的行為,如必填,保留,和工作流。內容類型允許SharePoint列表實現異構性,在單個列表中存儲不同類型的列表項。
當新版本的內容類型架構被部署時,列表項的架構會被安置到他們對應的庫中。
可能的范圍:
Farm: No
Web Application: No
Site Collection: Yes
Web Site: No
激活內容類型
當您啟用了一個包含內容類型的Feature時,該內容類型會被放到相應范圍內的可用內容類型清單中。
關閉內容類型
當您關閉一個包含內容類型的Feature時,內容類型會被WSS從可用內容類型清單中移除。這等效於在相應范圍上選擇一個內容類型然後點刪除。這樣一來,您就可以阻止這些內容類型新實例的創建。基於該內容類型的已有數據仍舊可用。
當您安裝WSS時,會在Template\Features目錄下創建一個ctype文件夾。該文件夾包含了一個feature.xml文件和一個 ctypeswss.xml文件。該feature.xml文件引用了ctypeswss.xml文件,其中指定了一些我們平時會用到的內容類型。
字段
一個欄模板是一個針對已有特定字段的實例集合。換言之,是一個共享的字段定義。一個共享的字段包括了該字段的一些設置信息,比如,對於選項類型的字段會包括一套選擇項,或者對於文本字段會包括是否支持帶格式文本等。
一個共享字段的例子是“規范狀態, 它有一些標准的選擇項,如“ One Page” , “Draft” , “Reviewed”和“Inspected” 。每個工作組可以在部署時在網站中重復使用該自定義屬性定義。
共享字段是一個生成時的概念,往往在內容類型中對其進行引用。例如,如果您要生成一個網站集,其中包含兩個不同的內容類型,他們使用了相同的共享字段,來提供對於那些內容類型的實例完全相同的字段。對於這些相同的字段的每個實例,他們會使用一致的標識。
可能的范圍:
Farm: No
Web Application: No
Site Collection: Yes
Web Site: No
工作流類型
一個工作流是一個功能包,用於為文檔或列表項指定一個處理流程。作為一個獨立的實體,一個工作流可以關聯到任意數量的容器(列表)或內容類型上。
一個工作流必須實現下列組件:
工作流計劃
Feature.xml 文件
工作流元數據
下列組件是可選的:
工作流特定的視圖
工作流特定的欄
工作流特定的窗體(參數化模板)
實現工作流的DLL組件(基於Windows的流程引擎)
可能的范圍:
Farm: No
Web Application: No
Site Collection: Yes
Web Site: No
關閉工作流
當一個工作流被關閉,將不能初始化新的工作流。已有的工作流實例允許繼續跑完。
事件WSS 3.0提供了一整套可擴展的事件,您可以將其整合到庫,列表,網站和用戶操作中。有兩種類型的WSS事件:
在動作發生前觸發的事件,同步處理,允許我們在列表被修改前進行自定義驗證和數據處理。
在動作發生後觸發的事件,異步處理。
網站列表項事件綁定
事件除了可以綁定到某個內容類型上之外,您還可以將事件處理程序注冊到網站級別,來對列表項事件進行響應。
可能的范圍:
Farm: No
Web Application: No
Site Collection: No
Web Site: Yes
站點事件激活
當站點事件被激活後,將會在特定網站上注冊事件,然後與特定類型的列表實例相關聯。
注意:
盡管該元素類型僅支持網站范圍的Feature,但是卻可以被關聯到一個網站集范圍的內容類型上。
自定義操作
一個自定義操作代表了一個鏈接,工具欄按鈕,菜單項,或可以添加到工具欄或菜單中用戶可以看見的任何控件。自定義動作可以綁定到列表類型,內容類型,文件類型或某個程序標識(ProgID)上。
當您用CustoMaction元素來往工具欄中添加一個控件時,標准的ASP.NET控件和用戶控件都可以用,比如文本框或選項按鈕。然而,如果您添加了一個控件到工具欄的下拉菜單(例如列表視圖工具欄的操作菜單),該控件只能實例化成下拉菜單中的一個菜單項。換言之,您不能添加一個WebPart或隨意什麼控件到一個下拉菜單中。
可能的范圍:
Farm: Yes
Web Application: Yes
Site Collection: Yes
Web Site: Yes
激活自定義工具欄,菜單項和鏈接
當一個自定義操作被激活,則與之相關聯的自定義工具欄,菜單項和鏈接會在對應位置顯示出來供用戶操作。
關閉自定義工具欄,菜單項和鏈接
當自定義操作被關閉,則與之相關聯的自定義工具欄,菜單項和鏈接將變成不可用,不會顯示在對應位置上。
示例
當您安裝好WSS 後,在Template\Features目錄下會出來兩個文件夾,ContentTypeSettings和SiteSettings。每個文件夾都包含了一個Feature.xml文件,並引用了一個ContentTypeSettings.xml和SiteSettings.xml文件。 ContentTypeSettings文件指定了在編輯內容類型頁面ManageContentType.aspx中的若干操作,SiteSettings文件指定了顯示在Settings.aspx中的管理操作。
委托控件(控件模板化與生效)
WSS 3.0實現了一種簡單的機制來為特定功能聲明候選控件,並提供一種機制來選擇單一的功能提供者。通過Feature您可以標識控件和控件模板來供特定功能選擇。
所有標識用於特定功能的控件都是通過控件方式提供的。您可以通過Feature元素為這些功能注冊控件。您可以指定控件被使用的順序,一個序列號,和一個URL指向某控件模板或DLL組件。如下代碼所示:
XML
<Element>
<Control Id="SmallSearchInputBox" Sequence="100"
Url="/templates/mysearchcontrol.ascx"/>
</Element>
<Element>
<Control Id="SmallSearchInputBox" Sequence="50"
ControlClass="MySearchControl" ControlAssembly="" />
</Element>
DelegateControl是通過如下信息內嵌到WSS頁面中的:
XML
<SharePoint:DelegateControl ControlId="SmallSearchInputBox"/>
在運行時,該控件會接受一個服務器場,Web應用程序,網站集和網站聲明的控件的一個合並。具有較小序列號的控件會被DelegateControl添加到控件樹。當序列號相等時,控件順序的確定是隨機的。
DelegateControl的序列號可被用於在WSS中整合門戶的搜索控件。默認的搜索控件序列號是100,門戶搜索可以在網站集層次上被激活。由於其序列號是50,WSS會在所有調用搜索控件的地方都用門戶搜索控件替換默認搜索控件。
舉個例子,下面的委托控件含有一個自定義的參數:
XML
<SharePoint:DelegateControl ControlId="SmallSearchInputBox" ShowAdvancedOptions="true"/>
該控件可能會實例化成如下控件:
XML
<MySearch:SuperSearchControl/>
該自定義的SuperSearchControl控件需要向上搜尋控件樹來決定ShowAdvancedOptions是否設為true。
委托控件不是一個設計好的固定的控件,它對於其最終的實現形式是一無所知的。該控件最適合用於某選取控件的實例的設計時HTML渲染。設計者通過委托控件可以為“硬編碼”控件提供一個選則余地,在將來可以借助Feature體系用某控件替換SharePoint:DelegateControl。開發者在後續工作中就可以具體再定制該控件了。
可能的范圍:
Farm: Yes
Web Application: Yes
Site Collection: Yes
Web Site: Yes
Feature與網站模板的關聯“Feature/站點模板關聯”允許您將一個新的Feature及其功能與已有的站點定義或站點模板相關聯。這樣,當創建網站時會自動包含該Feature。在“Feature/站點模板關聯”中包括了兩個Feature:包含實際要添加到已知站點模板的功能的Feature,和“Feature/站點模板關聯”Feature自己。該元素的Feature通常用在場或Web應用程序層次,專門用來將前一個Feature綁定到模板上。
可能的范圍:
Farm: Yes
Web Application: Yes
Site Collection: Yes
Web Site: No
示例
下面的例子展示了“Feature/站點模板關聯”Feature的Feature.xml文件格式:
XML
<?xml version="1.0" encoding="utf-8" ?>
<Feature Id="82E2EA42-39E2-4B27-8631-ED54C1CFC491"
Title="Feature_Title"
Description="Feature_Description"
Version="12.0.0.0"
Scope="Farm"
xmlns="http://schemas.microsoft.com/sharepoint/"
DefaultResourceFile="_Res">
<ElementManifests>
<ElementManifest Location="Feature_Elements.xml"/>
</ElementManifests>
</Feature>
上面的Feature.xml文件引用的元素文件大致是下面的樣子:
XML
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<FeatureSiteTemplateAssociation Id="29D85C25-170C-4df9-A641-12DB0B9D4130" TemplateName="STS#0" />
<FeatureSiteTemplateAssociation Id="29D85C25-170C-4df9-A641-12DB0B9D4130" TemplateName="STS#1" />
<FeatureSiteTemplateAssociation Id="29D85C25-170C-4df9-A641-12DB0B9D4130" TemplateName="BDR#0" />
<FeatureSiteTemplateAssociation Id="29D85C25-170C-4df9-A641-12DB0B9D4130" TemplateName="SPS#0" />
</Elements>
您也可以將一個Feature關聯到所有網站定義,這樣在所有的網站創建好後都會包含該Feature。如果需要將 Feature關聯到全局,只要將TemplateName屬性設為GLOBAL#0就可以了。無論何時您創建一個網站,全局站點定義都會被應用,這樣您的Feature也就被應用了。
按范圍分類元素
下表根據范圍列出了可以運用的元素類型。
范圍 元素 Web (網站) Control
Custom Action
Custom Action Group
Hide Custom Action
List Instance
List Template
Module
Receiver
Site (網站集) Content TypeContent Type Binding
Control
Custom Action
Custom Action Group
Feature/Site Template Association
Field
Hide Custom Action
List Instance
Module
Workflow
WebApplication (Web應用程序) ControlCustom Action
Custom Action Group
Document Converter
Feature/Site Template Association
Hide Custom Action
Farm (場) ControlCustom Action
Custom Action Group
Feature/Site Template Association
Hide Custom Action