Zum Inhalt springen

Beschreibung der `etask_*`-Tabellen

Ab Stud.IP 4.0 gibt es gemeinsame Tabellen für Aufgaben in Stud.IP, die von verschiedenen Tools (und auch Plugins) verwendet werden können. Da viele Tools spezifische Zusatzinformationen ablegen wollen, gibt es in vielen Tabellen ein zusätzliches Feld options, das (fast) beliebige weitere Daten im JSON-Format aufnehmen kann. Für darüber hinaus gehende Anforderungen können natürlich auch weiterhin eigene Tabellen angelegt werden.

Die Tabelle etask_tasks enthält die einzelnen Aufgaben. Eine Aufgabe kann dabei in verschiedenen Kontexten verwendet werden, daher stehen z.B. die Informationen zur Bewertung (falls es so etwas gibt) nicht direkt bei der Aufgabe. Der Typ sollte eigentlich ein PHP-Klassenname sein, allerdings gibt es im Kern noch keine definierten Klassen für die Aufgabentypen, daher gibt es da aktuell nur den Typ “multiple-choice”.

AttributBeschreibung
idID der Aufgabe (Primärschlüssel, Auto-Increment)
typeAufgabentyp (Multiple-Choice, Text, Zuordnung o.ä.), geplant: PHP-Klassenname
titleAufgabentitel (ohne Formatierung)
descriptionAufgabentext (mit Formatierung)
taskAufgabeninhalte in einer typspezifischen JSON-Repräsentierung (siehe Beispiele unten)
user_idErsteller der Aufgabe
mkdateErstellungsdatum
chdateÄnderungsdatum
optionsweitere, nicht typspezifische Daten im JSON-Format (nach Bedarf)

Falls ein Tool Schlüsselworte zu Aufgaben zuweisen möchte, kann dazu die Tabelle etask_task_tags verwendet werden. Jeder Nutzer sieht dabei nur seine eigenen Schlüsselworte.

AttributBeschreibung
task_idID der Aufgabe
user_idNutzer des Schlüsselworts
tagSchlüsselwort

Aufgaben können zu Aufgabensammlungen zusammengefaßt werden (etwa so wie Dateien in Ordnern). Jede Aufgabensammlungen ist in der Tabelle etask_test abgelegt.

AttributBeschreibung
idID der Aufgabensammlung (Primärschlüssel, Auto-Increment)
titleTitel der Aufgabensammlung (ohne Formatierung)
descriptionBeschreibung der Aufgabensammlung (mit Formatierung)
user_idErsteller der Aufgabensammlung
mkdateErstellungsdatum
chdateÄnderungsdatum
optionsweitere Daten im JSON-Format (nach Bedarf)

etask_test_tags - Schlüsselworte für Aufgabensammlungen

Abschnitt betitelt „etask_test_tags - Schlüsselworte für Aufgabensammlungen“

Falls ein Tool Schlüsselworte zu Aufgabensammlung zuweisen möchte, kann dazu die Tabelle etask_test_tags verwendet werden. Jeder Nutzer sieht dabei nur seine eigenen Schlüsselworte.

AttributBeschreibung
test_idID der Aufgabensammlung
user_idNutzer des Schlüsselworts
tagSchlüsselwort

etask_test_tasks - Zuordnung der Aufgaben zu den Aufgabensammlungen

Abschnitt betitelt „etask_test_tasks - Zuordnung der Aufgaben zu den Aufgabensammlungen“

Die Tabelle etask_test_tasks speichert die Zuordnung der einzelnen Aufgaben zu den Aufgabensammlungen sowie ggf. weitere an der Zuordnung hängende Informationen wie die Punktzahl.

AttributBeschreibung
test_idID der Aufgabensammlung
task_idID der Aufgabe
positionPosition in der Sammlung (numeriert ab 1)
pointserreichbare Punkte (optional)
optionsweitere Daten im JSON-Format (nach Bedarf)

etask_assignments - gestellte Aufgabensammlungen (Aufgabenblätter)

Abschnitt betitelt „etask_assignments - gestellte Aufgabensammlungen (Aufgabenblätter)“

Eine Aufgabensammlung ist zunächst mal nur eine Menge von Aufgaben ohne Zuordnung. Über ein etask_assignments wird die Aufgabensammlung einer Menge von Teilnehmern gestellt (z.B. in Form eines Aufgabenblatts oder eine Abstimmung). Bei einer Einfachzuordnung zu einem Kontext steht die Zuordnung direkt in dieser Tabelle, bei Mehrfachzuordnung in der Tabelle etask_assignment_ranges.

AttributBeschreibung
idID des Aufgabenblatts (Primärschlüssel, Auto-Increment)
test_idID der Aufgabensammlung
range_typeKontext-Typ, aktuell sind definiert: course, global, group, institute, user
range_idKontext der Zuordnung, z.B. die ID einer Veranstaltung
typePräsentationsmodus als Text, vom Tool abhängig (nicht vordefiniert)
startStart des Bearbeitungszeitraums (optional)
endEnde des Bearbeitungszeitraums (optional)
activesichtbar/unsichtbar für Teilnehmer, kann z.B. für einen Entwurfsmodus verwendet werden
optionsweitere Daten im JSON-Format (nach Bedarf)

etask_assignment_ranges -Mehrfachzuordnung von Aufgabensammlungen zu Kontexten

Abschnitt betitelt „etask_assignment_ranges -Mehrfachzuordnung von Aufgabensammlungen zu Kontexten“

Wenn Aufgabensammlungen mehreren Kontexten zugewiesen werden sollen, sind diese in etask_assignment_ranges abgelegt.

AttributBeschreibung
idID der Zuordnung (Primärschlüssel, Auto-Increment)
assignment_idID des Aufgabenblatts
range_typeKontext-Typ, aktuell sind definiert: course, global, group, institute, user
range_idKontext der Zuordnung, z.B. die ID einer Veranstaltung
optionsweitere Daten im JSON-Format (nach Bedarf)

etask_assignment_attempts - individueller Lösungsversuch zu einem Aufgabenblatt

Abschnitt betitelt „etask_assignment_attempts - individueller Lösungsversuch zu einem Aufgabenblatt“

In etask_assignment_attempts wird pro Teilnehmer abgelegt, ob ein Aufgabenblatt bereits angefangen wurde (und wann), und ggf. auch ein indivduelles Enddatum der Bearbeitung gespeichert. Zusätzlich können auch weitere Informationen je nach Tool gespeichert werden.

AttributBeschreibung
idID des Lösungsversuchs (Primärschlüssel, Auto-Increment)
assignment_idID des Aufgabenblatts
user_idTeilnehmer
startindividueller Start der Bearbeitung (optional)
endindividuelles Ende der Bearbeitung (optional)
optionsweitere Daten im JSON-Format (nach Bedarf)

etask_responses - Antworten bzw. Lösungen zu einzelnen Aufgaben

Abschnitt betitelt „etask_responses - Antworten bzw. Lösungen zu einzelnen Aufgaben“

Die Antworten auf die einzelnen Aufgaben werden in der Tabelle etask_responses abgelegt. Die Antworten selbst sind natürlich typspezifisch und werden wie die Aufgabeninhalte in einem JSON-Fomat gespeichert.

AttributBeschreibung
idID der Antwort (Primärschlüssel, Auto-Increment)
assignment_idID des Aufgabenblatts
task_idID der Aufgabe
user_idTeilnehmer
responseAntwort im JSON-Format (abhängig vom Aufgabentyp)
stateStatus (numerisch, vom Tool zu definieren)
pointsBewertung in Punkten (optional)
feedbackFeedback zur Antwort (mit Formatierung)
grader_idNutzer-ID des Feedback-Gebers
mkdateErstellungsdatum
chdateÄnderungsdatum
optionsweitere Daten im JSON-Format (nach Bedarf)

In diesem Abschnitt ist das JSON-Format der wichtigsten Aufgabentypen definiert. Zu beachten ist, daß der Aufgabentext nicht Teil dieser JSON-Beschreibung ist, sondern direkt in der Spalte description in der Tabelle etask_tasks gespeichert ist. Für weitere Aufgabentypen müßte die Auflistung hier entsprechend ergänzt werden.

Es gibt ein gemeinsames Schema für alle Arten von Aufgaben mit Antwortwahl (mit Ausnahme des Lückentexts).

Beispiel:

{
"select":"multiple",
"optional":false,
"answers":[
{
"text":"Ist der Himmel blau?",
"score":1,
"feedback":"..."
},
{
"text":"Findet man am Ende des Regenbogens einen Topf voll Gold?",
"score":0,
"feedback":"..."
}
]
}
AttributBeschreibung
selectsingle oder multiple
optionaltrue (Antwort ist optional) oder false (Antwort muß gegeben werden)
answersListe der Antwortmöglichkeiten (ggf. inkl. automatischem Feedback)

Antwort:

[
1, 0
]

Wenn eine Frage unbeantwortet bleibt (optionale Antwort), wird ein Wert von -1 eingetragen.

Für Textaufgaben gibt es ein Schema ähnlich wie bei den Multiple-Choice mit kleinen Erweiterungen. Die vordefinierten Antworten sind hier aber keine Antwortoptionen zur Auswahl, sondern die automatisch auswertbaren Antworten mit entsprechender Bewertung (die Liste kann leer sein, wenn es keine Auswertung gibt).

Beispiel:

{
"layout":"textarea",
"template":"...",
"compare":"ignorecase",
"answers":[
{
"text":"Paris",
"score":1,
"feedback":"..."
}
]
}
AttributBeschreibung
layoutinput (einzeilig) oder textarea (mehrzeilig)
templateinitiale Textvorgabe für die Lösung der Teilnehmer
compareVergleichskriterum für die Auswertung, z.B. ignorecase oder levenshtein
answersListe der automatisch ausgewerteten Antworten (ggf. inkl. automatischem Feedback)

Antwort:

[
"foobar"
]

Beim Lückentext sind die Antworten getrennt vom eigentlichen Lückentext abgelegt, in dem nur die Lücken ausgezeichnet sind. Eine Lücke mit dabei im Text mit [=[]()=] markiert. Der Lückentext kann dabei auch formatiert sein (Stud.IP-Formatierung bzw. WYSIWYG-Editor).

Beispiel:

{
"text":"Die Vase steht []() dem []().",
"select":true,
"compare":"ignorecase",
"answers":[
[
{
"text":"auf",
"score":1
},
{
"text":"neben",
"score":0,
"feedback":"..."
},
{
"text":"unter",
"score":0,
"feedback":"..."
}
],
[
{
"text":"Stuhl",
"score":0
},
{
"text":"Tisch",
"score":1
},
{
"text":"Teppich",
"score":0
}
]
]
}
AttributBeschreibung
textText des Lückentexts (mit Formatierung), Lücken sind mit [=[]()=] markiert
selecttrue (Auswahl aus Liste) oder false (Eingabe als Text)
compareVergleichskriterum für die Auswertung, z.B. ignorecase oder levenshtein
answersListe der Antwortmöglichkeiten bzw. der automatisch ausgewerteten Antworten (ggf. inkl. automatischem Feedback)

Antwort;

[
"auf", "Tisch"
]

Zuordnungen bestehen aus einer Liste von Gruppen (Kategorien) und einer Liste von Antworten, die diesen Gruppen zugeordnet werden können. Es kann Antworten geben, die unzugeordnet bleiben müssen - diese bekommen die Gruppe mit dem Index “-1” zugewiesen.

Beispiel:

{
"select":"single",
"groups":[
"Instrument",
"Werkzeug"
],
"answers":[
{
"id":42,
"text":"Hammer",
"group":1
},
{
"id":7,
"text":"Geige",
"group":0
}
]
}
AttributBeschreibung
select(Einfachzuordnung) oder multiple (Mehrfachzuordnung in jeder Gruppe)
groupsListe der Gruppen für die Zuordnung (numeriert ab 0)
answersListe der Antwortmöglichkeiten (ggf. inkl. automatischem Feedback) und Gruppenzuordnung

Antwort:

{
"42": 0, "7": 1
}

Wenn eine Antwort nicht zugeordnet bleibt, wird ein Wert von “-1” eingetragen.