Interruptbehandlung in der Lösung für die Geschäftsprozessverwaltung
In diesem Abschnitt wird der in der Lösung zur Geschäftsprozessverwaltung verwendete Mechanismus für die Interruptbehandlung beschrieben. Mithilfe des Interruptmechanismus können Sie die Bestellungsverarbeitung anhalten, wenn eine Bestellung aktualisiert oder storniert wird.
Interruptbehandlung
Die Orchestrierungen, die die Verarbeitungsphasen implementieren, rufen die Orchestrierung CheckInterrupt auf, die auf eine Interruptanforderung aus einem anderen Teil des Prozesses testet. Die CheckInterrupt-Orchestrierung besteht aus einem Listen-Shape . Ein Branch des Listen-Shapes sucht nach einer Nachricht mit derselben Korrelations-ID wie die aktuelle Reihenfolge. Wenn eine solche Nachricht vorhanden ist, sendet die CheckInterrupt-Orchestrierung eine Bestätigungsmeldung und führt eine Throw-Form aus. Da die Verzweigungen in einem Listen-Shape von links nach rechts ausgeführt werden, wird die Verzögerung im rechten Branch angezeigt. Die Verzögerung beträgt null (0).
Die Kombination aus dem Listen-Shape , einem Empfangsbranch und einem Verzögerungsbranch ermöglicht es der Orchestrierung, nach Nachrichten zu suchen. Wenn eine Interrupt-Meldung vorhanden ist, wird die linke Verzweigung ausgeführt. Ist keine Meldung vorhanden, wird die rechte Verzweigung ausgeführt und der Vorgang an die aufrufende Orchestrierung zurückgegeben. Eine Interrupt-Meldung kann jederzeit gesendet werden. Da die CheckInterrupt-Orchestrierung nur gelegentlich ausgeführt wird, kann eine Interruptmeldung darauf warten.
Der OrderManager legt Interrupts durch Aufrufen der Interrupterorchestrierung fest. Die Interrupterorchestrierung sendet eine Interruptnachricht an interruptPort und wartet auf eine Antwort. Die Orchestrierung verwendet die Timeout-Eigenschaft des einschließenden Bereichs-Shapes , um die Schleife neu zu starten, wenn keine Antwort empfangen wird. Die Orchestrierung sendet weiter Interrupt-Meldungen, solange ein Timeout für den Bereich eintritt, bevor eine Antwort eingeht. Ein Timeout weist darauf hin, dass die Anforderung mit einem Abonnement übereinstimmte, jedoch die Zeit für eine Antwort noch nicht ausreichte. Die Schleife wird beendet, wenn eine Antwort vorhanden ist oder kein Abonnement für interruptPort vorhanden ist.
Das Anforderungs-Antwort-Vervollständigungsmuster, das der OrderManager mit den Prozessphasen verwendet, ist ein wichtiger Teil der Interruptbehandlung. Da der OrderManager auf eine Antwort – eine Bestätigung – aus der Phase wartet, weiß er, dass die Phase gestartet wurde, bevor er fortfährt. So ist gewährleistet, dass eine Stufe nicht vor dem Start einen Interrupt empfangen kann. Dadurch wird der OrderManager auch darüber informiert, dass die Phase abgeschlossen ist, wenn kein Abonnement für einen Interrupt vorhanden ist.
Weitere Informationen
Verarbeitung in der Geschäftsprozessverwaltungslösung
Prozess-Manager-Logik
Die Orchestrierung „ExceptionHandler“