Exam tukee kolmentyyppisiä kysymyksiä:

  1. Esseekysymys: vastaus tekstimuodossa
  2. Monivalintakysymys: ennaltamäärätyt vastausvaihtoehdot, joista yksi oikein. Vain yhden vaihtoehdon voi valita.
  3. 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 select max(id)+1 from question

bigint
object_versionkysymyksen versionumero. Käytä arvoa 1.bigint
createdluontiaikatimestamptz
creator_idkysymyksen luoneen käyttäjän idbigint
modifiedmuokkausaikatimestamptz
modifier_idkysymystä muokanneen käyttäjän idbigint
type

monivalinta = 1

essee = 2

painotettu monivalinta = 3

integer
questionkysymystekstitext
sharedjaettu kysymys true (kyllä) / false (ei). Oletus on false.boolean
default_answer_instructionsoletus vastausohjetekstilletext
statekysymyksen tila (SAVED=normaali, DELETED=poistettu eli piilotettu)varchar
default_max_scorekysymyksen oletusmaksimipisteet, oletus 0. Painotetun monivalinnan osalta tämä tieto on epärelevantti ja voidaan ohittaa.numeric
default_evaluation_criteriaoletusarviointiperusteettext
attachment_idliitetiedoston id, foreign key attachment-tauluunbigint
default_expected_word_countoletus vastauksen pituussuositukselle. Relevantti ainoastaan esseekysymyksen tapauksessainteger
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 select max(id)+1 from multiple_choice_option

bigint
object_versionValinnan versionumero. Käytä lukua 1.bigint
optionVaihtoehdon tekstitext
correct_optionOnko oikea vaihtoehto (tarvitaan jos kysymystyyppi on monivalinta)boolean
question_idKysymyksen id (ks. yllä), jonka vaihtoehto tämä onbigint
default_scoreVastausvaihtoehdon oletuspistemäärä. Vaaditaan jos kysymystyyppi on painotettu monivalintadouble 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

  1. Unknown User (arytkone@helsinki.fi)

    Miten siis siirtyvät ja kytkeytyvät oikeisiin kysymyksiin kysymysten liitetiedostot?

     

  2. Unknown User (uolia@csc.fi)

    Laitetaan selvitykseen mutta ei saada työjonoon ihan heti.

  3. 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ä.

  4. 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?

    1. 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.

      1. 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.