OUTSYSTEMS STANDAARD AUTONUMBER IDENTIFIER VERSUS TEXT IDENTIFIER/GUID
Standaard wordt in Outsystems een long integer gebruikt als identifier/primaire sleutel van een entiteit, die bij elk nieuw record verhoogd wordt met 1 (autonumber).
Dit zorgt ervoor dat er altijd automatisch een unieke primaire sleutel bij een record is. Op het moment dat de je de module published is deze identifier (autonumber) niet meer aan te passen.
Bij het aanmaken van een entiteit kun je de identifier/primaire sleutel aanpassen naar een tekst identifier, hiermee is het mogelijk een eigen sleutel te definieren. Je moet er wel zelf voor zorgen dat deze sleutel uniek is. Een van de meest unieke sleutels is een GUID. Je moet bij het gebruik van een tekst identifier/GUID wel extra stappen toevoegen bij het aanmaken van een nieuw record.
Waarom zou je altijd een GUID als identifier moeten gebruiken?
- Bij data migraties behouden records dezelfde unieke sleutel (ook relaties tussen entiteiten blijven bestaan)
- De sleutel is uniek binnen de hele omgeving. Hiermee kan elk record eenduidig worden geïdentificeerd. Bijv. Voor auditing oplossingen.
- De identifier wordt in Outsystems vaak gebruikt om naar een bewerk scherm te gaan van een record(in de url). Bij een autonumber identifier is het mogelijk andere records te benaderen door een andere identifier te "raden"(nummer hoger/lager). Bij een GUID is dit niet mogelijk. En heeft daarmee een security voordeel.
- Bij refactoring heeft het voordelen op het moment dat entiteiten naar andere modules verplaatst moeten worden (eenvoudiger relaties tussen entiteiten/data te behouden)
Wat moet je doen als je een GUID als identifier in Outsystems wil gebruiken:
- Dependency toevoegen voor het creëren van een GUID:
- Bij het aanmaken van een entiteit het Data Type van de Id op Text zetten:
- Een nieuwe Server Action aanmaken voor het Aanmaken/Updaten van een record met de entiteit als data type van de input(source):
- Toetsen of de input reeds een identifier heeft(nieuw/update):
- Voor een nieuwe record GUID creëren: