Lade...
 

CX_STRUCTURED::TriggeredStateStructureWrapper

CX_STRUCTURED::TriggeredStateStructureWrapper

Beschreibung:

Diese Funktion versucht die Status-Struktur (gewählt nach STRING-Parameter (= _uniqueID des Wrappers)) weiterzuschalten und liefert das neue Status-Struktur-Objekt (gewrappt) zurück.

1. Aktueller Zustand

Der aktuelle Zustandswrapper wird anhand der übergebenen _uniqueID aus der structures-Relation rausgesucht. Dessen _object-POINTER zeigt auf den aktuellen Zustand (CX_STATE_STRUCTURE) des Strukturobjekts (CX_STRUCTURED).

TriggeredStateStructure 1

2. Transitionen durchschalten

Ausgehend vom startState (nicht vom aktuellen Zustand!) des Zustandswrappers werden die Zustandsübergänge aus transitions bis zu dem Zustand ausgewertet (CX_CONDITIONED_BAG::Pick), dessen Übergänge keinen weiteren Zustand liefern (NULL). Dies ist der neue Zustand.

3. Neuer Zustand

In der nachfolgenden Abbildung sind die geänderten Verbindungen in grün hervorgehoben. Wie man sieht, wird kein neuer Wrapper erzeugt, sondern lediglich der bestehende Wrapper auf den neuen Zustand umgebogen und der gleiche Wrapper wird zurückgegeben.

TriggeredStateStructure 2

Wenn auf eine andere Status-Struktur weitergeschaltet wurde, kann eine Message getriggert werden. Der Name der Message ist im CX_STRUCTURED-Objekt im Slot "post.message" abzulegen, z.B. "INSPECT_OBJECT". Der Stack enthält neben dem CX_STRUCTURED-Objekt auch den neuen Status:

Position Objekttyp Kurzbeschreibung
Top CX_STRUCTURED Struktur
Top-1 CX_STATE_STRUCTURE Status
Code-Beispiel:
Define(SetValues)
      Var(tmp)
      -> tmp
      // set order number if widget isn't empty
      GetValue(, OrderNumber) Dup "" = ifnot { tmp Put(confirmed.number) } else Drop
      tmp DeleteSlot(dunned.date)
      tmp DeleteSlot(dunned.level)
      "CONFIRMATION" tmp Call(TriggeredStateStructureWrapper)
    ;
    
Stack
Stack Position Objekttyp Kurzbeschreibung
Stack(In) Top CX_STRUCTURED Eine Struktur
  Top-1 STRING uniqueID des Wrappers
Stack(Out) Top CX_OVERWRITING_REF Status-Struktur-Wrapper
Funktionsaufruf: Call(TriggeredStateStructureWrapper)