Uživatel:Josmart/Rogo backup

Z WikiSkript

Zde je záloha poznámek k Rogo, která se ještě může hodit

Automatizovaná synchronizace předmětů a studentů[upravit | editovat zdroj]

Na fakultě již existuje aplikace, která využívá pravidelný výpis změn (v XML) k tomu, aby synchronizovala účty studentů, předměty s elearningovým serverem. Tyto exporty jsou archivovány a mohou být využity aplikací, která podobnou synchronizaci bude provádět s Rogem.

  • aplikace je naprogramovaná v C#
  • poběží na serveru, kde je provozován http://el.lf1.cuni.cz
  • předpokladem pro spuštění aplikace je prvotní naplnění databáze Roga aktuálními daty ze SIS
  • veškeré změny, které aplikace provede, jsou logovány
  • v případě chyby navíc zašle email


Prvotní naplnění databáze CSV importem[upravit | editovat zdroj]

  • CSV musí být v UTF-8 (bez BOM)
  • delimiter je ","
  • čárky musí být nahrazeny
    ,
    
  • je-li identický soubor naimportován podruhé, nic se nestane


Import předmětů[upravit | editovat zdroj]

CSV soubor rozdělíme raději na dvě části a importujeme každý zvlášť. Struktura souboru je následující:

  • Module ID - id předmětu
  • Name - název předmětu + jeho kód v závorce
  • School = "1. LF UK"
  • SMS = ""
  • VLE = ""
  • Peer Review = "yes"
  • External = "yes"
  • Std Set = "no"
  • Mapping = "no"
  • Active = "yes"
  • Self Enrol = "no"
  • Neg Marking = "yes"

Pozn.: je-li v souboru změna v názvu předmětu, při druhém nahrání se nic nestane, jméno přejmenovaného předmětu se nezmění !!!

Import studentů a enrolment[upravit | editovat zdroj]

  • budeme importovat CSV soubor obsahující informace o uživatelích i o přiřazených přemětech.
  • ruční export ze SIS, který obsahuje kompletní informace o studentech a přiřazených předmětech, převedeme do UTF-8
  • upravíme jej dle zadání, odstraníme duplicity
  • soubor rozdělíme na části po 1000 řádcích + hlavička
  • soubory naimportujeme do Roga a zkontrolujeme, zda se naimportovaly všechny záznamy


users_enrolments.csv[upravit | editovat zdroj]

  • Type = "Student"
  • ID = ID studenta
  • First Names
  • Family Name
  • Title = ""
  • Course = "LF1-studenti"
  • Year of Study = 0
  • Email
  • Modules = kód předmětu
  • Session = aktuální semestr ve tvaru "2012/13"
  • Username

Původní (nepoužitá) metoda synchronizace[upravit | editovat zdroj]

Import předmětů[upravit | editovat zdroj]

Vytvořil jsem script admin/modules_from_SMS.php, který je možné spouštět CRONem. Script volá službu (zatím neexistuje), která vrací XML v tomto formátu

<?xml version="1.0" encoding="utf-8"?>
<Modules xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Module>
    <ModuleCode>BB55555</ModuleCode>
    <ModuleTitle>Test module 1</ModuleTitle>
    <School>1. LF UK</School>
    <Active>1</Active>
  </Module>
  <Module>
    <ModuleCode>BB55556</ModuleCode>
    <ModuleTitle>Test module 2</ModuleTitle>
    <School>1. LF UK</School>
    <Active>1</Active>
  </Module>
  <Module>
    <ModuleCode>BB55557</ModuleCode>
    <ModuleTitle>Test module 3</ModuleTitle>
    <School>1. LF UK</School>
    <Active></Active>
  </Module>
  <Module>
    <ModuleCode>BB55558</ModuleCode>
    <ModuleTitle>Test module 4</ModuleTitle>
    <School>1. LF UK</School>
  </Module>
</Modules>
  • School bude vždy "1. LF UK"
  • Active bude zřejmě vždy = "1". Pokud element Active chybí, je to jako by byl = "1"
  • ModuleCode = kód předmětu v SIS (sloupec POVINN)
  • ModuleTitle - bude použita česká verze názvu. Během importu k názvu ještě připojíme kód předmětu v závorce. Pokud ovšem půjde o předmět pro anglickou paralelku (kód začíná na B8), použije se název anglický.
  • do DB pole sms vložíme URL, která vrací XML s informacemi o studentech zapsaných do předmětu, viz https://suivarro.nottingham.ac.uk/trac/rogo/wiki/SystemIntegration

Import studentů, zápis do předmětů[upravit | editovat zdroj]

Toto řeší script admin/users_from_SMS.php. Není k tomu jakákoliv dokumentace, musím metodou pokus a omyl zjistit, jak to vlastně funguje. Tady jsou výsledky výzkumů:

  • script se spouští prostřednictvím CRON
  • v tabulce modules musí být ve sloupci sms zadána url stránky, která vrací XML exportu ze SIS ve formátu podle https://suivarro.nottingham.ac.uk/trac/rogo/wiki/SystemIntegration.
  • XML obsahuje definici modulu (předmětu), kam mají být studenti zapsáni a data studentů.
  • Pokud je student v Rogo nalezen, je přiřazen do modulu. Pokud není v Rogo, je nejprve vytvořen nový účet.
  • Pokud má modul v Rogo přiřazeného uživatele (může jít i o uživatele s ukončeným studiem), který se v exportu nenachází, je zrušeno přiřazení studenta k předmětu.
  • XML - upřesnění některých položek
    • <Campus> - script s tímto elementem nepracuje, vynechávám
    • <Year> - script s tímto elementem nepracuje, vynechávám
    • <ModuleTitle> - script s tímto elementem nepracuje, vynechávám
    • <StudentID> - ID studenta v SIS
    • <Title> - tituly neřešíme, element vynechávám
    • <Username> - username v CAS
    • <Faculty> - script s tímto elementem nepracuje, vynechávám
    • <CourseCode> - studijní obor. Tuto informaci export nenabízí, Rogo ji nepotřebuje. Nastavíme default Course = "LF1-studenti".
    • <CourseTitle> - Course "LF1-studenti" jsem definoval v administraci Rogo včetně názvu. Není nutné jej zde zadávat znovu, element vynechávám.
    • <Gender> - pohlaví neřešíme, element vynechávám
    • <ReasonForLeaving> - přípustné hodnoty:
      • Successfully completed course = graduate
      • Not Applicable = Student (v návodu používají N/A, s tím to ale nefunguje, musí být Not Applicable)
      • W/D (other) = left
      • W/D (financial reasons) = left


Chování scriptu při opětovném spuštění[upravit | editovat zdroj]

  • script aktualizuje pouze detail uživatele a jeho přiřazení k předmětu
  • nedošlo-li v XML ke změnám, nic se neděje
  • došlo-li ke změně v některé z následujících informací o uživateli, budou tyto aktualizovány
    • <StudentID>
    • <Forename>
    • <Surname>
    • <YearofStudy>
    • <CourseCode> - tento údaj se zapisuje to pole grade v tabulce users.
    • <ReasonForLeaving> - podle tohoto údaje se určuje pole roles v tabulce users. Pokud student ukončí studium, zůstane přiřazen k předmětům, jen se změní jeho role.
  • dojde-li ke změně <Username>, vytvoří se nový uživatel s identickými údaji (včetně stejného StudentID) !!!
  • dojde-li v XML ke změně emailu, smůla. Email se neaktualizuje.


XML export[upravit | editovat zdroj]

  • XML export ze SIS by měl vypadat podle https://suivarro.nottingham.ac.uk/trac/rogo/wiki/SystemIntegration.
  • měl by to být script, který se volá s parametrem ?action=enrolments&code=kod_premetu&year=aktualni_rok
  • script bude vracet XML
  • pokud by se během generování XML modulu vyskytl nějaký problém, je možné přidat do kódu následující elementy. Modul pak bude vynechán ze zpracování.
    • <ErrorMessage>
    • <ModuleError>
  • pokud student obsažený v definici modulu ukončí studium, měl by zde minimálně jednou (lépe však několik dalších volání) vidět s uvedeným <ReasonForLeaving>. Tím zajistíme změnu role studenta a jeho odebrání z předmětu.