Jump to content

Empfohlene Beiträge

Geschrieben

Hallo Neo,

ich weiß nicht, inwieweit die "Einsparung" von Ereignissen durch "Zusammenfassung" bezüglich der Performanz der Ereignisverwaltung eine entscheidende Rolle spielt. Jedenfalls hätte ich hier ein paar Ideen, wie man durch Hinzufügen alternativer Zusatzbedingungen in bestimmten Fällen "Ereignisse" einsparen (und als Nebeneffekt auch den Aufwand bei der Erstellung der Ereignisdefinitionen reduzieren) könnte. 

Dies betrifft Ereignisdefinitionen, die - durch dasselbe Ereignis ausgelöst - heute nur deshalb separat spezifiziert werden müssen, weil die Ausführung  der jeweils aufgelisteten Aktionen unterschiedliche Zusatzbedingungen voraussetzen. Könnte man derartige Aktions-bezogene Bedingungen den Aktionen direkt zuweisen, könnte man diese in einer gemeinsamen Ereignisdefinition zusammenfassen.

 

Erste Variante:

Bei dieser einfacheren Variante wird nur zwischen Aktionen, die entweder die Zusatzbedingungen erfüllen, oder für welche gerade deren "Negierung" zutrifft (Sonst-Fall) unterschieden. Hierfür benötigt man eine zusätzliche Registerkarte "Alternative Aktionen", deren Bearbeitungsfenster mit dem der Registerkarte "Aktionen" identisch ist (siehe Bild). Die dort abgelegten Aktionen werden genau dann ausgeführt, wenn die Gruppe der Zusatzbedingungen gerade nicht erfüllt ist.

54_-_alternativ.png

 

 

Zweite Variante:

Die Realisierung dieser Variante ist zwar deutlich komplexer, bietet dafür aber auch eine mögliche Zusammenfassung von Aktionen, die nur unter individuell zugeordneten Bedingungen auszuführen sind.

Beispiel:

Auslöser:                        Lock-Anforderung abgeschlossen
Globale Bedingung:   keine

Aktion 1:                         Lock-Anforderung beenden
wenn                              Lock nicht bekommen

Aktion 2:                       Lock freigeben
wenn  a)                       Lock erhalten
und b)                           zu bearbeitendes Objekt nicht verfügbar

Aktion 3:                      Bearbeitung unter Lock fortsetzen
wenn a)                        Lock erhalten
und b)                           zu bearbeitendes Objekt verfügbar

In der heutigen Realisierung der Ereignisveraltung muss man hierfür 3 Ereignisse definieren, die alle denselben Auslöser haben, aber unterschiedliche Bedingungen voraussetzen. Bietet man aber für jede Aktion eine zusätzliche spezifische Vorgabe von Bedingungen an (siehe nachfolgende Bilder, lassen sich auch diese Aktionen in nur einer Ereignisdefinition zusammenfassen.

55_-_zusatzbedingungen.png 56_-_zusatzbedingungen.png

 

Wie anfangs schon angedeutet, macht die Realisierung dieser Vorschläge vor Allem dann einen Sinn, wenn die Ereignisbearbeitung durch die Einsparung der hierdurch überflüssig werdenden Ereignisse erheblich beschleunigt wird. Dies kann ich jedoch selbst nicht beurteilen. Für den Anwender würde sich dadurch natürlich auch eine erhebliche Reduzierung des Aufwands bei der Erstellung der Ereignisdefinitionen und dadurch auch eine Reduzierung der Fehleranfälligkeit (beim Eintippen) ergeben.
 

Viele Grüße
BahnLand

  • 1 Monat später...
Geschrieben

Nachdem ich jetzt einige Zeit mit der Ereignisverwaltung experimentiert und gearbeitet habe, muss ich erstmal sagen, dass sie ein sehr mächtiges und trotzdem leicht bedienbares Werkzeug ist. Respekt!

 

Aber die oben vorgeschlagene Erweiterung der vorhandenen IF-THEN Funktionalität auf eine IF-THEN-ELSE Funktionalität habe ich doch auch vermisst. So etwas hätte mir die Übersicht beim Programmieren der Ereignisse sehr vereinfacht.

Und eine Gruppe von Bedingungen wäre schön: "Lokgeschwindigkeit ist 0", "Lokgeschwindigkeit ist >0", "Lokgeschwindigkeit ist <0"

Zum Beispiel für so was auf einer einspurigen Strecke:

    Ereignis: Lok betritt ein Gleis - "Tempogleis"

    Bedingung: "Lokgeschwindigkeit ist >0" -"Tempogleis"

    Aktion: Setze Lokgeschwindigkeit - "Tempogleis" - "200"

    Alternative Aktion: Setze Lokgeschwindigkeit - "Tempogleis" - "-80"

Wofür ich jetzt eine Variable für die Fahrtrichtung - pro Lok - brauche und zwei Ereignisabfragen auf dem Tempogleis.

 

 

Geschrieben

Hallo ihr beiden,

lasst uns die Situation nächste Woche nochmal neu betrachten, wenn die objektabhängigen Variablen zur Verfügung stehen. Vielleicht reicht das schon aus, um die Ereignisverwaltung noch übersichtlicher zu gestalten.

Viele Grüße,

Neo

Geschrieben

Hallo Neo,

die Bedingung "Lokgeschwindigkeit ist..", die ich mir oben wünschte, ist ja durch die Einführung der _CurrentSpeed - Variablen inzwischen implementiert. Großartig, funktioniert auch wunderbar und spart einiges an Aufwand bei der Ereignissteuerung.

Aber je mehr ich mit den neuen Objektvariablen experimentiert habe, desto mehr habe ich mir die IF-THEN-ELSE Funktionalität gewünscht.

Dieser Wunsch ist zumindest bei mir durch die neuen Variablen eher noch stärker geworden.

 

 

Geschrieben

Hallo,

Zitat

Aber je mehr ich mit den neuen Objektvariablen experimentiert habe, desto mehr habe ich mir die IF-THEN-ELSE Funktionalität gewünscht.

Dieser Wunsch ist zumindest bei mir durch die neuen Variablen eher noch stärker geworden.

... bringt die "Natur" mit dem Umgang von Variablen so mit sich.

Je mehr Möglichkeiten es gibt, desto eher tritt der Fall ein, daß man etwas tuen möchte, wenn eine (variable) Bedingung  mal erfüllt und mal nicht erfüllt ist...

... und dafür hat Neo als Programmierer bestimmt Verständnis;)

... darum unterstütze ich nachdrücklich diesen Wunsch...

Gruß

EASY

Geschrieben

Hallo Neo,

... also Deine Reaktionsgeschwindigkeit (y)... wenn Du so schnell so weiter machst, gehen uns ja irgendwann die Wünsche aus...;);)

Gruß

EASY

Geschrieben

Um euch gleich ein wenig zu bremsen, nachdem die Ereignisverwaltung erweitert wurde werde ich mich auch wieder anderen Bereichen des Studios zuwenden :)

Viele Grüße,

Neo

Geschrieben

Hallo Neo,

jetzt haben wir ja erstmal so viel neues Spielzeug. Mehr brauchts vorerst auch nicht.

Wir müssen zunächst mal sehen dass wir die Möglichkeiten ausreizen. Wird bestimmt spannend.

 

Danke!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...