Condividi tramite


Modifiche allo schema comune di System Center

 

Data di pubblicazione: luglio 2016

Si applica a: System Center 2012 SP1 - Service Manager, System Center 2012 R2 Service Manager, System Center 2012 - Service Manager

System Center 2012 - Service Manager include una versione aggiornata dello schema Management Pack di System Center. Questo schema viene denominato Schema comune di System Center e contiene un certo numero di miglioramenti e aggiunte destinati a migliorare le funzionalità esistenti e ad attivare quelle di Service Manager. In questo argomento vengono descritte le modifiche apportate allo schema comune di System Center.

Per ulteriori informazioni su Service Manager Management Pack e per ulteriori esempi di XML, vedere Modificare direttamente un file del Management Pack per gestire i proiettori.

Proprietà e relative restrizioni

Lo schema comune estende le classi attraverso diversi nuovi tipi di proprietà. Questi tipi di proprietà comprendono i tipi binario, enumeratore e incremento automatico.

Inoltre è possibile definire restrizioni per alcuni valori di proprietà. Ad esempio, è possibile definire una restrizione per l'espressione regolare su un valore di proprietà stringa. Nell'esempio seguente, la proprietà BuildingName dispone di una restrizione dell'espressione regolare definita in modo da considerare valido solo un valore contenente la parola "Building" seguita da uno spazio.

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

Immagini

Le immagini non vengono archiviate nei Management Pack. Pertanto, la sezione <PresentationTypes> del Management Pack non conterrà più i tag <Images>, <Image> o <ImageData>. Sostituire con una risorsa immagine.

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

Enumerazioni

Lo schema comune supporta le enumerazioni. Le enumerazioni sono una struttura ad albero di valori che consente di limitare il valore di una proprietà o di un attributo.

Ciascuna enumerazione dispone un attributo ID univoco richiesto e di un attributo Parent opzionale.

Nell'esempio seguente, l'enumerazione XBoxState viene definita con tre possibili valori: In esecuzione, Interrotto ed Errore.

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

Nell'esempio seguente, la classe Xbox definisce una proprietà enum di tipo 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>  
  

Relazioni

Nello schema comune è stata migliorata la funzionalità delle definizioni delle relazioni. Adesso il tipo RelationshipType dispone dei sottoelementi Source e Target con proprietà ID che è possibile utilizzare come nomi visualizzati. Inoltre, è possibile definire le cardinalità minima e massima per l'origine e per la destinazione (ad esempio, relazioni 1-to-1 o 0-to-many).

La cardinalità non viene imposta dal processo di convalida del Management Pack, ma è progettata per supportare l'utente nella definizione delle interfacce utente del Management Pack. Ad esempio, è possibile verificare la cardinalità in modo da stabilire se sia possibile rappresentare il campo di un modulo attraverso una casella di testo o un elenco.

System_CAPS_ICON_important.jpg Importante


Qualsiasi valore di MaxCardinality definito come maggiore di 1 verrà elaborato come infinito.

Se si aggiunge un nuovo tipo di relazione dal proprio Management Pack, per creare un'istanza del nuovo tipo di relazione è necessario disporre di privilegi sufficienti per aggiornare tutte le proprietà delle istanze delle classi di origine e di destinazione del tipo di relazione.

Nell'esempio seguente viene definita una relazione di hosting (denominata HasXboxes) tra i tipi Lobby e Xbox. Nella definizione della relazione, ciascun tipo Lobby può disporre di più tipi 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>  
  

Classi combinate

Le classi combinate sono un'aggregazione di più tipi correlati nel Management Pack, simili alle viste definite in un database Microsoft SQL Server in grado di restituire dati da più tabelle. Le classi combinate consentono di archiviare e recuperare tutti i dati aggregati in una singola operazione eseguita sul database e agevolano la definizione delle interfacce utente di un Management Pack.

Nell'esempio seguente viene definita una proiezione per una vista di gestione degli eventi imprevisti. La proiezione unisce diversi componenti, legati a un evento imprevisto, a una singola unità che è possibile utilizzare più agevolmente per moduli e operazioni di database.

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

Attività della console

Le attività della console vengono estese nello schema comune. In precedenza, le attività della console erano semplici puntatori a una directory delle applicazioni e al nome di un file eseguibile. Adesso le attività della console vengono implementate come codice del gestore in un assembly di Microsoft.NET Framework. Il codice del gestore fa riferimento all'assembly che ospita il codice, al nome del gestore e a un elenco di valori che è possibile trasmettere al gestore come argomenti.

Nel seguente esempio, il gestore Some.Handler.Name viene definito nell'assembly MyLibrary.Resources.Assembly. Viene definito anche un elenco dei parametri del gestore e dei relativi valori.

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

Risorse

I dati binari non vengono archiviati direttamente in un Management Pack. Al contrario, i metadati per la risorsa binaria vengono archiviati nel Management Pack e i dati binari reali vengono archiviati in un file di risorse esterno. I metadati comprendono un identificatore univoco, il nome del file, i dati di creazione, la data di modifica e le informazioni sull'accessibilità.

I dati binari possono comprendere risorse generiche, immagini, assembly, definizioni di report e moduli. Nell'esempio riportato di seguito viene illustrata una risorsa XML generica, una di assembly e un'altra di report.

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

Moduli

I moduli vengono definiti in un Management Pack. È possibile utilizzare i moduli per visualizzare e modificare una singola istanza di un tipo o di una classe combinata.

I moduli si basano su Windows Presentation Framework (WPF) e vengono definiti negli assembly. L'assembly e la classe che contengono le implementazioni del modulo di un Management Pack vengono inclusi nella relativa sezione delle risorse. Come per qualsiasi risorsa binaria di un Management Pack che utilizza il nuovo schema comune, il Management Pack non contiene i dati binari del modulo. Solo il manifesto delle risorse viene specificato nel Management Pack.

L'utente può specificare le proprie informazioni di configurazione per il modulo nel Management Pack. Nell'esempio seguente, la sezione Configurazione contiene una proprietà ShowXboxes. Le informazioni di configurazione non vengono valutate attraverso il processo di verifica del Management Pack, ma dall'implementazione del modulo.

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

Vedere anche

Modificare direttamente un file del Management Pack per gestire i proiettori
Moduli: Indicazioni generali e procedure consigliate