Partager via


Modifications du schéma commun de System Center

 

Date de publication : juillet 2016

S’applique à : System Center 2012 SP1 - Service Manager, System Center 2012 R2 Service Manager, System Center 2012 - Service Manager

System Center 2012 - Service Manager inclut une version mise à jour du schéma du pack d'administration System Center. Désormais, ce schéma est appelé le schéma commun System Center. Il inclut un certain nombre d'optimisations et d'ajouts destinés à améliorer la fonctionnalité existante et d'activer certaines fonctions Service Manager. Cette rubrique décrit les modifications apportées au schéma commun System Center.

lPour plus d'informations sur les packs d'administration Service Manager et pour obtenir d'autres exemples de fichier XML, voir Création directe d'un fichier de pack d'administration pour gérer les projecteurs.

Propriétés et restrictions de propriété

Le schéma commun étend les classes via plusieurs nouveaux types de propriété. Ces types de propriété incluent les types Binaire, Énumérateur et Auto-incrément.

En outre, vous pouvez définir des restrictions sur certaines valeurs de propriété. Par exemple, vous pouvez définir une restriction de l'expression régulière sur une valeur de propriété de chaîne. Dans l'exemple suivant, la propriété BuildingName possède une restriction d'expression régulière définie de sorte qu'une seule valeur contenant le mot « Building » suivi d'un espace d'un nombre soit considérée comme étant valide.

  
<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>  
  

Images

Les images ne sont pas stockées dans un pack d'administration. Par conséquent, la section <PresentationTypes> du pacte d'administration ne contient plus les balises <Images>, <Image> ou <ImageData>. Utilisez plutôt une ressource d'image.

<Resources>  
   <Image ID="TestLibrary.Resources.Image1" Accessibility="Public" FileName="image.png"/>  
</Resources>  
  

Énumérations

Le schéma commun prend en charge les énumérations. Les énumérations sont une arborescence de valeurs que vous pouvez utiliser pour limiter la valeur d'une propriété ou d'un attribut.

Chaque énumération possède un attribut obligatoire ID unique et éventuellement un attribut Parent.

Dans l'exemple suivant, l'énumération XBoxState est définie avec trois valeurs possibles : En cours d'exécution, Arrêté et Erreur.

  
<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>  
  

Dans l'exemple suivant, la classe Xbox définit une propriété enum de type XBoxState.

  
<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>  
  

Relations

La fonctionnalité de définition des relations a été améliorée dans le schéma commun. Le type RelationshipType possède désormais les sous-éléments Source et Target munis de propriétés ID pouvant être utilisés en tant que noms complets. En outre, vous pouvez définir une cardinalité minimale et maximale pour la source et la cible (par exemple, les relations 1-1 ou 0-à-plusieurs).

La cardinalité n'est pas appliquée par le processus de validation du pack d'administration, mais elle a pour but de vous aider à définir les interfaces utilisateur du pack d'administration. Par exemple, la cardinalité peut être vérifiée pour déterminer si un champ peut être représenté dans un formulaire par une zone de texte ou une liste.

Important


Les valeurs MaxCardinality définies comme étant supérieures à 1 sont traitées comme un nombre illimité.

Si vous ajoutez un nouveau type de relation à partir de votre pack d'administration, l'utilisateur doit avoir des privilèges suffisants pour mettre à jour toutes les propriétés des instances de classe sources et cibles du type de relation afin de créer une instance du nouveau type de relation.

Dans l'exemple suivant, une relation hôte (appelée HasXboxes) entre le type Lobby et le type Xbox est définie. Dans cette définition de relation, chaque type Lobby peut avoir plusieurs types Xbox.

  
<RelationshipType ID="HasXBboxes" Accessibility="Public" Base="System!System.Hosting">  
   <Source ID="Source" Type="Lobby" />  
   <Target ID="Target" Type="Xbox" MinCardinality="0" MaxCardinality="9999" />  
</RelationshipType>  
  

Classes de combinaison

Les classes de combinaison représentent un regroupement de plusieurs types associés dans le pack d'administration, semblable aux affichages définis dans une base de données Microsoft SQL Server pour pouvoir renvoyer des données provenant de plusieurs tables. Les combinaisons de classe stockent et récupèrent toutes les données agrégées en une seule opération effectuée dans la base de données, et elles facilitent la définition des interfaces utilisateur d'un pack d'administration.

Dans l'exemple suivant, une production est définie pour un affichage de gestion des incidents. Cette projection combine des composants différents liés à un incident en une seule unité pouvant être utilisée plus facilement pour les formulaires et les opérations de bases de données.

  
<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>  

Tâches de console

Les tâches de console ont été étendues dans le schéma commun. Auparavant, les tâches de console étaient de simples pointeurs vers un répertoire d'application et un nom de fichier exécutable. Désormais, les tâches de console sont implémentées sous forme de code de gestionnaire dans un assembly Microsoft .NET Framework. Le code de gestionnaire fait référence à l'assembly qui héberge le code, le nom de gestionnaire et une liste de valeurs nommées pouvant être être passées comme arguments au gestionnaire.

Dans l'exemple suivant, le gestionnaire Some.Handler.Name est défini dans l'assembly MyLibrary.Resources.Assembly. une liste des paramètres du gestionnaire et ses valeurs est également définie.

<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>  

Ressources

Les données binaires ne sont pas directement stockées dans un pack d'administration. Au lieu de cela, les métadonnées relatives à la ressource binaire sont stockées dans le pack d'administration, et les données binaires réelles sont stockées en externe dans un fichier de ressources. Les métadonnées incluent un identificateur unique, le nom de fichier, les données de création, la date de modification et les informations sur l'accessibilité.

Les données binaires peuvent inclure des ressources génériques, des images, des assemblys, des définitions de rapport et des formulaires. L'exemple suivant décrit une ressource XML générique, une ressource d'assembly et une ressource rapport.

  
<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>  
  

Formulaires

Les formulaires sont définis dans un pack d'administration. Vous pouvez utiliser les formulaires pour afficher et modifier une seule instance d'un type ou une classe de combinaison.

Les formulaires sont basés sur le format WPF (Windows Presentation Framework) et définis dans des assemblys. L'assembly et la classe qui contiennent les implémentations de formulaire d'un pack d'administration sont incluses dans la section de ressources du pack d'administration. Comme toute autre ressource binaire d'un pack d'administration utilisant le nouveau schéma commun, le pack d'administration ne contient pas lui-même les données binaires du formulaire. Seul le manifeste de la ressource est spécifié dans le pack d'administration.

Vous pouvez spécifier vos propres informations de configuration du formulaire dans le pack d'administration. Dans l'exemple suivant, la section Configuration contient une propriété ShowXboxes. Ces informations de configuration ne sont pas évaluées par le processus de vérification du pack d'administration ; elles sont uniquement interprétées par l'implémentation du formulaire.

  
    <Forms>  
   <Form ID="LobbyForm" Target="Projection" Assembly="FormAssembly“ TypeName="MyFormClass">  
   <Configuration>  
      <ShowXboxes>yes</ShowXboxes>  
   </Configuration>  
   </Form>  
</Forms>  
  

Voir aussi

Création directe d'un fichier de pack d'administration pour gérer les projecteurs
Formulaires : Directives et meilleures pratiques d'ordre général