Coder Social home page Coder Social logo

charts's Introduction

Open Zaak

Productiewaardige API's voor Zaakgericht Werken

Read this in English

Version:1.13.0
Source:https://github.com/open-zaak/open-zaak
Keywords:zaken, zaakgericht werken, zaken-api, catalogi-api, besluiten-api, documenten-api
PythonVersion:3.11

atp Build status Documentation Status Coverage Code quality checks black docker

Deze repository bevat broncode en documentatie voor productiewaardige API's voor Zaakgericht Werken (ZGW). Deze API's volgen de standaard van VNG Realisatie "API's voor Zaakgericht Werken".

Zaakgericht Werken

Zaakgericht werken is een vorm van procesgericht werken die door de Nederlandse gemeenten, en steeds meer landelijke overheden, wordt toegepast om verzoeken van burgers en bedrijven te behandelen. De zaak staat hierbij centraal. Een zaak is een samenhangende hoeveelheid werk met een gedefinieerde aanleiding en een gedefinieerd resultaat waarvan kwaliteit en doorlooptijd bewaakt moeten worden. De API's voor Zaakgericht Werken ondersteunen de registratie van alle metadata en gegevens die komen kijken bij Zaakgericht Werken. Zie ook Zaakgericht werken in het gemeentelijk gegevenslandschap.

Standaard "API's voor Zaakgericht Werken"

In het kader van Common Ground heeft VNG Realisatie deze standaard ontwikkeld. Daarbij zijn tegelijk met API-specificaties referentie-implementaties gerealiseerd om aan te tonen dat de specificaties in software kunnen worden geïmplementeerd. De volgende inhoudelijke API's maken onderdeel uit van de standaard:

  • Catalogi - voor de registratie van zaaktype-catalogi, zaaktype en alle daarbij horende typen.
  • Zaken - voor de registratie van zaken. Zaken kunnen o.a. relaties hebben met documenten, besluiten, contacten. De API biedt functionaliteit voor audit trail en archiveren.
  • Documenten - voor de registratie van informatieobjecten, hetgeen zowel documenten als andere informatiedragers zoals foto's en film kunnen zijn.
  • Besluiten - voor de registratie van besluiten die in het kader van zaakgericht werken worden genomen.

Daarnaast zijn er een paar generieke API's die nodig om gebruik te maken van deze API's:

  • Notificaties - in Common Ground worden gegevens bij de bron geregistreerd en bijgehouden. Consumers krijgen niet vanzelf bericht als er iets is gewijzigd. Hiervoor kunnen ze een abonnement registreren bij de Notificaties API.
  • Autorisaties - via de Autorisaties API wordt de toegang van applicaties tot gegevens geregeld.

Productiewaardige API's

Bij de realisatie van productiewaardige API's is aandacht besteed aan een aantal belangrijke aspecten:

  • Beheer: er is een beheerportaal ingericht waarmee de verschillende API's door functioneel beheerders kunnen worden beheerd.
  • Performance: er zijn performance-metingen verricht op basis van schattingen van de verwachte belasting door applicaties die eindgebruikers gebruiken. Benodigde verbeteringen zijn doorgevoerd waardoor een belasting door 2000 eindgebruikers geen problemen zou moeten opleveren.
  • Documentatie van de componenten, met name van de beheer applicaties. (De inhoudelijke documentatie over de API's is onderdeel van de standaard.)
  • Uitrol: Om de uitrol naar servers te vereenvoudigen is er een Docker container beschikbaar. Dit zijn een soort componenten die gemakkelijk kunnen worden uitgerold op een server om ze vervolgens in gebruik te nemen. Hiermee kunnen gemeenten de API’s op eenvoudige wijze (laten) draaien bij een hostingpartij.

Architectuur van Open Zaak

De architectuur van Open Zaak is gebaseerd op een beperkt aantal componenten. De belangrijkste component is de registratiecomponent die de API's voor ZGW aanbiedt. Daarnaast zijn er de volgende componenten:

  • Notificatie-component, noodzakelijk voor de werking van Open Zaak.
  • Selectielijst component die wordt gebruikt om de VNG Selectielijst voor archiveren te ontsluiten
  • Beheerportaal dat toegang biedt tot de verschillende beheerapps die bij de API's horen

Open-Zaak Componenten-overzicht

Implementatie

Deze repository bevat de broncode voor de API's. Om gebruik te kunnen maken van de API's moeten deze ergens gehost worden als een service. Als onderdeel van de ontwikkelstraat worden bij elke nieuwe versie van Open Zaak een Docker container die direct kunnen worden uitgerold in een Kubernetes cluster.

Links

Bouw

Deze API's zijn ontwikkeld door Maykin Media B.V. in opdracht van Amsterdam, Rotterdam, Utrecht, Tilburg, Arnhem, Haarlem, 's-Hertogenbosch, Delft en een coalitie van Hoorn, Medemblik, Stede Broec, Drechteland, Enkhuizen (SED), onder regie van Dimpact.

Licentie

Licensed under the EUPL

charts's People

Contributors

andyverberne avatar bartjkdp avatar joeribekker avatar joooostb avatar jordi-t avatar sergei-maertens avatar shazada avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

charts's Issues

Open-Zaak nginx-deployment throws error

When setting persistence.enabled to true, the following error is thrown for the nginx-deployment:

Error: UPGRADE FAILED: error validating "": error validating data: ValidationError(Deployment.spec.template.spec.containers[0].securityContext): unknown field "fsGroup" in io.k8s.api.core.v1.SecurityContext

I'll submit a PR to fix this.

Open Zaak volumeMounts mountPath is incorrect

The 'volumeMounts' 'mountPath' of the open zaak pod is not correct. As a result the content of enkelvoudiginformatieobjects are lost after a new instance of the open zaak pod is created.

Upgrade of open-notificaties from version 1.1.5 to 1.2.x fails

Upgrading the open-notificaties image from version 1.1.5 to version 1.2.x causes the following exception to occur in log of the open-notificaties pod:

10.203.128.10:5432 - accepting connections
Database is up.
open-notificaties-rabbitmq.default.svc.cluster.local [10.2.0.93] 5672 (amqp) open
RabbitMQ is up.
Starting celery worker
[2021-09-30 08:07:04,764: CRITICAL/MainProcess] Unrecoverable error: ModuleNotFoundError("No module named 'celery.backends.amqp'")
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/celery/app/base.py", line 1229, in backend
return self._local.backend
AttributeError: '_thread._local' object has no attribute 'backend'During handling of the above exception, another exception occurred:Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/celery/worker/worker.py", line 203, in start
self.blueprint.start(self)
File "/usr/local/lib/python3.7/site-packages/celery/bootsteps.py", line 112, in start
self.on_start()
File "/usr/local/lib/python3.7/site-packages/celery/apps/worker.py", line 136, in on_start
self.emit_banner()
File "/usr/local/lib/python3.7/site-packages/celery/apps/worker.py", line 170, in emit_banner
' \n', self.startup_info(artlines=not use_image))),
File "/usr/local/lib/python3.7/site-packages/celery/apps/worker.py", line 232, in startup_info
results=self.app.backend.as_uri(),
File "/usr/local/lib/python3.7/site-packages/celery/app/base.py", line 1231, in backend
self._local.backend = new_backend = self._get_backend()
File "/usr/local/lib/python3.7/site-packages/celery/app/base.py", line 936, in _get_backend
self.loader)
File "/usr/local/lib/python3.7/site-packages/celery/app/backends.py", line 70, in by_url
return by_name(backend, loader), url
File "/usr/local/lib/python3.7/site-packages/celery/app/backends.py", line 50, in by_name
cls = symbol_by_name(backend, aliases)
File "/usr/local/lib/python3.7/site-packages/kombu/utils/imports.py", line 56, in symbol_by_name
module = imp(module_name, package=package, **kwargs)
File "/usr/local/lib/python3.7/importlib/init.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1006, in _gcd_import
File "", line 983, in _find_and_load
File "", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'celery.backends.amqp

It is suspected that this is caused by the addition of Celery Flower to the container images for background worker task monitoring.

Downloading the content of enkelvoudig informatie objecten via the API is not working

If one tries to download the content of an enkelvoudig informatie object via the call:

http://open-zaak/documenten/api/v1/enkelvoudiginformatieobjecten/d5865689-702f-41c5-a6d2-a2d35fe80c0e/download?versie=1

Nothing is returned.

The reason being that Open Zaak uses the NGINX X-Accel functionality (https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/) to return the content of an enkelvoudig informatie object. So NGINX must be deployed as part of Open Zaak. Requests for downloading the content of an enkelvoudig informatie object must flow through NGINX.

We are currently working on adding NGINX to the Helm chart. Expect a pull request soon.

Add support for Ingress in K8S versions >=1.22

As of Kubernetes v1.22, the extensions/v1beta1 and networking.k8s.io/v1beta1 API versions of Ingress is no longer served.

This means that the current Ingress template for both O-Z and O-N will not work on K8S versions >=1.22.

Currently extensions/v1beta1 is still supported (required for K8S versions <=1.14), my suggestion would be to drop support for this and only support networking.k8s.io/v1beta1 and networking.k8s.io/v1.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.