Data-integriteit in Plate: PlateON
De afgelopen maanden hebben we de codebase van de acties Dupliceren, Synchroniseren en Thema Installeren grondig verbeterd. Deze update staat sinds 2 oktober live. Eigenlijk is deze omschrijving iets te kort door de bocht, want aan de basis van de refactoring ligt een complete herziening van hoe we data behandelen in Plate. Ik waarschuw je alvast, dit is een technisch artikel.
Ik ben trots om je het resultaat te laten zien van de energie die we gestopt hebben in een werkwijze waarbij we een model hebben uitgedacht waarmee we de data-integriteit van Plate content kunnen verantwoorden: PlateON.
PlateON: Plate Object Notation
Het nieuwe model is gebaseerd op het idee dat Plate-data niet op zichzelf staande entiteiten zijn, maar altijd onderdeel van een of meerdere webs van data en relaties. Bijvoorbeeld, als je het hebt over een sectie, heb je het ook over alle rijen, kolommen, elementen en aanverwante zaken die daarbij horen. Om deze webs in een gestructureerd formaat te gieten, hebben we gekeken naar andere gestructureerde dataformaten zoals JSON. Vandaar dat we onze eigen datastructuren PlateON noemen (Plate Object Notation), met een engine voor het wegschrijven en uitwisselen van data.
In de praktijk werkt het als volgt.
Stel dat je een actie wilt uitvoeren op Plate data, laten we zeggen een post dupliceren. Dan wordt een aantal stappen doorlopen:
- De PlateON van de post wordt gegenereerd. Dat wil zeggen, alle relaties en onderliggende onderdelen (secties, rijen, maar ook welk post type, enz.) worden verzameld, en in de PlateON gestopt, zodat er een heldere datastructuur ontstaat van de post, en alles wat er op welke manier dan ook bij die post hoort.
- Vervolgens wordt een mapping gegenereerd op basis van de actie die je uitvoert. Omdat je aan het dupliceren bent, wordt het overgrote merendeel van de Plate data gemapt naar “new”, wat betekent dat er een nieuw object van gemaakt moet worden. De post type verandert niet, dus die wordt gemapt naar zichzelf. Deze kan echter ook gemapt worden naar een andere post type, waardoor je dus niet alleen een post dupliceert, maar het duplicaat ook verplaatst naar een ander post type. Omdat je álles in de PlateON kunt mappen naar equivalenten of “new” kun je in theorie zo schier oneindige combinaties maken met mogelijke dupliceer/verplaats acties. De uitdaging is dan natuurlijk om de nieuwe relaties ook correct te houden. Maar omdat we al een bestaand web van data en bijbehorende relaties hebben, plus een mapping, kunnen we die validaties altijd uitvoeren. Hoewel dit een zeer complexe operatie kan zijn, vanwege alle verschillende mogelijke relaties en datalagen, kunnen we zo toch een betrouwbare uitkomst genereren.
- Met de combinatie PlateON/mapping wordt een PlateON importservice aangeroepen, die de PlateON en de mapping beiden uitleest, en met deze gegevens alle data wegschrijft (nieuwe records maken, of records aanpassen, afhankelijk van de mapping).
Dit ogenschijnlijk simpele maar krachtige stukje software ligt aan de basis van alle genoemde acties die binnen Plate worden uitgevoerd. Aan de interface verandert niet veel, maar onder water liggen de kaarten compleet anders.
Het grootste verschil met hoe het voorheen werkte, is dat we de data met alle relaties en verbanden niet meer als losstaande entiteiten zien waar we één voor één een actie op uitvoeren. In plaats daarvan behandelen we een bundel Plate-data op zichzelf als entiteit, en voeren de actie in een keer uit op de hele bundel. Zo kunnen we er veel beter voor zorgen dat de data-integriteit intact blijft, ook als er ingewikkelde verplaatsingen of duplicaties met onderling uiteenlopende verwijzingen uitgevoerd moeten worden.
PlateON in het CMS
PlateON zorgt niet alleen voor schaalbaarheid en betrouwbaarheid 'onder de motorkap' maar deze functie wordt later ook zichtbaar voor alle gebruikers van het CMS. Door deze functie kun je zometeen individuele rijen, kolommen, content en secties kopiëren en op meerdere plekken gebruiken binnen je site; dit zorgt voor een nog hogere snelheid in het beheer van de content op je website.
Waarom deze stap?
Met PlateON kun je gemakkelijk import- en exportscripts maken voor Plate data, bijvoorbeeld om content van de ene site naar de andere site te kopiëren of een export van je site maken. Ook kun je dit incorporeren in andere onderdelen of partnersoftware van Plate. Een van de ideeën die we hebben voor de toekomst is een app store voor Plate-content en applicaties, waarin Plate-developers hun code uitwisselen met elkaar. Een ander voordeel is dat we het voor developers makkelijker maken om met Plate data te werken.
Wat nu met PlateON?
Er staan nog een aantal uitbreidingen van het platform op de rol, zoals meer dupliceermogelijkheden voor Plate Content. Daarna gaan we ons focussen op de volgende onderdelen van het ontwikkelplatform wat we voor ogen hebben. Daarnaast zijn we ook in de breedte aan het ontwikkelen, getuige de komst van PlateCommerce.
Als je nog vragen hebt over PlateON, stuur me gerust een mailtje naar kobus@getplate.com, of word lid van onze partner Slack en blijf altijd als eerste op de hoogte van de nieuwste features.