Freigeben über


LINQ-Meldungsabfragekorrelation

Das Beispiel LinqMessageQueryCorrelation veranschaulicht, wie die inhaltsbasierte Korrelation mithilfe einer benutzerdefinierten MessageQuery-Implementierung im Gegensatz zu der vom System bereitgestellten XPathMessageQuery erfolgt.

Zeigt

Benutzerdefinierte MessageQuery, inhaltsbasierte Korrelation.

Diskussion (Discussion)

In diesem Beispiel wird veranschaulicht, wie zum Zwecke der Korrelation eine Erweiterung von der MessageQuery-Basisklasse durchgeführt wird. Die benutzerdefinierte Implementierung, LinqMessageQuery, ermöglicht es Benutzern, einen XName anzugeben, der innerhalb der Meldung mit XLinq gesucht werden soll. Die von der Abfrage abgerufenen Daten werden verwendet, um den Korrelationsschlüssel zu bilden, mit dem Meldungen an die entsprechende Workflowinstanz weitergeleitet werden.

So können Sie das Beispiel einrichten, erstellen und ausführen

  1. Dieses Beispiel macht einen Workflowdienst mithilfe von HTTP-Endpunkten verfügbar. Um dieses Beispiel auszuführen, müssen richtige URL-ACLs hinzugefügt werden (weitere Informationen finden Sie unter Konfigurieren von HTTP und HTTPS), entweder durch Ausführen von Visual Studio als Administrator oder durch Ausführen des folgenden Befehls an einer Eingabeaufforderung mit erhöhten Rechten, um die entsprechenden ACLs hinzuzufügen. Stellen Sie sicher, dass die Domäne und der Benutzername ersetzt werden.

    netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%
    
  2. Sobald die URL-ACLs hinzugefügt wurden, führen Sie die folgenden Schritte aus.

    1. Erstellen Sie die Projektmappe.

    2. Legen Sie mehrere Startprojekte fest, indem Sie mit der rechten Maustaste auf die Projektmappe klicken und Startprojekte festlegen auswählen. Füge Sie Dienst und Client (in dieser Reihenfolge) als mehrere Startprojekte hinzu.

    3. Führen Sie die Anwendung aus. Die Clientkonsole zeigt einen Workflow, der eine Bestellung sendet und die Bestell-ID empfängt und dann daraufhin den Auftrag bestätigt. Das Fenster "Dienst" zeigt die Anforderungen, die verarbeitet werden.