Projekti

Yleinen

Profile

Kehittäjän ohjeet

Tehty Mojolicious frameworkilla, suosittelen perehtymään Mojoliciousin tapaan rakentaa palvelu: https://mojolicious.io/blog/2017/12/01/day-1-getting-started/index.html
Lisäksi käyttöliittymässä on käytetty Vuejs-framworkia (https://vuejs.org/) ja Axios-kirjastoa Ajax-kutsuille.

Palvelun käynnistys

Kehitys:

morbo script/koha_suomi_services

Käynnistää yleensä palvelun porttiin 3000

Tuotanto:

sudo script/koha_suomi_services_daemon.sh start
sudo script/koha_suomi_services_daemon.sh stop
sudo script/koha_suomi_services_daemon.sh restart

Käynnistää palvelun porttiin mikä on määritelty konffitiedostossa tai oletuksena on 8081

Tietokannan päivitys

Tietokantapäivitys menee DBIx-moduulin avulla, sitä varten on konffitiedostossa versionumero. Jos muokkaat tietokantaan jotain, niin tee se koodissa olevaan DBIx-schemaan (~/KohaSuomiServices/lib/KohaSuomiServices/Database/Biblio/Schema/Result/*) ja vaihda versionumeroa isompaan konffitiedostossa. Ohjelma osaa itse tehdä muutoksen, kun palvelu käynnistetään uudestaan.

Background-skriptit

Konffitiedostoon on mahdollista laittaa background-sckirptejä, jotka tekevät asioita taustalla. Näitä käytetään tällä hetkellä lähinnä tietueiden siirtämiseen eteenpäin rajapintoihin. Skriptit ovat Mojoliciousiin lisättyjä omia command-skriptejä, niitä on mahdollista tehdä lisää ja niitä voidaan suoraan ajaa komentoriviltä.

Komentorivissä skriptien ajaminen käsin:

perl script/koha_suomi_services -h
perl script/koha_suomi_services PushExports -h (Tämä on manuaalista lähetystä varten, jos halutaan kokeilla käsin mitä tapahtuu.)

Skriptit konffitiedostossa:

"ExportDaemon -w 5 -t add", (Tämä lähettää uudet tietueet rajapintoihin.)
"ExportDaemon -w 5 -t add -c 1", (c-vivulla lähetetään osakohteet. Tämä on erikseen, koska osakohteet vaativat palautuvalta emolta Melinda ID:n.)
"ExportDaemon -w 5 -t update", (Tämä lähettää päivittyvät tietueet rajapintoihin.)
"ExportDaemon -w 5 -t update -c 1", (Sama kuin aikaisemmin.)
"UpdateActiveRecords -w 5", (Tällä voidaan päivittää aktivoituneet tietueet.)

Kyseiset skriptit käynnistetään script/background.pl tiedoston avulla ohjelman käynnistyksen yhteydessä.

Loki

Palvelu kirjoittaa lokia konffitiedostossa määriteltyyn polkuun ja tiedostossa on mahdollista määritellä lokituksen taso. Jos halutaan debugata lokiin on se tehtävä tuotantojärjestelmässä log-funktiolla.

Esim. Model/Biblio.pm

$self->log->debug("Key: ".$key." value: ".$value);

Aktiivisten tietueiden siirtäminen palvelulle

Alkuvalmistelut siirtoja varten on lisätä koha-dev/etc-hakemistoon https://github.com/KohaSuomi/Koha/blob/tati/etc/broadcast-config.conf
Kannattaa lisätä vain rajapintaendpoint mikä tarvitaan. Pääsääntöisesti Tätissä broadcastEndpoint ja exportEndpoint, paikalliskannoissa activeEndpoint.

Kohassa on broadcastBiblios.pl-skripti, jolla siirretään aktiiviset tietueet palveluun. Tätä käytetään tietueiden valutuksen aloittamisessa. Skripti vaatii interface-arvon, jolla tässä tapauksessa määritellään siirtävä järjestelmä. Vastaava rajapinta tulee olla myös määriteltynä Biblio exporterin konfiguraatioissa.

perl misc/cronjobs/broadcastBiblios.pl --all -a -i OUTI

Tietueet haetaan ja siirretään kannasta chunkeina. Oletuksena chunkien koko on 200 tietuetta, mutta tätä arvoa voi muuttaa.

perl misc/cronjobs/broadcastBiblios.pl --all -a -c 300 -i OUTI

Jos siirtäminen jostain syystä jää jumiin, niin on mahdollista aloittaa tietystä biblionumberista. Lisäksi on mahdollista rajoittaa limitillä tiettyyn määrään. Käytä b-vipua vain a-vivun kanssa.

perl misc/cronjobs/broadcastBiblios.pl --all -a -b 1232 -l 1000 -i OUTI

Kun ensimmäinen aktivointi on tehty --all parametrillä, niin voidaan kytkeä croniin uusien tietueiden aktivointi. Tämä ottaa huomioon vain tietueet, jotka ovat tulleet päivän aikana.

perl misc/cronjobs/broadcastBiblios.pl -a -i OUTI

Valutukseen aktivointi ilman koko kannan läpikäymistä.

Jos pitää saada jotain tietueita aktivointiin, niin voi tietokannassa päivittää biblio_metadata timestamp-arvoa tähän hetkeen. Jos ei haluta, että tietueeseen haetaan suoraan vastine Tätistä, niin tulee mikropalvelusta poistaa UpdateActiveRecords-skripti aktivoinnin ajaksi. Kun tietueet ovat saapuneet activerecords-tauluun kannattaa laittaa niille updated aikaleima, koska muuten ne päivittyvät kun UpdateActiveRecords kytketään taas päälle.

Valutuksen kytkeminen Tätissä paikalliskantoihin

Tähänkin käytetään skriptiä broadcastBiblios.pl. Nyt jätetään pois active- ja interface-vipu. Kannattaa lisätä croni ajamaan viiden minuutin välein, sillä skripti etsii näitä viiden minuutin takaa.

perl misc/cronjobs/broadcastBiblios.pl

Tietueiden siirtäminen Tätistä ulkoiseen rajapintaan.

Valintalistoilta tulevat tietueet tallennetaan stage-tauluihin. broadcastBiblios.pl skriptillä voidaan siirtää nuo eteenpäin ulkoiseen järjestelmään, kuten Melindaan. Skripti siirtää ne biblio exporterille, josta ne valuvat ulkoiseen järjestelmään. Oletuksena siirto tehdään kyseisen päivän tietueista.

perl misc/cronjobs/broadcastBiblios.pl -i Melinda -s

On mahdollista lisätä batchdate-parametri, jolla vaihdetaan päivämäärää.

perl misc/cronjobs/broadcastBiblios.pl -i Melinda -s --batchdate '2019-08-20'

Valintalistojen päivityspaketitkin ajetaan stage-tauluihin ja niiden siirtämisen saa päälle kun käytetään type-parametria.

perl misc/cronjobs/broadcastBiblios.pl -i Melinda -s -t update