wiki:Documentatie/Beheerder/TechnologyStack

OpenAC 3 Technology Stack

Dit hoofdstuk beschrijft de tools, frameworks en libraries die nodig zijn om OpenAC 3 te ontwikkelen, te bouwen en te runnen. De beschrijving is uitgesplitst in client-side (frontend) en server-side (backend)

Ontwikkeling

IDE

Als ontwikkelomgeving (IDE) gebruiken we de community editie van Microsoft Visual Studio. Dit is een gratis tool.

Versiebeheer

Alle projecten die onder de paraplu van OpenAC vallen zijn ingecheckt in Git, gehost door Microsoft op https://fenac.visualstudio.com/

Branching strategie

De twee belangrijkste twee source branches zijn:

  • master
  • sprint

Een nieuwe build is altijd gebaseerd op de master-branch. We gebruiken de sprint-branch voor werk aan de actuele sprint. Naast de master- en sprint-branches kennen we ticket- en feature-branches. Hierin werken we aan defecten respectievelijk nieuwe features. Ticket-branches zijn gebaseerd op de master-branch, feature-branches op de sprint-branch. Als de ontwikkeling aan één van deze branches klaar is dan maken we een pull-request voor een andere ontwikkelaar. Na een peer review wordt de branch gemerged in de master- of sprint-branch.

Frameworks

Server-side

We zijn er trots op dat OpenAC 3 één van de eerste gebruikers van .Net Core en Asp.Net Core was. Toen we met OpenAC 3 begonnen was het .Net Framework de gangbare versie van .Net en was er net een eerste beta-versie van .Net Core uitgekomen. Het .Net Framework is niet opensource en Windows-only. .Net Core is de eerste Open Source versie van .Net en multi-platform. Inmiddels is de naam van .Net Core gewijzigd in .Net en wordt het .Net Framework uitgefaseerd.

Client-side

OpenAC 3 gebruikt Vue.js als frontend Javascript framework. We gebruiken Element als UI-library.

OpenAC 3 (OpenACWeb) draait op Windows, OpenACHub (Zorgdomein, Stuurinformatie) draait op Linux.

Tests

Bij het ontwikkelen van OpenAC maken we gebruik van unit test. We streven naar een zo hoog mogelijke test coverage.

Server-side

We gebruiken XUnit voor backend unit tests. De test worden automatisch uitgevoerd bij elke push naar de master branch.

Client-side

Voor frontend unit tests gebruiken we Jest. Ook de jest-test worden automatisch uitgevoerd bij elke push naar de master branch.

Bouwen

Buildscript

We gebruiken een Python buildscript, dat de volgende dingen doet:

  • Nuget modules uitchecken met "dotnet restore"
  • een build maken van de volledige source tree en publiceren met het commando "dotnet publish"
  • builden en minimaliseren van de Vue frontend met Webpack (via vue cli)
  • ophogen van het versienummer
  • een releasepagina aanmaken op de OpenAC wiki m.b.v. de Trac-API
  • twee versies van de build (Windows 7 en 8) aanhechten aan de releasepagina

Release notes

Normaal gesproken houden we op de eerstvolgende releasepagina bij wat er in de eerstvolgende build van OpenAC komt. Na de build nemen we deze release notes over op de release pagina en maken we de pagina voor de eerstvolgende release weer leeg.

Installeren en uitvoeren

OpenAC wordt uitgeleverd als een zogenaamde "self contained" build. Dat wil zeggen dat de .Net library wordt meegeleverd en dat er niet een specifieke versie van de .Net runtime op de server hoeft te worden geïnstalleerd. De .Net runtime van OpenAC heeft geen wisselwerking met andere versies op het systeem.

OpenAC hoeft niet te worden geïnstalleerd; uitpakken van het zip-bestand is voldoende.

Uitvoeren als Windows service

OpenAC wordt normaal uitgevoerd als Windows Service. Zie voor meer informatie de installatiepagina.

Database

OpenAC werkt met MySQL of Microsoft SQL Server. Zie de installatiepagina voor informatie over ondersteunde versies.

API

OpenAC gebruikt een REST-API om backend-functies aan te bieden t.b.v. de eigen web-interface en externe koppelingen. API-documentatie wordt automatisch gegenereerd m.b.v. Swagger en is in OpenAC beschikbaar via menu Beheer -> API-documentatie. Vanuit dit scherm zijn de API's ook te testen.

Om de API's te gebruiken, moet je zijn ingelogd als gebruiker. Het afhandelen van verzoeken via de API's volgt daardoor de in de ACL vastgelegde autorisaties. De ingelogde gebruiker kan daarom via de API niet meer dan dat deze via de reguliere interface van OpenAC kan.

Last modified 2 years ago Last modified on Jan 27, 2022 10:06:29 AM