Állapotfa

Az állapotfa a tartalomlejátszási folyamat állapotának strukturált adathalmaza. A fastruktúra gyökér elemei (session, content, lesson, ...) tartalmaznak ágakat (pl. result) és leveleket (pl. id, title, description, ...). Ezek az értékek az nxPath lekérdezési nyelv segítségével lekérdezhetők, és a tananyag szövegmezőiben megjeleníthetők, vagy az eseménykezelésben az esemény feltételeként vagy paramétereként alkalmazhatók.

Az állapotfában található levél elem értékek lehetnek:

  • számértékek (például 2 vagy 2.25),
  • szöveges értékek (például "Első kérdés"), vagy
  • logikai értékek (igaz vagy hamis).

Az állapotfa a szerkesztőben a tanulói előnézetből a State (S) gombra kattintva (vagy az S gombot megnyomva) elérhető, a tanulás aktuális állapotának adatai megtekinthetők, és a használni kívánt lekérdezések tesztelhetők.

Az állapotfa felépítése jelenleg még tesztelés alatt áll, igény esetén új elemek kerülhetnek bele, mások pedig áthelyeződhetnek vagy törlődhetnek véglegesítésig.

Az állapotfát a tanulói előnézetben a State (S) gombra kattintva lehet megnézni.

megnyitás

A gombra kattintva megjelenik a tartalomlejátszási folyamat aktuális állapota, amely a tananyagban történő interakciók során dinamikusan frissül, így az állapotváltozás folyamatosan nyomon követhető.

állapotfa

frissülő állapotfa

A keresőmezőben meg lehet adni lekérdezéseket, így ellenőrizhető, hogy egy eseményben vagy szövegmezőben használni kívánt lekérdezés megfelelően működik-e és milyen eredményt ad. A keresőkifejezés megfogalmazását a rendszer azzal segíti, hogy az addig leírtak alapján felajánlja a lehetséges elemeket. Ez nagyban megkönnyíti a funkció használatát, de ha szükséges, a toggle autocomplete felirat segítségével kikapcsolható.

Az állapotfa tartalmaz olyan adatokat, amelyeknek mentését a SCORM szabvány teszi lehetővé, és amelyek így csak éles tanulási környezetben tudnak visszatöltődni (előnézetben nem). Az állapotfában félkövérrel jelöltük ezeket az adatokat.

A lekérdezés eredménye nem külön találati mezőben jelenik meg, hanem az állapotfa megjelenítése szűkül arra a részre, amelyet a keresőkifejezés definiál. Ha a keresés érvénytelen, vagy nincs találat, azt a No result felirat jelzi.

A tanulói előnézetben így ellenőrzött keresőkifejezés aztán a változóként szövegbe illeszthető - ilyenkor az adott helyen a tanuló tanulásának megfelelő érték fog megjelenni. Például megjeleníthető a tanuló éppen aktuális pontszáma, és egy dataChange -> textUpdate eseménnyel ezt azonnal frissülővé lehet tenni (ha megváltozik a pontszám, megváltozik a felirat is).

A lekérdezést az eseménykezelésben események feltételeként is meg lehet adni. Ilyenkor az adott esemény csak akkor hajtódik végre, ha a lekérdezés eredménye bármiféle adatot ad vissza.

Bizonyos eseményekhez paraméterként is megadhatók lekérdezések. Ilyenkor - a feltétel-től eltérően - a lekérdezést kettő-kettő kapcsos zárójel közé kell írni. Például megadható, hogy egy oldal előmenetele progress eseménnyel egy tesztfeladat pontszámának megfelelő százalékkal nőjön.

Az állapotfa felépítése azt a célt szolgálja, hogy minél egyszerűbb, átláthatóbb keresőkifejezésekkel lehessen adatokat lekérdezni. Ehhez az állapotfa a lehető "leglaposabb", lehetőség szerint minél kisebb mélységben vannak benne elhelyezve az adatok. Ennek megfelelően az adatcsomópontok, a tanulás és a tanulási alkalom általános adatai (.session), a tananyag (.content), a lecke (.lesson), a megnyitott lecke elemeinek (.nodes) kevésbé részletes, az oldal (.page) és a betöltött szakaszok (.items) részletes adatai, valamint tesztoldal esetén a teszt (.test), a kérdéscsoportok (.groups) és a tesztfeladatok (.exercises) adatai is közvetlenül a gyökérből érhetők el.

Az állapotfában megjelenő tulajdonságok preferált sorrendje a következő:

  • id
  • type
  • title
  • label
  • description

Ha az adott objektumnak van ilyen mezője, akkor a tulajdonságok ebben a sorrendben fognak megjelenni.

A csomópontokon belül a tanuló által elért eredmények mindig a .result csomópontban találhatók.

Az éppen megnyitott elemet (oldalt, szakaszt, stb.) az isCurrent: true változó jelöli az állapotfában, de az adatmező maga is csak true érték esetén szerepel, a többi elemnél nem látható. Lekérdezéskor az éppen aktuális elemet a @node, @item, @exercise rövidítéssel is el lehet érni.

Az isCurrent: true változó a szerkesztők számára segítheti a lekérdezés megírását: ha egy szakaszra kattintunk, az állapotfában megjelenik a változó, ezzel mutatva az adott szakasz "szemszögéből" az oldalt.

Betartjuk a minden adat csak egyszer, egy helyen szerepel a fában szabályt, hogy egyszerűbb és egyértelműbb legyen a fa struktúrája. A teszt eredmények esetén úgy tűnhet, hogy ugyanaz az adat jelenik meg a lecke eredményeknél is, viszont van különbség a két eredmény adatban. A .test.result-ban az éppen kitöltött teszt eredményei vannak, a .lesson.result-ban viszont a teszt kitöltések legjobb eredményei szerepelnek. Ez akkor lehet érdekes, ha egy tesztet többször is ki lehet tölteni.

Az állapotfában csak olvasni lehet, beleírva módosítások nem végezhetők, csak a szerkesztői beállítások vagy a tanulás interakciói nyomán történhetnek benne változások.

Az állapotfában szereplő adatok lehetnek:

  • a előre meghatározott adatok, amelyek a szerkesztés során, vagy más beállításokból (például kurzusbeállításból) származnak, és a tanulás során nem változnak. Ilyenek például a feladatok beállításai, pontértékei;
  • a tanulás során keletkező mentett adatok, vagyis olyan adatok, amelyek tanulási alkalomról tanulási alkalomra megőrződnek, újabb megnyitáskor is a korábbi állapotot veszik fel. Ilyenek például a leckeszintű adatok, amelyek mindig az addig elért legjobb eredményt tárolják;
  • és vannak tanulásból származó aktuális adatok, amelyek mindig az éppen folyamatban lévő tanulási alkalomra reflektálnak.

adatmező jelentés
publish a publikáció adatai
session a tanuló és az aktuális tanulási alkalom adatai
content az aktuális tananyag adatai
lesson az aktuális lecke adatai
nodes az aktuális leckében található további elemek (blokkok és oldalak) kevésbé részletes adatai
page az adott oldal
items az oldalon éppen megjelenő szakasz(ok) adatai
test az oldalon található teszt adatai és eredményei
groups a teszt kérdéscsoportjainak adatai
exercises a tesztfeladatok adatai

A @publish csomópont a publikáció adatait tartalmazza, szerkesztési időben írhatunk rájuk lekérdezéseket. Mivel az itt szereplő adatok csak publikáció után jönnek létre, előnézetben itt nem tudunk valós adatokkal dolgozni, csak publikálás után, mikor már rendelkezésünkre állnak ezek az adatok.

adatmező jelentés lehetséges érték
name a Publikációs ág címe mezőből jön, amit publikálási ág létrehozásakor adunk meg szöveg
description a Megjegyzés mezőből jön, amit a verzió létrehozásakor adunk meg szöveg
created time a verzió létrehozásának [UNIX időbélyege] szám
verMajor a publikálás főverziója szám
verMinor a publikálás alverziója szám

Mire használható ez a lekérdezés?

Tegyük, fel, hogy egy tananyagot két verzóban publikálunk: az egyik verzióval tanárokat, a másikkal diákokat célzunk, és szeretnénk ennek megfelelő borítóképeket választani hozzá. A következő lépéseket kell tennünk:

I. A képek beszerkesztése a borítóra:

  1. Egy szülőmezőbe létre kell hozni két képmezőt, azokba egyesével feltölteni a képeket.
  2. A szülőmezőnél állítsuk be a lazy load tulajdonságot, hogy a később megjelenített képeket csak akkor töltse be, ha az tényleg meg is jelenik. A másik célcsoport számára beszerkesztett képet ne is töltse le a lejátszó, mert úgysem fog megjelenni.
  3. A képmezőknek beállítjuk a kívánt méretet.
  4. A képmezők tulajdonásgainál a látható és az elrendez értékeknél kivenni a pipát.
  5. A szülőmezőt beállítani, hogy vegye fel a képmező méretét

képek beszerkesztése a borítóra képek beszerkesztése a borítóra

II. Az események beszerkesztése a képmezőkre (mindkettőre egyesével)

  1. Az alapmező megjelenésére legyen látható a képmező (show -> visible)
  2. A feltételbe a következő lekérdezést kell írnunk:
    • "Tanároknak" borító: @publish{.name*='tanár'}
    • "Diákoknak" borító: @publish{.name='diák'} (A `.nameután az idézőjelek közé egy olyan szót kell megadnunk kis- és nagybetű függetlenül, ami szerepelni fog aPublikációs ág címe` mezőben)
  3. Paraméter: 1 (a megjelenített mező kerüljön be az elrendezésbe)

képek beszerkesztése a borítóra

III. Mentsük el a tananyag oldalt.

IV. Publikáljuk a tananyagot a megfelelő nevű ágakba. Ne felejtsük el, hogy a publikáláskor megadott adatoknak összhangban kell lenni a paraméternél megadott kifejezésekkel, pl a lekérdezésben szereplő szó szerepeljen a Publikációs ág címében!

A tanulás illetve a tanulási alkalom oldalfüggetlen adatai a .session csomópontban találhatók.

adatmező jelentés lehetséges érték
userId a tanuló azonosítója (csak SCORM-os környezetben elérhető) szöveg
userName a tanuló neve (csak SCORM-os környezetben elérhető) szöveg
locale lokális beállítások (nyelv, dátumformátum, pénznem, stb - a tanulói felület beállítása alapján) pl. en_US / hu_HU
startTime a tanulási alkalom kezdetének [UNIX időbélyege] szám
normalMode a tananyag tanulási folyamat során van-e megnyitva (vagy pl. előnézetben) true / false
forCredit a tanuló beiratkozásának for credit értéke true / false

A próbatanulóknak a for credit érték lekérdezésével fel tudja hívni a tananyag a figyelmét a kifejezetten fontos, ellenőrizendő területekre.

A tananyag (.content) csomópontban a tananyagra vonatkozó általános adatok, és a tananyag összesített előrehaladási eredménye található.

adatmező jelentés lehetséges érték
id a tananyag egyedi azonosítója szám
title a tananyag (a böngészőablak címsorában megjelenő) címe, a tananyag metaadataiból szöveg
description a tananyag leírása a metaadatokból szöveg
result a tananyag eredményeire vonatkozó adatok további elemek
overallProgress a tananyag teljesítésének százalékos állapota szám (0-100 között)

A lecke (.lesson) csomópontban a leckére (a content config menüben meghatározott SCO-ra) vonatkozó általános adatok és a lecke eredményei találhatók. A lecke eredményei mentett adatok, amelyek két tanulási alkalom között megmaradnak.

Leckeszintű eredmények csak javulni tudnak, tehát rosszabb tesztkitöltés nem, csak jobb tesztkitöltés módosítja őket.

adatmező jelentés lehetséges érték
id a lecke egyedi azonosítója 6 jegyű szám
type a lecke típusa, általában blokk (block), de nem SCORM-os környezetben lehet tartalmi vagy tesztoldal is block / content / test
title a lecke (struktúrapanelben megjelenő) címe szöveg
outline az elem hierarchikus, pontokkal elválasztott sorszáma szöveg
result a lecke eredményeire vonatkozó adatok eredmény objektum
bookmark a legutoljára megnyitott oldal azonosítója szám
completion teljesített-e a lecke (a lecke minden oldala) true / false
progress a lecke teljesítésének százalékos állapota szám (0-100 között)
status a lecke teljesítettségi státusza. Lehet :
not attempted,
attempted,
completed,
passed

n
a
c
p
success sikeres-e a leckében található teszt kitöltése true / false
scoreMin a leckében (a lecke tesztjében) elérhető minimális pontszám szám
scoreMax a leckében (a lecke tesztjében) elérhető maximális pontszám szám
scoreRaw a lecke aktuális pontszáma szám
scoreScaled a lecke százalékos eredménye szám (0-100 között)

A leckeszintű adatok tanulói előnézetben a szabványos környezet hiánya miatt nem működnek megfelelően.

A leckében található további oldalaknak és blokkoknak (és ezekben a blokkokban található oldalaknak és blokkoknak) az éppen megnyitott oldalnál kevésbé részletes adatai is lekérdezhetők a .nodes csomópontban. A .nodes-on belül a tartalomjegyzékkel megegyező struktúra található meg lecke szinten. A leckén belüli blokk oldalai az adott blokk adatai után listázott .nodes csomópontban vannak, tehát .nodes.nodes útvonalon érhetők el.

adatmező jelentés lehetséges érték
id az oldal vagy blokk azonosítója 6 jegyű szám
type az elem típusa, lehet blokk, tartalmi oldal (page) vagy tesztoldal block / content / test
title az elem (struktúrapanelben megjelenő) elnevezése szöveg
outline az elem hierarchikus, pontokkal elválasztott sorszáma szám
result az elem eredményeire vonatkozó adatok további elemek
status az elem teljesítettségi státusza. Lehet :
not attempted,
attempted,
completed,
passed

n
a
c
p
nodes.nodes az elemben (blokkban) található további elemek (blokkok vagy oldalak) adatai további elemek

A leckében található további oldalak status-ának lekérdezésével létrehozható olyan oldal, amin ezen további oldalak teljesítettsége látható és nyomonkövethető.

Az éppen megnyitott oldalra vonatkozó általános adatok és eredmények a .page csomópontban találhatók.

adatmező jelentés lehetséges érték
id az oldal egyedi azonosítója 6 jegyű szám
title az oldal (struktúrapanelben megjelenő) címe szöveg
hasTest van-e az oldalon teszt true / false
result az oldal eredményeire vonatkozó adatok további elemek
progress az oldal teljesítésének százalékos állapota az aktuális tanulási alkalom során szám (0-100 között)
completion teljesített-e az oldal true / false
status az oldal teljesítettségi státusza. Lehet :
not attempted,
attempted,
completed,
passed

n
a
c
p
startTime az oldal megnyitásának [UNIX időbélyege] szám

Az .items csomópontban látható az összes beszerkesztett szakasz abban a sorrendben, ahogy a szerkesztők létrehozták. Ha ezek közül valamelyik szakasz megjelenik az oldalon, akkor az állapotfában láthatóvá válik a hozzá tartozó instances tömb. Mivel egy szakasz (például teszt oldal esetén) többször is megjelenhet, az instances tömb az éppen megjelenített szakaszok adatait tartalmazza.

Az instances.id jelöli, hogy a szakasz mely példányáról van szó. Az isVisible azt jelöli, hogy az adott szakasz példány látható-e az adott oldalon. Ha például egy itemHide eseménnyel elrejtünk egy szakaszt, akkor az isVisible: false értéket vesz fel. Az instances-en belüli index érték a megjelenítés sorrendjét jelöli. Az első szakasz a 0 index-szel van jelölve.

adatmező jelentés lehetséges érték
label a szakasz (szakaszválasztó legördülőmenüben megjelenő) elnevezése szöveg
instances a megjelenített szakaszok adatait tartalmazó tömb további elemek
id a szakasz példányazonosítója item-szám-szám
isVisible meg van-e jelenítve éppen az adott szakasz true / false
index a szakasz példány sorszáma (az első elem sorszáma mindig 0) szám

Ezen a képen látható, hogy az oldalon szereplő szakaszok hogyan jelennek meg az állapotfában:

instances

Kiértékelés után megjelenik a "b alkérdés pseudo" nevű szakasz, ekkor már ez is látható az állapotfában:

instances új szakasz

A tesztoldalakon a teszt (.test), a feladatcsoportok (.groups) és tesztkérdések (.excercises) részletes adatai is lekérdezhetők közvetlenül a gyökérből.

A teszteredmények nem mentett adatok, vagyis az éppen aktuális tesztkitöltés eredményeit tartalmazzák (ha egy tanulási alkalom alatt többször töltjük ki a tesztet, akkor mindig a legutolsó eredményt látjuk).

Az állapotfában olyan sorrendben jelennek meg a válaszlehetőségek, ahogy a tesztpanelen létrehoztuk őket. Ha tehát a válaszlehetőségeket véletlenszerűen jelenítjük meg, akkor nem biztos, hogy ugyanabban a sorrendben szerepelnek majd az állapotfában és a tesztoldalon.

adatmező jelentés lehetséges érték
type a teszt típusa pre
practice
post
final
count a teszt hosszúsága, a megoldandó feladatok száma szám
groupCount a tesztben megoldandó feladatcsoportok száma szám
requirement a teszt sikeres teljesítéséhez szükséges százalékos eredmény szám (0-100 között)
score a tesztben szerezhető pontszám szám
timeLimit a tesztkitöltés időkorlátja másodpercben megadva (0 esetén nincs időkorlát) szám
result a tesz eredményeire vonatkozó adatok további elemek
sent a teszt eredménye el van-e már küldve az LMS-nek true / false
score a tesztben elért pontszám szám
scoreScaled a tesztben elért százalékos eredmény szám (0-100 között)
passed volt-e már sikeres tesztkitöltés true / false
startTime a tesztkitöltés kezdetének [UNIX időbélyege] szám
endTime a tesztkitöltés befejezésének [UNIX időbélyege] szám
evaluable kiértékelhető-e a teszt true / false
evaluated ki van-e értékelve a teszt true / false
status a tesztoldal teljesítettségi státusza. Lehet :
not attempted,
attempted,
completed,
passed

n
a
c
p

A teszt feladatcsoportjainak adatai a (.groups) csomóponton belül találhatók.

adatmező jelentés lehetséges érték
count a feladatcsoportból megoldandó feladatok száma szám
autoFilter a rendszer (true), vagy a tanuló (false) választja ki a feladatok közül a megoldandókat true / false
random véletlenszerűen jelennek-e meg a feladatcsoport kérdései true / false
id a feladatcsoport azonosítója szám
filtered egyezik-e a csoportban található feladatok száma a megoldandó feladatok számával true / false
score a feladatcsoporttal szerezhető pontszám szám
maxCount a feladatcsoport összes feladatának száma szám
label a feladatcsoport elnevezése szöveg
result a kérdéscsoport eredményeire vonatkozó adatok további elemek
evaluableCount a kiértékelhető feladatok száma a csoportban szám
evaulatedCount a kiértékelt feladatok száma a csoportban szám
skippedCount a kihagyott (skipped) feladatok száma a feladatcsoportban szám

A .excercises csomópontban a tanuló éppen aktuális tesztkitöltésében megjelenő feladatok adatai találhatók.

adatmező jelentés lehetséges érték
id a feladat azonosítója szám
affinityId a feladat hasonlósági azonosítója szám
question a feladathoz tartozó kérdés szövege szöveg
level a feladathoz beállított nehézségi szint szám
type a feladat típusa singleChoice
multipleChoice
sequencing
fillin
numeric
pseudo
complexId összetett feladat esetén az összetett feladat azonosítója. Nem összetett feladatnak nincs. szám
complexIndex összetett feladat esetén a részfeladat indexe (sorszám-1). A főfeladat esetén 0, egyszerű feladat esetén -1. szám
score a feladattal szerezhető pontszám szám
partialScore szerezhető-e a feladattal részpontszám true / false
index a feladat feladatcsoporton belüli indexe, azaz sorszáma 0.-tól indulva szám
number a feladat sorszáma a teszten belül szám
groupIndex a feladat csoportjának indexe szám
timeLimit a tesztkitöltés időkorlátja másodpercben megadva (0 esetén nincs időkorlát) szám
item annak a szakasznak az indexe, amelyen a feladat található szám
itemInstanceId a feladatot tartalmazó szakasz példányazonosítója "item"-szám-szám
isLast a teszt utolsó feladata, csak true érték esetén jelenik meg true / false
isGroupLast a feladatcsoport utolsó feladata, csak true érték esetén jelenik meg true / false
isComplexLast az összetett feladat utolsó feladata, csak true érték esetén jelenik meg true / false
details a tesztfeladat részletes adatai további elemek
choices a válaszlehetőségek szövegét és a hozzá csatolt fájlt tartalmazza további elemek
label a válaszlehetőség szövege szöveg
file a válaszlehetőséghez feltöltött fájl (általában kép) adatai
details.helpers a feladatokhoz csatolt segítségek szövegét és típusát tartalmazza további elemek
label a segítség szövege szöveg
type a segítség típusa hint
feedback
correction
reinforcement
details.options a fill in típusú tesztfeladatok beállításait tartalmazza további elemek
caseSensitive a tesztválaszban figyelembe vegye-e a rendszer a kis- és nagybetűk különbségét true / false
orderMatters fill in típusú feladatnál számít-e a válaszok sorrendje true / false
trim törölje-e a rendszer a fill in feladatban megadott válasz elején és végén az üres karaktereket true / false
maxChars maximum hány karakter lehet a fill in feladat válaszaként (0 esetén nincs karakterkorlátozás) szám
restrict milyen karaktereket használhat a tanuló a fill in feladat válaszában (ha nincs megadva karakter, akkor nincs korlátozva) szöveg
mode A kiértékelés módja karakteralapú vagy numerikus char / num
ignoreWhite figyelmen kívül hagyja-e a rendszer a fill in feladat válaszában az üres karaktereket true / false
result a kérdés eredményeire vonatkozó adatok további elemek
skipped átugrotta-e a tanuló a feladatot true / false
evaluated ki van-e értékelve a feladat true / false
score a tanuló által elért pontszám a feladatban szám
ratio a feladat százalékos teljesítettsége a részpontszámok alapján 0 és 1 közötti szám
startTime a feladat kezdetének [UNIX időbélyege] szám
endTime a feladat befejezésének [UNIX időbélyege] szám
exerciseTimeScaled a feladat megoldására rendelkezésre álló időből mennyi telt el. szám
evaluable kiértékelhető-e a feladat true / false

a -1 érték affinityID esetében azt jelenti, hogy az adott feladathoz nincs hasonlósági csoport beállítva. score esetében azt, hogy az adott feladattal nem szerezhető pont (ez csak pseudo feladatoknál lehetséges).

Ha egy kiértékelt feladat helyességére szeretnénk lekérdezést írni, akkor a ratio változót használhatjuk. Ha ennek értéke 1 (ratio==1) akkor a feladat 100%-osan, tehát helyesen lett megoldva.