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

Value: 0
Label: In Bearbeitung

Value: 1

State: 0
Label: Aktiv

Value: 0
Label: In Hold

Value: 2

State: 0
Label: Aktiv

Value: 0
Label: Warte auf Details

Value: 3

State: 0
Label: Aktiv

Value: 0
Beschriftung: Recherche

Value: 4

State: 0
Label: Gelöst

Value: 1
Label: Problem gelöst

Value: 5

State: 1
Label: Gelöst

Value: 1
Beschriftung: Bereitgestellte Informationen

Value: 1000

State: 1
Beschriftung: Storniert

Value: 2
Label: Abgebrochen

Value: 6

State: 2
Beschriftung: Storniert

Value: 2
Label: Zusammengeführt

Value: 2000

State: 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.

&lt;allowedtransitions xmlns="https://schemas.microsoft.com/crm/2009/WebServices"&gt;
&lt;allowedtransition sourcestatusid="1" tostatusid="6" /&gt;
&lt;allowedtransition sourcestatusid="1" tostatusid="1000" /&gt;
&lt;allowedtransition sourcestatusid="1" tostatusid="2000" /&gt;
&lt;allowedtransition sourcestatusid="1" tostatusid="5" /&gt;
&lt;/allowedtransitions&gt;

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