Á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.
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ő.
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:
- Egy szülőmezőbe létre kell hozni két képmezőt, azokba egyesével feltölteni a képeket.
- 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. - A képmezőknek beállítjuk a kívánt méretet.
- A képmezők tulajdonásgainál a
látható
és azelrendez
értékeknél kivenni a pipát. - A szülőmezőt beállítani, hogy vegye fel a képmező méretét
II. Az események beszerkesztése a képmezőkre (mindkettőre egyesével)
- Az alapmező megjelenésére legyen látható a képmező (show -> visible)
- 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 `.name
után az idézőjelek közé egy olyan szót kell megadnunk kis- és nagybetű függetlenül, ami szerepelni fog a
Publikációs ág címe` mezőben)
- Paraméter: 1 (a megjelenített mező kerüljön be az elrendezésbe)
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:
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:
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.