Exam tukee kolmentyyppisiä kysymyksiä:
- Esseekysymys: vastaus tekstimuodossa
- Monivalintakysymys: ennaltamäärätyt vastausvaihtoehdot, joista yksi oikein. Vain yhden vaihtoehdon voi valita.
- Painotettu monivalintakysymys: ennaltamäärätyt vastausvaihtoehdot, jotka on erillisesti pisteytetty. Pisteytys voi olla myös negatiivinen. Vaihtoehtoja voi valita useita. Vastauksen pistemäärä on valittujen vaihtoehtojen pisteiden summa, kuitenkin minimissään 0.
Varsinainen kysymys tallennetaan relaatioon question ja monivalinta- sekä painotettujen monivalintakysymysten vastausvaihtoehdot relaatioon multiple_choice_option.
1. Siirtotiedostojen luonti
Luodaan aiemman järjestelmän kysymyksien pohjalta csv muotoiset siirtotiedostot.
Kysymystiedot
Tiedosto tulee olla enkoodattu UTF-8-merkistöön. Lisäksi on syytä huomioida, että mikäli tuoduille kysymyksille halutaan minkäänlaista formatointia, tulee kysymyksen varsinainen teksti (question-kenttä) olla HTML-muodossa. Mitään täydellistä HTML-dokumenttia ei toki edellytetä, vaan kysymykset tulee olla html-fragmentteina: esimerkiksi pelkkä <p>kappale 1</p><p>kappale 2</p> on täysin validi syöte, jolla saadaan aikaiseksi kappalejako, <li><ul>a)</ul><ul>b)</ul> esittää listaa jne. Jos HTML-muotoa käytetään, on suositeltavaa muttei välttämätöntä, että kysymyksen tekstisisältö on myös URL-enkoodattu.
Kysymyksissä voi olla seuraavia kenttiä – pakolliset lihavoitu, muiden arvot voivat olla tyhjiä.
kenttä | arvo | postgresql-tyyppi |
---|---|---|
id | juokseva järjestysluku ensimmäisestä vapaasta numerosta luvun saa tietokannasta komennolla | bigint |
object_version | kysymyksen versionumero. Käytä arvoa 1. | bigint |
created | luontiaika | timestamptz |
creator_id | kysymyksen luoneen käyttäjän id | bigint |
modified | muokkausaika | timestamptz |
modifier_id | kysymystä muokanneen käyttäjän id | bigint |
type | monivalinta = 1 essee = 2 painotettu monivalinta = 3 | integer |
question | kysymysteksti | text |
shared | jaettu kysymys true (kyllä) / false (ei). Oletus on false. | boolean |
default_answer_instructions | oletus vastausohjetekstille | text |
state | kysymyksen tila (SAVED=normaali, DELETED=poistettu eli piilotettu) | varchar |
default_max_score | kysymyksen oletusmaksimipisteet, oletus 0. Painotetun monivalinnan osalta tämä tieto on epärelevantti ja voidaan ohittaa. | numeric |
default_evaluation_criteria | oletusarviointiperusteet | text |
attachment_id | liitetiedoston id, foreign key attachment-tauluun | bigint |
default_expected_word_count | oletus vastauksen pituussuositukselle. Relevantti ainoastaan esseekysymyksen tapauksessa | integer |
default_evaluation_type | vastauksen arviontityypin oletus. Vaaditaan esseekysymyksille. pisteet = 1 hyväksytty/hylätty = 2 | integer |
Monivalintakysymyskohtaiset tiedot
Monivalintatehtävien ja painotettujen monivalintatehtävien vastausvaihtoehtojen tiedot. Tiedosto tulee olla enkoodattu UTF-8-merkistöön.
Kysymyksissä täytyy olla seuraavat kentät:
kenttä | arvo | postgresql-tyyppi |
---|---|---|
id | juokseva järjestysluku ensimmäisestä vapaasta numerosta luvun saa tietokannasta komennolla | bigint |
object_version | Valinnan versionumero. Käytä lukua 1. | bigint |
option | Vaihtoehdon teksti | text |
correct_option | Onko oikea vaihtoehto (tarvitaan jos kysymystyyppi on monivalinta) | boolean |
question_id | Kysymyksen id (ks. yllä), jonka vaihtoehto tämä on | bigint |
default_score | Vastausvaihtoehdon oletuspistemäärä. Vaaditaan jos kysymystyyppi on painotettu monivalinta | double precision |
2. Siirtotiedostojen ajo Exam-järjestelmään
Kun kuvauksen mukaiset siirtotiedostot on luotu, kopioi ne Exam-palvelimelle. Tämän jälkeen avaa Postgres tietokannan konsoli komennolla psql -Usitnet sitnet.
Kun konsoli on avattu kysymysten tuonti tapahtuu seuraavalla komennolla:
sitnet=> \COPY question (id, object_version, ... <tähän kaikki kentät mitä CSV toteuttaa>) FROM '/home/myuser/question.csv' DELIMITER ',' CSV HEADER;
On huomioitavaa, että komennossa tulee olla listattuna suluissa samat kolumnit, jotka on määritelty csv-tiedostossa. DELIMITER-optio määrittelee erottimen, joka voi olla muukin merkki kuin pilkku.
Jos csv-tiedoston ensimmäinen rivi on otsikkorivi, täytyy komennon lopussa olla optio 'HEADER'.
Tämän jälkeen voidaan kopioida monivalintatehtävien vaihtoehdot
sitnet=> \COPY multiple_choice_option (id, object_version, option, correct_option, question_id, default_score) FROM '/home/myuser/multiple_choice_option.csv' DELIMITER ',' CSV HEADER;
Lisätietoa COPY-komennosta: http://www.postgresql.org/docs/9.4/static/sql-copy.html
Lopuksi korjaa sekvenssit:
sitnet=> select setval('question_seq', (select max(id) from question)); sitnet=> select setval('multiple_choice_option_seq', (select max(id) from multiple_choice_option_seq));
6 Comments
Unknown User (arytkone@helsinki.fi)
Miten siis siirtyvät ja kytkeytyvät oikeisiin kysymyksiin kysymysten liitetiedostot?
Unknown User (uolia@csc.fi)
Laitetaan selvitykseen mutta ei saada työjonoon ihan heti.
Unknown User (uolia@csc.fi)
Liitetiedosto kytkeytyy aina kysymykseen ja kulkee sen mukana. Kysymysten hallintaa on nyt tulossa isoja muutoksia eli tämä ohjesivu päivitetään version 3.2 yhteydessä.
Unknown User (kato@uwasa.fi)
Opettajamme toivoo apuja esseekysymysten siirtoon EXAMiin. Meillä on CSC:n asennus. Riittääkö, että pyydän opettajamme toimittamaan minulle esseekysymykset esim. excelissä ja tiedotan ne ja opettajan id:n toimittajalle ja toimittaja voi ladata ne meidän tuotantoEXAMiin?
Unknown User (arytkone@helsinki.fi)
sivistynyt arvaus on, että tästä olisi sovittu teidän sopimuksessa. Joko työ sisältyy siihen tai teetätte sen tuntityönä. Jos on muutama essee, kannattaa copy-pastata käsin. Jos on satoja, kannattaa ehkä jo maksaa. Unknown User (korkiako@csc.fi) ehkä osaa vastata.
Unknown User (kato@uwasa.fi)
Kiitos Anni! Kikka laittoikin minulle sähköpostia asiasta eilen ja arvioi työn kestoksi max pari tuntia. Tenttikysymyksiä on sen verran, ettei kannata ryhtyä copy-peistaamaan.