Statusmaschine

Hallo zusammen,

was haltet ihr von der Idee mal eine Statusmaschine im PHP abzubilden.
Das heißt, das ich mir über diverse Scripte indirekt einen Ablauf schreibe und
die Schrittumschaltung z.B. über SwitchCase in eine eigene Systemvariabel schreibe.

Egal welchen Ablauf ich haben möchte aber diesen über eine Systemvariabel speicher und weiter verarbeite …

Oder ist das nicht so gut zum abhandeln. ?

Gruß
MacToolz

Das ist sehr gut und wird auch in guten Scripten so gemacht.
Hab jetzt zwar keinen Link parat, aber auch in der Hilfe gibt es Beispile welche einen StateMachine ähnlichen Ansatz verfolgen.

bb

könntest du mir dafür ein Beispiel zeigen (aus der Doku)

Hi,

ok … aber da alles Event basierend ist ist es aber dich was kompliziert oder.
Das heißt wenn die StateMachine stehen bleibt wegen Fehler etc. muss man dafür sorgen das man ja wieder von vorne anfangen kann.

Das heißt eigentlich das man doch eine weitere Instanz haben muss die grundlegend die Schrittumschaltung überwacht oder?

Gruß

Hm … das gibsch nich mehr

Hi,

eigentlich wäre das ja kein Problem zu realisieren. Man müsste ja dann bei der Schrittumschaltung
die Status Variable immer wegschreiben.

Ich frage mich vom Prinzip her ob das wirklich Sinn macht oder ob das Überhaupt zu der
art der Entwicklungsumgebung passt, also wie gesagt weil ja eigentlich alles Event basierend ist.

Hat vielleicht jemand eine Idee worauf man das ganze anwenden könnte oder überhaupt Sinn macht dieses Prinzip so anwenden zu wollen.

Gruß
MacToolz

Vorteil ist bspw. das man damit zusammenhängende aber an und für sich selbstständige Scripte in ein großes zusammenfassen kann.
Als Beispiel fällt mir grad mein Wasserwechsel fürs Aquarium ein. Dieser erfolgt in 5 Phasen.

  1. State: Aus Becken Wasser ablassen bis Hilfsbehälter voll
  2. State: Hilfsbehälter in Gulli entleeren
  3. State: Hilfsbehälter zur Hälfte mit Osmosewasser üllen
  4. State: Hilfsbehälter ganz füllen
  5. State: Hilfsbehälter zurück ins Aquarium pumpen.

Alle ist in einem Script welches durch Statusänderung der jeweiligen Füllstandssensoren getriggert wird.Weclher Codeteil ausgeführt wird entscheidet „State“

gruß
bb

Hi,

und wie organisierst du deine Statusmaschine wenn alles von vorne beginnen soll oder du eventuell bei Problemen in einem bestimmten Status wieder weitermachen möchtest …

Gruß

Hallo,

die Statusmaschine stellt doch einen Zustand dar, der durch eine Eingabe oder Aktion in einen neuen Zustand überführt wird. Dieser kann ja dann auch der Ausgangszustand sein.

Grüße, Gerhard

Hi,

wenn aber ein Problem auftritt egal von was dann kann es doch sein das du deine Statusmaschine von beginnen lassen musst oder man hat irgendwie die Möglichkeit, egal woran man das fest macht z.B. weitere Systemvariabel, wieder an der Stelle weitere machen zu können.

Aber es soll ja automatisiert laufen, ich denke doch das wir vom gleichem reden oder. Eine Ablauf kann natürlich automatisiert sein oder halt auch teil automatisiert weil man auf Aktionen vom Bediener wartet …

Gruß
MacToolz

Das ist kein fixes IPS Objekt, sondern einfach nur Code. Der macht genaus das was DU programmiert hast.
Gruß
BB

Hi,

das habe ich jetzt nicht verstanden. Du Arbeitest doch deine Statusmaschine ab.

Darin wird doch in jedem SwitchCase (ich wähle SwitchCase) zu dem Case irgendwas abgearbeitet,
Rückantworten geprüft und dann geht es doch weiter zum nächtsen Case.

Zu jedem Case kann irgendwas immer ausgeführt werden ob eine Bediener Aktion oder halt automatisiert.
Bis zu einem Punkt bis es dann am Ende wäre und erneut von vorne beginnt etc …

oder halt irgendwo hin springt wo es dann weiter geht etc …

Gruß