-
Notifications
You must be signed in to change notification settings - Fork 15
Särmä arkisto integraatio
eVaka-järjestelmä voidaan asettaa arkistoimaan lapsen asiakirjoja Espoon Särmä-arkistoon. Ulkoiseen arkistoon siirrettäviä lapsen asiakirjoja ovat lomakepohjista täytetyt pedagogiset asiakirjat: Vasu (Varhaiskasvatussuunnitelma), Leops (Lapsen esiopetuksen oppimissuunnitelma), ja Hojks (Henkilökohtaisen opetuksen järjestämistä koskeva suunnitelma) sekä pedagoginen arvio ja selvitys. Arkistoon vienti tapahtuu asynkronisesti taustapalvelun kautta. Arkistoitavat asiakirjat ovat PDF-muodossa ja niiden mukana lähetetään metadata XML-muodossa.
Asiakirjan ulkoiseen arkistointiin voi vaikuttaa dokumenttipohjan luonnin ja muokkauksen yhteydessä. Dokumenttipohjaan voidaan asettaa seuraavat arkistointiin vaikuttavat kentät:
- Siirrettävä ulkoiseen arkistoon ennen poistoa (archiveExternally)
- Asiakirjan tyyppi. Tästä johdetaan Särmään tallannettava asiakirjan tyyppi ja säilytyssääntö
- Prosessitunnus (processDefinitionNumber)
- Arkistointiaika kuukausissa (archiveDurationMonths)
- Salassapitosäännöt
Kun lomakepohja on luotu "Siirrettävä ulkoiseen arkistoon ennen poistoa" -asetuksella, sillä luodut asiakirjat arkistoidaan Särmä-arkistoon ennen niiden poistamista järjestelmästä. Asiakirjojen poistamistoimintoa ei ole vielä toteutettu.
Työntekijäkäyttöliittymässä arkistointitoiminto näkyy asiakirjan lukutilassa "Arkistoi"-painikkeena, kun:
- Front-endin feature flag
archiveIntegrationEnabledon asetettu käyttöön - Käyttäjällä on oikeus arkistoida kyseinen asiakirja (
ARCHIVE-oikeus) - Asiakirjaa ei ole jo arkistoitu
- Asiakirja on merkattu ulkoisesti arkistoitavaksi "Siirrettävä ulkoiseen arkistoon ennen poistoa"
Arkistointipainikkeen kautta asiakirja merkitään arkistoitavaksi, minkä jälkeen arkistointi tapahtuu asynkronisesti taustaprosessina. Kun asiakirja on onnistuneesti arkistoitu, "Arkistoi"-painikkeen yhteydessä näytetään arkistoonvientiaika. Jos arkistointi epäonnistuu, virheen yksityiskohdat löytyvät eVaka servicen logeilta.
Särmä-arkiston XML-skeemat (XSD) sijaitsevat sarmamodel-moduulissa. Näistä skeemoista generoidaan Java-luokat käyttämällä JAXB (Java Architecture for XML Binding) teknologiaa. Luokkien generointi on määritelty moduulin build.gradle.kts-tiedostossa.
Generointiprosessi toimii seuraavasti:
- Projektin käännöksen yhteydessä suoritetaan
generateJaxb-tehtävä, joka on määritelty riippuvaiseksi Java-luokkien käännöksestä. - Tehtävä käyttää
xjc-työkalua (XML-to-Java Compiler), joka tuottaa Java-luokat XSD-skeematiedostoista. - Generoitavat luokat sijoitetaan hakemistoon
build/generated/sources/java/mainja ne kuuluvat paketiinfi.espoo.evaka.sarma.model. - Generoidut luokat sisältävät tarvittavat JAXB-annotaatiot XML-tiedostojen serialisointia varten.
Tämä JAXB-generointi mahdollistaa sen, että Evaka-järjestelmässä voidaan käsitellä Särmän vaatimia XML-rakenteita ohjelmallisesti käyttämällä Java-luokkia. Tämä varmistaa, että luodut XML-dokumentit noudattavat Särmän vaatimaa skeemaa.
Särmä-järjestelmään lähetettävä metadata noudattaa Särmä-arkiston määrittämää XML-skeemaa. Metadatan muodostus tapahtuu osana arkistointiprosessia.
Metatietojen päärakenne on seuraava:
- RecordMetadataInstance
- StandardMetadata
- MetadataMasterVersion
- VirtualArchiveId
- RecordIdentifiers
- DocumentDescription (sisältää asiakirjan ja lapsen perustiedot)
- Format (tiedostomuoto, PDF)
- Creation (asiakirjan luontitiedot)
- Policies (säilytys-, salassapito-, turvallisuus- ja suojelusäännöt)
- CaseFile (prosessitiedot)
- StandardMetadata
Metatiedot sisältävät mm. seuraavat tiedot:
- Asiakirjan yksilöivät tunnisteet: uniikki tehtävänumero ja eVakan sisäinen asiakirjan UUID
- Tehtäväluokitustunnus: poimitaan lomakepohjan tiedoista
- Asiakirjan tyyppi ja kieli
- Lapsen nimi, henkilötunnus ja syntymäaika
- Asiakirjan salassapitosäännöt ja -aika: poimitaan lomakepohjalle kirjatuista tiedoista
- Asiakirjan luonti- ja valmistumisaika: poimitaan asiakirjan created aikaleimasta sekä prosessihistorian valmistumismerkinnästä. Mikäli valmistumismerkintää ei löydy, poimitaan joko lomakepohjan viimeinen voimassaolopäivä tai ensimmäinen 31.7. päivämäärä joka on created aikaleman jälkeen.
- Prosessitunnus: Poimitaan lomakepohjan tiedoista
- Asiakirjan käsittelijät: Poimitaan tilahistoriasta
- Säilytyssääntö: määräytyy asiakirjan tyypin mukaan
- Turvallisuussääntö ja suojeluluokka: kiinteät arvot
Metadatan XML-muuntamiseen käytetään JAXB työkaluja: marshalMetadata-funktio käyttää JAXBContextia muuttamaan Java-objektit XML-muotoon. Tässä hyödynnetään sarmamodel-moduulissa generoituja luokkia, kuten RecordMetadataInstance, StandardMetadataType, PolicyConfiguration, jne.
Arkistoon vietävän asiakirjan tyyppi ja säilytyssääntö määräytyy lomakepohjan tyypin perusteella ChildDocumentType.
-
Asiakirjan tyyppi (asiakirjatyyppi
documentType/ asiakirjatyypin tarkennedocumentTypeSpecifier):- VASU, MIGRATED_VASU: "Suunnitelma" / "Varhaiskasvatussuunnitelma"
- LEOPS, MIGRATED_LEOPS: "Suunnitelma" / "Lapsen esiopetuksen oppimissuunnitelma LEOPS"
- HOJKS: "Suunnitelma" / "Henkilökohtaisen opetuksen järjestämistä koskeva suunnitelma HOJKS"
- PEDAGOGICAL_ASSESSMENT: "Arvio" / "Pedagoginen arvio"
- PEDAGOGICAL_REPORT: "Selvitys" / "Pedagoginen selvitys"
-
Säilytyssääntö
RetentionPolicy:- PEDAGOGICAL_ASSESSMENT, PEDAGOGICAL_REPORT: säilytysaika 28 vuotta lapsen syntymästä,
trigger"YearsFromCustomerBirthDate", säilytysajan perusteannotation"Perusopetuslaki (628/1998) 16 a §" - Muut asiakirjatyypit: säilytysaika "InPerpetuity", säilytysajan peruste
annotation"KA/13089/07.01.01.03.01/2018"
- PEDAGOGICAL_ASSESSMENT, PEDAGOGICAL_REPORT: säilytysaika 28 vuotta lapsen syntymästä,
Kun valmis asiakirja merkitään ulkoiseen arkistoon vietäväksi, järjestelmä luo asynkronisen tehtävän (AsyncJob.ArchiveChildDocument), joka hoitaa asiakirjan arkistoinnin Särmä-järjestelmään. Arkistointiprosessi sisältää seuraavat vaiheet:
- Haetaan asiakirjan tiedot tietokannasta
- Tarkistetaan, että asiakirja on arkistoitavissa (template.archiveExternally = true)
- Haetaan asiakirjaan liittyvät metatiedot ja lapsen tiedot
- Haetaan asiakirjan PDF-tiedosto S3:sta
- Muodostetaan XML-muotoinen metatieto
- Lähetetään asiakirja ja metatieto Särmä-järjestelmään
- Merkitään asiakirja arkistoiduksi asettamalla aikaleima tietokannan
child_document.archived_at-kenttään, mikäli arkistointi onnistui
Integraatio käyttää Särmä-järjestelmän HTTP API:a asiakirjojen arkistointiin. API-kutsu tehdään SärmäHttpClient-luokan kautta.
Asiakirjan arkistointiin käytetään HTTP POST-metodia, joka lähetetään multipart/form-data -muodossa seuraavilla parametreilla:
-
protocol_version: "1.0" -
operation_id: "PUT" -
response_format: "URL-ENCODED" -
user_id: Käyttäjätunnus (konfiguraatiosta) -
user_role: Käyttäjärooli (konfiguraatiosta) -
nr_of_instances: "1" -
instance_1_md_model_id: "standard" -
instance_1_md_model_version: "1.0" -
instance_1_md_master_id: Master ID (yleensä "yleinen") -
instance_1_md_master_version: "1.0" -
instance_1_class_id: Luokkatunnus (esim. "12.06.01.SL1.RT34") -
instance_1_virtual_archive_id: Virtuaaliarkiston tunnus (esim. "YLEINEN") -
instance_1_record_payload_location: "SELF_CONTAINED" -
instance_1_md_instance: XML-muotoinen metatieto -
instance_1_record_payload_content_size: Tiedoston koko tavuina -
instance_1_record_payload_data: PDF-tiedoston sisältö
Särmä API palauttaa vastauksen URL-encoded muodossa, joka sisältää kentät:
-
status_code: Tilakoodi (200 = onnistunut) -
status_message: Tilailmoitus -
transaction_id: Tapahtuman tunniste -
instance_ids: Arkistoidun asiakirjan tunniste Särmä-järjestelmässä
Vastauksen käsittelyssä tarkistetaan tilakoodi ja poimitaan instance_id lokitusta varten. Jos tilakoodi on 200, asiakirja merkitään arkistoiduksi tietokantaan.
Särmä-integraatio otetaan käyttöön eVaka servicen ympäristömuuttujalla:
| Ympäristömuuttuja | Kuvaus |
|---|---|
evaka.särmä_enabled |
Onko Särmä-integraatio käytössä (true/false) |
Särmä-integraatio konfiguroidaan seuraavien ympäristömuuttujien avulla:
| Ympäristömuuttuja | Kuvaus | Pakollinen |
|---|---|---|
evaka.integration.sarma.url |
Särmä-palvelun URL-osoite | Kyllä |
evaka.integration.sarma.use_mock_client |
Käytetäänkö mock-toteutusta (true/false) | Ei (oletusarvo: false) |
evaka.integration.sarma.user_id |
Käyttäjätunnus Särmä-palveluun | Kyllä |
evaka.integration.sarma.user_role |
Käyttäjärooli Särmä-palveluun | Kyllä |
Frontendissä arkistointiominaisuus otetaan käyttöön asettamalla feature flag archiveIntegrationEnabled päälle. Tämä flag kontrolloi arkistointipainikkeen näkyvyyttä käyttöliittymässä.
Arkistointiprosessissa voi tapahtua virhetilanteita monessa eri vaiheessa:
- Asiakirjaa ei löydy tietokannasta
- Asiakirja ei ole arkistoitavissa
- Asiakirjan metadatan muodostuksessa tapahtuu virhe
- Särmä-järjestelmään ei saada yhteyttä
- Särmä-järjestelmä palauttaa virheen
Virhetilanteissa arkistointiprosessi keskeytyy ja virhe lokitetaan. Arkistointia voidaan yrittää myöhemmin uudelleen. Kun arkistointiprosessi myöhemmin automatisoidaan ScheduledTask pohjaiseksi, se käynnistää AsyncJobit niin, että niissä on määritelty retryCount-parametri, jolloin arkistoon viemistä koitetaan uudestaan.
- Arkistointiprosessi on toteutettu palveluluokassa
ArchiveChildDocumentService, joka rekisteröi asynkronisen handlerinAsyncJobRunneriin. - Varsinainen arkistointilogiikka on funktiossa
uploadToArchive, joka hakee tarvittavat tiedot, muodostaa metadatan ja lähettää asiakirjan Särmä-arkistoon. - Metadatan muodostus tapahtuu
createDocumentMetadata-funktiolla, joka hyödyntää useita apufunktioita mm. salassapito-, säilytys- ja turvallisuussääntöjen muodostukseen. - Metadatan serialisointi XML:ksi tehdään
marshalMetadata-funktiolla. - Virhetilanteissa prosessi keskeytyy ja virheestä heitetään poikkeus sekä kirjataan lokiin.
- Onnistuneen arkistoinnin jälkeen asiakirja merkitään arkistoiduksi tietokantaan.
Lisätietoja ja skeemakuvaukset löytyvät sarmamodel-moduulista ja sen XSD-tiedostoista.
Copyright 2017-2025 City of Espoo
Sisältö on lisensoitu LGPL-2.1-or-later -lisenssillä
- eVaka
- Arkkitehtuuri
- Prosessikaaviot
- Henkilökunnan eVaka:
- Huoltajan evaka:
- Muita eVakan toiminnallisuuksia:
- Laskujen muodostus
- Perhesuhteet-(laskutus)
- Laitimmaislaskenta
- Asianhallintaprosessit ja metatiedot
- Päätökset
- Lomakepohjat ja lapsen asiakirjat
- Toimintojen avaukset
- Mobiililaitteiden liittäminen
- Viestintä
- Ehdottava esiopetusprosessi
- Yksikkö
- Integraatiot:
- Tarkempi tekninen dokumentaatio: