共用方式為


使用 Service Manager 撰寫自定義和撰寫類別

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

代表較大型元素的類別定義,例如 Service Manager 功能,通常會分組在一起。 類別定義會儲存在必須匯入 Service Manager 的管理元件中,才能啟用 Service Manager 功能。

類別的重要概念

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

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

注意

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

屬性

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

索引鍵屬性

索引鍵屬性可唯一識別特定類別的每個實例。 如果屬性標示為索引鍵屬性,則類別的每個實例都必須有該屬性的唯一值,而且值不能為 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 引擎 類別任何特定執行個體的電腦。 工作流程腳本可以存取目標對象的屬性,以及該目標主控父代的屬性。
Containment 索引鍵屬性和存在不相依於容器物件。 除了其任何容器父系的屬性之外,任何以類別為目標的工作流程,都能夠存取該類別的屬性。

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

參考關聯性

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

內含項目關聯性

內含項目關聯性類型的限制小於裝載關聯性。 它會宣告某個類別與另一個類別相關,但另一個類別並非必要類別。 不同於裝載關聯性,內含項目關聯性是多對多關聯性。 這表示一個物件可以內含多個物件,而單一物件可以由多個其他物件所內含。 例如,一個群組可以包含多個物件,而單一物件可以是多個群組的成員。

內含項目關聯性通常用於群組成員資格,在這種情況中,物件是透過群組和成員物件之間的內含項目關聯性包含在群組中。

裝載關聯性

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

當一個物件由其他物件所裝載時,該物件的存在依賴其裝載父系。 如果裝載父系移除,則受裝載子系會一併移除。 例如,邏輯磁碟在未安裝的計算機的情況下無法存在。

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

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 撰寫工具中自定義類別時,請使用下列指導方針和最佳做法。

類型定義的命名慣例

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。

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

瀏覽類別

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

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

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

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

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

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

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

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

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

變更類別的名稱或描述

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

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

  3. 確定 [管理元件 總管] 和 [ 詳細 數據] 窗格都已開啟。

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

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

  6. 在 [ 管理元件總管] 中,展開包含您要變更之類別的管理元件。

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

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

  9. 在 [管理元件總管] 中,以滑鼠右鍵按兩下包含已變更類別的管理元件,然後選取 [儲存]。

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

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

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

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

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

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

  • 開始定義沒有特定基類選取範圍的繼承。

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

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

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

  2. 在 [ 管理元件總管] 中,選取並展開任何管理元件。

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

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

    注意

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

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

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

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

從選取的基類開始

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

  2. 在 [管理元件總管] 中,找出 ,然後在基類上按下滑鼠右鍵,新類別會繼承屬性和關聯性。 選取 [ 繼承自此類別]。

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

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

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

不使用選取的基類啟動

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

  2. 在 [ 管理元件總管] 中,選取並展開任何管理元件。

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

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

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

    選取 [確定]。

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

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

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

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

在 Authoring 工具中擴充類別

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

擴充類別

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

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

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

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

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

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

    注意

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

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

下一步