2010-02-24 7 views
6

Ich habe ein Modell, das einen Registrierungsprozess darstellt, der den Verlauf mehrerer Prozesse (Hintergrundprüfungen, Interviews, Informationssammlung ...) verfolgen muss. Jeder kann durch eine Zustandsmaschine repräsentiert werden, und dann kann der Gesamtzustand der Registrierung von dem Zustand der anderen abhängen.Mehrere Automaten in einem Modell?

Kann aasm damit umgehen? Irgendwelche anderen Ideen oder Designüberlegungen?

Antwort

-2

Wenn Sie mehrere statemachines in einem Modell braucht es wahrscheinlich zu groß bekommen und es ist Zeit, um das Modell zu teilen. Also in Ihrem Beispiel sollten Sie Modelle für Hintergrundprüfungen, Interviews, Informationssammlung hinzufügen ...

+0

Es gibt mehrere Modelle für all diese Dinge, und es ist der Gesamtprozess, der die Sate-Modellierung benötigt – DGM

+2

ein Bedarf an mehreren StateMachines stellt nicht unbedingt eine Notwendigkeit für die Zerlegung überhaupt dar. Tatsächlich kann es aus einer guten Zersetzung resultieren, die bereits angewendet wurde. Zum Beispiel im Anwendungsfall des OP. Es ist in Ordnung, wenn das Modell am Ende einer Has-Many eine eigene Zustandsmaschine hat, aber Sie benötigen immer noch eine Zustandsmaschine für den Zustand der Sammlung, sofern Sie nicht nur eine Menge davon verwenden wollen schwierig, bedingte Übergänge zu überwachen. –

4

Da diese Frage auftaucht, wenn Sie mehrere Zustandsautomaten in einem Modell googlen, wäre es gut, eine Antwort zu haben, obwohl dort ist schon eine Antwort. Bitte versuchen Sie es zu tun:

class Example < ActiveRecord::Base 
include AASM 

    aasm :search, :column => :search do 
    state :initialised, :initial => true 
    ... 
    end 
    aasm :sync, :column => :sync do 
    state :unsynced, :initial => true 
    ... 
    end 
end 

Dies wird zwei Zustandsmaschinen auf zwei Säulen, Such- und Sync-basierte erstellen.