Datenbanktabellen für e-Aufgaben

Auf dieser Seite... (ausblenden)

  1.   1.  etask_tasks
  2.   2.  etask_task_tags
  3.   3.  etask_tests
  4.   4.  etask_test_tags
  5.   5.  etask_test_tasks
  6.   6.  etask_assignments
  7.   7.  etask_assignment_ranges
  8.   8.  etask_assignment_attempts
  9.   9.  etask_responses
  10. 10.  JSON-Formate für Aufgabentypen
    1. 10.1  Multiple-Choice
    2. 10.2  Textaufgaben
    3. 10.3  Lückentexte
    4. 10.4  Zuordnungen

Entwicklerdokumentation

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.

  • etask_tasks: Aufgaben
  • etask_task_tags: Schlüsselworte für Aufgaben
  • etask_tests: Aufgabensammlungen
  • etask_test_tags: Schlüsselworte für Aufgabensammlungen
  • etask_test_tasks: Zuordnung der Aufgaben zu den Aufgabensammlungen
  • etask_assignments: gestellte Aufgabensammlungen (Aufgabenblätter)
  • etask_assignment_ranges: Mehrfachzuordnung von Aufgabensammlungen zu Kontexten
  • etask_assignment_attempts: individueller Lösungsversuch zu einem Aufgabenblatt
  • etask_responses: Antworten bzw. Lösungen zu einzelnen Aufgaben

1.  etask_tasks

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".

  • id: ID der Aufgabe (Primärschlüssel, Auto-Increment)
  • type: Aufgabentyp (Multiple-Choice, Text, Zuordnung o.ä.), geplant: PHP-Klassenname
  • title: Aufgabentitel (ohne Formatierung)
  • description: Aufgabentext (mit Formatierung)
  • task: Aufgabeninhalte in einer typspezifischen JSON-Repräsentierung (siehe Beispiele unten)
  • user_id: Ersteller der Aufgabe
  • mkdate: Erstellungsdatum
  • chdate: Änderungsdatum
  • options: weitere, nicht typspezifische Daten im JSON-Format (nach Bedarf)

2.  etask_task_tags

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.

  • task_id: ID der Aufgabe
  • user_id: Nutzer des Schlüsselworts
  • tag: Schlüsselwort

3.  etask_tests

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

  • id: ID der Aufgabensammlung (Primärschlüssel, Auto-Increment)
  • title: Titel der Aufgabensammlung (ohne Formatierung)
  • description: Beschreibung der Aufgabensammlung (mit Formatierung)
  • user_id: Ersteller der Aufgabensammlung
  • mkdate: Erstellungsdatum
  • chdate: Änderungsdatum
  • options: weitere Daten im JSON-Format (nach Bedarf)

4.  etask_test_tags

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.

  • test_id: ID der Aufgabensammlung
  • user_id: Nutzer des Schlüsselworts
  • tag: Schlüsselwort

5.  etask_test_tasks

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.

  • test_id: ID der Aufgabensammlung
  • task_id: ID der Aufgabe
  • position: Position in der Sammlung (numeriert ab 1)
  • points: erreichbare Punkte (optional)
  • options: weitere Daten im JSON-Format (nach Bedarf)

6.  etask_assignments

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.

  • id: ID des Aufgabenblatts (Primärschlüssel, Auto-Increment)
  • test_id: ID der Aufgabensammlung
  • range_type: Kontext-Typ, aktuell sind definiert: course, global, group, institute, user
  • range_id: Kontext der Zuordnung, z.B. die ID einer Veranstaltung
  • type: Präsentationsmodus als Text, vom Tool abhängig (nicht vordefiniert)
  • start: Start des Bearbeitungszeitraums (optional)
  • end: Ende des Bearbeitungszeitraums (optional)
  • active: sichtbar/unsichtbar für Teilnehmer, kann z.B. für einen Entwurfsmodus verwendet werden
  • options: weitere Daten im JSON-Format (nach Bedarf)

7.  etask_assignment_ranges

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

  • id: ID der Zuordnung (Primärschlüssel, Auto-Increment)
  • assignment_id: ID des Aufgabenblatts
  • range_type: Kontext-Typ, aktuell sind definiert: course, global, group, institute, user
  • range_id: Kontext der Zuordnung, z.B. die ID einer Veranstaltung
  • options: weitere Daten im JSON-Format (nach Bedarf)

8.  etask_assignment_attempts

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.

  • id: ID des Lösungsversuchs (Primärschlüssel, Auto-Increment)
  • assignment_id: ID des Aufgabenblatts
  • user_id: Teilnehmer
  • start: individueller Start der Bearbeitung (optional)
  • end: individuelles Ende der Bearbeitung (optional)
  • options weitere Daten im JSON-Format (nach Bedarf)

9.  etask_responses

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.

  • id: ID der Antwort (Primärschlüssel, Auto-Increment)
  • assignment_id: ID des Aufgabenblatts
  • task_id: ID der Aufgabe
  • user_id: Teilnehmer
  • response: Antwort im JSON-Format (abhängig vom Aufgabentyp)
  • state: Status (numerisch, vom Tool zu definieren)
  • points: Bewertung in Punkten (optional)
  • feedback: Feedback zur Antwort (mit Formatierung)
  • grader_id: Nutzer-ID des Feedback-Gebers
  • mkdate: Erstellungsdatum
  • chdate: Änderungsdatum
  • options: weitere Daten im JSON-Format (nach Bedarf)

10.  JSON-Formate für Aufgabentypen

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.

10.1  Multiple-Choice

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": "..."
    }
  ]
}

Attribute:

  • select: single oder multiple
  • optional: true (Antwort ist optional) oder false (Antwort muß gegeben werden)
  • answers: Liste der Antwortmöglichkeiten (ggf. inkl. automatischem Feedback)

Antwort:

[
  1, 0
]

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

10.2  Textaufgaben

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": "..."
    }
  ]
}

Attribute:

  • layout: input (einzeilig) oder textarea (mehrzeilig)
  • template: initiale Textvorgabe für die Lösung der Teilnehmer
  • compare: Vergleichskriterum für die Auswertung, z.B. ignorecase oder levenshtein
  • answers: Liste der automatisch ausgewerteten Antworten (ggf. inkl. automatischem Feedback)

Antwort:

[
  "foobar"
]

10.3  Lückentexte

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,
      }
    ]
  ]
}

Attribute:

  • text: Text des Lückentexts (mit Formatierung), Lücken sind mit [[]] markiert
  • select: true (Auswahl aus Liste) oder false (Eingabe als Text)
  • compare: Vergleichskriterum für die Auswertung, z.B. ignorecase oder levenshtein
  • answers: Liste der Antwortmöglichkeiten bzw. der automatisch ausgewerteten Antworten (ggf. inkl. automatischem Feedback)

Antwort;

[
  "auf", "Tisch"
]

10.4  Zuordnungen

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
    }
  ]
}

Attribute:

  • select: single (Einfachzuordnung) oder multiple (Mehrfachzuordnung in jeder Gruppe)
  • groups: Liste der Gruppen für die Zuordnung (numeriert ab 0)
  • answers: Liste der Antwortmöglichkeiten (ggf. inkl. automatischem Feedback) und Gruppenzuordnung

Antwort:

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

Wenn eine Antwort unzugeordnet bleibt, wird ein Wert von "-1" eingetragen.

Letzte Änderung am March 22, 2019, at 02:49 PM von eludwig.