Zum Inhalt

Element <state-machine>

Zweck: Deklariert einen benannten gewichteten Zustandsgraphen für deterministische Generierung.

Warum: Verwende dieses Element, wenn generierte Werte einem benannten, gewichteten Übergangsgraphen folgen müssen.

Beispiel

1
<state-machine id="orderLifecycle"/>

Entscheidungshilfe

Fachlicher Nutzen: Erzeugt Werte entlang eines expliziten fachlichen Lebenszyklus statt durch unabhängige Auswahl.

  • Verwenden, wenn

    • Wenn Statuswerte erlaubten, optional gewichteten Übergängen folgen müssen.
  • Anderen Ansatz wählen, wenn

    • Wenn Werte unabhängige Kategorien ohne Lebenszyklusbedingungen sind.
  • Voraussetzungen

    • Deklariere einen Startzustand und einen verbundenen Satz von transition-Kindern.
  • Alternativen

    • Verwende key values oder weights für unabhängige kategoriale Auswahl. (Siehe: <key>)

Vollständige Beispiele

Einen deterministischen Auftragslebenszyklus aus einem Übergangsgraphen erzeugen

Verwende eine State Machine, wenn Werte erlaubten fachlichen Übergängen statt unabhängiger Zufallsauswahl folgen müssen.

order-lifecycle/datamimic.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<setup rngSeed="42">
    <state-machine id="order_lifecycle" start="open">
        <transition from="open" to="paid"/>
        <transition from="paid" to="shipped" weight="0.9"/>
        <transition from="paid" to="cancelled" weight="0.1"/>
        <transition from="shipped" to="delivered"/>
    </state-machine>
    <generate name="orders" count="20" target="LogExporter">
        <key name="status" generator="order_lifecycle"/>
    </generate>
</setup>

Regeln und ungültige Kombinationen

I923 — State Machine No Transitions

must declare at least one child

Warum: A element has zero children.

Lösung: Add at least one child.

Vollständige Regel

I924 — State Machine Duplicate Id

Duplicate : a state machine with this id is already registered

Warum: Two or more elements declare the same id=.

Lösung: Use a distinct id= for each .

Vollständige Regel

I925 — State Machine Id Collides With Generator

collides with a builtin generator class name

Warum: A matches an existing builtin generator class name.

Lösung: Choose an id= that does not match any registered generator class name.

Vollständige Regel

Erlaubte Elternelemente / Erlaubte Kindelemente

Erlaubte Elternelemente: else, else-if, if, setup, while

Erlaubte Kindelemente:

transition

Attribute

Alle 2 Attribute anzeigen

id

Registration id for this state machine; referenced later via generator=.

erforderlich; string.

start

Starting state name. Defaults to the first 's from= in document order.

optional; string; Standardwert: null.