closed Composite State-k közötti átmenet

0 votes
asked May 8, 2019 in Rendszermodellezés A00 by gyorik (22 points)  
closed May 8, 2019 by gyorik

A Kérdésem az lenne, hogyha van két composite state-m (a házi esetében menü és a játék) és az egyik composite state egyik állapotából szeretnék átlépni a másikba akkor hová kell raknom a kiváltó eseményt?
Ha úgy csinálom meg hogy az állapotból az exit nodera mutató átmenetre rakom a trigger-t, akkor a két composite state között futó átmenet "kiváltó esemény nélküli átmenet".
Ha viszont a két composite state közé futóra rakom, akkor az összes állapotnál át lehet lépni a két composite state között.
Jelenleg az átmenet az egyik composite state kívánt állapotából közvetlenül mutat a másik composite statere. Csodásan működik is, de nem "szép" megoldás, remélem van jobb.

Előre is köszönöm a válaszokat.

closed with the note: Answered

1 Answer

0 votes
answered May 8, 2019 by dkmisu (1,327 points)  

Meglehetősen összetett, és bonyolult szabályai vannak annak, hogy mikor számít egy átmenet trigger nélkülinek, ha a composite state-ek közbeszólnak.

Vegyük az alábbi esetet: Van egy átmeneted, ami egy exit node-ba mutat egy composite state-ben, és van rajta trigger, és van egy átmeneted, ami a composite state-ből indul ki egy másik state-be, és nincs rajta trigger (se guard!, akció lehet). Ebben az esetben a második él a szemantika alapján nem számít trigger nélküli átmenetnek, mert ha composite state-ből indul ki, és abban van egy exit node, akkor a tranzíció csak akkor hajtódik végre, ha a vezérlés az exit node-ba kerül.

Most tegyük fel, hogy ugyanaz a helyzet, mint előbb, csak a második tranzíción van egy guard. Ekkor az a Yakindu szemantikája szerint azzal ekvivalens, mintha a trigger always lenne, és bármikor tüzelhet, amikor a feltétel igazzá válik, nem feltétele, hogy előtte a vezérlés elérje az exit node-ot. Ekkor ez egy trigger nélküli átmenet, így tiltott elem.

A helyzet eddig még "egyszerű", a dolog akkor bonyolódik tovább, ha több (nevesített) exit node van, és az éleken is vannak különböző exit node-hoz kötő annotációk, de ezekbe most nem mennék bele. Röviden, az általad először felvázolt megoldás nem számít kiváltó esemény nélküli átmenetnek, csupán egy syntactic sugar az általad másodjára felvázolt esethez.

commented May 8, 2019 by gyorik (22 points)  
Köszönöm a választ
commented Mar 18, 2021 by bmiki (20 points)  
Hasonló problémába ütköztem és az alábbiban leírtak alapján csináltam meg. Viszont ha elnevezem az Exit-et és ezzel hivatkozom az átmenetre, akkor empty triggert dob.
A megoldás már megvan, de ez egy probléma volt.
...