2013-06-14 10 views

Antwort

20

FSM ist ein DSL, mit dem Sie anspruchsvollere, lesbare State Machines erstellen können, als wäre die Verwendung der Core-Aktor-API möglich. Sie könnten den FSM-Code einer Geschäftsperson anzeigen und die Geschäftsregeln validieren.

Die FSM DSL ermöglicht es Ihnen, Dinge zusammen sauberer zu komponieren. Zum Beispiel transitions ermöglichen es Ihnen, Logik herauszufiltern, die über Akteur become Verhaltensweisen dupliziert werden müsste. Sie können auch andere Akteure abonnieren, um über Übergänge informiert zu werden, die beim Entkoppeln und Testen helfen.

Auch Timer sind schön in die DSL integriert und Dinge wie Stornierung werden sauber behandelt. Codierungs-Timeout-Nachrichten, die den Scheduler verwenden, haben eine Reihe von Fehlern.

Die nach unten zu FSM ist, dass es ein DSL ist und eine neue Syntax für andere Teammitglieder zu verdauen. Die Oberseite ist, dass es eine DSL und eine viel höhere Abstraktionsebene ist. Ich denke, die Schwelle von 2 Staaten von Agilesteel ist gut. Aber sobald man an 2 Staaten vorbeikommt, sind die Vorteile von FSM wirklich überzeugend.

Lesen Sie unbedingt the FSM docs und die accompanying examples kontrastierenden become und FSM.

Eine Anmerkung re: "Popup" ein Verhalten mit unbecome - das Standardverhalten ist das Verhalten Stacking nicht zu verwenden. Es ist nur in einer kleinen Anzahl von Anwendungsfällen relevant (dh in der Regel keine Zustandsmaschinen).

14

Werden/Unbequem sind im Gegensatz zu FSMs sehr leicht. Wenn Sie also nicht mehr als 2 Zustände (zum Beispiel an/aus) und/oder komplexe Statusänderungsrichtlinien haben, würde ich "Become/Unbecome" nicht in eine vollständige FSM umwandeln. Andere dann, dass ich denke, es gibt nur geringe Unterschiede ... Wie zum Beispiel FSMs Sie einen schönen Timer DSL gebaut geben:

setTimer("TimerName", msg, 5 seconds, repeat = true) 
// ... 
cancelTimer("TimerName") 

Oder zum Beispiel ich bin mir nicht sicher, ob es in einer FSM möglich ist, auf " Gehe zurück "in den vorherigen Zustand, es gibt nur" vorwärts ", da du explizit angeben musst, in welchen Zustand es gehen soll. Wohingegen unbecome genau das gibt.