Dit is een demonstratieproject om te laten zien hoe je op basis van het Gemeentelijk Gegevensmodel API's op basis van GraphQL kunt genereren. Voor het GraphQl-deel maken we gebruik van Graphene. Deze versie bevat een uitwerking van het onderdeel Onderwijs gevuld met testdata. In een later stadium voegen we de generatiesoftware toe om ook de andere modellen uit het GGM om te kunnen zetten in werkende API's.
Zorg dat je Docker en Docker-compose hebt geïnstalleerd. Dit project is voortgebouwd op Dockerizing Flask with Postgres, Gunicorn, and Nginx. Voor het verder tweeken van de container en het koppelen van een andere database vind je hier meer informatie.
Om de container te starten doorloop je de volgende stappen (engelstalig)
Uses the default Flask development server.
-
Rename .env.dev-sample to .env.dev.
-
Update the environment variables in the docker-compose.yml and .env.dev files.
- (M1 chip only) Remove
-slim-buster
from the Python dependency inservices/web/Dockerfile
to suppress an issue with installing psycopg2
- (M1 chip only) Remove
-
Build the images and run the containers:
$ docker-compose up -d --build
Test it out at http://localhost:5000/graphql. The "web" folder is mounted into the container and your code changes apply automatically.
Uses gunicorn + nginx.
-
Rename .env.prod-sample to .env.prod and .env.prod.db-sample to .env.prod.db. Update the environment variables.
-
Build the images and run the containers:
$ docker-compose -f docker-compose.prod.yml up -d --build
Test it out at http://localhost:1337/graphql. No mounted folders. To apply changes, the image must be re-built.
Ga naar http://localhost:5000/graphql en je kan queries op de service afvuren. Er zit testdata in voor: leerling, school en inschrijving.Hieronder een voorbeeld van een query.
Veel plezier en succes! Verbeteringen welkom :)
Deze demo werkt met een Enterprise Architect repository in een Postgres database. Om de repository te openen configureer je een ODBC-koppeling conform de handleiding van Enterprise Architect. Het is belangrijk dat je gebruik maakt van een 32-bits-ODBC-driver. Deze demo werkt met Postgres versie 10.20. De benodigde wachtwoorden staan in je .env.dev bestand.
Dit zijn de ODBC-instellingen die ik gebruik voor de demo. Onder OSX gebruik ik een windowsemulator om Enterprise Architect te kunnen draaien. Om de database te kunnen zien gebruik ik het IP-adres 10.211.55.2. Werk je onder Windows dan gebruik je waarschijnlijk localhost (of 127.0.0.1).
Nadat je de ODBC-driver hebt geinstalleerd kun je vanuit Enterprise Architect contact maken met de repository. Gebruik hiervoor 'Open Project' --> 'Connect to Server'. Bijgevoegd voorbeeld configuratie-instellingen.
Nadat je de connectie tot stand hebt gebracht kun je gegevensmodellen aanpassen, en op basis hiervan nieuwe API's genereren.
Het genereren van API's in deze demo werkt met Jupyter Notebooks en Python. Met het notebook generateCode genereer je de API's. De notebooks zijn bereikbaar onder http://localhost:8888.
De generator is in staat de API's te genereren van willekeurige modellen uit het GGM. Kies hiervoor de GUID van het package dat je wilt genereren. Voor alle classes die onder dit package vallen (of onder een van de child-packages) wordt een API-specificatie gegenereert. In de volgende afbeelding is getoond hoe je de GUID kiest van het door jou geselecteerde package. In het notebook generateCode zijn als voorbeeld de GUIDs voor 'Monumenten' en 'Onderwijs' meegegeven.
Nadat je de GUID van het model hebt gekozen is uitgenereren van de API's makkelijk. Laat hiervoor alle cellen uit het notebook executeren, en de benodigde bestanden worden gegenereerd.
Zorg dat je daarna de server herstart door in het console 'docker-compose up' te geven, en zorg dat je het graphql-scherm in je browser te opnieuw laadt. Nu zie je de API's van jouw model in je browser op http://localhost:5000/graphql.
Veel plezier!