Definieren von benutzerdefinierten Statusmodellübergängen
In Incident
können Sie benutzerdefinierte Statusübergänge für die (Anfrage)-Entität oder benutzerdefinerte Entitäten angeben. Die Eigenschaft EntityMetadata.IsStateModelAware ist true
für Entitäten, die Zustandsmodellübergänge unterstützen.
Benutzerdefinierte Statusübergänge sind eine optionale Filterebene zum Definieren, welche Statusübergänge für einen Datensatz in einem gegebenen Status gültig sind. Insbesondere bei einer großen Anzahl von Kombinationen für gültige Status und Statuswerte kann die Definition einer begrenzten Liste von Optionen es für Benutzer einfacher machen, den korrekten Status für einen Datensatz auszuwählen.
Was ist das Statusmodell?
Entitäten, die das Statuskonzept unterstützten, verfügen über ein Paar von Attributen, die diese Daten aufnehmen, wie in der folgenden Tabelle gezeigt.
Logischer Name | Anzeigename | Beschreibung |
---|---|---|
statecode |
Status | Stellt den Status des Datensatzes dar. Für benutzerdefinierte Entitäten ist dies Aktiv oder Inaktiv. Beispielsweise verwendet die Entität "Anfrage" Aktiv, Gelöst und Storniert. Sie können keine weiteren Statusoptionen hinzufügen, aber Sie können die Optionsbeschriftungen ändern. |
statuscode |
Statusgrund | Stellt einen Status dar, der mit einem bestimmten Status verknüpft ist. Jeder Status muss mindestens einen möglichen Status haben. Sie können zusätzliche Statusoptionen hinzufügen und die Bezeichnungen von vorhandenen Optionen ändern. |
Die Metadaten für die Attribute definieren, welche Statuswerte für einen bestimmten Status gültig sind. Beispielsweise werden für die Entität Incident
(Anfrage) der Standardstatus und die -statusoptionen in der folgenden Tabelle gezeigt.
Zustand | Status |
---|---|
Label : AktivValue : 0 |
Label : In BearbeitungValue : 1State : 0 |
Label : AktivValue : 0 |
Label : In HoldValue : 2State : 0 |
Label : AktivValue : 0 |
Label : Warte auf DetailsValue : 3State : 0 |
Label : AktivValue : 0 |
Beschriftung: RechercheValue : 4State : 0 |
Label : GelöstValue : 1 |
Label : Problem gelöstValue : 5State : 1 |
Label : GelöstValue : 1 |
Beschriftung: Bereitgestellte InformationenValue : 1000State : 1 |
Beschriftung: StorniertValue : 2 |
Label : AbgebrochenValue : 6State : 2 |
Beschriftung: StorniertValue : 2 |
Label : ZusammengeführtValue : 2000State : 2 |
Diese Daten werden in der Klasse StatusOptionMetadata gespeichert, die die Optionen in der Klasse StatusAttributeMetadata darstellt.
Zum Anzeigen der Entitätsmetadaten für Ihre Organisation installieren Sie die Metadatenbrowserlösung, die in Durchsuchen der Metadaten für Ihre Organisation beschrieben ist. Sie können die Referenzdokumentation für Entitäten auch in der Entitätsreferenz durchsuchen.
Erkennen von gültigen Statusübergängen
Sie können das statuscode
-Attribut ändern, um zu definieren, welche anderen Statusoptionen gültige Übergänge aus dem aktuellen Status darstellen. Anweisungen dazu finden Sie in der Anleitung zur Anpassung in folgendem Thema: Festlegen von Statusgrundübergängen
Wenn angepasste Statusübergänge auf eine Entität angewendet werden, wird die Eigenschaft EntityMetadata.EnforceStateTransitions zu true
. Außerdem wird jede StatusOptionMetadata innerhalb der Sammlung StatusAttributeMetadata.Options eine neue Eigenschaft TransitionData haben. Diese Eigenschaft enthält einen Zeichenfolgenwert, der ein XML-Dokument darstellt. Dieses Dokument enthält die Definition der zulässigen Übergänge. Beispielsweise kann die standardmäßige Incident
(Anfrage) StatusCode
-Attributoption den folgenden TransitionData
-Wert haben.
<allowedtransitions xmlns="https://schemas.microsoft.com/crm/2009/WebServices">
<allowedtransition sourcestatusid="1" tostatusid="6" />
<allowedtransition sourcestatusid="1" tostatusid="1000" />
<allowedtransition sourcestatusid="1" tostatusid="2000" />
<allowedtransition sourcestatusid="1" tostatusid="5" />
</allowedtransitions>
Notiz
Wenn diese Daten in nicht verwaltetem Code von dem Webdienst abgerufen werden, beispielsweise bei Verwendung von JavaScript, werden sie umgangen und erscheinen wie im folgenden Beispiel.
<allowedtransitions xmlns="https://schemas.microsoft.com/crm/2009/WebServices">
<allowedtransition sourcestatusid="1" tostatusid="6" />
<allowedtransition sourcestatusid="1" tostatusid="1000" />
<allowedtransition sourcestatusid="1" tostatusid="2000" />
<allowedtransition sourcestatusid="1" tostatusid="5" />
</allowedtransitions>
Wenn diese Daten vorhanden sind und die Entitätseigenschaft EnforceStateTransitions
auf true
festgelegt ist, kann eine Vorfallinstanz nur in einen der zulässigen statuscode
-Werte geändert werden. Mit IOrganizationService.Update können Sie die statuscode
OptionSetValue auf einen der zulässigen Werte festlegen, die keine Änderung des Status darstellen. Um den Status zu ändern, verwenden Sie SetStateRequest zum Festlegen der zulässigen Eigenschaftswerte State und Status oder CloseIncidentRequest zum Festlegen der Eigenschaft Status auf einen der Werte, die für den aktuellen statuscode
-Wert zulässig sind. Wenn Sie versuchen, einen ungültigen Wert festzulegen, wird ein Fehler ausgelöst.
Siehe auch
Beispiel: Abrufen gültiger Statusübergänge
Datensatzzustand und -status
Abrufen und Erkennen von Änderungen bei Metadaten