共用方式為


使用 Service Manager 來自訂和建立類別

類別是用來表示 Service Manager 中使用的物件的主要元素。 類別可代表電腦、使用者、事件或表單。

代表較大型元素的類別定義,例如 Service Manager 功能,通常會分組在一起。 類別定義會儲存在必須匯入 Service Manager 的管理元件中,才能啟用 Service Manager 功能。 在本文中,您將瞭解如何使用 Service Manager 自訂和建立類別。

類別的重要概念

Service Manager 中的物件是 特定基類的實例 。 基底類別的所有執行個體均有共通的一組屬性和共同行為。

如同所有管理元件元素,類別具有 標識碼顯示名稱 屬性。 在本檔中, 標識元 是指只能在 Authoring 工具中看到之類別的唯一名稱,而 [名稱 ] 和 [顯示名稱 ] 則參照 Service Manager 控制台中顯示的語言特定名稱。

注意

當您建立類別時,請務必確定類別名稱在管理元件中是唯一的。 可能的話,請使用在環境中有意義的類別名稱。 您可以使用 Service Manager Authoring 工具的 [類別瀏覽器 ] 視窗中的搜尋功能,來判斷類別名稱是否存在。

屬性

特定類別的所有實例都會共用一組 通用的屬性。 這些屬性的值由使用者透過不同方法提供,而且可視不同的實例而有所不同。 屬性用於表示實際物件的詳細資料,例如唯一名稱、位置以及使用者可能有興趣或管理情境所需的其他詳細資料。

主要屬性

索引鍵屬性可唯一識別特定類別的每個實例。 如果屬性標示為索引鍵屬性,則類別的每個實例都必須有該屬性的唯一值,而且值不能為 Null。 針對 托管類別,值必須對所有具有相同托管父系的類別實例保持唯一性。 對於 未託管的類別,它在管理群組中所有類別的實例中必須是唯一的。 本節稍後會進一步說明託管關係。

類別不一定需要關鍵屬性。 只有在對於單一父項預期會有多個類別的執行個體的情況下,才需要關鍵屬性。 如果預期只有單一實例,則不需要索引鍵屬性,但仍然可以定義。

例如, SQL Database Engine 就具有 Instance Name 索引鍵內容,因為單一電腦可能安裝了一個以上的 Microsoft SQL Server 執行個體。 當有多個 SQL Database Engine執行個體時,每個執行個體必須具有不同的 Instance Name 值,才能清楚區分不同的物件。 相反地,IIS Web Server 類別不會定義索引鍵屬性,因為任何計算機上只能安裝一個實例。

所有物件都有 Path Name 屬性,該屬性是從物件的鍵屬性或多個鍵屬性,以及其所屬的父物件或父物件群計算而來。 針對未託管物件,Path Name 會是該類別的主要屬性。 Path Name 可用來唯一識別管理群組中類別的任何執行個體。

基類和繼承

每個類別都必須指定 基類 ,以識別新類別將 特製化的現有類別。 Service Manager 隨附的管理元件連結庫包含數個類別,可用來做為管理元件中自定義類別的基底。 管理組件通常會至少有一個類別繼承自程式庫類別,並可能有其他類別繼承自相同管理組件中的類別。

基底類別的概念可使用 Windows Server 作業系統管理組件說明。 此管理組件包含代表電腦上所安裝邏輯磁碟的類別。 下圖顯示 Windows Server 2003 邏輯磁碟Windows Server 2008 邏輯磁碟類別。 這兩個類別均以 Microsoft.Windows.Server.Library 管理組件檔案中定義的 邏輯磁碟 (伺服器) 為基礎。 邏輯磁碟(伺服器) 依次基於 邏輯磁碟,而邏輯磁碟本身是以 邏輯裝置為基礎,再依次經由 邏輯硬體、邏輯實體,最後是 實體。 所有類別都可以沿著類似的繼承路徑,而且最後一定會到達 實體,即類別結構的根。 這是唯一沒有基類的類別,而所有其他類別最終都會繼承自該類別。

類別之間的屬性繼承

顯示類別之間屬性繼承的圖例。

實體 具有名為 Display Name 的單一屬性。 此屬性是由繼承自 Entity 的所有類別所繼承。 所有類別最終都會繼承自 Entity。 這就是為什麼所有類別都有 顯示名稱 屬性的原因。 在此範例中的類別,要等到邏輯裝置開始才具備屬性,其定義了NameDescriptionDeviceIDDeviceID 是指定為關鍵屬性。 邏輯磁碟邏輯磁碟 (伺服器)會全部繼承這些內容。 邏輯磁碟 (伺服器) 接著新增了其他內容,包括 SizeDrive TypeFile System。 最下層類別與作業系統的版本相關,會繼承在繼承樹狀結構上方類別提供的整組內容。

類別類型

大部分類別都有一或多個實際實例,且稱為 具象類別抽象類單一 類別是特殊類型的類別,其行為方式不同,並用於特定案例。

抽象類別

抽象類別沒有執行個體,存在的目的僅是作為其他類別的基底類別使用。 在抽象類層級定義的所有屬性和關聯性都會由子類別繼承,而且不需要再次定義。 管理組件庫中定義的大多數類別都是抽象的,因為它們只作為自定義管理組件中定義之類別的基類提供。

抽象類是用來在類別的所有進一步特製化中定義一組通用的屬性、關聯性或群組。 在上述範例中,上述 Windows Server 2003 邏輯磁碟和 Windows Server 2008 邏輯磁碟上顯示的所有類別都是抽象的。 其存在的目的只是為了讓下層的類別得以繼承它們。

單例類別

單例類別用於當需要確保一個類別只有唯一實例時。 類別是某一種實體,並且始終存在。 安裝管理套件時會建立單一實例。 同樣地,單例類別不需要關鍵屬性,因為它只會有一個實例。 單一類別的常見用法是 Groups 類別,因為整個管理群組中只需要此類別的單一實例。

類別擴展

若要自訂類別,您可以將新內容加到現有類別定義來延伸它。 新的屬性現在會包含在該類別的所有實例中,以及將建立的任何新實例中。 抽象類別無法被擴充。

關係

關聯 性定義於類別之間,表示某個類別的特定實例與另一個類別的特定實例之間的關聯。 有三種類型的關聯性,而且會在下列各節中詳述:

類別關聯性會以下列方式影響物件:

關聯性類型 關鍵屬性與存在 可用的屬性
主機代管 鍵屬性的值在管理群組中的類別所有實例中必須是唯一的。 然而,對於主機類別,索引鍵屬性值必須在具有相同主機父代的所有物件中是唯一的。

若要唯一識別裝載的物件,需要對象和物件的父系索引鍵屬性,而裝載類別的索引鍵將會是裝載類別索引鍵屬性和託管類別索引鍵屬性的組合。

被承載類別的存在依賴於承載類別的存在。
任何以類別為目標的工作流程,除了能夠存取該類別的屬性外,還可以存取其裝載父代的屬性。

例如,工作流程中使用 SQL 2008 DB 引擎 類別為目標的指令碼可能需要安裝 SQL Server 2008 執行個體的電腦名稱。 由於物件只能有一個裝載父系,因此我們會知道裝載 SQL 2008 DB 引擎 類別任何特定執行個體的電腦。 工作流程腳本可以存取目標對象的屬性,以及該目標主控父代的屬性。
封鎖 主要屬性和存在性不依賴於容器物件。 任何針對某一類別的工作流程,不僅可以存取該類別的屬性,還可以存取其任何容器父系的屬性。

例如,以事件類別為目標之工作流程中的腳本可以存取容器佇列類別的屬性。
參考 鍵屬性及其存在並不依賴於被參考的對象。 以類別為目標的任何工作流程都只能存取該類別的屬性。

參考關聯性

參考關係是最一般的關係類型。 當父類別和子類別不相依於彼此時,會使用參考關聯性;例如,資料庫可以參考另一個正在復寫的資料庫。 一個資料庫不相依於另一個資料庫,而且物件會個別存在。

內含項目關聯性

包含關係的限制性比宿主關係要小。 它指出某個類別與另一個類別有關,但其中一個類別不需要依賴於另一個類別。 不同於主機關聯性,內含關聯性是多對多關聯性。 這表示一個物件可以內含多個物件,而單一物件可以由多個其他物件所內含。 例如,一個群組可以包含多個物件,而單一物件可以是多個群組的成員。

包含關係通常用於群組成員資格,物件透過群組和成員物件之間的包含關係被納入群組中。

主機託管關係

類別之間限制最嚴格的關聯性是 宿主 關聯性。 由另一 個類別裝載的類別稱為裝載類別,而類別的實例稱為 裝載物件。 如果類別不是由另一 個類別裝載,則會呼叫未裝載的類別,而類別的實例稱為 未裝載的物件

當一個物件由其他物件寄生時,該物件的存在依賴於其寄生的父系物件。 如果承載父節點被移除,則承載子節點也會被移除。 例如,邏輯磁碟在未安裝的計算機的情況下無法存在。

被裝載物件只能有一個裝載父物件,但一個父物件可裝載多個子物件。 例如,特定磁碟只能安裝在單一電腦上,但一部電腦可安裝多個磁碟。

SQL Server 管理包提供了另一個託管關係範例。 Windows 電腦 類別、 SQL 2008 DB 引擎 類別和 SQL 2008 DB 類別之間的裝載關聯性顯示如下。

SQL Server 2008 類別的主機關係

SQL Server 2008 類別的主機關係示意圖。

SQL 2008 DB 引擎 類別代表安裝在特定電腦上之 SQL Server 2008 的執行個體。 由於資料庫只能安裝在單一資料庫引擎上,因此 SQL 2008 DB 引擎 類別裝載 SQL 2008 DB 類別。 管理群組中可有同名的多個資料庫,但安裝在特定 SQL Server 類別執行個體的任何資料庫必須具有唯一名稱。 資料庫引擎又由 Windows 電腦 類別所裝載。 管理群組中可有同名的多個 SQL Server 執行個體。 每一個在特定電腦上必須具有唯一的名稱。

由於有兩個託管關係,因此每個資料庫的路徑名稱將是電腦名稱接著是執行個體名稱,然後再接著資料庫名稱。 下圖顯示範例。

範例資料庫裝載關聯性

範例資料庫裝載關聯性的圖表。

課程的一般指導方針和最佳做法

當您在 Service Manager Authoring 工具中自定義類別時,請使用下列指導方針和最佳做法。

類型定義的命名慣例

Service Manager 架構模型命名慣例是以 .NET 命名空間命名慣例為基礎。

基本命名慣例

基本命名慣例是 CompanyName.TechnologyArea.ProductName.FunctionalityArea.Name,其中:

  • ProductName 是選用項;如果定義與任何特定產品無關,請使用此項目。

  • FunctionalityArea 是選用項;如果定義可套用到不同區域,請使用此項目。

  • Name 反映的是類別的意義,不是繼承階層。

範例: Microsoft.AD.PrinterMicrosoft.Windows.ComputerSystem.Knowledge.ArticleSystem.WorkItem.IncidentSystem.StarRating.Average

系統命名空間

System 命名空間參照的是與 Microsoft 和 Windows 無關的定義。 這通常適用於 Windows 應用程式或 Unix 應用程式相依的基底定義。 這些基底定義應該與公司無關。

請使用下列適用於 System 首碼的指導方針:

  • System.Computer 代表任何類型的計算機,而且不是廠商特定的。

  • 如果您預期其他人會在該命名空間之上定義架構,請使用 System 首碼。

  • 請注意, Microsoft.Windows.Computer 不會從 System 開始,儘管大多數 Windows 應用程式(不論定義它的廠商為何)都依賴此定義。

命名類別的最佳做法

當您命名類別時,請使用下列最佳做法:

  • 請勿建立兩個不同的類別(即使它們位於兩個不同的管理元件中),這會導致針對兩個類別的不同物件儲存相同的索引鍵值。

  • 當您擴充類別時,請務必確定類別延伸模組名稱在管理元件之間是唯一的。 如果可能,請使用有意義的類別擴充名稱。

  • 當您擴充類別時,請勿使用已在該類別中使用的標識碼來定義屬性。

  • 請勿在自定義類別的屬性名稱中使用句號。

  • 如果您在撰寫 Cube 時新增自訂具名計算,請在具名計算的名稱前加上 NC_。 這將降低使用已存在之屬性名稱的可能性。

不要建立太多類別

建立過多類別可能會產生無謂且無價值的複雜性。 理想的規則是使用最少的類別來達成所需的結果。 除了抽象類以外,如果類別不會成為任何工作流程的目標,或用來儲存數據,則可能不應該建立。 另外,如果有兩個類別非常類似,請考慮使用單一類別來代表兩者,或許可透過使用能夠記錄任何差異的屬性。

請勿使用經常更新的屬性

屬性值在首次填入之後應該不常變更。 頻繁屬性值變更的可能原因是自訂連接器或其他以程式自動更新 Service Manager 資料庫的自訂功能。 這些情境可能會造成屬性值更新頻率過高,例如每隔 10 到 15 分鐘(或更短時間)就涉及大量的物件。

這種經常變更內容值的狀況可能會對工作流程的效能造成些許影響,也可能帶來其他效能影響。 這是因為系統會持續在歷程記錄中追蹤這些變更。 另外,依據發生變更的內容而定,這些變更也可能會增加大量需要由資料倉儲處理及儲存的資料。

不要擴充抽象類別

在 Service Manager 中,您無法擴充抽象類。 如果您需要擴充抽象類別,可以執行下列其中一個動作;

  • 使用您要新增的內容建立新類別,然後建立新類別和抽象類別間的關聯性。

  • 擴充衍生自抽象類別的每個相關實體類別。

改善工作項目類別的簡單搜尋

當您定義衍生自 「System.WorkItem」 類別的自定義類別時,建議您以下列格式儲存 該類別的 DisplayName 屬性: WorkItem.ID<SPACE>WorkItem.Title

這可改善簡易搜尋。 簡易搜尋只會搜尋 DisplayName 內容,而透過將 Title 內容值和 ID 內容值明確包含在 DisplayName 內容值中,簡易搜尋的結果便可獲得改善。 這是因為使用者可以按照標題中的字詞或是按照識別碼進行搜尋。

在撰寫工具中瀏覽類別

您可以使用 Service Manager 撰寫工具中的 [類別瀏覽器 ] 窗格來瀏覽類別及其屬性。 當您瀏覽類別時,可以將屬性從 [類別瀏覽器] 窗格拖曳至撰寫窗格中的表單,將控制項新增至該表單。

[類別瀏覽器] 窗格可以顯示來自 [資料庫] 資料夾中任何管理元件,以及來自已在 [建立工具] 中開啟的任何管理元件的類別。 當您選取類別時,[ 類別瀏覽器 ] 窗格會顯示針對該類別特別定義的屬性,以及系統所產生的內部屬性。 根據預設,Library 資料夾位於下列位置:C:\Program Files (x86)\Microsoft System Center\Service Manager <版本> Authoring\Library。

當您在 [類別瀏覽器 ] 窗格中選取管理元件時,會顯示所選管理元件中的所有類別,而且您可以展開您想要檢視屬性的類別。 當您選取 [所有管理元件] 時,會顯示 [連結庫] 資料夾中所有管理元件中的所有類別。 每當您變更管理元件的選取範圍時,都必須重新整理 [ 類別瀏覽器 ] 窗格。

瀏覽課程

若要流覽 Authoring 工具中的類別,請遵循下列步驟:

  1. 如果在 [撰寫工具] 中看不到 [類別瀏覽器] 窗格,請選取 [ 檢視],然後選取 [ 類別瀏覽器]。

  2. 在 [類別瀏覽器] 窗格的 [管理元件] 清單中,選取包含您要瀏覽之類別的管理元件。 例如,選取 [系統連結庫 ] 管理元件。

  3. 找出您想要檢視的類別,例如 Computer 類別,然後執行下列動作:

    • 若要檢視類別的詳細數據,例如 [描述 ] 和 [內部名稱],請以滑鼠右鍵按兩下類別,然後選取 [ 詳細數據]。

    • 若要檢視類別屬性的清單,例如顯示名稱和資產狀態,請在 [類別瀏覽器] 窗格中展開 類別。 若要進一步檢視屬性的詳細數據,請以滑鼠右鍵按單擊屬性,然後選取 [ 詳細數據]。

    • 若要開啟包含 類別定義的管理元件,請以滑鼠右鍵按兩下類別,然後選取 [ 檢視]。

在撰寫工具中編輯類別的詳細數據

您可以使用 Service Manager Authoring 工具來檢視類別的屬性,以及編輯類別的名稱或描述等詳細數據。

在 [管理元件總管] 中,您可以選取類別,並在 [詳細數據] 窗格中檢視其詳細數據。 如果您選取未密封管理元件中定義的類別,您可以變更該類別的名稱和描述。

變更類別的名稱或描述

若要變更 Authoring 工具中類別的名稱或描述,請遵循下列步驟:

  1. 在您的桌面上,選取 [ 開始]。

  2. 選取 [Service Manager 撰寫工具],然後等候 [撰寫] 工具開啟。

  3. 確定 管理元件瀏覽器詳細窗格 都已開啟。

  4. 選取 [ 檔案],然後選取 [ 開啟]。

  5. 在 [ 開啟檔案 ] 對話框中,選取包含您要變更之類別的未密封管理元件,然後選取 [ 開啟]。 例如,開啟 撰寫工具安裝資料夾 中的 \Samples\Woodgrove.AutomatedActivity.AddComputerToGroupMP.xml 範例管理套件。

  6. 管理套件瀏覽器 中,展開包含您要變更之類別的管理套件。

  7. 展開 [類別],然後找出並選取您想要變更的類別。

  8. 選取 [名稱] 或 [描述] 屬性的值,然後輸入新的值。 無法變更的值是不可用的。

  9. 管理套件探索器 中,按一下滑鼠右鍵以選取包含已變更類別的管理套件,然後選擇 儲存

在 Authoring 工具中使用繼承建立類別

在 Service Manager 撰寫工具中,您可以建立類別,從現有的基類繼承屬性和關聯性。 然後,您可以修改或新增屬性和關聯性至新類別。

作為定義類別繼承的第一個步驟,請選擇繼承屬性和關聯性的基類。 在撰寫工具中,您可以使用下列其中一種方法來選擇基類:

  • 使用快捷方式從基底組態項目類別繼承屬性和關聯性。

  • 使用快捷方式從基底工作項目類別繼承屬性和關聯性。

  • 首先選取基類,然後開始定義繼承。

  • 開始定義沒有特定基類選擇的繼承。

    下列程式描述在 Authoring 工具中定義類別繼承的所有方法。

以組態項目類別或工作專案類別作為基類開始

若要以撰寫工具中的組態項目類別或工作專案類別作為基類開始,請遵循下列步驟:

  1. 如果 [ 管理元件瀏覽器 ] 在撰寫工具中不可見,請選取 [ 檢視 ],然後選取 [ 管理元件瀏覽器 ]。

  2. 管理套件瀏覽器 中,選取並展開任何管理套件。

  3. 以滑鼠右鍵按兩下 [類別],然後選取 [建立設定項目類別] 或 [建立工作項目類別]。

  4. 如果您要從密封管理元件建立類別,請在 [ 目標管理元件] 對話框中,選取未密封的管理元件 來儲存類別自定義,然後選取 [ 確定]。

    注意

    如果您要從未密封的管理元件建立類別,此類別自定義會儲存在該選取的管理元件中。

  5. 在 [ 建立類別 ] 對話框中,指定新類別的內部名稱,然後選取 [ 建立]。

    在撰寫窗格中,您現在可以檢視新類別的屬性清單。 如果您要建立組態項目類別,則會列出組態項目類別的所有屬性。 如果您要建立工作項目類別,則會顯示工作項目類別的所有屬性。

  6. 選取 [建立屬性 ] 或 [建立關聯 性],以定義 類別的新屬性和新關聯性。

從選取的基類開始

若要從 Authoring 工具中的選取基類開始,請遵循下列步驟:

  1. 如果 [ 管理元件瀏覽器 ] 在撰寫工具中不可見,請選取 [ 檢視 ],然後選取 [ 管理元件瀏覽器 ]。

  2. 管理元件總管 中,找到基類並且右鍵點擊,新的類別將繼承該基類的屬性和關聯性。 選擇 繼承自此類別

  3. 在 [ 繼承新類別 ] 對話框中,輸入 類別的內部名稱。

    在撰寫窗格中,[ 類別屬性和關聯性 ] 列表會顯示基類的屬性。

  4. 您現在可以選取 [建立屬性] 或 [建立關聯性],將屬性或關聯性新增至新類別。

沒有選擇基類就開始

若要在 Authoring 工具中不使用選取的基類開始,請遵循下列步驟:

  1. 如果在撰寫工具中看不到 管理元件 總管,請選取 [ 檢視],然後選取 [ 管理元件總管]。

  2. 管理套件瀏覽器 中,選取並展開任何管理套件。

  3. 以滑鼠右鍵按兩下 [類別],然後選取 [ 建立其他類別]。

  4. 在 [ 基類] 對話框中,選取要繼承屬性和關聯性的基類

    或者,如果您知道您要使用的基類定義在哪個管理元件中,您可以篩選個別的管理元件,然後選取此自定義的基類。

    請選擇 [確定]。

  5. 如果您選取繼承屬性和關聯性的基類位於密封管理元件中,請在 [目標管理元件] 對話方塊中,選取未密封的管理元件 以儲存類別自定義,然後選取 [ 確定]。

    如果您選取繼承屬性和關聯性的基類位於未密封的管理元件中,這個類別自定義將會儲存在該選取的管理元件中。

  6. 在 [ 建立類別] 對話框中,指定此類別的內部名稱,然後選取 [ 建立]。

    在撰寫窗格中,您現在可以檢視新類別的屬性清單。 此清單包含您選取之基類的所有屬性。

在 Authoring 工具中擴充類別

您可以在 Service Manager Authoring 工具中擴充類別,方法是將屬性和關聯性新增至 類別的定義。 擴充類別會影響該類別的所有現有實例:該類別的所有實例都會更新,以包含新的屬性和關聯性。

擴充類別

若要在 Authoring 工具中擴充類別,請遵循下列步驟:

  1. 如果在 [撰寫工具] 中看不到 [管理元件 總管] 窗格,請選取 [ 檢視],然後選取 [ 管理元件總管]。

  2. 在 [ 管理元件總管] 窗格中,找出並以滑鼠右鍵按兩下您要擴充的類別,然後選取 [ 擴充類別]。

  3. 在 [ 目標管理元件 ] 對話框中,選取未密封的管理元件以儲存類別延伸模組,然後選取 [ 確定]。

  4. 在撰寫窗格中的 類別的延伸模組 索引標籤上,類別屬性和關聯性 清單會顯示類別的屬性和關聯性。 建立新的屬性和關聯性,如下所示:

    1. 選取 [建立屬性];在 [建立屬性] 對話框中,輸入新屬性的內部名稱;然後選取 [建立]。

    2. 選取 [建立關聯性];在 [建立關聯性] 對話框中,輸入新關聯性的內部名稱;然後選取 [建立]。

    注意

    當您擴充類別時,請勿使用已在該類別中使用的標識碼來定義屬性。

  5. 在 [類別屬性和關聯性] 清單中找出並選取新的屬性或關聯性,並視需要在 [詳細數據] 窗格中修改其屬性

下一步

若要檢視和編輯物件的屬性,請參閱 自定義和撰寫表單