This is an old revision of the document!
Examiners have access to most procedures from the Exam Management and Grades section.
Parameter: Exam Identifier
changeAttributes(ident uid, ident id, string title, string date, string time, string location) {
assume exists /account[uid]/admin || exists /account[uid]/examiner[id];
assume exists /exam[id]; # implicitly true in OO implementations
update /exam[id]/title title;
update /exam[id]/date date;
update /exam[id]/time time;
update /exam[id]/location location;
}
createTask(ident uid, ident id, ident taskId, double maxPoints) {
assume exists /account[uid]/examiner[id];
assume exists /exam[id]; # implicitly true in OO implementations
assume not exists /exam[id]/task[taskId];
assume maxPoints >= 0;
insert /exam[id] <task id=[taskId] maxPoints=[maxPoints] />;
}
changeAttributes(ident uid, ident id, ident taskId, double maxPoints) {
assume exists /account[uid]/examiner[id];
assume exists /exam[id]/task[taskId]; # implies the existence of the exam
assume maxPoints >= 0;
assume /exam[id]/participant[x]/result[taskId]/points <= maxPoints;
update /exam[id]/task[taskId]/maxPoints maxPoints;
}
deleteTask(ident uid, ident id, ident taskId) {
assume exists /account[uid]/examiner[id];
assume exists /exam[id]/task[taskId]; # implies the exam exists, which is implicitly true anyway
assume size(/exam[id]/participant/result[taskId]) = 0;
remove /exam[id]/task[taskId];
}
addResult(ident uid, ident id, ident studentId, ident taskId, double points) {
assume exists /account[uid]/examiner[id];
assume exists /exam[id]/participant[studentId]; # can also be implicitly true in an OO language
assume exists /exam[id]/task[taskId];
assume not exists /exam[id]/participant[studentId]/result[taskId];
assume points >= 0 && points <= /exam[id]/task[taskId]/maxPoints;
insert /exam[id]/participant[studentId] <result task=[taskId] points=[points] />;
}
removeResult(ident uid, ident id, ident studentId, ident taskId) {
assume exists /account[uid]/examiner[id];
assume exists /exam[id]/participant[studentId]/result[taskId];
# implies the exam, account, student role and task exist by integrity
remove /exam[id]/participant[studentId]/result[taskId];
}