Änderungen am System Center Common Schema
Veröffentlicht: Juli 2016
Gilt für: System Center 2012 SP1 - Service Manager, System Center 2012 R2 Service Manager, System Center 2012 - Service Manager
System Center 2012 – Service Manager enthält eine aktualisierte Version des System Center-Management Pack-Schemas. Dieses wird jetzt "System Center Common Schema" genannt. Es enthält einige Verbesserungen und neue Elemente, die vorhandene Funktionen erweitern und Service Manager-Funktionen aktivieren sollen. In diesem Thema werden die Änderungen am System Center Common Schema beschrieben.
Weitere Informationen zu Service Manager Management Packs und weitere XML-Muster finden Sie unter Direkte Konfiguration einer Management Pack-Datei zum Verwalten von Projektoren.
Eigenschaften und Eigenschaftseinschränkungen
Bei dem Common Schema werden Klassen durch mehrere neue Eigenschaftentypen erweitert. Zu diesen gehören Binär-, Enumerator-, und Autoincrement-Eigenschaften.
Darüber hinaus können Sie für bestimmte Eigenschaftswerte, z. B. für reguläre Ausdrücke oder Zeichenfolgenwerte, Einschränkungen definieren. Im folgenden Beispiel wurde die Eigenschaft BuildingName mit einer Einschränkung für reguläre Ausdrücke definiert, sodass nur ein Wert, der das Wort "Building" gefolgt von einem Leerzeichen und einer Zahl als gültig interpretiert wird.
<ClassType ID="Lobby" Accessibility="Public" Base="System!System.Entity">
<Property ID="Id" Type="int" Key="true" />
<Property ID="BuildingName" Type="string" RegEx="Building [0-9]+" />
</ClassType>
Abbilder
Abbilder werden nicht in Management Packs gespeichert. Der Abschnitt <PresentationTypes> im Management Pack enthält daher nicht mehr die Markierungen <Images><Image> bzw. <ImageData>. Verwenden Sie stattdessen eine Abbildressource.
<Resources>
<Image ID="TestLibrary.Resources.Image1" Accessibility="Public" FileName="image.png"/>
</Resources>
Enumerationen
Das Common Schema unterstützt Aufzählungen. Aufzählungen sind Baumstrukturen mit Werten, die zur Einschränkung des Werts einer Eigenschaft oder eines Attributs verwendet werden können.
Jede Aufzählung besitzt ein erforderliches eindeutiges ID-Attribut und optional ein Parent-Attribut.
Im folgenden Beispiel wird die Aufzählung XBoxState mit drei möglichen Werten definiert: Wird ausgeführt, Beendet und Fehler.
<EnumerationTypes>
<EnumerationValue ID="XBoxState" Accessibility="Public"/>
<EnumerationValue ID="XBoxState.Running" Parent="XBoxState" Accessibility="Public"/>
<EnumerationValue ID="XBoxState.Stopped" Parent="XBoxState" Accessibility="Public"/>
<EnumerationValue ID="XBoxState.Error" Parent="XBoxState" Accessibility="Public" />
<EnumerationValue ID="XBoxState.Error.RROD" Parent="XBoxState.Error" Accessibility="Public" />
</EnumerationTypes>
Im folgenden Beispiel wird über die Klasse Xbox eine enum-Eigenschaft des Typs XBoxState definiert.
<ClassType ID="XBox" Accessibility="Public" Base="System!System.ConfigItem" Hosted="true">
<Property ID="Id" Type="int" Key="true" />
<Property ID="Name" Type="string" />
<Property ID=“State" Type="enum" EnumType=“XBoxState" />
</ClassType>
Beziehungen
Die Funktionalität der Beziehungsdefinitionen wurde für das Common Schema erweitert. Der Typ RelationshipType verfügt nun über die Unterelemente Source und Target mit ID-Eigenschaften, die als Anzeigenamen verwendet werden können. Darüber hinaus können Sie für Quelle und Ziel eine minimale und maximale Kardinalität definieren (z. B. 1-zu-1- oder 0-zu-viele-Beziehungen).
Die Kardinalität wird durch die Management Pack-Überprüfung nicht erzwungen, soll jedoch bei der Definition von Benutzeroberflächen für das Management Pack helfen. Sie kann beispielsweise verwendet werden, um zu prüfen, ob ein Feld als Textfeld oder Liste dargestellt werden kann.
Wichtig |
---|
|
Wenn Sie eine neue Beziehung aus Ihrem eigenen Management Pack hinzufügen, müssen Benutzer über ausreichende Berechtigungen zum Aktualisieren aller Eigenschaften der Quell- und Zielklasseninstanzen des Beziehungstyps verfügen, damit sie eine Instanz des neuen Beziehungstyps erstellen können.
Im folgenden Beispiel wird eine Hostingbeziehung ("HasXboxes") zwischen dem Typ Lobby und dem Typ Xbox definiert. In dieser Beziehungsdefinition kann jeder Lobby-Typ mehrere Xbox-Typen besitzen.
<RelationshipType ID="HasXBboxes" Accessibility="Public" Base="System!System.Hosting">
<Source ID="Source" Type="Lobby" />
<Target ID="Target" Type="Xbox" MinCardinality="0" MaxCardinality="9999" />
</RelationshipType>
Kombinationsklassen
Kombinationsklassen sind eine Aggregierung mehrerer verwandter Typen in dem Management Pack, ähnlich wie Ansichten, die in einer Microsoft SQL Server-Datenbank zur Rückgabe von Daten aus mehreren Tabellen definiert werden. Kombinationsklassen dienen zum Speichern aller aggregierten Daten in einem Vorgang in der Datenbank und gleichermaßen zum Aufrufen dieser Daten aus der Datenbank. Sie können das Definieren von Benutzeroberflächen für ein Management Pack vereinfachen.
Im folgenden Beispiel wird eine Projektion für eine Incident Management-Ansicht definiert. Durch diese Projektion werden verschiedene zu einem Incident gehörende Komponenten zu einer einzelnen Einheit kombiniert, die die Verwendung in Formularen und Datenbankvorgängen vereinfacht.
<TypeProjections>
<TypeProjection ID="System.WorkItem.Incident.View.ProjectionType"
Accessibility="Public" Type="Incident!System.WorkItem.Incident">
<Component Alias="AffectedUser"
Path="$Target/Path[Relationship='SMCore!System.WorkItemCreatedForUser']$"/>
<Component Alias="AssignedUser" Path="$Target/Path[Relationship='SMCore!System.WorkItemAssignedToUser']$"/>
</TypeProjection>
<TypeProjection ID="System.WorkItem.Incident.View.DCMProjectionType" Accessibility="Public" Type="Incident!System.WorkItem.Incident.DCMIncident">
<Component Alias="AffectedUser" Path="$Target/Path[Relationship='SMCore!System.WorkItemCreatedForUser']$"/>
<Component Alias="AssignedUser" Path="$Target/Path[Relationship='SMCore!System.WorkItemAssignedToUser']$"/>
<!--Baseline and Configuration Item Information-->
<Component Alias="AffectedComputer" Path="$Target/Path[Relationship='Incident!System.WorkItem.Incident.DCMIncident.Refers.NonComplianceComputer']$"/>
</TypeProjection>
<TypeProjection ID="System.WorkItem.ChangeRequestViewProjection" Accessibility="Public" Type="System.WorkItem.ChangeRequest">
<Component Alias="AssignedTo" Path="$Target/Path[Relationship='SMCore!System.WorkItemAssignedToUser']$"/>
</TypeProjection>
<TypeProjection ID="System.WorkItem.ChangeRequestProjection" Accessibility="Public" Type="System.WorkItem.ChangeRequest">
<Component Alias="Activity" Path="$Target/Path[Relationship='SMActivity!System.WorkItemContainsActivity']$">
<Component Alias="ActivityAssignedTo" Path="$Target/Path[Relationship='SMCore!System.WorkItemAssignedToUser']$"/>
<Component Alias="ActivityRelatedWorkItem" Path="$Target/Path[Relationship='SMCore!System.WorkItemRelatesToWorkItem']$">
<Component Alias="ActivityRelatedWorkItemAssignedTo" Path="$Target/Path[Relationship='SMCore!System.WorkItemAssignedToUser']$"/>
</Component>
<Component Alias="ActivityRelatedConfigItem" Path="$Target/Path[Relationship='SMCore!System.WorkItemRelatesToConfigItem']$"/>
<Component Alias="ActivityAboutConfigItem" Path="$Target/Path[Relationship='System!System.WorkItemAboutConfigItem']$"/>
<Component Alias="ActivityFileAttachment" Path="$Target/Path[Relationship='System!System.WorkItemHasFileAttachment']$">
<Component Alias="ActivityFileAttachmentAddedBy" Path="$Target/Path[Relationship='System!System.FileAttachmentAddedByUser']$"/>
</Component>
<Component Alias="Reviewer" Path="$Target/Path[Relationship='SMActivity!System.ReviewActivityHasReviewer']$">
<Component Alias="User" Path="$Target/Path[Relationship='SMActivity!System.ReviewerIsUser']$"/>
<Component Alias="VotedBy" Path="$Target/Path[Relationship='SMActivity!System.ReviewerVotedByUser']$"/>
</Component>
</Component>
<Component Alias="CreatedBy" Path="$Target/Path[Relationship='SMCore!System.WorkItemCreatedByUser']$"/>
<Component Alias="AssignedTo" Path="$Target/Path[Relationship='SMCore!System.WorkItemAssignedToUser']$"/>
<Component Alias="CreatedFor" Path="$Target/Path[Relationship='SMCore!System.WorkItemCreatedForUser']$"/>
<Component Alias="RelatedWorkItem" Path="$Target/Path[Relationship='SMCore!System.WorkItemRelatesToWorkItem']$">
<Component Alias="RelatedWorkItemAssignedTo" Path="$Target/Path[Relationship='SMCore!System.WorkItemAssignedToUser']$"/>
</Component>
<Component Alias="RelatedConfigItem" Path="$Target/Path[Relationship='SMCore!System.WorkItemRelatesToConfigItem']$"/>
<Component Alias="AboutConfigItem" Path="$Target/Path[Relationship='System!System.WorkItemAboutConfigItem']$"/>
<Component Alias="FileAttachment" Path="$Target/Path[Relationship='System!System.WorkItemHasFileAttachment']$">
<Component Alias="FileAttachmentAddedBy" Path="$Target/Path[Relationship='System!System.FileAttachmentAddedByUser']$"/>
</Component>
</TypeProjection>
<TypeProjection ID="System.FileAttachmentProjection" Accessibility="Public" Type="System!System.FileAttachment">
<Component Alias="FileAttachmentAddedBy" Path="$Target/Path[Relationship='System!System.FileAttachmentAddedByUser']$"/>
</TypeProjection>
</TypeProjections>
Konsolentasks
Konsolentasks werden im Common Schema erweitert. Zuvor waren Konsolentasks einfache Zeiger auf ein Anwendungsverzeichnis und den Namen einer EXE-Datei. Sie sind jetzt als Handlercode in einer Microsoft .NET Framework-Assembly implementiert. Der Handlercode verweist auf die Assembly, die den Code beinhaltet, den Handlernamen und eine Liste benannter Werte, die an den Handler als Argumente weitergegeben werden können.
Im folgenden Beispiel werden der Handler Some.Handler.Name in der Assembly MyLibrary.Resources.Assembly sowie eine Liste der Handlerparameter und von deren Werten definiert.
<ConsoleTask ID="MyLibrary.ConsoleTasks.T1"
Accessibility="Public"
Target="System!System.Entity"
Enabled="true"
RequireOutput="true">
<Assembly>MyLibrary.Resources.Assembly1</Assembly>
<Handler>Some.Handler.Name</Handler>
<Parameters>
<Argument Name="Application">cmd.exe</Argument>
<Argument Name="WorkingDirectory">%TEMP%</Argument>
<Argument>test1</Argument>
<Argument>test2</Argument>
</Parameters>
</ConsoleTask>
Ressourcen
Binäre Daten werden nicht direkt in einem Management Pack gespeichert. Im Management Pack werden stattdessen Metadaten zu der jeweiligen Binärressource gespeichert, während die binären Daten selbst extern in einer Ressourcendatei gespeichert werden. Die Metadaten enthalten eine eindeutige ID, den Dateinamen, das Erstellungsdatum, das Änderungsdatum und Informationen zur Barrierefreiheit.
Binärdaten können generische Ressourcen, Abbilder, Assemblys, Berichtsdefinitionen und Formulare enthalten. Das folgende Beispiel zeigt eine allgemeine XML-Ressource, eine Assemblyressource und eine Berichtsressource.
<Resources>
<Resource ID="TestLibrary.Resources.Test1" Accessibility="Public" FileName="res1.xml"/>
<Resource ID="TestLibrary.Resources.Test2" Accessibility="Public" FileName="res2.xml"/>
<Assembly ID="TestLibrary.Resources.Assembly1" Accessibility="Public" QualifiedName="Baz, Version=1.0.0.0" FileName="baz.dll"/>
<Assembly ID="TestLibrary.Resources.Assembly2" Accessibility="Public" QualifiedName="Yoyo, Version=1.0.0.0" FileName="yoyo.dll">
<Dependency ID="TestLibrary.Resources.Assembly1"/>
</Assembly>
<ReportResource ID="TestLibrary.Resources.Report1" Accessibility="Public" MIMEType="text/xml" FileName="res1.xml"/>
<Image ID="TestLibrary.Resources.Image1" Accessibility="Public" FileName="image.png"/>
</Resources>
Formulare
Formulare werden in einem Management Pack definiert. Mit ihrer Hilfe können einzelne Instanzen eines Typs oder einer Kombinationsklasse angezeigt und geändert werden.
Formulare basieren auf Windows Presentation Framework (WPF) und werden in Assemblys definiert. Die Assembly und Klasse, welche die Formularimplementierungen für ein Management Pack enthalten, befinden sich im Ressourcenabschnitt des Management Packs. Genau wie jede binäre Ressource in einem Management Pack, von der das neue Common Schema verwendet wird, enthält das Management Pack selbst nicht die binären Daten des Formulars. Im Management Pack wird nur das Ressourcenmanifest angegeben.
Sie können im Management Pack Ihre eigenen Konfigurationsinformationen für Formulare festlegen. Im folgenden Beispiel enthält der Konfigurationsabschnitt die Eigenschaft ShowXboxes. Die Konfigurationsinformationen werden nicht bei der Überprüfung des Management Packs bewertet, sondern nur durch die Formularimplementierung
<Forms>
<Form ID="LobbyForm" Target="Projection" Assembly="FormAssembly“ TypeName="MyFormClass">
<Configuration>
<ShowXboxes>yes</ShowXboxes>
</Configuration>
</Form>
</Forms>
Siehe auch
Direkte Konfiguration einer Management Pack-Datei zum Verwalten von Projektoren
Formulare: Allgemeine Richtlinien und bewährte Methoden