新增自訂功能

將自訂功能新增至網域涉及指定功能的名稱及超類型,及指定該功能的屬性。

開始之前

依照建立自訂拓蹼網域、單元及功能中的說明建立網域 XSD 檔。可以將任意數量的單元及功能新增至網域。

關於這項作業

將功能類型新增至網域時,至少要將程式碼的兩個部分新增至網域 XSD 檔: 此外,如果超類型位在核心網域之外的網域中,則必須將程式碼新增至 XSD 檔,才能匯入超類型的網域。

程序

  1. 在網域 XSD 檔中,新增 xsd:element 元素作為 xsd:schema 元素的子項,來宣告功能及指定功能名稱。 依照慣例,功能的名稱以 capability. 為字首。 比方說,如果要建立名稱為 MyCompanyDomainCapability 的新功能,請將此程式碼新增至 XSD 檔:
    <xsd:element name="capability.MyCompanyDomainCapability"
    substitutionGroup="core:capability"
    type="mydomain:MyCompanyDomainCapability"/>
    在此程式碼中,name 屬性指定功能名稱,substitutionGroup 屬性指定元素是功能,而 type 屬性指定您在下一步建立的功能類型。
  2. 新增 xsd:complexType 元素作為 xsd:schema 元素的子項,來指定功能的類型及超類型。 比方說,如果要指定功能是核心功能類型的子類型,請將此程式碼新增至 XSD 檔:
    <xsd:complexType name="MyCompanyDomainCapability">
    <xsd:complexContent>
    <xsd:extension base="core:Capability"/>
    </xsd:complexContent>
    </xsd:complexType>
    此元素中類型的 name 屬性,與 xsd:element 元素中 type 屬性減去名稱空間字首之後剩餘的內容必須相符。
    限制: xsd:complexType 元素的 name 屬性必須以大寫字母開頭。
  3. 如果使用的超類型並不位在核心網域(您在建立自訂拓蹼編輯器網域中匯入),請將網域匯入至 XSD。 比方說,如果正在建立作業系統功能的新類型,則會使用通用作業系統功能類型 (os.OperatingSystem) 來作為超類型。在此情況下,新功能的程式碼可能看起來如下:
    <xsd:element name="capability.MyCompanyDomainOperatingSystem"
    substitutionGroup="core:capability"
    type="mycompanydomain:MyCompanyDomainOperatingSystem"/>
    
    <xsd:complexType name="MyCompanyDomainOperatingSystem">
    <xsd:complexContent>
    <xsd:extension base="os:OperatingSystem"/>
    </xsd:complexContent>
    </xsd:complexType>
    1. xmlns 屬性新增至 XSD 檔的根 xsd:schema 元素,以指定所匯入網域的字首。 比方說,如果要匯入作業系統網域,請新增下列屬性:
      xmlns:os="http://www.ibm.com/ccl/soa/deploy/os/1.0.0/"
      此屬性的值是所匯入網域的名稱空間。
    2. 新增 xsd:import 元素作為 xsd:schema 元素的子項,來參照所匯入網域的名稱空間。 比方說,如果要匯入作業系統網域,請新增下列元素:
      <xsd:import namespace="http://www.ibm.com/ccl/soa/deploy/os/1.0.0/"
      schemaLocation="platform:/plugin/com.ibm.ccl.soa.deploy.os/models/schemas/os.xsd"/>
      此元素中的屬性是所匯入網域的名稱空間,及其綱目檔的位置。
  4. 選擇性的: 新增 xsd:attribute 元素作為 xsd:extension 元素的子項,來表示功能的屬性。 該功能會繼承其超類型的所有屬性,但您可以新增更多的屬性,來表示此功能類型的特有設定。 比方說,如果該功能需要字串屬性,請新增下列元素:
    <xsd:attribute name="MyAttribute" type="xsd:string" />
    對於屬性類型,您可以使用其中一個初始 XSD 類型,例如字串、布林及整數。如果要預覽可以使用的類型,則可以鍵入字首 xsd:,然後按 ALT+/。
    使用內容輔助來顯示可用的屬性類型
    您也可以將來自其他網域的自訂列舉用作為屬性的值。例如,作業系統網域包含名稱為 os.KernelWidthType 的列舉,來指定作業系統具有的是 32 位元還是 64 位元核心。可以依此方式來使用這個列舉:
    <xsd:attribute name="MyAttribute" type="os:KernelWidthType"/>
    如果使用其他網域中類似這個列舉的列舉,則必須匯入網域(若尚未匯入的話)。

    您也可以建立屬性類型的自訂列舉,如新增自訂屬性類型中所述。

  5. 儲存 XSD 檔,並用滑鼠右鍵按一下該檔案,然後按一下驗證以進行驗證。 如果驗證程序發現任何錯誤,請確保您的程式碼與此範例中的程式碼相符:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsd:schema  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
    xmlns:mycompanydomain="http://www.mycompany.com/deploy/mycompanydomain/1.0.0/"
    targetNamespace="http://www.mycompany.com/deploy/mycompanydomain/1.0.0/"
    ecore:nsPrefix="mycompanydomain"
    ecore:name="mycompanydomain"
    ecore:package="com.mycompany"
     
    xmlns:core="http://www.ibm.com/ccl/soa/deploy/core/1.0.0/"
    xmlns:os="http://www.ibm.com/ccl/soa/deploy/os/1.0.0/">
    
    <xsd:import namespace="http://www.ibm.com/ccl/soa/deploy/core/1.0.0/"
    schemaLocation="platform:/plugin/com.ibm.ccl.soa.deploy.core/models/schemas/base.xsd"/>
    <xsd:import namespace="http://www.ibm.com/ccl/soa/deploy/os/1.0.0/"
    schemaLocation="platform:/plugin/com.ibm.ccl.soa.deploy.os/models/schemas/os.xsd"/>
    
    <xsd:element name="capability.MyCompanyDomainOperatingSystem"
    substitutionGroup="core:capability"
    type="mycompanydomain:MyCompanyDomainOperatingSystem"/>
    <xsd:complexType name="MyCompanyDomainOperatingSystem">
    <xsd:complexContent>
    <xsd:extension base="os:OperatingSystem">
    <xsd:attribute name="MyAttribute" type="os:KernelWidthType"/>
    </xsd:extension>
    </xsd:complexContent>
    </xsd:complexType>
    
    </xsd:schema>

意見