XTi Blog

Model Release Automatisatie in Flowable

Geschreven door Sam Waegeman | 18/06/24 11:36

Het versiebeheer van apps en modellen, evenals de implementatie in verschillende omgevingen, kan een uitdaging zijn met Flowable. Flowable legt daar geen specifieke aanpak rond op. Dit betekent dat je moet nadenken over hoe je dit optimaal kunt organiseren en integreren met je bestaande CI/CD-flows.

 

Flowable development setup
Extern versiebeheer als oplossing
Wat gebeurt er nadat een app wordt gepubliceerd?
Implementatie van gestructureerd versiebeheer in Flowable
Conclusies

Flowable development setup

Een ontwikkelingsomgeving voor Flowable kan zowel lokaal als centraal worden opgezet. Beide benaderingen hebben hun voor- en nadelen. Echter, bij de versionering en het promoten van apps en modellen naar een volgende omgeving (test, acceptatie, productie) blijft de vraag hoe dit efficiënt kan worden georganiseerd.

Een typische centraal opgezette Flowable-omgeving ziet er als volgt uit:

Flowable biedt ingebouwde ondersteuning voor versiebeheer van verschillende apps en modellen. Wanneer een nieuw model wordt gemaakt of een bestaand model wordt gewijzigd, wordt elke versie opgeslagen in een centrale repository. Dit stelt je in staat om eerdere versies van modellen te bekijken, te vergelijken en indien nodig terug te zetten. Elke versie wordt voorzien van metadata, zoals wie de wijziging heeft aangebracht en wanneer. Dit zorgt voor transparantie en traceerbaarheid in het beheer van de modellen. Echter, deze repository heeft alleen kennis van de omgeving waar hij zich bevindt. De vraag blijft dus: hoe kunnen deze modellen met de juiste versie naar andere omgevingen worden overgebracht?

Extern versiebeheer als oplossing

Een mogelijke oplossing is om deze modellen te integreren in een reeds bestaand versiebeheersysteem, zoals GitHub of Bitbucket. Hierdoor kunnen de modellen dezelfde CI/CD-flow volgen als je bestaande broncode en geïntegreerd worden in deployments naar andere omgevingen. Bovendien kunnen de modellen op verschillende branches worden ondergebracht en gereviewd via pull requests.

Om deze integratie mogelijk te maken, moet je zelf een stuk code schrijven als uitbreiding op de Flowable Engine. Dit kan door een listener te maken die luistert naar de AppPublishedEvent of de AppRevisionCreatedEvent.

Wat gebeurt er nadat een app wordt gepubliceerd?

Wanneer een app wordt gepubliceerd via Flowable Design, genereert dit een AppPublishedEvent. De listener detecteert dit event en haalt de gepubliceerde app op om deze, of de aangebrachte wijzigingen, op te slaan in je versiebeheersysteem. De gepubliceerde app kan op twee manieren uit het gegenereerde event gehaald worden:

  • Direct vanuit het event: De benodigde informatie kan rechtstreeks uit het event worden gehaald. De app kan worden opgehaald als bytes (een zip-bestand) met de methode event.getAppByteContents(). Dit is eenvoudig en vereist geen extra beveiliging.
  • Via de Flowable API: Dit vereist extra beveiliging om de Flowable REST-endpoint aan te roepen. Je haalt de app- en workspace key op uit het event en gebruikt deze om de design-API aan te roepen en de app als een zip-bestand op te halen.

Wanneer een revisie wordt gemaakt, genereert dit een AppRevisionCreatedEvent. Hier kan de benodigde informatie uit het event worden opgehaald, waarbij de inhoud als bytes wordt verkregen.

Implementatie van gestructureerd versiebeheer in Flowable

Wanneer je de app als zip-bestand hebt opgehaald, kun je deze opslaan in een specifieke repository van het versiebeheersysteem. Eerst moet je de app structureren en plaatsen in de lokale repository op een specifieke branch. Dit kan bijvoorbeeld door het ontvangen zip-bestand uit te pakken en de modellen in een folderstructuur te plaatsen. Hierbij kan je gebruikmaken van de app key, de workspace key, enz. Deze structuur kan worden opgebouwd zoals de eigenaar van het versiebeheersysteem dit wenst. Door dit consistent te doen, kan je controleren welke bestanden zijn gewijzigd ten opzichte van de vorige versie. 

Nadat je de app logisch hebt opgeslagen in de lokale repository, kan je deze veranderingen committen en pushen naar de remote repository. Van hieruit kunnen de apps en modellen van Flowable de logische flow volgen van de CI/CD-pipeline zoals pull requests, reviews, en deployments naar andere omgevingen.

Conclusies

Door een kleine toevoeging aan de Flowable-engine te maken, kan je jouw Flowable-apps en modellen effectief beheren met correcte versies, een duidelijke structuur, en een integratie in reeds bestaande CI/CD-pipelines. Deze oplossing biedt een gestructureerde en veilige manier om apps en modellen op te slaan in een versiebeheersysteem.

 

Hulp nodig om Flowable optimaal in je eigen release-pipeline te integreren? Aarzel niet om ons te contacteren.