Ändringar i det gemensamma System Center-schemat
Publicerat: juli 2016
Gäller för: System Center 2012 SP1 - Service Manager, System Center 2012 R2 Service Manager, System Center 2012 - Service Manager
System Center 2012 – Service Manager innehåller en uppdaterad version av hanteringspaketets schemaversion i System Center. Schemat kallas nu det gemensamma System Center-schemat och innehåller en rad förbättringar och tillägg som utökar den befintliga kapaciteten och aktiverar Service Manager--funktioner. I det här avsnittet beskrivs ändringar i det gemensamma System Center-schemat.
För information om Service Manager--hanteringspaket och fler XML-exempel finns i Direktredigera en hanteringspaketfil för att hantera projektorer.
Egenskaper och egenskapsbegränsningar
Det gemensamma schemat utökar klasser genom flera nya egenskapstyper. Egenskapstyperna är binär, uppräkning och automatisk stegvis ökning.
Dessutom kan du ange begränsningar för vissa egenskapsvärden. Du kan till exempel ange en begränsning till reguljära uttryck för ett strängegenskapsvärde. I följande exempel används en begränsning till reguljära uttryck för egenskapen BuildingName som är definierad så att bara ett värde med ordet ”Building” följt av ett blanksteg och en siffra betraktas som giltigt.
<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>
Avbildningar
Avbildningar lagras inte i ett hanteringspaket. <PresentationTypes>-delen i hanteringspaketet innehåller därför inte längre taggarna <Images>, <Image> eller <ImageData>. Använd i stället en avbildningsresurs.
<Resources>
<Image ID="TestLibrary.Resources.Image1" Accessibility="Public" FileName="image.png"/>
</Resources>
Uppräkningar
Det gemensamma schemat har stöd för uppräkningar. Uppräkningar är ett träd med värden som du kan använda för att begränsa värdet för en egenskap eller ett attribut.
För varje uppräkning krävs ett unikt ID-attribut och ett valfritt Parent-attribut.
I följande exempel definieras uppräkningen XBoxState med tre möjliga värden: Körs, Stoppad och Fel.
<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>
I följande exempel definierar klassen Xbox en enum-egenskap av typen 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>
Relationer
Relationsdefinitioner har fått utökad kapacitet i det gemensamma schemat. RelationshipType-typen har nu delelementen Source och Target med ID-egenskaper som kan användas som visningsnamn. Dessutom kan du definiera minsta och högsta kardinalitet för både källa och mål (till exempel relationer av typen 1-till-1 eller 0-till-många).
Kardinaliteten utökas inte under hanteringspaketverifieringen men är avsedd att göra det lättare att definiera användargränssnitt för hanteringspaketet. Du kan exempelvis kontrollera kardinalitet för att avgöra om ett fält ska visas i ett formulär i form av en textruta eller en lista.
Viktigt |
---|
|
Om du lägger till en ny relationstyp från ett eget hanteringspaket måste användarna ha behörighet för att uppdatera alla egenskaper för käll- och målinstanserna av relationstypen för att kunna skapa en instans av den nya relationstypen.
I följande exempel definieras en värdrelation (kallas HasXboxes) mellan typen Lobby och typen Xbox. I den här relationsdefinitionen kan varje Lobby-typ ha flera Xbox-typer.
<RelationshipType ID="HasXBboxes" Accessibility="Public" Base="System!System.Hosting">
<Source ID="Source" Type="Lobby" />
<Target ID="Target" Type="Xbox" MinCardinality="0" MaxCardinality="9999" />
</RelationshipType>
Kombinationsklasser
Kombinationsklasser är en sammanställning av flera relaterade typer i hanteringspaketet, liknande de vyer som definieras i en Microsoft SQL Server-databas som kan returnera data från flera tabeller. Kombinationsklasser lagrar och hämtar alla sammanställda data i en enda åtgärd på databasen, och kan göra det enklare att definiera användargränssnitt för ett hanteringspaket.
I följande exempel har en projektion definierats för en incidenthanteringsvy. I den här projektionen kombineras flera olika komponenter som hör till en incident i en enda enhet som lättare kan hanteras i formulär- och databasåtgärder.
<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>
Konsoluppgifter
Konsoluppgifter har utökats i det gemensamma schemat. Tidigare var konsoluppgifter enkla pekare till namnet på en programkatalog och körbar fil. Konsoluppgifter används nu som hanterarkod i en Microsoft .NET Framework-sammansättning. Hanterarkoden refererar till den sammansättning som innehåller koden, hanterarnamnet och en lista över namngivna värden som kan skickas som argument till hanteraren.
I följande exempel definieras Some.Handler.Name-hanteraren i MyLibrary.Resources.Assembly-sammansättningen. En lista över hanterarparametrar och deras värden anges också.
<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>
Resurser
Binärdata lagras inte direkt i ett hanteringspaket. I stället lagras metadata om binärresursen i hanteringspaketet medan de faktiska binärdata lagras externt i en resursfil. Metadata innehåller en unik identifierare, filnamnet, skapandedatum, ändringsdatum och tillgänglighetsinformation.
Binärdata kan omfatta allmänna resurser, avbildningar, sammansättningar, rapportdefinitioner och formulär. I följande exempel visas en allmän XML-resurs, en sammansättningsresurs och en rapportresurs.
<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>
Formulär
Formulär definieras i ett hanteringspaket. Du kan använda formulär för att visa och ändra en enskild instans av en typ- eller kombinationsklass.
Formulär är baserade på WPF (Windows Presentation Framework) och definieras i sammansättningar. Den sammansättning och klass som innehåller införda formulär för ett hanteringspaket finns i hanteringspaketets resursdel. I likhet med eventuella binärresurser i ett hanteringspaket som använder det nya gemensamma schemat, innehåller inte själva hanteringspaketet några binärdata för formuläret. Det är bara resursmanifestet som anges i hanteringspaketet.
Du kan ange egen konfigurationsinformation för formuläret i hanteringspaketet. I följande exempel innehållet konfigurationsdelen en ShowXboxes-egenskap. Konfigurationsinformationen utvärderas inte under hanteringspaketverifieringen utan tolkas bara när formuläret införs.
<Forms>
<Form ID="LobbyForm" Target="Projection" Assembly="FormAssembly“ TypeName="MyFormClass">
<Configuration>
<ShowXboxes>yes</ShowXboxes>
</Configuration>
</Form>
</Forms>
Se även
Direktredigera en hanteringspaketfil för att hantera projektorer
Formulär: Allmänna riktlinjer och metodtips