<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ACTIVITY_TEMPLATE SYSTEM 'file:./collaboration/xml/activity_template.dtd'>
<ACTIVITY_TEMPLATE NAME="Course" IDENTIFIER="_T_.Course" ASSIGNED_ROLES="_T_.Course::_R_.Instructor _T_.Course::_R_.Assistant _T_.Course::_R_.Student">
<ROLE NAME="Instructor" IDENTIFIER="_T_.Course::_R_.Instructor">
<ADMISSION_CONSTRAINTS>
<AND TYPE="positive">
<IS_MEMBER TYPE="negative" ROLE="_T_.Course::_R_.Assistant" PRINCIPAL="thisUser"/>
<IS_MEMBER TYPE="negative" ROLE="_T_.Course::_R_.Student" PRINCIPAL="thisUser"/>
</AND>
</ADMISSION_CONSTRAINTS>
<OPERATION NAME="CreateExam" IDENTIFIER="_T_.Course::_R_.Instructor::_OP_.CreateExam">
<ACTION>
<NEW_ACTIVITY NAME="ex" ACTIVITY_TEMPLATE_REF="_T_.Course::_T_.Examination" IDENTIFIER="_T_.Course::_T_.Examination::_AC_.ex">
<ROLE_ASSIGNMENT ROLE="_T_.Course::_T_.Examination::_R_.Examiner">
<PRINCIPAL URN="thisUser"/>
</ROLE_ASSIGNMENT>
</NEW_ACTIVITY>
</ACTION>
</OPERATION>
</ROLE>
<ROLE NAME="Assistant" IDENTIFIER="_T_.Course::_R_.Assistant">
<ADMISSION_CONSTRAINTS>
<AND TYPE="positive">
<IS_MEMBER TYPE="negative" ROLE="_T_.Course::_R_.Instructor" PRINCIPAL="thisUser"/>
<IS_MEMBER TYPE="negative" ROLE="_T_.Course::_R_.Student" PRINCIPAL="thisUser"/>
</AND>
</ADMISSION_CONSTRAINTS>
</ROLE>
<ROLE NAME="Student" IDENTIFIER="_T_.Course::_R_.Student">
<ADMISSION_CONSTRAINTS>
<AND TYPE="positive">
<IS_MEMBER TYPE="negative" ROLE="_T_.Course::_R_.Instructor" PRINCIPAL="thisUser"/>
<IS_MEMBER TYPE="negative" ROLE="_T_.Course::_R_.Assistant" PRINCIPAL="thisUser"/>
</AND>
</ADMISSION_CONSTRAINTS>
</ROLE>
<ACTIVITY_TEMPLATE NAME="Examination" IDENTIFIER="_T_.Course::_T_.Examination" ASSIGNED_ROLES="_T_.Course::_T_.Examination::_R_.Examiner">
<ROLE NAME="Examiner" IDENTIFIER="_T_.Course::_T_.Examination::_R_.Examiner">
<ADMISSION_CONSTRAINTS>
<MEMBER_COUNT RELATION="eq" VALUE="0" IDENTIFIER="_T_.Course::_T_.Examination::_R_.Examiner_.1052155873831">
<MEMBERS ROLE="_T_.Course::_T_.Examination::_R_.Examiner"/>
</MEMBER_COUNT>
</ADMISSION_CONSTRAINTS>
<OPERATION NAME="SetPaper" IDENTIFIER="_T_.Course::_T_.Examination::_R_.Examiner::_OP_.SetPaper">
<PRECONDITION>
<EVENT_CONDITION TYPE="positive" RELATION="eq" VALUE="0" IDENTIFIER="_T_.Course::_T_.Examination::_R_.Examiner_.1050512377494">
<EVENT_COUNT SUFFIX="start" EVENT_TYPE="_T_.Course::_T_.Examination::_R_.Examiner::_OP_.SetPaper" IDENTIFIER="_T_.Course::_T_.Examination::_R_.Examiner_.1050512413090"/>
</EVENT_CONDITION>
</PRECONDITION>
<ACTION>
<NEW_OBJECT CODEBASE="sample.course.ExamPaper" NAME="exam" IDENTIFIER="_T_.Course::_T_.Examination::_OT_.exam"/>
<OBJECT_INTERFACE OBJECT_REF="_T_.Course::_T_.Examination::_OT_.exam" CODEBASE="sample.course.ExamPaperUI" INVOKED_METHODS="setQuestion"/>
</ACTION>
</OPERATION>
</ROLE>
<ROLE ASSIGN="_T_.Course::_R_.Student" IDENTIFIER="_T_.Course::_T_.Examination::_R_.Examinee" NAME="Examinee">
<OPERATION NAME="StartExam" IDENTIFIER="_T_.Course::_T_.Examination::_R_.Examinee::_OP_.StartExam">
<PRECONDITION>
<AND TYPE="positive">
<EVENT_CONDITION TYPE="positive" RELATION="eq" VALUE="0" IDENTIFIER="_T_.Course::_T_.Examination::_R_.Examinee_.1050513477382">
<EVENT_COUNT SUFFIX="start" EVENT_TYPE="_T_.Course::_T_.Examination::_R_.Examinee::_OP_.StartExam" IDENTIFIER="_T_.Course::_T_.Examination::_R_.Examinee_.1050589467121">
<EVENT_ATTRIBUTE RELATION="eq" VALUE="thisUser" NAME="invoker"/>
</EVENT_COUNT>
</EVENT_CONDITION>
<EVENT_CONDITION TYPE="positive" RELATION="eq" VALUE="1" IDENTIFIER="_T_.Course::_T_.Examination::_R_.Examinee_.1050513556814">
<EVENT_COUNT SUFFIX="finish" EVENT_TYPE="_T_.Course::_T_.Examination::_R_.Examiner::_OP_.SetPaper" IDENTIFIER="_T_.Course::_T_.Examination::_R_.Examinee_.1050589473745"/>
</EVENT_CONDITION>
</AND>
</PRECONDITION>
<ACTION>
<NEW_OBJECT CODEBASE="sample.course.AnswerBook" NAME="ans" IDENTIFIER="_T_.Course::_T_.Examination::_OT_.ans"/>
<NEW_ACTIVITY ACTIVITY_TEMPLATE_REF="_T_.Course::_T_.Examination::_T_.ExamSession" IDENTIFIER="_T_.Course::_T_.Examination::_T_.ExamSession::_AC_.es" NAME="es" OBJECT_REFS="_T_.Course::_T_.Examination::_OT_.exam _T_.Course::_T_.Examination::_OT_.ans">
<ROLE_ASSIGNMENT ROLE="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Candidate">
<PRINCIPAL URN="thisUser"/>
</ROLE_ASSIGNMENT>
</NEW_ACTIVITY>
</ACTION>
</OPERATION>
</ROLE>
<ROLE NAME="Grader" ASSIGN="_T_.Course::_R_.Instructor _T_.Course::_R_.Assistant" IDENTIFIER="_T_.Course::_T_.Examination::_R_.Grader"/>
<ACTIVITY_TEMPLATE NAME="ExamSession" IDENTIFIER="_T_.Course::_T_.Examination::_T_.ExamSession" ASSIGNED_ROLES="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Candidate _T_.Course::_T_.Examination::_T_.ExamSession::_R_.Checker">
<PASSED_OBJECT NAME="a" IDENTIFIER="_T_.Course::_T_.Examination::_T_.ExamSession::_O_.a" OBJECT_CONTEXT_REF="_T_.Course::_T_.Examination::_OT_.ans"/>
<PASSED_OBJECT OBJECT_CONTEXT_REF="_T_.Course::_T_.Examination::_OT_.exam" NAME="e" IDENTIFIER="_T_.Course::_T_.Examination::_T_.ExamSession::_O_.e"/>
<ROLE NAME="Candidate" IDENTIFIER="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Candidate">
<OPERATION NAME="Write" IDENTIFIER="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Candidate::_OP_.Write">
<PRECONDITION>
<EVENT_CONDITION TYPE="positive" RELATION="eq" VALUE="0" IDENTIFIER="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Candidate_.1050514203051">
<EVENT_COUNT SUFFIX="start" EVENT_TYPE="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Candidate::_OP_.Write" IDENTIFIER="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Candidate_.1050589637246"/>
</EVENT_CONDITION>
</PRECONDITION>
<ACTION>
<OBJECT_INTERFACE OBJECT_REF="_T_.Course::_T_.Examination::_T_.ExamSession::_O_.a" CODEBASE="sample.course.AnswerBookUI" INVOKED_METHODS="writeAnswer readAnswer"/>
</ACTION>
</OPERATION>
<OPERATION NAME="Submit" IDENTIFIER="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Candidate::_OP_.Submit">
<PRECONDITION>
<AND TYPE="positive">
<EVENT_CONDITION TYPE="positive" RELATION="eq" VALUE="0" IDENTIFIER="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Candidate_.1050514631669">
<EVENT_COUNT SUFFIX="start" EVENT_TYPE="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Candidate::_OP_.Submit" IDENTIFIER="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Candidate_.1050589683030"/>
</EVENT_CONDITION>
<EVENT_CONDITION TYPE="positive" RELATION="gt" VALUE="0" IDENTIFIER="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Candidate_.1050514566903">
<EVENT_COUNT SUFFIX="finish" EVENT_TYPE="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Candidate::_OP_.Write" IDENTIFIER="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Candidate_.1050589699611"/>
</EVENT_CONDITION>
</AND>
</PRECONDITION>
</OPERATION>
<OPERATION NAME="Read" IDENTIFIER="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Candidate::_OP_.Read">
<ACTION>
<OBJECT_INTERFACE CODEBASE="sample.course.ViewExamUI" OBJECT_REF="_T_.Course::_T_.Examination::_T_.ExamSession::_O_.e" INVOKED_METHODS="readPaper"/>
</ACTION>
</OPERATION>
</ROLE>
<ROLE NAME="Checker" IDENTIFIER="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Checker">
<OPERATION NAME="Grade" IDENTIFIER="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Checker::_OP_.Grade">
<PRECONDITION>
<EVENT_CONDITION TYPE="positive" RELATION="eq" VALUE="1" IDENTIFIER="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Checker_.1050514960903">
<EVENT_COUNT SUFFIX="finish" EVENT_TYPE="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Candidate::_OP_.Submit" IDENTIFIER="_T_.Course::_T_.Examination::_T_.ExamSession::_R_.Checker_.1050589832854"/>
</EVENT_CONDITION>
</PRECONDITION>
<ACTION>
<OBJECT_INTERFACE CODEBASE="sample.course.GraderUI" OBJECT_REF="_T_.Course::_T_.Examination::_T_.ExamSession::_O_.a" INVOKED_METHODS="readAnswer, setGrade"/>
</ACTION>
</OPERATION>
</ROLE>
</ACTIVITY_TEMPLATE>
</ACTIVITY_TEMPLATE>
</ACTIVITY_TEMPLATE>