2016-11-13 3 views
0

Ich versuche, eine Zustandsmaschine zu machen, in der ich eine Wiederholung und maximale Versuchsmöglichkeit bauen möchte. Lassen Sie mich erklären, so weit habe ich das: enter image description hereWiederholen und max. Versuche mit Zustandsmaschine

Von SAVED, ich möchte nach VALIDATED gehen, obwohl, wenn es einen Fehler gibt, muss es in AWAITING_VALIDATION Zustand gehen. Versuchen Sie nach 3 Minuten erneut, in den Status VALIDATED zu gelangen.

  1. Wurde der Wiederholungsmechanismus korrekt eingerichtet?
  2. Nach 3 Versuchen möchte ich in den Zustand SAVED (und pausieren Zustandsmaschine) zurückkehren. Ist es möglich, dies in einem schicken waty (z. B. mit Spring State Machine) zu tun oder muss ich dies manuell mit einer Art von Cache tun?

Danke für Ihre Hilfe

Antwort

1

Es gibt wahrscheinlich viele Möglichkeiten, diese Dinge mit unterschiedlichen Maschinenkonfigurationen zu tun, aber gesagt hat, dass das so ein klar dargestellt ist guestion, dass ich auf einige Zeit verbringen wollte.

Sie sind in der Nähe und Sie haben einige Dinge verpasst (ich würde Tricks sagen), um dies zu erreichen. Die Antwort lautet extended state variables, um Speicher in eine Maschine hinzuzufügen. Diese Variablen werden normalerweise verwendet, um die Anzahl der benötigten Daten zu begrenzen, die angegeben werden, welche Maschine benötigt wird. Sie benötigen 3 Schleifen, und Sie könnten wahrscheinlich mehr Zustände erstellen, um jede Schleife und jeden Übergang (mit bestimmten Wächtern) bei Bedarf zu repräsentieren. Dies wird jedoch die Zustandskonfiguration einfach explodieren, wenn Sie mehr Schleifen wie 10 oder 20 oder 100+ benötigen.

habe ich ein Beispiel, in ssm-sample3 die wie extended state variables und unterschiedlichen guards und actions zeigen können dieses spezielle Fließ zum Antrieb verwendet werden.

Leider gibt es einen Fehler in einem aktuellen 1.1.1.RELEASE, die Sie direkt verhindert, dass ein in HAS_ERROR Übergang und Schleife AWAITING_VALIDATION den Übergang, bis Sie Pause in VALID einen anonymen Übergang mit einer Wache, die (das ist, warum Probe einen Dummy TMP Zustand hat, den nicht benötigt mit 1.2.x).

Dies ist wahrscheinlich etwas, das ich gerne als Beispiel oder FAQ zu unseren ref docs hinzufügen würde.

Lemmy wissen, ob das hilft.

+0

Vielen Dank für Ihre Mühe, ich werde heute einen Blick darauf werfen und zu Ihnen zurückkommen – Rapster

+0

Welche Version von Papyrus haben Sie benutzt? Es gibt ein paar Dinge, die ich nicht sehen kann. Ich benutze Papyrus 2.0.1 – Rapster

+0

Dies war mit Papyrus 1.1.4. 2.0.0 erhält auch den externen Transitionsnamen direkt von Trigger-> SignalEvent-> Signal. Mit 2.0.1 tut es nicht und Sie müssen dem Übergang einen Namen geben. Thought internal transition bekommt diesen Namen von Signal so go figure. Gestern bemerkte ich das, als ich 2.0.1 probiert habe, da 1.1.4/2.0.0 einen NPE-Fehler hat, wenn der interne Übergang einen Effekt hat (behoben in 2.0.1). –

Verwandte Themen