Na ovoj stranici

SCXML uređivač

Dijagrami stanja grafički su način modeliranja načina na koji sustav reagira na podražaje. Oni definiraju stanja u kojima se sustav može nalaziti i kako se sustav može premjestiti iz jednog stanja u drugo (prelazi između stanja). Ponašanje sustava vođenih događajima (kao što su Qt aplikacije) često ovisi ne samo o posljednjem ili trenutnom događaju, već i o ranijim događajima. Pomoću dijagrama stanja možete jednostavno podijeliti te informacije.

Pomoću čarobnjaka za datoteke Qt Creator možete dodati datoteke State Chart XML (SCXML) s pripadajućim kôdom u projekte. Uređujte dijagrame stanja u uređivaču SCXML-a kako biste dodali stanja i prijelaze u datoteke. Zatim upotrijebite klase u modulu Qt SCXML kako biste ugradili strojeve stanja stvorene iz datoteka u Qt aplikacije.

Kada otvorite .scxml datoteku, ona se otvara u uređivaču SCXML-a:

SCXML uređivač

Povucite stanja iz prikaza Common States (1) u uređivač stanja (2). Odaberite stanje u uređivaču stanja i upotrijebite gumbe alata (3) za stvaranje prijelaza (4) i njegovog odredišnog stanja.

Pregledajte strukturu dijagrama stanja u prikazu Structure (5) i navedite atribute za odabrano stanje ili prijelaz u prikazu Attributes (6).

Koristite gumbe alatne trake za izvođenje funkcija kao što su uređivanje, zumiranje, povećavanje, navigacija i pomicanje dijagrama stanja, kao i za snimanje zaslona i pregled statistike.

GumbNazivOpis
Sačuvaj snimku zaslonaSave ScreenshotSprema trenutno vidljivi dio dijagrama stanja kao sliku.
Izvoz platna u slikuExport Canvas to ImageSačuvajte cijeli dijagram stanja kao sliku.
Približi

Odmakni

Zoom In

Zoom Out

Povećava ili smanjuje prikaz cijelog dijagrama stanja u uređivaču stanja.

Također možete pritisnuti Ctrl i koristiti kotačić miša.

PaniranjePanningPomakne dijagram stanja. Za povećanje brzine pomicanja pritisnite Shift.
Prikladno za pregledFit to ViewCijeli dijagram stanja istovremeno je vidljiv u uređivaču stanja.
Alat za povećaloMagnifier ToolPovećava dio dijagrama stanja. Za brže pomicanje alata za povećalo, pritisnite i držite Alt.
NavigatorNavigatorPrikazuje određeni dio velikog dijagrama stanja u uređivaču stanja. Pomaknite okvir navigatora na dio koji želite pregledati.
Pregled statistikeView StatisticsPrikazuje statistiku o broju stanja i prijelaza u dijagramu stanja.

Za pretraživanje u dijagramu stanja odaberite Search i počnite upisivati u polje Filter. Pretraživanje provjerava cijelo SCXML stablo na atribute koji odgovaraju kriterijima pretraživanja.

Stanja

Kada stroj stanja uđe u stanje kao odgovor na događaj, stanje u koje je ušao postaje aktivno stanje.

Dijagrami stanja su hijerarhijski, pa možete ugniježđivati stanja unutar drugih stanja kako biste stvorili složena stanja.

Možete stvoriti sljedeće vrste stanja:

GumbNazivOpis
Početno stanjeInitialStanje u koje stroj stanja ulazi pri pokretanju.
Osnovno stanjeStateOsnovno stanje.
Paralelne državeParallelIma podređena stanja koja se izvršavaju paralelno i sva su istovremeno aktivna. Svako podređeno stanje obrađuje događaje neovisno, a događaji mogu pokrenuti različite prijelaze za svako podređeno stanje.
Konačno stanjeFinalOmogućuje završetak stroja stanja. Kada stroj stanja uđe u završno stanje najviše razine, emitira signal završetka i zaustavlja se. Završna stanja možete stvoriti u složenim stanjima kako biste sakrili unutarnje detalje složenog stanja. Vanjski svijet može samo ući u stanje i dobiti obavijest kada je stanje završeno. Paralelno stanje završava kada sva njegova podređena stanja dosegnu završna stanja.
PovijestHistoryPseudo-stanje koje predstavlja podređeno stanje u kojem se roditeljsko stanje nalazilo posljednji put kada je iz njega izašlo.

Stvorite stanje povijesti kao dijete stanja za koje želite zabilježiti trenutno dijete stanje. Kada mehanizam stanja tijekom izvođenja otkrije postojanje takvog stanja, on automatski zabilježava trenutno (stvarnog) dijete stanje kada se napušta roditeljsko stanje. Prelazak na stanje povijesti zapravo je prijelaz na dijete stanje koje je mehanizam stanja prethodno spremio. Mehanizam stanja automatski prosljeđuje prijelaz na stvarno dijete stanje.

Za izradu prijelaza između stanja odaberite Prijelaz.

Dodavanje stanja

Možete dodati nove stanja u dijagram stanja na sljedeće načine:

  • Povucite stanja iz prikaza Common States u uređivač stanja.
  • Odaberite stanje u uređivaču stanja, a zatim odaberite gumb alata State kako biste stvorili prijelaz i njegovo odredišno stanje.
  • Kopirajte i zalijepite stanja unutar SCXML uređivača ili između SCXML uređivača i načina rada Edit.

Povucite stanja na druga stanja kako biste stvorili složena stanja. Također možete povući podređena stanja izvan njihovog nadređenog stanja. Da biste pomaknuli podređena stanja unutar njihovog nadređenog stanja, držite pritisnutu tipku Ctrl dok ih povlačite.

Poravnavanje i uređivanje stanja

Koristite gumbe alatne trake za poravnavanje stanja u uređivaču stanja, za podešavanje njihove veličine, boje i fontova te za promjenu zadane sheme boja.

Gumbi za uređivanje stanja

Preklapajuća stanja označena su crvenom bojom.

Pregledavanje strukture stabla stanja

Za proširenje ili sklopivanje strukture stabla stanja u prikazu Structure, dvaput kliknite na stanje.

Za detaljniji prikaz podređenog stanja ugniježđenog stanja u uređivaču stanja odaberite Zoom to State.

Kako biste osigurali da su ID-ovi stanja jedinstveni unutar složene strojne mašine stanja, odaberite Prekini/nastavi prikaz cijelog imenskog prostora (Toggle Full Namespace). Naziv roditeljskog stanja dodaje se nazivima podređenih stanja, odvojen dvostrukim dvotočkama (::). Na primjer:

<state id="broken">
...
    <state id="broken::blinking">
    ...
    </state>
    <state id="broken::unblinking">
    ...
    </state>
</state>

Upravljanje prijelazima

Prijelazi definiraju kako stanje reagira na događaje koje generira ili stroj stanja ili vanjski entiteti. Kada se događaji dogode, stroj stanja provjerava postoji li odgovarajući prijelaz u aktivnom stanju i prelazi u ciljano stanje.

Za stvaranje prijelaza iz odabranog stanja u novo stanje, povucite i otpustite miš na mjestu na kojem želite dodati ciljno stanje. Kada povučete prijelaz prema središtu drugog stanja, on pokazuje na središte stanja, ali možete povući prijelaz i prema rubu stanja.

Uređivač centrira oznake prijelaza, ali ih možete premjestiti na druge položaje.

Uvjeti na prijelazima pojavljuju se ispod linija prijelaza unutar kvadratnih zagrada ([]).

Za dodavanje rubnih točaka prijelazima odaberite liniju prijelaza. Možete dodati samo dvije rubne točke za svaku liniju. Uređivač automatski uklanja nepotrebne rubne točke. Za uklanjanje odabrane rubne točke odaberite Remove Point u kontekstnom izborniku.

Za dodavanje novih rubnih točaka klikom miša odaberite Prijelaz.

Za uklanjanje odabrane tranzicije odaberite Remove u kontekstnom izborniku.

Dodavanje izvršnog sadržaja

Dodajte izvršni sadržaj u dijagram stanja kako biste omogućili stroju stanja promjenu modela podataka i interakciju s vanjskim entitetima.

Koristite naredbe kontekstualnog izbornika za dodavanje izvršnog sadržaja elementima <onentry> i <onexit> ili prijelazima:

  • <raise> za podizanje događaja
  • <send> za komunikaciju s vanjskim entitetima
  • <script> za pokretanje skripti
  • <assign> za promjenu modela podataka
  • <cancel> za otkazivanje izvršavanja radnje
  • <log> da bilježi informacije u zapisnik
  • <if> izvršiti radnje uvjetno
  • <foreach> da se iterira nad stavkama u kolekciji i izvrši radnju za svaku od njih

Tijekom prijelaza, stroja stanja izvršava sadržaj koji navodite za element <onexit> u stanju koje napušta, zatim sadržaj u prijelazu, a potom sadržaj za element <onentry> u stanju u koje ulazi.

Možete dodati atribute za odabrani izvršni sadržaj u prikazu Attributes.

Vidi također: Izrada dijagrama stanja.

Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.