View Entities in Mendix

Mendix is continu in ontwikkeling. Maandelijks worden er updates uitgebracht voor de laatste versie van het ontwikkelplatform (Mendix 10). Deze updates worden minor releases genoemd en bevatten meestal kleine verbeteringen, maar soms worden er nieuwe features geïntroduceerd die het ontwikkelen van applicaties drastisch kunnen verbeteren. In de nieuwste minor release 10.19, die eind januari is uitgebracht, heeft Mendix zo’n belangrijke nieuwe feature toegevoegd: View Entities. Dit is een nieuw type entiteit dat kan worden gebruikt voor het weergeven of delen van gegevens die zijn opgeslagen in de database van Mendix-applicaties. Dit klinkt in eerste instantie misschien niet echt baanbrekend, maar het gaat de ontwikkeling van een aantal veelvoorkomende functies in Mendix substantieel makkelijker maken. Daarnaast kan het gebruik van View Entities de performance van applicaties verbeteren. In dit blog lees je wat View Entities zijn en in welke scenario’s ze gebruikt kunnen worden.

Entiteiten in Mendix

Entiteiten in Mendix zijn onderdeel van het datamodel van een applicatie. Het zijn feitelijk de tabellen waarin gegevens worden opgeslagen. Met de toevoeging van View Entities bestaan er nu vier soorten entiteiten in Mendix:

  1. Persistent Entities
    De gegevens in dit type entiteit worden bewaard in de database van de applicatie.
  2. Non-persistent Entities
    De gegevens in dit type entiteit zijn vluchtig, d.w.z. dat de data niet in de database worden opgeslagen. De gegevens worden gecreëerd tijdens de sessie van een gebruiker.
  3. External Entities
    De gegevens in dit type entiteit worden bewaard in een andere Mendix-applicatie. Dit type entiteit kan gebruikt worden door een applicatie te koppelen aan Mendix Data Hub.
  4. View Entities
    De gegevens in dit type entiteit worden door middel van OQL-queries opgevraagd uit andere entiteiten.

Wat zijn View Entities?

View Entities zijn een nieuw soort entiteit die in Mendix 10.19 zijn toegevoegd. Deze entiteiten worden gecreëerd met behulp van OQL-queries. De queries beschrijven zoekopdrachten waarmee gegevens uit andere entiteiten worden opgevraagd. View entiteiten kunnen op de meeste plaatsen in een applicatie gebruikt worden waar nu persistente entiteiten worden gebruikt. Een View entiteit kan bijvoorbeeld verbonden worden met een datagrid (gegevensraster) en de view entiteit gedraagt zich dan als een persistente entiteit met volledige ondersteuning voor filteren, paginering en sorteren boven op de zoekopdracht. View entiteiten zijn alleen geschikt om gegevens te lezen. Om de data in View entiteiten te wijzigen moeten de onderliggende gegevens in de persistente entiteiten gewijzigd worden.

View Entities toevoegen met OQL-queries

Bij het aanmaken van View entiteiten in Mendix Studio Pro word je als ontwikkelaar geholpen met het beschrijven van de queries (de zoekopdrachten). Er is een nieuwe OQL-editor waarmee je OQL-queries kunt schrijven met syntaxcontrole. Terwijl je de query schrijft, stelt de editor namen voor van de entiteiten en attributen uit het datamodel van de applicatie. In de OQL-editor zit een handige  voorbeeldweergave waarin het resultaat van de query wordt afgebeeld.

OQL-editor in Mendix 10.19

Wat is OQL?

De Mendix Object Query Language (OQL) is een relationele querytaal die heel veel weg heeft van SQL. Het grote voordeel van OQL is dat je bij het schrijven van queries de namen van entiteiten gebruikt in plaats van de echte tabelnamen in de database. Bovendien kan je in OQL-queries gebruik maken van vooraf gedefinieerde associaties (relaties) tussen entiteiten om records in verschillende tabellen aan elkaar te koppelen zonder dat je na hoeft te denken over welke sleutelvelden je moet gebruiken om tabellen te koppelen. Ondanks deze verschillen werken veel instructies en trefwoorden van de SQL-taal ook in OQL.

OQL versie 2

In Mendix versie 10.19 is OQL v2 geïntroduceerd. Om View Entities te kunnen gebruiken in Mendix is het noodzakelijk om OQL v2 in te schakelen door het aanpassen van een app-instelling in Mendix Studio Pro. De syntax van OQL v2 is in principe hetzelfde als OQL v1, maar er zijn enkele verschillen in de behandeling van een paar specifieke functies. Wanneer je overschakelt naar OQL v2 is het belangrijk om te controleren of bestaande OQL-query’s, die al worden gebruikt in de applicatie, nog steeds het verwachte resultaat geven. Meer informatie hierover is te vinden in de documentatie van Mendix.

Use cases om View Entities te gebruiken

View Entities bieden allerlei mogelijkheden die app-ontwikkelaars veel tijd gaan besparen en waarmee performanceverbeteringen kunnen worden gerealiseerd. Hieronder staan een aantal voorbeelden van use cases waarbij het gebruik van View Entities voordelen biedt.

Dashboards met grafieken toevoegen
Een veelvoorkomende functie van Mendix-applicaties is het tonen van KPI’s en grafieken op een dashboardpagina. Met OQL-queries kunnen efficiënte zoekopdrachten geschreven worden waarmee de berekeningen en aggregaties, die nodig zijn voor de grafieken en KPI’s, kunnen worden uitgevoerd. View Entities bieden directe toegang tot de resultaten van OQL-queries en zijn daardoor erg handig voor het maken van dashboards. Voorheen was dit een stuk lastiger, omdat de berekeningen en aggregaties met logica in microflows uitgevoerd moesten worden.

Datasets publiceren via API-laag
Wanneer je data uit een Mendix-applicatie wil publiceren via een API (bijvoorbeeld als OData endpoints) dan is verstandig om het datamodel voor de API los te koppelen van het datamodel dat in de app gecreëerd is voor dataopslag. Dit kan gerealiseerd worden door View Entities toe te voegen aan de applicatie en de View Entities vervolgens te publiceren als API-endpoints. Op die manier behoud je de flexibiliteit om aanpassingen te doen in het datamodel voor de API-laag zonder het “core” datamodel te moeten aanpassen.

Versnellen van overzichtpagina’s
Wanneer je gegevens van meerdere aan elkaar gekoppelde entiteiten in een datagrid wil tonen dan kan dit voor performanceproblemen zorgen. Met name bij applicaties met grote datasets kan het openen van overzichtspagina’s hierdoor (te) lang duren. View Entities kunnen hier uitkomst bieden, omdat het ophalen van gegevens uit de database veel sneller gaat met OQL-queries. Daarnaast behoud je de flexibiliteit bij het weergeven van de data, want sorteren, bladeren en filteren blijft mogelijk wanneer een View Entity als bron wordt aangewezen in een datagrid.

Public beta

Het gebruik van View Entities in applicaties op productieomgevingen wordt op dit moment nog afgeraden, omdat de features is uitgebracht met de status ‘public beta’. Het is daardoor niet uitgesloten dat de functionaliteit in de komende minor releases wordt aangepast en/of verbeterd. Aan de andere kant is het wel interessant om de werking van View Entities nu al te onderzoeken en om ervaring op de toen met het toepassen van OQL v2.

Op de hoogte blijven?

Wil je meer weten over Mendix? Schrijf je dan in voor onze nieuwsbrief, zo ben jij maandelijks up-to-date van al onze nieuwe blogs. Je kunt je inschrijven via de button hieronder.

Schrijf je in voor de nieuwsbrief

Geschreven door Steven Samuels Brusse,
Senior Consultant