OutSystems Notify message

data structuren (auteur: Menno Hoogsteen)

inSystems datacenter

Om in OutSystems vanuit een popup window (of webblock) data te retourneren kun je gebruik maken van de system server actions Notify en NotifyGetMessage. Via Notify stuur je het bericht vanuit een action in het popup scherm. Met de NotiftyGetMessage kun je het vervolgens ontvangen in het webscherm, waar de aanroep naar de popup plaats vond.

In de volgende afbeelding is deze flow schematisch weergegeven:

inSystems OutSystems Notify Message

Parameter

Je hebt één parameter tot je beschikking. Het bericht dat je stuurt/ontvangt dient van het datatype Text te zijn. Een enkelvoudige string als bericht is vaak niet zo’n probleem. Maar als je meer data en eventueel van verschillende datatypen wilt terug sturen, dan blijkt een enkele Text parameter niet zo handig.
Vaak krijg je dan ad hoc constructies waarin variabelen aan elkaar geregen worden met scheidingstekens. Zoiets als:

inSystems OutSystems Notify Message

De action die de notify ontvangt wil je deze tekst weer ontleden. Hiervoor komt de system String_Split action om de hoek kijken:

inSystems OutSystems Notify Message

De String_Split levert een lijst op met in dit geval drie rijen:

inSystems OutSystems Notify Message

Wil je naar de inhoud verwijzen, dan ben je genoodzaakt om hard te verwijzen naar de rijen. Als je dit in een conditie gebruikt, komt dit de leesbaarheid en begrip niet ten goede:

inSystems OutSystems Notify Message

Gelukkig is er ook een betere manier voor bovenstaande constructie. Om het retourneren te structuren en het gebruik van de data te vereenvoudigen, hebben we twee andere built-in actions tot onze beschikking, namelijk JSONSerialize en JSONDeserialize.

JSONSerialize en JSONDeserialize

Met JSONSerialize kun je een Record of List of Records datatypen converteren naar tekst. Dit kunnen bijvoorbeeld entiteiten/structures of lijsten hiervan zijn. Vervolgens gebruik je JSONDeserialize om de tekst weer terug te vertalen naar het oorspronkelijke data type.
Als we de vorige ad hoc constructie vervangen met een implementatie met de zojuist genoemde actions, zien we een duidelijk verschil. De notify bevat nu alleen de uitkomst van het serialiseren van een record variabele:

inSystems OutSystems Notify Message

Hieronder zien we het resultaat van de JSONSerialize action:

inSystems OutSystems Notify Message

De String_Split wordt vervangen door de JSONDeserialize, om de tekst weer om te zetten naar een record:

inSystems OutSystems Notify Message

Herschrijven we de conditie van hierboven, dan krijgen we:

inSystems OutSystems Notify Message

Een stuk duidelijker en geen harde verwijzingen naar posities in een lijst.

Is de JSONSerialize/Deserialize manier feilloos? Nee, je zal goed moeten opletten dat je in beide actions steeds hetzelfde datatype gebruikt. Anders kan het als nog runtime fouten opleveren. Als je bijvoorbeeld de inhoud van een text datatype naar een integer datatype serialiseert, dan levert dit een foutmelding op:

inSystems OutSystems Notify Message

Als je geluk hebt levert het een foutmelding op, zodat je in ieder geval weet dat er iets fout gaat. In het slechtste geval levert het onverklaarbare functionele fouten op, als gevolg van onverwachte data.

Ik ben van mening dat deze manier meer voordelen dan nadelen heeft. Het is een goed gebruik om het elke keer toe te passen.

Share this

Contact

Heb je vragen of opmerkingen? Aarzel niet om contact op te nemen. Dat kan via de algemene contactgegevens, rechtstreeks met de genoemde contactpersoon op een van de detailpagina’s, of via onderstaande knop.

11 augustus 2026

From “Go wild” to actually relying on AI

As an Oracle Developer, I have done my best to avoid using AI for most of my work. I have been forced to use this for the company I am working for, and I must admit, it is incredibly powerful and quite amazing.

11 augustus 2026

Start Teun de Jong (OutSystems developer)

Low-code samen met AI is een uitstekende combi om applicaties sneller, beter en goedkoper te ontwikkelen. We zijn dan ook blij dat ons low-code team verder groeit met Teun de Jong, een ervaren en enthousiaste OutSystems developer.

Opdrachten uitgevoerd voor

BMW
Alliance Healthcare
Syntrus Achmea Real Estate & Finance
VAA ICT Consultancy
Stedin
Politie
Belastingdienst
IBM
Allianz
Ahold
Telegraaf Media Groep
Provincie Utrecht
Leaseplan
ING Bank
VTTI
RIGD LOXIA
UBR Uitvoeringsorganisatie Bedrijfsvoering Rijk
CB Logistics
Van Iperen Groeispecialisten
Stratech Social
Oracle University
Twinq
WVDB Adviseurs Accountants
Eneco
Ministerie van Economische Zaken, Landbouw & Innovatie
Rechtspraak
Altran
TenneT
Rabobank
VION Food Group
Fokker
ASR Nederland
Ziggo
Gemeente Apeldoorn
Gemeente Gouda
Universiteit Tilburg
JUVA
TU Eindhoven
MN Services
Holland Casino
Bank Mendes Gans
AgroEnergy
NVWA inSystems
Arval BNP Paribas
CBR
DICTU
Thales
inSystems KLM
Greenchoice
Feenstra inSystems
RAVU
Cannock
SVB
Multi Tank Card
Nederlandse Spoorwegen
Gemeente Den Haag
Rijk Zwaan inSystems
PC Uitvaart
Rendo
inSystems Unive
Darling
Alphabet
GVB