Skip to content

Modulien konfigurointi

Ilkka Rinne edited this page Mar 14, 2022 · 3 revisions

Sivuston modulaarinen rakenne

Kuten kuvattu sivulla Sivuston rakenne, Rakennetun ympäristön tietomallit-sivuston sisältö koostuu valtaosin erillisistä tietomoduleista, jotka on liitetty yhteen sivuston konfiguraatiossa. Kullakin modulilla on oma konfiguraatiotiedostonsa ja osoitepolkunsa perusosa (basepath), jota vastaa docs-hakemiston alihakemisto. Modulin sisältösivut on sijoitettu tämän alihakemiston all joko osana ry-tietomallit -GitHub-repoa tai sitten osana ko. tietomodulin omaa git-submodule -linkitettyä GitHub-repoa. Ensin mainittu tapa toimii kehitys- ja ohje-moduleissa, joista ei ole tarpeen olla saatavilla kuin uusin versio, ja joiden sisällön muuttuminen ei aiheuta ongelmia. Tähän kategosriaan kuuluvat tavallisesti esimerkiksi kehitysprojektien ja niiden lopputuotosten kuvaukset. Jälkimmäinen tapa toimii paremmin tapauksissa, joissa modulin sisällön pysyvät ja muuttumattomat julkaisuversiot on tarkoitus tuottaa käyttäen git-versionhallintaa, koska tällöin kukin ko. git-repon tiettyä julkaisuversiota vastaava tagi voidaan linkittää omaksi versiokohtaiseksi alihakemistokseen ry-tietomallit-repon alle. Tietomallien ja niiden soveltamisprofiilien kuvaukset ja niihin liittyvät säännöstöt on syytä toteuttaa tällaisinä versionhallittuina moduleina, sillä on todennäköistä, että samasta tietomallista tulee voida tukea useampaa julkaisuversiota yhtä aikaa, ja eri tietojärjestelmät ja niiden käyttämät fyysiset tietomallit perustuvat mahdollisesti tietomallien vanhempiin julkaisuversioihin.

Modulin konfigurointitiedosto

Konfiguraatiotiedoston avulla muodostetaan modulin sisäinen navigaatiorakenne, tuotetaan modulikohtainen versiovalitsin, tarvittavat linkit osoittamaan modulin sisältöihin sen GitHub-repossa, ja noudetaan kunkin sisältösivun metatiedot, kuten viimeisin muutosaika ja -historia. Konfiguraatiotiedostot on kuvattu YAML-kielellä, ja sivusto Jekyll-sivumoottori lukee niiden tiedot muistiin, jossa niitä hyödynnetään sivujen generointiin sivuston Liquid-kielisissä makroissa.

Kunkin tietomodulin konfiguraatiotiedostot ovat osa ry-tietomallit -GitHub-repoa, ja ne sijaitsevat hakemistossa docs/_data/modules/. Modulin tiedostonimi ilman .yml-päätettä muodostaa sen yksilöivän tunnuksen. Sekä versioitavien että ei-versioitavien modulien konfiguraatiotiedostot sijaitsevat samassa hakemistossa.

Seuraavan esimerkin avulla esitetään kaikki modulikonfiguraatiotiedoston tiedot, jotka ry-tietomallit -sivustolla on käytössä.

title: "Kaavatiedot" # modulin otsikko, jota käytetään, kun moduli linkitetään päätason valikkoon 
ownership: "ympäristöministeriö" # modulin omistajatieto, ei vielä esitetä sivustolla
note: "Fyysiset mallit (Kaava-JSON ja Postgre) on siirretty Asema- ja yleiskaavojen tietomallit -kehitysprojektin alle" # huomautus, joka näytetään modulin navigaatiopalkissa
github: # versiodun modulin GitHub-repon tiedot
  owner_name: "sykefi"
  repository_name: "kaavatietomalli"
versions: # ry-tietomallit -sivustolla julkaistujen versioiden tiedot 
  - id: "v1.0" # versiotunnus
    title: "Asema- ja yleiskaavan tietomallit -projektin lopputulos" # version otsikko
    path: "v1.0" # version alihakemiston polku
    default: true # oletusversion asetus
  - id: "dev"
    title: "Seuraava kehitysversio"
    path: "dev"
    git-branch: "develop" # git-repon haara, annettava jos ei oletushaara
    development: true # kyseessä on kehitysversio, joka voi vielä muuttua
    dependencies: # ko. version riippuvuudet muista moduleista ja niiden versioista. Käytetään muodostettaessa modulien kuvaussivujen välisiä, versiokohtaisia linkkejä
      - moduleId: "yhteisetkomponentit"
        version: "dev"
basepath: "kaavatiedot" # toimii sekä modulin osoitepolun perusosana (https://tietomallit.ymparisto.fi/kaavatiedot/...) että sen alihakemiston nimenä (docs/kaavatiedot/...)
nav_items: # Modulin sisäinen navigointivalikko. Samat sivut ovat olemassa kaikissa julkaisuversioissa
  - pageId: "johdanto" # sivun tunnus, yksilöivä modulin sisällä
    title: "Johdanto" # sivun otsikko
    path: "" # sivun osoitepolku. Jos ei ole annettu, oletetaan, että polku on "<basepath>/[<versioId>/][<groupId>/]<pageId>/"
    gitHubFile: "index.md" # sivun Markdown-muotoinen sisältötiedosto GitHubissa. Jos ei ole annettu, oletetaan löytyvän joko linkitetyn GitHub-sisältörepon polusta "[<groupId>/]<pageId>/index.md" tai ei-versioitujen modulien tapauksessa ry-tietomallit-repon polusta "docs/<basepath>/[<groupId>/]<pageId>/index.md"
    default: true # modulin oletussivun asetus
  - pageId: "kasitemalli"
    title: "Käsitemalli"
  - groupId: "looginenmalli" # navigointiryhmän tunnus
    title: "Looginen tietomalli"
    nav_items: # navigaatioryhmän alisivut 
      - pageId: "dokumentaatio"
        title: "Dokumentaatio"
      - pageId: "uml-doc"
        title: "UML-kaaviot"
        path: "uml/doc/" # polku annettu tässä, koska se ei ole sivutunnuksen mukainen "looginenmalli/uml-doc/"
        gitHubFile: "uml/kaavatietomalli.xml" # tässä kiinnitetty sivun muutostiedot XMI-tiedostoon, koska markdown-sisältö ei yleensä muutu
      - pageId: "elinkaarisaannot"
        title: "Elinkaarisäännöt"
        gitHubFile: "elinkaarisaannot.md" # GitHub-tiedosto annettu tässä, koska poikkeaa oletuksesta "looginenmalli/elinkaarisaannot/index.md"
        path: "elinkaarisaannot.html"
      - pageId: "laatusaannot"
        title: "Laatusäännöt"
        gitHubFile: "laatusaannot.md"
        path: "laatusaannot.html"
      - pageId: "inspire"
        title: "Inspire-yhteensopivuus"
        gitHubFile: "inspire.md"
        path: "inspire.html"
  - pageId: "muutosloki"
    title: "Muutosloki"
    path: "muutosloki.html"
    gitHubFile: "muutosloki.md"

Modulin sisäinen navigaatio tukee vain yhtä sisäkkäistä navigaatioryhmää, eli ryhmän alla olevat mahdolliset aliryhmät eivät tule navigaatiossa näkyviin.

Jatkokehitysajatuksia

  • Tällä hetkellä versioitujen modulien yhteydessä ei voi olla sivuja, jotka eivät ole versioriippuvaisia, ja toisaalta kaikissa julkaisuversioissa on oltava täsmälleen samat sivut. Tästä voisi pyrkiä eroon, ks. seikka #37.
  • Kullakin modulilla olisi hyvä olla metatietosivu, jossa modulikonfiguraation tiedot (mm. omistaja ja GitHub-repo) esitetään HTML-muodossa, ks. seikka #45.