Major update.
[kic.git] / enrolment_status.tex
blob7f38fa47a8be45126c6d1d835448630e22444681
1 \documentclass[12pt,a4paper]{article}
2 \usepackage[nolists,nomarkers]{endfloat}
3 %\usepackage[english]{babel}
4 \usepackage{textcomp}
5 \usepackage[utf8x]{inputenc}
6 \usepackage[T1]{fontenc}
7 \usepackage{color}
8 \usepackage{graphicx}
9 \usepackage{chngpage}
10 \usepackage{ifthen}
11 \usepackage{gitinfo}
12 %\enabledraftstandard
13 \usepackage[firstpage]{draftwatermark}
14 \usepackage[hidelinks]{hyperref}
15 \usepackage{url}
16 \usepackage{breakurl}
17 \usepackage{xcolor,soul,lipsum}
18 \usepackage{lineno}
19 %\usepackage{adjustbox}
20 %\usepackage{fancyvrb}
21 %\usepackage{verbatim}
22 \usepackage{rotating}
23 \usepackage{listings}
25 \newcommand{\myul}[1]{\ul{#1}}
27 %\SetWatermarkText{ENTWURF}
28 \SetWatermarkText{DRAFT}
29 \SetWatermarkScale{4}
30 \SetWatermarkAngle{50}
31 \SetWatermarkLightness{0.90}
33 \sloppy
34 %\hoffset-3mm
35 \parindent0mm
37 \newcommand{\da}{DA}
38 \newcommand{\sa}{SA}
39 \newcommand{\ecs}{ECS}
40 \newcommand{\ilias}{ILIAS}
41 \newcommand{\cces}{\texttt{cc/enrolment\_status\ }}
42 \newcommand{\button}[1]{\fbox{\texttt{#1}}}
43 \newcommand{\jsToAppletComUrlA}{\mbox{http://stackoverflow.com/questions/7278626/javascript-to-java-applet-communication}}
44 \newcommand{\jsToAppletComUrlB}{\mbox{http://docs.oracle.com/javase/tutorial/deployment/applet/invokingAppletMethodsFromJavaScript.html}}
45 \newcommand{\appletToDom}{\mbox{http://docs.oracle.com/javase/tutorial/deployment/applet/manipulatingDOMFromApplet.html}}
47 \lstset{basicstyle=\ttfamily}
48 \newcommand{\includecode}[2][{}]{\lstinputlisting[numbers=left, numberstyle=\tiny, stepnumber=1, numbersep=5pt, breaklines, breakatwhitespace, linewidth=1.1\textheight, xleftmargin=1cm, language=#1]{#2}}
50 \newcommand{\texta}{}
51 \newcommand{\textb}{}
52 \newcommand{\textc}{}
53 \newcommand{\textd}{}
54 \newcommand{\texte}{}
55 \newcommand{\textf}{}
57 \linenumbers
59 \begin{document}
60 \title{Mahara/Moodle enrolment status}
61 \author{David Boehringer\\Universit\"at Stuttgart \and Heiko Bernl\"ohr\\FreeIT.de}
62 \maketitle
63 \begin{center}
64 % Version: 2.0
65 Version: \gitVtag\\
66 % Commit-id: \gitAbbrevHash
67 \end{center}
68 \begin{abstract}
69 New ECS resource providing enrolment status for users enroled to
70 external courses (via courselinks). The course providing participant (e.g.
71 Moodle) informs the courselink providing participant of the subscribed user
72 (e.g. Mahara) about every change of its enrolment status in the course.
73 \end{abstract}
75 %\vspace{\fill}
76 %\begin{center}
77 %\includegraphics[scale=1.0]{vip_lms}
78 %\end{center}
79 %\vspace{\fill}
81 \newpage
83 \section{Enrolment status}
85 The \cces resource describes an enrolment status of a
86 remotly subscribed user (via courselinks) to a course. This document supersedes
87 the part
88 \begin{quote}
89 {\bf Moodle}\\
90 1. New enrolmentStatus resource
91 \end{quote}
92 in \cite{specBoehMaharaMoodle}.
94 \subsection{Events\label{events}}
95 \newcommand{\rstat}[1]{return status: #1}
96 For the following event considerations please have always the state chart on
97 page \pageref{state:enrolmentStatus} in mind.\medskip
99 Moodle has to send the user enrolment status to Mahara on these events:
100 \begin{description}
101 \item[first time clicking courselink] A user clicks on a courselink on Mahara
102 for the first time and tries to consume the linked course on Moodle (sequence
103 diagram on page \pageref{seq:initialEnrolmentStatus}).\\
104 \rstat{active | pending }
105 \item[reject] User will be rejected by course or system admin. This could only happen
106 in \textit{pending} state, e.g. user was on a waiting list, but had not been
107 accepted for the course.\\
108 \rstat{rejected}
109 \item[subscribe] User will be subcribed to course (leaving waiting list). Now
110 he is able to access and consume the course.\\
111 \rstat{active}
112 \item[go pending] User will be transfered to waiting list
113 i.e. he can't access and consume the course yet. He has to wait until
114 he will be subscribed to the course.\\
115 \rstat{pending}
116 \item[unsubscribe] User ended course membership himself or has been
117 terminated by course administrator or system administrator. To access and
118 consume the course again he has to enrole from scratch.\\
119 \rstat{unsubscribed}
120 \item[disable subscription] User is disabled by course or system
121 administrator, i.e. he is (temporarly) not allowed to access course for
122 whatever reason.\\
123 \rstat{denied}
124 \item[enable subscription] User is enabled by course or system administrator,
125 i.e. he is to be allowed to access course again.\\
126 \rstat{active}
127 \item[deactivate user account] User account on remote system is deactivated.\\
128 \rstat{inactive\_account}
129 \item[activate user account] User account on remote system is activated.\\
130 \rstat{active | pending | denied}
131 \item[subsequently clicking courselink] A user subsequently clicks a
132 courselink on Mahara and consumes an already enroled course on Moodle (see
133 page \pageref{seq:subsequentEnrolmentStatus}). After this event Moodle has
134 to send the current enrolment status. This also guarantees to have a
135 status even if Mahara just forget/loose\footnote{We don't make the resource
136 persistent, so loosing the status somehow on Mahara it will be refreshed
137 after next click on a courselink.} it somehow.\\
138 \rstat{pending | active | denied }
139 \end{description}
141 \subsection{Status values\label{statusValues}}
142 \newcommand{\statusnotstored}{This status is usually not persistently stored in the LMS.}
143 For the following status considerations please have always the state chart on
144 page \pageref{state:enrolmentStatus} in mind.\medskip
146 The status attribute could have following values:
147 \begin{description}
148 \item[active] User is enroled and allowed to consume the course.
149 \item[pending] User enroled for the course, but is on a waiting list.
150 \item[rejected] User is not enroled anymore\footnote{Clicking the courselink
151 again the user will get through initial enrolment as described in sequence
152 diagram on page \pageref{seq:initialEnrolmentStatus}.}. \statusnotstored
153 \item[unsubscribed] User is not enroled
154 anymore\addtocounter{footnote}{-1}\footnotemark. \statusnotstored
155 \item[denied] Still enroled but not allowed to access the course.
156 \item[inactive\_account] Still enroled but temporarly not allowed to access
157 the system.
158 \item[deleted] User is not enroled
159 anymore\addtocounter{footnote}{-1}\footnotemark. \statusnotstored
160 \end{description}
161 Whereas only \texttt{active, pending, rejected} and \texttt{inactive\_account}
162 status values have to be stored/saved on the LMS. All others are only generated
163 while the transitions.
165 \subsection{Redirect querystring parameters\label{subsec:redirect_querystring_parameters}}
167 Our present specification of redirecting a user is defined in
168 \cite{specRedirectProcedure} and the procedure how to compute the redirect hash
169 (for securing the redirect parameters) in \cite{specHashCumputing}. As
170 described in the document \cite{specBoehMaharaMoodle} Moodle has to provide an
171 interface to define for each participant and its community participation what
172 personal data should be appended as query strings. Of course to allow this we
173 have to enhance our specs in \cite{specRedirectProcedure} and
174 \cite{specHashCumputing}. This still needs to be done.
176 \begin{figure}[p]
177 \includegraphics[scale=0.8]{enrolment_status_seq}
178 \caption{\label{seq:initialEnrolmentStatus}Sending enrolment status after
179 consuming a courselink for the first time. For \textit{params} in
180 the \textit{redirect} of the \textit{consume courselink} block see
181 \ref{subsec:redirect_querystring_parameters} at page
182 \pageref{subsec:redirect_querystring_parameters}.}
183 \end{figure}
185 \begin{figure}[p]
186 \includegraphics[scale=0.8]{subsequent_enrolment_status_seq}
187 \caption{\label{seq:subsequentEnrolmentStatus}Sending enrolment status
188 after subsequently consuming a courselink.}
189 \end{figure}
191 \begin{figure}[p]
192 \centering
193 \includegraphics[scale=0.5]{enrolment_status_state}
194 \caption{\label{state:enrolmentStatus}UML state diagram. Enrolment status of
195 a user in respect to a course on a LMS. For event description see
196 \ref{events} on page \pageref{events}. For status values description see
197 \ref{statusValues} on page \pageref{statusValues}.}
198 \end{figure}
201 \subsection{Resource attributes}
203 For the json schema of \cces see page \pageref{schema:enrolment_status}.
204 Following description write on \cces resource attributes for which a user
205 status has changed or asked for:
206 \begin{description}
207 \item[courseURL] It's a url transfering a courselink consuming user
208 directly to the course on the course providing system. It's also used as a
209 unique id.
210 \item[courseID] It's a unique course id on the course providing system. It
211 references the same course as \texttt{courseURL}.
212 \item[personID] Unique id of the course consuming user.
213 \item[personIDtype] Class/type of \texttt{personID}. It's a controlled
214 vocabulary (see page \pageref{schema:enrolment_status} for possible
215 values).
216 \item[status] Status of the user's course enrolment. It's a controlled
217 vocabulary (for possible values see schema on page
218 \pageref{schema:enrolment_status} and values descriptions at
219 \ref{statusValues}).
220 \end{description}
222 \begin{sidewaysfigure}[p]
223 \includecode{cc_enrolment_status.schema.json}
224 \caption{JSON-Schema definition of enrolment\_status resource}
225 \label{schema:enrolment_status}
226 \end{sidewaysfigure}
228 \begin{thebibliography}{99}
229 \bibitem{specRedirectProcedure} \url{http://freeit.de/documents/ecsa/index.html#_redirect_procedure_protocol_when_consuming_courselinks}
230 \bibitem{specHashCumputing} \url{http://freeit.de/documents/ecsa/index.html#_courselinks}
231 \bibitem{specBoehMaharaMoodle} David Boehringer. \textit{Mahara and Moodle Specification Version 03}
232 \end{thebibliography}
234 \end{document}