2016-07-04 24 views
1

Gibt es eine Möglichkeit, Regeln in einer bestimmten Reihenfolge anzuwenden?So ordnen Sie Regeln im Arbeitsaufgabenfeld an

möchte ich YesNo nur, wenn zwei bestimmte Werte ausgewählt werden aus einem anderen Feld ... meine Regeln in XML so aussehen bieten:

<WHEN field="xxx.yyy.FoundInVersion" value="xxx"> 
    <ALLOWEXISTINGVALUE /> 
    <ALLOWEDVALUES not="[project]\xxx" expanditems="true"> 
     <LISTITEM value="No" /> 
     <LISTITEM value="Yes" /> 
    </ALLOWEDVALUES> 
    </WHEN> 
    <WHEN field="xxx.yyy.FoundInVersion" value="yyy"> 
    <ALLOWEXISTINGVALUE /> 
    <ALLOWEDVALUES not="[project]\xxx" expanditems="true"> 
     <LISTITEM value="No" /> 
     <LISTITEM value="Yes" /> 
    </ALLOWEDVALUES> 
    </WHEN> 
    <ALLOWEDVALUES not="[project]\MigrationAccounts" expanditems="true"> 
    <LISTITEM value="No" /> 
    </ALLOWEDVALUES> 

Dies funktioniert. Wenn eines der beiden WHENs korrekt ist, sind Ja und Nein erlaubt.

Aber irgendwie verschiebt TFS automatisch (auf der anderen/Zielinstanz) die letzte ALLOWEDVALUES-Regel an die Spitze, und nur No ist erlaubt und auswählbar, selbst wenn ich einen der Werte "yyy" oder "xxx" in der anderes Feld.

Es scheint irgendwo zu cachen, oder versuchen, intelligent oder etw. Zu sein.

Wie kann ich die Regeln für meine eigene Bestellung erzwingen?

Antwort

1

Regeln werden normalerweise in der Reihenfolge verarbeitet, in der sie aufgeführt sind. Wenn Sie jedoch die Elemente WHEN *, DEFAULT und COPY verwenden, können zusätzliche Verhaltensweisen auftreten.

Sie können eine Vorstellung davon bekommen, wie Regeln bewertet werden, wenn Sie mehrere Regeln auf ein Feld anwenden. Wie Regeln bewertet werden, ist nicht vollständig deterministisch. In diesem Abschnitt werden das erwartete Verhalten und die zu erwartenden Interaktionen bei Verwendung der Regeln WHEN *, DEFAULT und COPY beschrieben.

Die folgenden Schritte zeigen in der richtigen Reihenfolge die Interaktionen, die TFS ausführt, und den Benutzer eines Arbeitselementformulars. Nur die Schritte 1, 8 und 13 werden vom Benutzer ausgeführt.

1.From ein Team Foundation client─such wie Visual Studio, Team Explorer Team Web Access oder Team Explorer Everywhere─, ein Benutzer eine neue Workitem erstellt oder bearbeitet eine vorhandene Workitem.

2.Füllen Sie die Feldvorgaben ein. Verwenden Sie für alle Felder alle DEFAULT-Regeln, die außerhalb der WHEN * -Regeln liegen.

3. Feldwerte kopieren. Verwenden Sie für alle Felder alle COPY-Regeln, die außerhalb der WHEN * -Klauseln liegen.

4.Für alle Felder mit einer WHEN-Regel, die übereinstimmt, zuerst DEFAULT und dann COPY-Regeln innerhalb.

5.Für alle Felder mit einer WENNNOT-Regel, die übereinstimmt, zuerst DEFAULT und dann COPY-Regeln in.

TFS verarbeitet immer WHEN-Regeln vor WHENNOT-Regeln.

6.Für alle Felder, deren Werte seit Schritt 1 geändert wurden und die WHENCHANGED-Regeln enthalten, führen Sie zunächst DEFAULT und dann COPY-Regeln ein.

7. Dem Benutzer erlauben, mit der Bearbeitung zu beginnen.

8. Der Benutzer ändert einen Feldwert und verschiebt dann den Fokus aus dem Feld.

9.Erhöhen Sie alle WHEN-Regeln für dieses Feld, die mit dem neuen Wert übereinstimmen.

10.Starten Sie alle WENNNOT-Regeln für dieses Feld, die mit dem neuen Wert übereinstimmen.

11.Stellen Sie alle WHENCHANGED-Regeln für dieses Feld, die dem neuen Wert entsprechen, auf.

12.Rückgabe Bearbeitungsfähigkeit für den Benutzer.

13. Der Benutzer speichert die Änderungen in der Datenbank.

14.Für alle Felder führen Sie SERVERDEFAULT-Operationen aus, die für das Feld entweder direkt oder indirekt unter einer WHEN- oder WHENNOT- -Regel definiert sind.