[13025] | 1 | .. _registration_workflow: |
---|
| 2 | |
---|
| 3 | Registration Workflow |
---|
| 4 | ===================== |
---|
| 5 | |
---|
| 6 | Studying at a higher education institution means following |
---|
| 7 | orchestrated and repeatable patterns of activities or, in other |
---|
| 8 | words, following a workflow prescribed by the school regulations. |
---|
| 9 | This process starts with application for studying a programme |
---|
| 10 | offered by the school, and may end with de-registration of a |
---|
| 11 | student. But even after de-registration, former students can be kept |
---|
| 12 | in the system as alumni so that they can still access their records |
---|
| 13 | or can apply for official transcripts. |
---|
| 14 | |
---|
| 15 | Kofa divides these 'repeatable patterns of activities' into two |
---|
| 16 | different and strictly seperated workflows: an application and a |
---|
| 17 | student registration workflow. The latter, which presupposes the |
---|
| 18 | admission of the student, will be described here. |
---|
| 19 | |
---|
| 20 | A worflow defines states and transitions between the states. The |
---|
| 21 | following diagram shows the entire student registration workflow. |
---|
| 22 | Workflow states are connected with dashed lines which symbolize |
---|
| 23 | workflow transitions. There are no arrows at the end of each line |
---|
| 24 | because in most cases, Kofa provides transitions in both directions. |
---|
| 25 | Transitions are denoted by lower-case characters, reverse |
---|
| 26 | transitions additionally by a preceded dash. A few transitions do |
---|
| 27 | not make sense and are thus not available (N/A):: |
---|
| 28 | |
---|
| 29 | a |
---|
| 30 | created ------- admitted |
---|
| 31 | b | |
---|
| 32 | +----------------+ |
---|
| 33 | | e |
---|
| 34 | +------------------------------------------------------+ |
---|
| 35 | | c d | |
---|
| 36 | clearance started ------- clearance requested ------- cleared |
---|
| 37 | | |
---|
| 38 | f | |
---|
| 39 | +--------+---------------------------------------------+ |
---|
| 40 | | | |
---|
| 41 | | h school fee paid -------- returning -------------+ |
---|
| 42 | | | \ l | | |
---|
| 43 | +--------+ g \ _ _ _ m | k | |
---|
| 44 | | \ | | |
---|
| 45 | courses registered ------ courses validated | |
---|
| 46 | | i | | |
---|
| 47 | | | n | |
---|
| 48 | | j | | |
---|
| 49 | | graduated | |
---|
| 50 | | | | |
---|
| 51 | | | o | |
---|
| 52 | | | | |
---|
| 53 | | transcript requested | |
---|
| 54 | a: admit | | |
---|
| 55 | -a: reset1 +---------------------------------+ |
---|
| 56 | b: start_clearance |
---|
| 57 | -b: reset2 |
---|
| 58 | c: request_clearance |
---|
| 59 | -c: reset3 (= reject request) |
---|
| 60 | d: clear |
---|
| 61 | -d: N/A |
---|
| 62 | e: N/A |
---|
| 63 | -e: reset4 (= annul clearance) |
---|
| 64 | f: pay_first_school_fee, approve_first_school_fee |
---|
| 65 | -f: reset5 (= annul payment) |
---|
| 66 | g: register_courses |
---|
| 67 | -g: reset7 (= reject request) |
---|
| 68 | h: pay_pg_fee, approve_pg_fee |
---|
| 69 | -h: N/A |
---|
| 70 | i: validate_courses |
---|
| 71 | -i: N/A |
---|
| 72 | j: bypass_validation |
---|
| 73 | -j: N/A |
---|
| 74 | k: return |
---|
| 75 | -k: reset9 |
---|
| 76 | l: pay_school_fee, approve_school_fee |
---|
| 77 | -l: reset6 (= annul payment) |
---|
| 78 | m: N/A |
---|
| 79 | -m: reset8 (= annul validation) |
---|
| 80 | n: N/A |
---|
| 81 | -n: N/A |
---|
| 82 | o: request_transcript |
---|
| 83 | -o: process_transcript |
---|
| 84 | |
---|
| 85 | |
---|
| 86 | Student registration starts with the first login of the student into |
---|
| 87 | state ``admitted``. After filling the email adress and phone number |
---|
| 88 | field, and also uploading a passport picture, the student |
---|
| 89 | immediately proceeds with the clearance sub-workflow. S/he starts |
---|
[13041] | 90 | clearance **(b)** either directly or by using a clearance access |
---|
[13025] | 91 | code, depending on the configuration of the portal. After filling |
---|
| 92 | the clearance form and uploading all necessary documents, the |
---|
[13072] | 93 | student requests clearance **(c)** which can be either accepted **(d)** |
---|
| 94 | or rejected **(-c)** by a clearance officer. A cleared student |
---|
[13025] | 95 | can enter the 'cyclical' part of the workflow which starts after |
---|
| 96 | first school fee payment **(f)**. |
---|
| 97 | |
---|
| 98 | A properly registering undergraduate student creates a new study |
---|
| 99 | level (course list) at the beginning of each academic session, adds |
---|
| 100 | the necessary course tickets and finally registers the list **(g)**. |
---|
| 101 | The student's course adviser subsequently validates the list **(i)**, |
---|
[13026] | 102 | or rejects the course registration request **(-g)** so that the |
---|
[13025] | 103 | student has to register again. Even after validation there is an |
---|
| 104 | option to annul the already validated course list **(-m)** so that |
---|
| 105 | the student can revise the list. At the end of the session, when all |
---|
| 106 | exams have been taken, course results (scores) are either entered by |
---|
| 107 | lecturers or imported by an import officer, a verdict is announced |
---|
| 108 | and the student is finally enabled to return **(k)**. In Kofa the |
---|
| 109 | last two steps are automatically performed by the Verdict Batch |
---|
| 110 | Processor. In some cases, course validators are not available or |
---|
| 111 | course validation is not necessary. Then validation can be skipped |
---|
| 112 | **(j)** by setting `bypass_validation` in the processor's import |
---|
| 113 | file to ``True``. In both cases the student arrives in state |
---|
| 114 | ``returning`` but is still in the same session. Also the current |
---|
| 115 | level has not changed. The new session starts only if the student |
---|
| 116 | pays school fee for the subsequent session **(l)**. Then |
---|
| 117 | `current_session` increases by one, `current_level` is set according |
---|
| 118 | to the verdict obtained, the old verdict is copied into |
---|
| 119 | `previous_verdict` and `current_verdict` is cleared. The student has |
---|
| 120 | arrived in the new academic session in state ``school_fee_paid``. |
---|
| 121 | The **gikl** cycle is repeatedly passed through till the student is |
---|
| 122 | ready for graduation. |
---|
| 123 | |
---|
| 124 | So far we have spoken about undergraduate students. The same |
---|
| 125 | sequence of transitions also applies to postgraduate students if |
---|
| 126 | they have to pass several levels (e.g. 700 and 800). Very often the |
---|
| 127 | level model does not apply to postgraduates. The students remain in |
---|
| 128 | the same (999) level but pay for each year of studying. In this case |
---|
| 129 | the **gikl** cycle collapses to the **h** cycle. Students may add |
---|
| 130 | course tickets whenever they like, but cannot register their course |
---|
| 131 | list. |
---|
| 132 | |
---|
| 133 | |
---|
[13083] | 134 | .. _registration_workflow_batch_processing: |
---|
[13025] | 135 | |
---|
| 136 | Workflow Batch Processing |
---|
| 137 | ========================= |
---|
| 138 | |
---|
| 139 | The :py:class:`StudentProcessor |
---|
| 140 | <waeup.kofa.students.batching.StudentProcessor>` allows to import |
---|
| 141 | either workflow states or transitions. As already emphasized in the |
---|
| 142 | description of the processor class, we refer to them as unsafe and |
---|
| 143 | safe respectively. Transitions are only possible between allowed |
---|
| 144 | workflow states. Only transitions ensure that the registration |
---|
| 145 | workflow is maintained. Setting the workflow state by import is |
---|
| 146 | considered brute and must be avoided. |
---|
| 147 | |
---|
| 148 | |
---|
| 149 | .. _student_history: |
---|
| 150 | |
---|
| 151 | Student History |
---|
| 152 | =============== |
---|
| 153 | |
---|
| 154 | All transitions are automatically logged in ``students.log``. And |
---|
| 155 | also the import of workflow states is recorded in the logfile. |
---|
| 156 | However, these logfiles can only be accessed by some officers and |
---|
| 157 | are hidden from students. Since Kofa takes up the cause of |
---|
| 158 | transparancy, we were of the opinion, that also students must know, |
---|
| 159 | when and by whom the state of their record was changed. Therefore we |
---|
| 160 | store all workflow-relevant changes additionally in the student |
---|
| 161 | history which is attached to the student object. The history is a |
---|
| 162 | list of messages. Each message contains the local time, the workflow |
---|
| 163 | transition message and the public name of the user who triggered the |
---|
| 164 | transition, either online or by import:: |
---|
| 165 | |
---|
| 166 | 2015-05-16 05:11:34 UTC - Record created by System Admin |
---|
| 167 | 2015-05-30 07:34:09 UTC - Admitted by System Admin |
---|
| 168 | 2015-05-30 08:34:11 UTC - Clearance started by John Doe |
---|
| 169 | 2015-05-30 09:34:15 UTC - Clearance requested by John Doe |
---|
| 170 | 2015-05-30 10:37:27 UTC - Cleared by Clearance Officer |
---|
| 171 | |
---|
| 172 | If the workflow state is set by import, the following message would |
---|
| 173 | have been added instead:: |
---|
| 174 | |
---|
| 175 | 2015-05-30 10:37:27 UTC - State 'cleared' set by Import Officer |
---|
| 176 | |
---|
| 177 | Student histories are exportable but cannot be imported. |
---|