Jump to content

Abarbeitungs-Reihenfolge von Ereignisdefinitionen


BahnLand
 Share

Recommended Posts

Hall @Neo,

ich habe gerade beim Testen ein komisches Phänomen bei der Abarbeitung von durch das gleiche Ereignis ausgelösten Ereignisdefinitionen entdeckt. Hier zunächst die Konfiguration:

1637338729_SchlagwortHaltekontaktHaltekontaktvorne.thumb.JPG.80dd566ec94f0aacff826a543c5b06b0.JPG

216903355_SchlagwortHaltekontaktHaltekontakthinten.thumb.JPG.924826819d44e63a60ec973c89dc5cec.JPG

In der Konfiguration gibt es in einem Bahnhofsgleis 2 Gleiskontakte "BE1_Haltekontakt_vorne" und  "BE1_Haltekontakt_hinten", über die "lange" Züge "vorne" am Signal und "kurze" Züge "hinten" mittig am Bahnsteig angehalten werden sollen. Da für beide Gleiskontakte unterschiedliche Ereignis-Auslöser verwendet werden sollen (Gleiskontakt wird beim "Betreten" oder "Passieren der Zugmitte" ausgelöst), werden hierfür 2 Ereignisdefinitionen benötigt, die entsprechend mit zwei Schlagwörtern "Haltekontakt vorne" und "Haltekontakt hinten" zur Ausführung gelangen sollen.

Es soll aber auch möglich sein, einmalig eine Initialisierung für die passierenden Lokomotiven zu durchlaufen, die bei beiden Haltekontakt-Varianten ausgelöst werden soll. Hierfür gibt es zusätzlich das Schlagwort "Haltekontakt".

Entsprechend ist für die Auslösung des "regelmäßigen" Haltekontakts in der Ereignisdefiniton das Schlagwort "Haltenkontakt vorne "(oder ... hinten) spezifiziert, ...

707339525_EreignisHaltekontaktvorne.JPG.76cf12b0b0a6438f11cafab2e32aa92d.JPG

... während für die Auslösung der Initialisierung das Schlagwort "Haltekontakt" verwendet wird.

1422620515_EreignisInitialisierung.JPG.4fbf3702e6479522e66bde2efdf030d2.JPG

Verblüffenderweise wird bei dieser Konstellation beim Betreten des "BE1_Haltekontakt_vorne" die Ereignisdefinition "Haltekontakt vorne ..." zeitlich vor der "Initialisierung" abgearbeitet, obwohl die Reihenfolge in der Eereignisverwaltung genau umgekehrt ist. Dadurch kommt es zu einem Fehler, wenn die Initialisierung nicht schon einmal durchlaufen worden war. Wenn ich aber statt dem Schlagwort "Haltekontalt" für  die "Initinalisierung" ebenfalls das Schlagwort "Haltekontakt vorne" verwende, Wird die Abarbeitungs-Reihenfolge korrekt eingehaten, wodurch die Ursache für den Fehler bei der ursprünglichen Konfiguration behoben ist.

Frage:
Ist das in Deinen Augen ein "normales" Verhalten, oder handelt es sich hier um einen Fehler in der Ablaufsteuerung? Ich hätte eigentlich erwartet, dass verschiedene Ereignisdefinitionen, die durch dasselbe Ereignis ausgelöst werden, in jener Reihenfokge abgearbeitet werden, in der sie in der Ereignsverwaltung hinterlegt sind.

Viele Grüße
BahnLand

Link to comment
Share on other sites

Hallo BahnLand,

vor 1 Stunde schrieb BahnLand:

Ich hätte eigentlich erwartet, dass verschiedene Ereignisdefinitionen, die durch dasselbe Ereignis ausgelöst werden, in jener Reihenfokge abgearbeitet werden, in der sie in der Ereignsverwaltung hinterlegt sind.

das ist korrekt, in deinem Fall liegt das Problem aber woanders. Wird ein Gleiskontakt betreten, dann wird für jedes definierte Schlagwort ein Ereignis ausgelöst. Hat ein Gleiskontakt mehrere Schlagwörter, ist die Reihenfolge aktuell noch nicht spezifiziert, d.h. auch wenn die Schlagwörter bei dir alphabetisch sortiert angezeigt werden, ist nicht garantiert, dass diese Sortierung auch bei der Auslösung von Ereignissen berücksichtigt wird (Schlagwörter werden aus Effizienzgründen intern nicht sortiert gespeichert).

Ich kann das gern für das nächste Update berücksichtigen, dass Schlagwörter in alphabetischer Reihenfolge "auslösen".

Viele Grüße,

Neo

Link to comment
Share on other sites

Hallo @Neo,

Danke für die schnelle Antwort und die interessante Information. Liege ich mit folgender Deutung richtig?

Einem Objekt, welches ein Ereignis auslöst, seien beispielsweise die Schlagwörter "A" und "B" zugewiesen. Für das ausgelöste Ereignis gebe es mehrere Ereignisdefinitionen (Aktionsketten), die entweder auf das Schlagwort "A" oder auf das Schalgwort "B" bezogen angestoßen werden. Sei nun (zufälligerweise) das Schlagwort "B" "höherprior", werden beim AUftreten des Ereignisses zunächst alle auf das Schlagwort "B" bezogenen Ereignisdefinitonen abgearbeitet, und erst anschließend alle auf das Schlagwort "A" bezogenen Ereignisdefinitionen.

In meinem oben beschriebenen Problemfall hatte dann offenbar das Schlagwort "Haltekontakt" eine niedrigere Priorität als das Schlagwort "Haltekontakt vorne". Ich hätte da aber gerade die umgekehrte Priorisierung benötigt.

Dein Vorschlag einer alphabetischen Priorisierung wäre auf jeden Fall eine Lösung, mit der man das von mir geschilderte Problem in den Griff bekommen könnte.

Viele Grüße
BahnLand

Link to comment
Share on other sites

Hallo,

vor 2 Minuten schrieb BahnLand:

Liege ich mit folgender Deutung richtig?

ja, genau so ist es, es werden erst alle Ereignisse mit Schlagwort A abgearbeitet und dann die Ereignisse mit Schlagwort B.

Viele Grüße,

Neo

Link to comment
Share on other sites

Wäre es denn nicht möglich, dass das Programm die Schlagwörter einfach in der vom Nutzer vorgegebenen Reihenfolge abarbeitet (aus Effizienzgründen) statt sie zuvor alphabetisch zu sortieren? Spart doch Rechenzeit. Dadurch hätte der Nutzer auch noch die Möglichkeit, auf die Reihenfolge Einfluss zu nehmen. Das geht zwar auch bei alphabetischer Sortierung, indem man die Schlagwörter sorgfältig entsprechend wählt, man wäre aber freier in der Wahl der Ausdrücke. Keine Ahnung, was technisch leichter umsetzbar ist. So oder so, man kann mit allem leben.

Link to comment
Share on other sites

vor 42 Minuten schrieb Andy:

Ja, aber es ist nicht schön, wenn man sich das Detailwissen erkämpfen muß.

Dem stimme ich vorbehaltlos zu. Ich hätte mich verständlicher ausdrücken sollen. Gemeint war, man kann mit jeder Methode leben, solange man weiß, wie es ist.

Link to comment
Share on other sites

Hallo Timba,

Am 31.8.2019 um 10:11 schrieb Timba:

Wäre es denn nicht möglich, dass das Programm die Schlagwörter einfach in der vom Nutzer vorgegebenen Reihenfolge abarbeitet (aus Effizienzgründen) statt sie zuvor alphabetisch zu sortieren? Spart doch Rechenzeit.

eine manuelle Sortierung würde ich nicht anbieten wollen, nicht wenn der einzige Zweck die explizite Reihenfolgesteuerung bei der Ereignisauslösung wäre, denn dafür bräuchte man wirklich ein Erklärung im Wiki.

Die alphabetische Sortierung benötigt keine nennenswerte Rechenzeit, ich denke, wenn die Ereignisauslösung ebenfalls diese Reihenfolge verwendet, ist das intuitiv genug.

Viele Grüße,

Neo

Link to comment
Share on other sites

Ja, das leuchtet mir ein. Ist auch kein Ding, denn wie ich schon sagte, wer eine bestimmte Reihenfolge benötigt, wählt seine Schlagwörter halt nach dem Alphabet, z.B. "Affe", "Bulle", "Chamäleon", und schon läuft's wie gewünscht. ;)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...