Zum Hauptinhalt springen

Metadaten

Aufbau

meta.xml
<task subatoId="15" trackingId="244a854f-c562-45b7-b425-198cd00b8380" lang="java" attempts="25">
<name>Appointment</name>
<evaluator>java8</evaluator>
<evaluatorParams>
<!-- wenn assert Statements in der Lösung verwendet werden -->
<param key="jvm.enable_asserts" value="true"/>
</evaluatorParams>
<description>Termine</description>
<submissionModes default="TEXT">
<submissionMode name="TEXT"/>
<submissionMode name="FILE"/>
</submissionModes>
<files>
<file public="true" type="template" path="Appointment.java"/>
<file public="false" type="test" path="AppointmentTest.java"/>
<file public="false" type="acceptanceTest" path="AppointmentAbnahmeTest.java"/>
<file public="false" type="include" path="Date.java"/>
<file public="false" type="include" path="DateTime.java"/>
<file public="false" type="include" path="Time.java"/>
<file public="false" type="solution" path="Appointment.java"/>
<file public="true" type="misc" path="Anhang.pdf"/>
</files>
<mimeMappings>
<!-- in diesem Beispiel eigentlich nicht notwendig - nur zur Vollständigkeit-->
<mimeMapping map=".java" to="text/x-java-source"></mimeMapping>
</mimeMappings>
<custom>
<sample>Hello World!</sample>
</custom>
</task>
XSD

Es existiert eine XSD, mit der eine erste lokale Validierung der meta.xml erfolgen kann. Es wird zwar keine vollständige Validierung durchgeführt, dafür erspart die XSD aber unnötige Roundtrips aufgrund von syntaktischen Fehlern.


meta.xml
<task subatoId="15" trackingId="244a854f-c562-45b7-b425-198cd00b8380" lang="java" attempts="25">
...
</task>
AttributErforderlichTypBeschreibung
subatoIdneinintLegacy, nicht mehr verwenden
trackingIdjaUUID4ID, welche zur Zuordnung der Lösungen verwendet wird. Diese muss innerhalb des Aufgaben-Pools eindeutig sein und sollte sich nie ändern. Diese ist von der ID der Aufgabe zu unterscheiden, die durch den Namen des Verzeichnisses festgelegt wird. Diese darf sich im Gegensatz zur trackingId ändern.
attemptsneinintGibt an, wie oft eine Lösung zu dieser Aufgabe abgegeben werden kann. Lösungen können auch nach Überschreitung abgegeben werden, sie werden dann aber entsprechend markiert. Wenn nichts angegeben wird, gibt es keine Begrenzung.
langjastringIdentifier der Sprache, die die Aufgabe "am besten trifft". Für mögliche Werte im Subato unter dem Menüpunkt "Sprachen" schauen (Wert ohne Klammern ist Identifier, in Klammern ist Anzeigename). Bei Bedarf neue Sprachen hinzufügen.

Allgemein

meta.xml
<name>Appointment</name>
<evaluator>java8</evaluator>
<evaluatorParams>
<param key="jvm.enable_asserts" value="true"/>
</evaluatorParams>
<description>Termine</description>
ElementErforderlichTypBeschreibung
namejastringAnzeigename der Aufgabe
descriptionneinstringKurzbeschreibung der Aufgabe, die angezeigt wird. Kurz halten!
evaluatorneinEvaluatorIdentifier des Evaluators, der für die automatische Auswertung von Lösungen (Kompilierung, Tests, Style) verwendet wird.
evaluatorParamsnein-Parameter für den Evaluator, siehe Dokumentation des entsprechenden Evaluators für die möglichen Parameter. Aktuell sind nur einfache Key-Value Paare mit primitiven Werten möglich.

Abgabemodus

Gibt an, wie Lösungen für diese Aufgabe abgegeben werden können.

meta.xml
<submissionModes default="TEXT">
<submissionMode name="TEXT"/>
<submissionMode name="FILE" extensions="java" archives="true" extract="true"/>
</submissionModes>
AttributErforderlichTypBeschreibung
submissionModes.defaultneinSubmissionModeStandardmäßig ausgewählter Abgabemodus im UI
submissionMode.namejaSubmissionMode
submissionMode.extensionsnein (default: alle Dateiendungen der template-Dateien)stringErlaubte Dateiendungen (separiert durch ;). Nur Lösungsdateien mit den ausgewählten Dateiendungen werden akzeptiert. Bezieht sich nur auf Dateien, die unmittelbar abgegeben werden (nicht rekursiv in Archiven). Nur bei submissionMode.name = FILE
submissionMode.archivesnein (default: true)booleanOb eine Abgabe als Archiv möglich ist. Erlaubt sind dann zusätzlich die in SubmissionMode aufgeführten Dateiendungen. Nur bei submissionMode.name = FILE
submissionMode.extractnein (default: true wenn Evaluator konfiguriert, false sonst)booleanOb Archive entpackt werden sollen, um z.B. Lösungen direkt in der Weboberfläche ansehen zu können. Wenn ein Evaluator konfiguriert wurde, muss das Attribut den Wert true haben, da die Quelldateien darin zur Lösungsauswertung verarbeitet werden müssen. Nur bei submissionMode.name = FILE

Die Angabe von submissionModes ist optional. Wenn submissionModes nicht angegeben wird, ist FILE immer aktiviert (mit den Defaultwerten für extensions, archives und extract). TEXT ist dann aktiviert, wenn es genau eine template-Datei gibt. default entspricht TEXT (sofern aktiviert), ansonsten FILE.

Falls TEXT explizit konfiguriert wird und es keine template-Datei gibt, wird ein leerer Editor angezeigt und die abgegebene Lösung wird unter der Datei unnamed.txt abgespeichert.

Wann sollte man welchen Modus verwenden?

TEXT für kleinere Aufgaben (z.B. Textaufgabe), in denen ein Web-Editor ausreicht. FILE für alle anderen Aufgaben, für die eine Bearbeitung in einer IDE bzw. in einem regulären Text-Editor besser geeignet wäre.

Referenzen auf Dateien

Ergänzung von Metadaten zu benötigten Dateien. Alle Dateien (bis auf die Musterlösungen), die in den Ordnern abgelegt werden, müssen hier aufgelistet werden, damit sie berücksichtigt werden. Die Angabe von Dateien ist optional, es kann also Aufgaben ohne Dateien geben.

meta.xml
  <files>
<file public="true" type="template" path="Appointment.java"/>
<file public="false" type="test" path="AppointmentTest.java"/>
<file public="false" type="acceptanceTest" path="AppointmentAbnahmeTest.java"/>
<file public="false" type="include" path="Date.java"/>
<file public="false" type="include" path="DateTime.java"/>
<file public="false" type="include" path="Time.java"/>
<file public="false" type="solution" path="Appointment.java"/>
<file public="true" type="misc" path="Anhang.pdf"/>
</files>

Für jede Datei ist ein file-Element zu definieren. Es können folgende Attribute angegeben werden:

AttributErforderlichTypBeschreibung
typenein (default: misc)FileType
pathjastringRelativer Pfad zur Datei, ausgehend vom Ordner files/<type>
publicnein (default: false)booleanIst die Datei für nicht-Dozenten sichtbar?

Weiterhin kann mit <file>Eine Beschreibung</file> eine optionale kurze Beschreibung der Datei angegeben werden, die im UI angezeigt wird.

Mime-Type Zuordnungen

Aufgabenspezifische Zuordnungen von Dateiendungen zu Mime-Types (z.B. text/plain). Der Mime-Type ist entscheidend, ob die Datei in einem Code-Editor angezeigt werden kann und welche Regeln für Syntax-Highlighting anzuwenden sind. Zudem beeinflusst er auch, ob die Abgabe einer bestimmten Lösungsdatei erlaubt ist - also ob es sich z.B. um eine Quelldatei handelt.

meta.xml
<mimeMappings>
<mimeMapping map=".eva" to="text/plain"></mimeMapping>
</mimeMappings>
AttributErforderlichTypBeschreibung
mimeMapping.mapjastringZu matchender Suffix des Dateinamens
mimeMapping.tojastringZu verwendender Mime-Type, falls Suffix übereinstimmt

Die Angabe ist optional. Standardmäßig wird versucht, den Mime-Type automatisch abzuleiten. Es kann jedoch vorkommen, dass der Mime-Type nicht oder falsch abgeleitet wird. Das ist vor allem dann der Fall, wenn eine eigene Domain Specific Language entwickelt wird.

Kompetenzen

Jeder Aufgabe können mehrere Kompetenzen zugewiesen werden. (WIP, Forschung)

meta.xml
<competences>
<competence>useJavaCompiler</competence>
<competence>applyShortCircuit</competence>
<competence>overloadingMethods</competence>
</competences>

Die Angabe ist optional.

Erweiterbarkeit

Falls weitere Elemente benötigt werden, müssen diese innerhalb eines <custom></custom>-Elements abgebildet werden:

meta.xml
<custom>
<sample>Hello World!</sample>
</custom>
info

Eigene Elemente können nicht an beliebiger Stelle definiert werden, da eine XSD 1.0 für die Validierung der meta.xml verwendet wird. Bei XSD 1.1 gäbe es diese Limitierung nicht, allerdings kann Subato nur XSD 1.0 verarbeiten.