Also, ich habe ein Szenario, in dem ich in regelmäßigen Abständen SignalWorkflowExecution() aufrufen eine Anforderung für Workflow-Signalisierung übergeben. Im Decider habe ich codiert, ich sehe es dann bei seiner nächsten Abfrageanforderung das Signal in der Ereignishistorie erhalten (und eine Entscheidungsaufgabe unmittelbar danach gestartet).Wie sollen Amazon SWF-Signale verarbeitet werden?
Meine Frage ist, wie verhindere ich die Verarbeitung dieses Signal ein zweites Mal? Das heißt, wenn ich das Signal bekomme, dann eine neue Aktivität zur Arbeit einreichen, wird das Signal nicht noch in der Ereignishistorie sein? Ich sehe keine Möglichkeit, das Signal mit einer nachfolgenden Entscheidungsaufgabe zu korrelieren, und es ist keine empfohlene Vorgehensweise, den Zustand in einem Decider beizubehalten, da dies die SWF sein soll.
Wird erwartet, dass der Decider auch andere Aufgabenlisten abfragt? Das heißt, wenn mein Decider ein Signal zur Ausführung von Aktion A empfängt und dann eine neue Entscheidung zur Planung von Aktivität A auf Taskliste X (wo Arbeiter für Aktion A abfragen) erstellt wird, wird erwartet, dass der Decider Taskliste X ebenfalls abfragen wird ob für die Aktion A bereits eine Aktivität geplant wurde? Ansonsten sehe ich nicht, wie man es vermeidet, Signale jedes Mal neu zu verarbeiten, wenn es ein neues Signal bekommt, alle vorherigen Signale sind in der Historie, also wie vermeide ich die erneute Verarbeitung?
Ich kann nicht viele Informationen über die Arbeit mit Signalen finden. Ich sehe nur eine Seite, und es erklärt nicht, wie man mit Signalen im Entscheider umgeht.
Ich muss nur den "richtigen" Weg kennen, Signale im Workflow zu verarbeiten.
Welches clientseitige Framework und welche Sprache verwenden Sie? AWS Flow Framework kümmert sich um all diese Komplexität für Sie. –
Ich verwende das C# AWS SDK. Das SDK verarbeitet keine Signale, Sie müssen nach ihnen suchen und die Ereignishistorie selbst im Entscheidungskriterium durchlaufen. SWF selbst generiert automatisch eine Entscheidungsaufgabe, wenn ein Signal empfangen wird, so dass die Entscheidungsaufgabe an den Entscheider gesendet wird. Ich verstehe nicht, was Sie darunter verstehen, weil ich die Dinge implementiert habe und sie nur Zyklen macht für immer die Signale zu erhalten und neue Aktivitätsanfragen einzureichen, ohne zu wissen, dass es schon ein bestimmtes Signal verarbeitet hat. Dies ist was die Docs sagen zu tun - verarbeiten Sie die Geschichte selbst, um die Signale zu erhalten – superqd