Поделиться через


Настройка и создание классов с помощью разработки Service Manager

Класс — это основной элемент, используемый для представления объектов, используемых в Service Manager. Класс может представлять компьютер, пользователя, инцидент или форму.

Определения классов, представляющие более крупный элемент, например компонент Service Manager, часто группируются вместе. Определения классов хранятся в пакетах управления, которые необходимо импортировать в Service Manager, чтобы включить функциональные возможности Service Manager.

Основные понятия для классов

Объекты в Service Manager — это экземпляры определенного базового класса. Все экземпляры базового класса имеют общий набор свойств и поведение.

Подобно всем элементам пакета управления, у классов есть свойства ИД и Отображаемое имя . В этой документации идентификатор ссылается на уникальное имя класса, которое отображается только в средстве разработки, а имя и отображаемое имя ссылаются на имя, которое отображается в консоли Service Manager.

Примечание.

При создании класса всегда убедитесь, что имена классов уникальны среди пакетов управления. По возможности используйте осмысленные для своей среды имена классов. Вы можете определить, существует ли имя класса с помощью функции поиска в окне браузера классов средства разработки Service Manager.

Свойства

Все экземпляры определенного класса совместно используют общий набор свойств. Значения этих свойств устанавливают пользователи с помощью различных методов, и они могут быть различны в разных экземплярах. Свойства используются для представления сведений фактического объекта, таких как уникальное имя, расположение и другие сведения, которые могут быть интересны пользователю или требуются для сценариев управления.

Ключевые свойства

Ключевое свойство используется для уникальной идентификации экземпляров определенного класса. Если свойство помечается как ключевое свойство, каждый экземпляр класса должен иметь уникальное значение для этого свойства, а значение не может иметь значение NULL. Для размещенных классов значение должно быть уникальным только для всех экземпляров класса с одинаковым родительским объектом размещения. Для неуправляемых классов он должен быть уникальным для всех экземпляров класса в группе управления. Отношения размещения более подробно описаны дальше в разделе.

Для классов не всегда требуется свойство ключа. Ключевое свойство требуется только в тех случаях, когда у одного родительского элемента ожидается более одного экземпляра класса. Если ожидается только один экземпляр, свойство ключа не требуется, но может быть определено.

К примеру, у класса SQL Database Engine имеется ключевое свойство Instance Name , поскольку на одном компьютере может быть установлено несколько экземпляров Microsoft SQL Server. При наличии нескольких экземпляров SQL Database Engineкаждый экземпляр должен иметь разное значение Instance Name — это необходимо для возможности различать разные объекты. Класс веб-сервера IIS, напротив, не определяет свойство ключа, так как на любом компьютере может быть установлен только один экземпляр.

Все объекты имеют свойство Path Name , вычисляемое из ключевого свойства или свойств объекта, а также его родительских или родительских объектов. В неразмещенных объектах Path Name является свойством ключа самого класса. СвойствоPath Name можно использовать для уникальной идентификации любого экземпляра класса в группе управления.

Базовые классы и наследование

В каждом классе должен указываться базовый класс — существующий класс, который определяет специализациюнового класса. Библиотеки пакетов управления, включенные в Service Manager, содержат несколько классов, которые можно использовать в качестве основы для пользовательских классов в пакетах управления. Как правило, в пакете управления имеется как минимум один класс, наследующий от класса библиотеки, а также могут присутствовать другие классы, наследующие от классов того же пакета управления.

Концепцию базового класса можно проиллюстрировать на примере пакета управления Windows Server Operating System. Данный пакет управления содержит классы, которые представляют установленные в компьютере логические диски. В предыдущем примере все классы, показанные над классами Логический диск Windows Server 2003 и Логический диск Windows Server 2008, являются абстрактными. Оба этих класса основаны на классе Логический диск (сервер) , определенном в файле пакета управления Microsoft.Windows.Server.Library. Логический диск (сервер) в свою очередь основан на логическом диске, который основан на логическом устройстве и т. д. с помощью логического оборудования, логической сущности и, наконец , сущности. Подобный путь наследования можно отследить для всех классов и он всегда будет заканчиваться на классе Сущность, являющемся корнем структуры классов. Это единственный класс, который не имеет базового класса, и все остальные классы в конечном итоге наследуются от него.

Наследование свойств между классами

Иллюстрация, показывающая наследование свойств между классами.

Сущность имеет одно свойство с именем Display Name. Это свойство наследуется всеми классами, наследуемыми от сущности. Все классы в конечном итоге наследуются от Сущности. Именно поэтому все классы имеют свойство Display Name . У остальных классов в данном примере отсутствуют какие-либо свойства до класса Логическое устройство, который определяет свойства Name, Description, и DeviceID. СвойствоDeviceID указывается как ключевое. Эти свойства наследуются классами Логический диск и Логический диск (сервер). КлассЛогический диск (сервер) добавляет дополнительные свойства Size, Drive Typeи File System. Низкоуровневые классы, адаптированные под определенную версию операционной системы, наследуют весь набор свойств классов, находящихся над ними в дереве наследования.

Типы классов

Большинство классов имеют один или несколько фактических экземпляров и называются конкретными классами. Абстрактные классы и Singleton-классы — это особенные виды классов, которые ведут себя иначе и используются для определенных сценариев.

Абстрактные классы

Абстрактные классы не имеют экземпляров, они используются только в качестве базовых классов для других классов. Все свойства и связи, определенные на уровне абстрактного класса, наследуются дочерними классами и не должны быть определены снова. Большинство классов, определенных в библиотеках пакетов управления, являются абстрактными, так как они предоставляются только в качестве базовых классов для классов, определенных в пользовательских пакетах управления.

Абстрактные классы используются, где существует общий набор свойств, связей или группирования, которые можно определить во всех дальнейших специализациях класса. В предыдущем примере все классы, показанные над логическим диском Windows Server 2003 и логическим диском Windows Server 2008, являются абстрактными. Они существуют только для наследования нижестоящими классами.

Классы singleton

Одноэлементные классы используются при наличии одного и только одного экземпляра класса. Класс уже является экземпляром и всегда существует. Единственный экземпляр создается при установке пакета управления. Аналогичным образом свойство ключа не требуется для одного класса, так как он будет иметь только один экземпляр. Обычное использование одноэлементных классов предназначено для класса Groups , так как в группе управления требуется только один экземпляр этого класса.

Расширения классов

Для настройки класса его можно расширить путем добавления новых свойств в имеющееся определение класса. Теперь новые свойства будут включены во все экземпляры этого класса, которые уже существуют, и в любых новых экземплярах, которые будут созданы. Абстрактный класс нельзя расширить.

Связи

Отношения определяются между классами для указания ассоциации между определенным экземпляром одного класса и определенным экземпляром другого. Существует три типа связей, и они подробно описаны в следующих разделах:

  • Отношение размещения

  • Отношение вложения

  • Отношение ссылки

Отношения между классами влияют на объекты следующим образом:

Тип отношения Ключевое свойство и существование Доступные свойства
Размещение на компьютере Значение свойства ключа должно быть уникальным для всех экземпляров класса в группе управления. Однако для размещенных классов значение свойства ключа должно быть уникальным только для всех объектов, имеющих один и тот же родительский объект размещения.

Для уникальной идентификации размещенного объекта требуется ключевое свойство объекта и родительского объекта, а ключ размещенного класса будет сочетанием свойства ключа класса размещения и свойства ключа размещенного класса.

Существование размещенного класса зависит от существования размещающего класса.
Любой рабочий процесс, предназначенный для класса, имеет доступ к свойствам этого класса в дополнение к свойствам любого из его родительских элементов размещения.

Например, сценарию рабочего процесса, использующего в виде цели класс SQL 2008 DB Engine , может потребоваться имя компьютера, на котором установлен экземпляр SQL Server 2008. Поскольку у объекта может быть только один размещающий родительский элемент, компьютер, на котором находится какой-либо экземпляр класса SQL 2008 DB Engine , нам известен. Скрипт рабочего процесса может получить доступ к свойствам целевого объекта и свойствам родительского объекта этого целевого объекта.
Автономность Свойство ключа и существование не зависят от объекта контейнера. Любой рабочий процесс, предназначенный для класса, имеет доступ к свойствам этого класса в дополнение к свойствам любого из его родительских элементов контейнера (s).

Например, скрипт в рабочем процессе, предназначенный для класса инцидентов, может получить доступ к свойствам класса очереди контейнера.
Справочные материалы Свойство ключа и существование не зависят от ссылочного объекта. Любой рабочий процесс, предназначенный для класса, имеет доступ только к свойствам этого класса.

Отношение ссылки

Отношение ссылки является наиболее общим видом отношения. Связь ссылок используется, когда родительские и дочерние классы не зависят друг от друга; Например, база данных может ссылаться на другую базу данных, которую она реплицирует. Одна база данных не зависит от другой, а объекты существуют отдельно.

Отношение вложения

Отношение вложения является менее ограничивающим типом, чем отношение размещения. Он объявляет, что один класс связан с другим классом, хотя он не требуется для другого. В отличие от отношения размещения, отношение вложения использует тип "многие ко многим". Это означает, что один объект может содержать несколько объектов, а также сам содержаться в нескольких объектах. К примеру, в одной группе может содержаться несколько объектов, а один объект может быть участником нескольких групп.

Отношения вложения обычно используются для членства в группе, когда объекты включаются в группу с помощью отношения вложения между группой и объектом-участником.

Отношение размещения

Самым ограничивающим отношением между классами является отношение размещения . Класс, размещенный в другом классе, называется размещенный класс, а экземпляр класса называется размещенный объект. Если класс не размещен другим, он называется неуправляемым классом, а экземпляр класса называется неуправляемым объектом.

Если один объект размещен в другом, существование такого объекта целиком зависит размещающего его родительского объекта. В случае удаления размещающего родительского объекта будет удален и размещенный объект. Например, логический диск не может существовать без установленного компьютера.

Размещенный объект может иметь только одного размещающего родителя, однако у одного родителя может быть несколько дочерних элементов. К примеру, определенный диск может быть установлен только в одном компьютере, но в одном компьютере может быть несколько дисков.

Пакет управления SQL Server предоставляет еще один пример отношений размещения. Здесь показано отношение размещения между классами Windows Computer , SQL 2008 DB Engine и SQL 2008 DB .

Связи размещения для классов SQL Server 2008

Иллюстрация отношения размещения для классов SQL Server 2008.

Класс SQL 2008 DB Engine обозначает экземпляр SQL Server 2008, установленный на определенном компьютере. Поскольку база данных может быть установлена только на одном ядре СУБД, класс SQL 2008 DB размещен в классе SQL 2008 DB Engine . В одной группе управления может быть несколько баз данных с одинаковым именем, однако все базы данных, установленные в определенном экземпляре класса SQL Server должны обладать уникальным именем. Ядро СУБД, в свою очередь, размещено в классе Windows Computer . В группе управления может быть несколько экземпляров SQL Server с одинаковым именем. Однако на определенном компьютере каждый экземпляр должен иметь уникальное имя.

Поскольку имеются два отношения размещения, имя пути к каждой базе данных будет состоять из имени компьютера, за которым следует имя экземпляра, за которым следует имя базы данных. Образец показан на следующей схеме.

Примеры связей размещения базы данных

Схема примера связи размещения базы данных.

Общие рекомендации и рекомендации по классам

Используйте следующие рекомендации и рекомендации при настройке классов в средстве разработки Service Manager.

Соглашения об именовании для определений типов

Соглашение об именовании модели схемы Service Manager основано на соглашении об именовании пространств имен .NET.

Основные соглашения об именовании

Основой формат именования — CompanyName.TechnologyArea.ProductName.FunctionalityArea.Name, где:

  • ProductName — необязательное значение, используйте его, если определение не относится к определенному продукту.

  • FunctionalityArea — необязательное значение, используйте его, если определение может быть применимо к различным областям.

  • Name обозначает значение класса, а не иерархию наследования.

Примеры: Microsoft.AD.Printer, Microsoft.Windows.Computer, System.Knowledge.Article, System.WorkItem.Incidentи System.StarRating.Average.

Пространство имен системы

Пространство имен System относится к определениям, независимым от корпорации Майкрософт и Windows. Как правило, это базовые определения, от которых не зависят ни приложения для Windows, ни приложения для Unix. Такие базовые определения должны быть независимыми от компании.

Соблюдайте следующие правила для приставки System:

  • System.Computer представляет любой тип компьютера, и он не является поставщиком.

  • Используйте приставку System , если вы ожидаете, что другие будут определять схемы поверх данного пространства имен.

  • Обратите внимание, что Microsoft.Windows.Computer не начинается с System, хотя большинство приложений Windows (независимо от поставщика, который определяет его), полагаются на это определение.

Рекомендации по именованию классов

При именовании классов используйте следующие рекомендации.

  • Не создавайте два отдельных класса (даже если они хранятся в двух разных пакетах управления), что приведет к тому, что одинаковые значения ключей хранятся для разных объектов двух классов.

  • При расширении класса всегда убедитесь, что имена расширений класса уникальны для пакетов управления. По возможности используйте осмысленные имена для расширений класса.

  • При расширении класса не определите свойство с идентификатором, который уже используется в этом классе.

  • Не используйте периоды в именах свойств пользовательского класса.

  • Добавляя пользовательское именованное вычисление при создании куба, начните название именованного вычисления с приставки "NC_". Это уменьшит возможность конфликта с уже существующим именем свойства.

Не создавайте слишком много классов

Создание слишком большого количества классов ведет к излишней сложности с минимальной достигаемой ценностью. Рекомендуется использовать наименьшее количество классов, необходимое для достижения результата. Кроме абстрактных классов, если класс не будет целевым для любого рабочего процесса или используется для хранения данных, он, вероятно, не должен быть создан. Кроме того, при наличии двух схожих классов, попробуйте использовать для них один класс — возможно, путем добавления в него свойства, содержащего различия между ними.

Не используйте свойства, которые часто обновляются

Значения свойств должны изменяться редко после их заполнения. Возможные причины частых изменений значений свойств — это пользовательский соединитель или любая другая настройка, которая программно обновляет базу данных Service Manager. При большом количестве объектов подобные факторы могут вызывать слишком частое обновление значений свойств, например, раз в 10-15 минут или чаще.

Частые изменения значений свойств могут слегка снижать производительность рабочих процессов, а также влиять на производительность других операций. Это вызвано тем, что система отслеживает изменения, сохраняя их в памяти. Кроме того, в зависимости от изменяемого свойства, такие изменения могут существенно увеличивать объем данных для обработки и сохранения в хранилище данных.

Не расширяйте абстрактный класс

В Service Manager нельзя расширить абстрактный класс. Если нужно расширить абстрактный класс, можно выполнить одно из следующих действий:

  • Создайте новый класс с необходимыми свойствами, затем создайте отношение между новым классом и абстрактным классом.

  • Расширьте каждый из необходимых конкретных классов, происходящих от абстрактного класса.

Улучшение простого поиска классов рабочих элементов

При определении пользовательского класса, производного от класса System.WorkItem, рекомендуется сохранить свойство DisplayName этого класса в следующем формате: WorkItem.ID<SPACE>WorkItem.Title.

Это повышает эффективность простого поиска. В режиме простого поиска поиск выполняется только по свойству DisplayName , поэтому намеренное включение значения свойств Title и ID в свойство DisplayName позволяет улучшить результаты простого поиска. Это достигается тем, что пользователь может выполнять поиск как по слову, имеющемуся в названии, так и по ИД.

Обзор класса в средстве разработки

Панель "Браузер классов" в средстве разработки Service Manager можно использовать для просмотра классов и их свойств. Просматривая классы, вы можете добавить элемент управления в форму, перетаскивая свойства из области браузера классов в форму, созданную в области разработки.

Панель браузера классов может отображать классы из любого пакета управления, который находится в папке библиотеки, и из любого пакета управления, который был открыт в средстве разработки. При выборе класса в области "Браузер классов" отображаются свойства, определенные специально для этого класса, и внутренние свойства, созданные системой. По умолчанию папка библиотеки находится в следующем расположении: C:\Program Files (x86)\Microsoft System Center\Service Manager <version> Authoring\Library.

При выборе пакета управления в области браузера классов отображаются все классы из выбранного пакета управления, и можно развернуть класс, для которого требуется просмотреть свойства. При выборе всех пакетов управления отображаются все классы из всех пакетов управления в папке библиотеки. При изменении выбора пакета управления необходимо обновить панель браузера классов.

Обзор класса

  1. Если панель браузера классов не отображается в средстве разработки, выберите "Вид" и выберите "Браузер классов".

  2. В области браузера классов в списке пакетов управления выберите пакет управления, содержащий класс, который требуется просмотреть. Например, выберите пакет управления "Библиотека системы ".

  3. Найдите класс, который требуется просмотреть, например класс Computer , и выполните следующие действия:

    • Чтобы просмотреть сведения о классе, например Description и Internal Name, щелкните правой кнопкой мыши класс и выберите "Сведения".

    • Чтобы просмотреть список свойств класса, таких как отображаемое имя и состояние ресурса, разверните класс в области браузера классов. Чтобы просмотреть дополнительные сведения о свойстве, щелкните правой кнопкой мыши свойство и выберите "Сведения".

    • Чтобы открыть пакет управления, содержащий определение класса, щелкните правой кнопкой мыши класс и выберите "Вид".

Изменение сведений о классе в средстве разработки

Средство разработки Service Manager можно использовать для просмотра свойств класса и изменения сведений, таких как имя или описание класса.

В обозревателе пакетов управления можно выбрать класс и просмотреть его сведения в области сведений. Если выбрать класс, определенный в неуправляемом пакете управления, можно изменить имя и описание этого класса.

Изменение имени или описания класса

  1. На рабочем столе нажмите кнопку "Пуск".

  2. Выберите средство разработки Service Manager и дождитесь открытия средства разработки.

  3. Убедитесь, что откроется обозреватель пакетов управления и области сведений .

  4. Выберите файл и нажмите кнопку "Открыть".

  5. В диалоговом окне "Открыть файл" выберите неуправляемый пакет управления, содержащий класс, который требуется изменить, и нажмите кнопку "Открыть". Например, откройте папку установки средства разработки \Samples\Woodgrove.AutomatedActivity.AddComputerToGroupMP.xml пример пакета управления.

  6. В обозревателе пакетов управления разверните пакет управления, содержащий класс, который требуется изменить.

  7. Разверните классы, а затем найдите и выберите класс, который требуется изменить.

  8. Выберите значение свойства Name или Description , а затем введите новое значение. Значения, которые нельзя изменить, недоступны.

  9. В обозревателе пакетов управления щелкните правой кнопкой мыши пакет управления, содержащий измененный класс, и нажмите кнопку "Сохранить".

Создание класса с помощью наследования в средстве разработки

В средстве разработки Service Manager можно создать класс, наследующий свойства и связи из существующего базового класса. Затем можно изменить или добавить свойства и связи в новый класс.

В качестве первого шага определения наследования классов выберите базовый класс, от которого следует наследовать свойства и связи. В средстве разработки можно выбрать базовый класс с помощью одного из следующих методов:

  • Используйте ярлык для наследования свойств и связей из класса базового элемента конфигурации.

  • Используйте ярлык для наследования свойств и связей из базового класса рабочих элементов.

  • Сначала выберите базовый класс, а затем начните определять наследование.

  • Начните определять наследование без определенного выбора базового класса.

    В следующих процедурах описаны все методы определения наследования классов в средстве разработки.

Начните с класса элемента конфигурации или класса рабочего элемента в качестве базового класса

  1. Если обозреватель пакетов управления не отображается в средстве разработки, выберите "Вид" и выберите обозреватель пакетов управления.

  2. В обозревателе пакетов управления выберите и разверните любой пакет управления.

  3. Щелкните правой кнопкой мыши классы и выберите "Создать класс элемента конфигурации" или "Создать рабочий элемент".

  4. Если вы создаете класс из запечатаемого пакета управления, в диалоговом окне "Целевой пакет управления " выберите незапечатанный пакет управления для хранения настройки класса и нажмите кнопку "ОК".

    Примечание.

    Если вы создаете класс из неуправляемого пакета управления, эта настройка класса сохраняется в выбранном пакете управления.

  5. В диалоговом окне "Создать класс" укажите внутреннее имя нового класса и нажмите кнопку "Создать".

    В области разработки теперь можно просмотреть список свойств нового класса. Если вы создаете класс элемента конфигурации, перечислены все свойства класса элемента конфигурации. Если вы создаете класс рабочего элемента, отображаются все свойства класса рабочих элементов.

  6. Выберите " Создать свойство " или "Создать связь ", чтобы определить новые свойства и новые связи для класса.

Начните с выбранного базового класса

  1. Если обозреватель пакетов управления не отображается в средстве разработки, выберите "Вид" и выберите обозреватель пакетов управления.

  2. В обозревателе пакетов управления найдите и щелкните правой кнопкой мыши базовый класс, из которого новый класс наследует свойства и связи. Выберите "Наследовать от этого класса".

  3. В диалоговом окне " Наследовать новый класс " введите внутреннее имя класса.

    В области разработки в списке свойств классов и связей отображаются свойства базового класса.

  4. Теперь можно выбрать "Создать свойство " или "Создать связь ", чтобы добавить свойства или связь с новым классом.

Запуск без выбранного базового класса

  1. Если обозреватель пакетов управления не отображается в средстве разработки, выберите "Вид" и выберите обозреватель пакетов управления.

  2. В обозревателе пакетов управления выберите и разверните любой пакет управления.

  3. Щелкните правой кнопкой мыши классы и выберите "Создать другой класс".

  4. В диалоговом окне базового класса выберите базовый класс, чтобы наследовать свойства и связи.

    При необходимости, если вы знаете, в каком пакете управления определен базовый класс, который вы хотите использовать, можно отфильтровать соответствующий пакет управления, а затем выбрать базовый класс для этой настройки.

    Нажмите ОК.

  5. Если базовый класс, выбранный для наследования свойств и связей, находится в запечатанном пакете управления, в диалоговом окне "Целевой пакет управления " выберите незапечатанный пакет управления для хранения настройки класса и нажмите кнопку "ОК".

    Если базовый класс, выбранный для наследования свойств и связей, находится в неуправляемом пакете управления, этот класс будет сохранен в выбранном пакете управления.

  6. В диалоговом окне "Создание класса" укажите внутреннее имя этого класса и нажмите кнопку "Создать".

    В области разработки теперь можно просмотреть список свойств нового класса. Этот список содержит все свойства выбранного базового класса.

Расширение класса в средстве разработки

Можно расширить класс в средстве разработки Service Manager, добавив свойства и связи в определение класса. Расширение класса влияет на все существующие экземпляры этого класса: все экземпляры этого класса будут обновлены, чтобы включить новые свойства и связи.

Расширение класса

  1. Если панель обозревателя пакетов управления не отображается в средстве разработки, выберите "Вид" и выберите обозреватель пакетов управления.

  2. В области обозревателя пакетов управления найдите и щелкните правой кнопкой мыши класс, который требуется расширить, и выберите класс Extend.

  3. В диалоговом окне "Целевой пакет управления" выберите неуправляемый пакет управления для хранения расширения класса и нажмите кнопку "ОК".

  4. В списке свойств и связей класса на вкладке "Расширение класса " в области разработки отображаются свойства и связи класса. Создайте новые свойства и связи следующим образом:

    1. Выберите "Создать свойство"; в диалоговом окне "Создание свойства" введите имя во внутреннем имени нового свойства и нажмите кнопку "Создать".

    2. Выберите "Создать связь"; в диалоговом окне "Создать связь" введите имя во внутреннем имени для новой связи и нажмите кнопку "Создать".

    Примечание.

    При расширении класса не определите свойство с идентификатором, который уже используется в этом классе.

  5. Найдите и выберите новое свойство или связь в списке свойств класса и связей и измените его свойства в области сведений по мере необходимости.

Следующие шаги